Fortran一个获取硬件系统信息的函数库
2018-09-11 21:29
441 查看
此函数库提供了 Visual Fortran 上获取硬盘ID,CPU编号,windows安装时间及文件头部校验的四个函数。可用于简单的程序加密。(但切勿用于商业性很强的地方)
近期,不少朋友向笔者询问 Fortran 如何获得网卡地址,硬盘ID,CPU编号等。对此,笔者给出一个自己书写的简单的函数库。
!!点击此处下载!!
fcForHard 是面向 Visual Fortran(Intel,Compaq等)编译器的一个函数库,包含四个函数:
1. GetSectionCheckSum 用于获取exe头部校验。通过此校验数据,可判断 exe 是否被加壳或脱壳。 2. GetCPUID 用于获取 CPU 标识。 3. GetHardDiskSerialNumber 用于获取第一硬盘的 SN 标识。 4. GetWinInstallDate 用于获取 windows 首次安装日期(时间戳)
由于 MAC 地址是非常不确定的因素,一般用户也可能会修改MAC地址以达到使用路由等目的,因此,已经不再推荐使用 MAC 地址来判断硬件。
请注意: 1. 此函数库不包含源代码(由汇编语言书写,且公布源代码会降低安全性) 2. 此函数库仅用于简单的加密手段!!!!对于商业险很强的工作,建议您购买正式的 dongle 许可管理软件。 3. 部分函数可能需要管理员身份才能获得正确的值。
以下为笔者身边三台电脑的运行结果: 以下为调用的范例代码:
1. GetSectionCheckSum 用于获取exe头部校验。通过此校验数据,可判断 exe 是否被加壳或脱壳。 2. GetCPUID 用于获取 CPU 标识。 3. GetHardDiskSerialNumber 用于获取第一硬盘的 SN 标识。 4. GetWinInstallDate 用于获取 windows 首次安装日期(时间戳)
由于 MAC 地址是非常不确定的因素,一般用户也可能会修改MAC地址以达到使用路由等目的,因此,已经不再推荐使用 MAC 地址来判断硬件。
请注意: 1. 此函数库不包含源代码(由汇编语言书写,且公布源代码会降低安全性) 2. 此函数库仅用于简单的加密手段!!!!对于商业险很强的工作,建议您购买正式的 dongle 许可管理软件。 3. 部分函数可能需要管理员身份才能获得正确的值。
以下为笔者身边三台电脑的运行结果: 以下为调用的范例代码:
Program www_fcode_cn !// 此代码示范 fcForHard 函数库的调用 !// 安全性不高,请合理使用! !// www.fcode.cn 发布 use Kernel32 , only : GetModuleHandle use Advapi32 Implicit None Interface Integer Function GetSectionCheckSum( iAddBase , ilpNum ) !DEC$ ATTRIBUTES DEFAULT, STDCALL, ALIAS:'_GetSectionCheckSum@8' :: GetSectionCheckSum Integer iAddBase ,ilpNum End Function GetSectionCheckSum Subroutine GetCPUID( ilpID ) !DEC$ ATTRIBUTES DEFAULT, STDCALL, ALIAS:'_GetCPUID@4' :: GetCPUID Integer ilpID End Subroutine GetCPUID Integer Function GetHardDiskSerialNumber( ilpHardDisk , ilpID ) !DEC$ ATTRIBUTES DEFAULT, STDCALL, ALIAS:'_GetHardDiskSerialNumber@8' :: GetHardDiskSerialNumber Integer ilpHardDisk , ilpID End Function GetHardDiskSerialNumber Integer Function GetWinInstallDate() !DEC$ ATTRIBUTES DEFAULT, STDCALL, ALIAS:'_GetWinInstallDate@0' :: GetWinInstallDate End Function GetWinInstallDate End Interface character(36) :: cHDcode = '\@\t.s\tPgh#yRs?i]c(aPl&D6rtiBvWe\0z' Character(48) :: cCPUID , cHDID , cHD , cTemp Integer i , k call GetCPUID( Loc(cTemp) ) cTemp = adjustl(cTemp) i = index( cTemp , char(0)) cTemp(i:) = "" cCPUID = cTemp write(*,'(a)',advance='no') 'CPUID:' write(*,*) Trim(cCPUID) Do i = 1 , 18 cHD(i:i) = cHDcode( i*2-1 : i*2-1 ) EndDo cHD(19:19) = char(0) cTemp = "" i = GetHardDiskSerialNumber( Loc(cHD) , Loc( cTemp ) ) cTemp = adjustl(cTemp) cHDID = cTemp write(*,'(a)',advance='no') 'DISKSN:' write(*,*) Trim(adjustl(cHDID)) write(*,'(a)',advance='no') 'Win Install Date:' write(*,'(z8)') GetWinInstallDate() i = GetModuleHandle(0) i = GetSectionCheckSum( i , Loc(k) ) write(*,'(a,g0)') 'Sum of PE Header:' , k read(*,*) End Program www_fcode_cn
相关文章推荐
- 一个可以获取linux 系统硬件相关信息的类
- javascript 获取系统硬件信息
- 在VB中使用WMI获取系统硬件和软件有关信息
- .NET中获取系统硬件信息
- 获取 手机基本配置信息 硬件 系统信息 辅助类
- C/C++通过WMI和系统API函数获取获取系统硬件(cpu,内存,显卡,网卡)配置信息
- windos sdk windows系统信息:获取或设置硬件信息
- C# 获取机器的硬件信息(CPU ID序列号, 主板信息,硬盘序列号,系统信息)
- js获取客户端计算机硬件信息与系统信息
- 【C++】WMI获取系统硬件信息(CPU/DISK/NetWork etc)
- Inxi:获取Linux的系统和硬件信息
- 如何调用MFC中的函数打开一个系统资源面板,获取文件
- C/C++通过WMI和系统API函数获取系统硬件配置信息
- Inxi:获取Linux系统和硬件信息的神器
- 获取iphone的硬件版本以及系统信息
- 在vb中使用Iphlpapi.dll获取网络信息 第四章 第二节 一个重要函数
- SysErrorMessage函数获取系统错误信息
- 重新想象 Windows 8 Store Apps (30) - 信息: 获取包信息, 系统信息, 硬件信息, PnP信息, 常用设备信息
- JavaScript 获取客户端计算机硬件及系统信息 浏览器信息
- iphone开发之通过unix系统底层获取和系统相关的硬件信息