ベースとなるアイデアはこれでどうでしょう?
参考:
http://hsp.tv/play/pforum.php?mode=pastwch&num=24026
#include "hspinet.as"
#module
#defcfunc machine_number str salt2
newcom ole,"WbemScripting.SWbemLocator"
comres service
ole->"ConnectServer"
comres rows
service->"ExecQuery" "Select * From Win32_NetworkAdapterConfiguration"
count=rows("Count")
comres row
macs=""
repeat count
service->"Get" "Win32_NetworkAdapter.DeviceId=\""+(cnt+1)+"\""
vname=row(".NetConnectionId")
if vname("vartype")=8{
name=vname("value")
des=row("Description")
vaddress=row(".MACAddress")
if vaddress("vartype")=8:address=vaddress("value")
macs+=address
}
loop
varmd5@ md5,macs,strlen(macs)
salt=dir_desktop//変更可能
count=int("$"+strmid(md5,0,2))+256//変更可能
repeat count
macs=md5+salt+salt2
varmd5@ md5,macs,strlen(macs)
loop
return md5
#global
mes machine_number("arch")
mes machine_number("arch")
mes machine_number("linux")
mes machine_number("linux")
モジュール内をC/C++のDLLとすればより安全です。
ループ回数に関わる部分、salt周りをガチガチにすると安定すると思います。