Device Fingerprint


The LICENSE4J licensing library is engineered to generate a unique device fingerprint, also referred to as a device ID, by comprehensively analyzing several key hardware and software components of the host system. This sophisticated process involves examining data from the Central Processing Unit (CPU), the mainboard, manufacturer information, details of the hard drive (HDD), partition specifics, and the device's assigned hostname.

The LICENSE4J licensing library is engineered to accurately detect hardware details and leverage these to generate a unique device fingerprint. Beyond physical hardware, it also proficiently identifies virtualized environments and cloud-based systems. This advanced detection capability allows developers to implement specific licensing policies for these environments, either permitting or restricting software usage based on their business requirements. This ensures precise control over where and how your software is deployed, whether on traditional machines, virtual machines, or cloud instances. A comprehensive example is provided at github repository

This fingerprint serves as a secure and immutable identifier for each device, playing a crucial role in accurate license management and the prevention of unauthorized software usage. By creating a distinct digital signature for every system, the library helps ensure that only authorized users have access to specific software features and functionalities. This method not only significantly enhances security but also streamlines the entire licensing process, making it more efficient to track and verify legitimate device usage across various applications.

Furthermore, for specialized hardware configurations or unique software environments that may generate a different device fingerprint, the library offers exceptional flexibility. Developers have the option to supply a custom fingerprint during the license validation process. This capability is invaluable in scenarios where the default fingerprinting method might not align with specific system requirements or constraints, providing adaptability without compromising security. This ability to use any special value for the fingerprint also provides seamless flexibility for license activation, allowing you to bind licenses to virtually any unique identifier relevant to your deployment strategy.

Some Examples of Device Identification


Windows 10 Physical PC, Notebook with a USB inserted
System User Name        : demo
System Host Name        : HPNOTE
System Domain Name      : hpnote
System OS Family        : Windows
System Java Name        : Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.5
System CPU Core Count   : 8

System is Virtual       : false
System is Cloud         : false
System is Container     : false
Hypervisor Name         : null
Cloud Provider Name     : null

USB Name                : Kingston DT 101 II USB Device
USB Vendor Id           : 0951
USB Product Id          : 1625
USB Serial Number       : 001CC0EC3466AA2197EA19F3
USB Mount Path          : F:\

Windows Guest on Hyper-V
System User Name        : demo
System Host Name        : DESKTOP-DFU23TJ
System Domain Name      : DESKTOP-DFU23TJ
System OS Family        : Windows
System Java Name        : Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.5
System CPU Core Count   : 4

System is Virtual       : true
System is Cloud         : false
System is Container     : false
Hypervisor Name         : Microsoft Hyper-V
Cloud Provider Name     : null

USB Name                : null
USB Vendor Id           : null
USB Product Id          : null
USB Serial Number       : null
USB Mount Path          : null

Amazon EC2 Instance
System User Name        : ubuntu
System Host Name        : ip-172-31-12-125
System Domain Name      : ip-172-31-12-125.eu-central-1.compute.internal
System OS Family        : Ubuntu
System Java Name        : Ubuntu OpenJDK 64-Bit Server VM 17.0.14
System CPU Core Count   : 1

System is Virtual       : true
System is Cloud         : true
System is Container     : false
Hypervisor Name         : Xen HVM
Cloud Provider Name     : Amazon EC2

USB Name                : null
USB Vendor Id           : null
USB Product Id          : null
USB Serial Number       : null
USB Mount Path          : null

Virtual Prive Server
System User Name        : demo
System Host Name        : ahost.company.com
System Domain Name      : localhost
System OS Family        : AlmaLinux
System Java Name        : Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.6
System CPU Core Count   : 4

System is Virtual       : true
System is Cloud         : false
System is Container     : false
Hypervisor Name         : KVM
Cloud Provider Name     : null

USB Name                : null
USB Vendor Id           : null
USB Product Id          : null
USB Serial Number       : null
USB Mount Path          : null