B4J Library (b4j)[juuid] Get Unique hardware ID

Get Unique hardware ID in b4j
tested on windows only you can test on mac or linux

8 method to get Unique hardware id

b4j.png




updated v1.8
fixed error in none_ui apps
removed all unnecessary methods
two new method added
Get_HWID1
Get_HWID2

updated v2.0
Using java standard functions without modification
Changed Lib Name to juuid (jpadina deprecated)
added Get_MachineID2
added Email Validation

updated v2.1
added Get_HddId3

updated v2.2
added Get_HddID4(String Driveletter)

updated v2.3
added Get_LocalHardisk_Info

updated v2.4
Added :
Get_CPUID2
Get_CPUName
Get_TotalPhysicalMemory
Get_MotherBoardName
Get_AllMacIds
Get_GpuName
Get_GpuID
Get_RandomUuid

updated v2.5
Added :
Linux_UUID1
Linux_UUID2
Linux_UUID3
Linux_UUID4
Linux_MacId
Some Fixes >> Get_LocalHardisk_Info

updated v2.6
Some Fixes and changes in Get_LocalHardisk_Info
bug fixed in Linux Methods
added OS_SerialNumber
added OS_Version
added Get_CPULogicalProcessors
added Get_BiosVersion
added OS_Name


How Use :
B4X:
    Dim pdd As jUUID

    Log(pdd.Get_CPUID )
    Log( pdd.Get_HddID1 )
    Log( pdd.Get_HddID2 )
    Log( pdd.Get_HddID3 )
    Log( pdd.Get_HddID4("C") )  //Hard drive letter
    Log ( pdd.Get_MachineID )
    Log ( pdd.Get_MachineID2 )
    Log ( pdd.Get_MacId )
    Log ( pdd.Get_MotherboardSN )
    Log( pdd.Get_HWID1 )  'hardware + software > can change with changing windows or user
    Log( pdd.Get_HWID2 )  'hardware + software > can change with changing windows or user


B4X:
'Hardware information
'Windows Only

    Dim p As jUUID
    Log("OS_Name : "&p.OS_Name)
    Log("OS_Version: "&p.OS_Version)
    Log("OS_Arch : "&p.OS_Arch)
    Log("OS_username : "&p.OS_UserName)
    Log("OS_SerialNumber : "&p.OS_SerialNumber)
    Log("MainBoard : "&p.Get_MotherBoardName)
    Log("CPU Name : "&p.Get_CPUName)
    Log("CPU Cores : "&p.Get_CPUCores)
    Log("Cpu LogicalProcessors : "&p.Get_CPULogicalProcessors)
    Log("Total PhysicalMemory : "&Round(p.Get_TotalPhysicalMemory/1024/1024)&" MB")
    Log("Free PhysicalMemory : "&Round(p.Get_AvailablePhysicalMemory/1024)&" MB")
    Log("GPU Name: "&p.Get_GpuName)
    Log("Bios Version : "&p.Get_BiosVersion)


Any function that has no result returns a null value
lib (jar and xml files) atteched.
 

Attachments

  • Juuid 2.4.zip
    7.9 KB · Views: 286
  • juuid 2.5.zip
    9.2 KB · Views: 72
  • JUUID 2.6.rar
    9.9 KB · Views: 8
Last edited:

B4XDev

Member
Licensed User
...if it is Windows, you can do it alone... with just a "cmd" command...

this will return all serial numbers of drives... (ofcourse there is the old command, vol c:, vol d: )
B4X:
wmic diskdrive get serialnumber

Those are some weird numbers I've not seen before. What format is the serial number?! Is that an immutable ID?
 

B4XDev

Member
Licensed User
Number allocated by the manufacturer to identify the physical media.

Example: WD-WM3493798728

Wow! Is it a unique ID and immutable? It won't change with software updates (like, to the OS) or a reformat?
 

Magma

Expert
Licensed User
Longtime User

B4XDev

Member
Licensed User
i think that not change... "not sure" ... but as search it is totally different from "vol"...

And I cannot tell or get information specifically for a particular drive letter (C, D, etc.). Do you know how to match the drive info from wmic with the drive letter?
 

B4XDev

Member
Licensed User
a little different... not C: or D:... more physical... but if you search you find the way...
B4X:
wmic diskdrive get Name, SerialNumber

I've tried a couple of options (deviceid, serialnumber, systemname, etc...) but none of them return the drive letter that has been assigned to the drive. I will see what I can find searching the interwebs...
 

Magma

Expert
Licensed User
Longtime User
this return the logicaldisks - may be the row-series is the same... not checked... (also you can see the different serial number here)
B4X:
wmic logicaldisk get caption,description,drivetype,providername,volumename,volumeserialnumber
 

Magma

Expert
Licensed User
Longtime User

behnam_tr

Active Member
Licensed User
Longtime User
Yes! Perfect.

One more thing... PCs can have multiple drives. Is there a way we can specify which drive we want to get the serial number of?

Like
B4X:
Sub Get_HddId(myDriveLetter As String) As String

B4X:
Log(Get_HddId("C"))
'or
Log(Get_HddId("C:"))
'or
Log(Get_HddId("C:\"))

One of those... 😁

added !!
Log(Get_HddId4("C"))
download v2.2
 
Last edited:

B4XDev

Member
Licensed User
sorry... this can't be..right i said... because physical drives... can have... more than 1 partition with other names..... so.... can't think something for that... for now..

It's working perfectly! Thank you!
 

behnam_tr

Active Member
Licensed User
Longtime User
this return the logicaldisks - may be the row-series is the same... not checked... (also you can see the different serial number here)
B4X:
wmic logicaldisk get caption,description,drivetype,providername,volumename,volumeserialnumber

thanks for code
i added to lib (v2.3)


B4X:
Dim l As List = p.Get_LocalHardisk_Info
    For i=1 To l.Size-1
        
        Log(l.Get(i))

    Next
 

peacemaker

Expert
Licensed User
Longtime User
Nothing works for Linux, excepting Get_MacId, that are changed after reboot...
No any constant info about Linux really ?

What about this ?
 

Magma

Expert
Licensed User
Longtime User
Nothing works for Linux, excepting Get_MacId, that are changed after reboot...
No any constant info about Linux really ?

What about this ?
may be somehow... getting serial number of hdd/ssd or motherboard...

hdd-ssd serial:
lsblk --nodeps -no name,serial


motherboard s/n needs a library (extra apt-get)
sudo dmidecode -t system | grep Serial


ps: Get_MacId changes after reboot ?... how ? do you change it by hand-edit... ???
 

peacemaker

Expert
Licensed User
Longtime User
ps: Get_MacId changes after reboot ?... how ? do you change it by hand-edit... ???

:) i was debugging yesterday my API sending data from a Linux host to a server, APIkey is based on the HW info to identify the client.
But today API stopped to work, and i see the new MAC from Linux, just after host power up.
No manual actions.
 

behnam_tr

Active Member
Licensed User
Longtime User
Nothing works for Linux, excepting Get_MacId, that are changed after reboot...
No any constant info about Linux really ?

What about this ?

I will try to add some methods related to Linux
If there is a method for Linux
 
Top