Fortran乙個獲取硬體系統資訊的函式庫

2021-09-08 14:14:13 字數 2920 閱讀 4070

此函式庫提供了 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 首次安裝日期(時間戳)

請注意:

1. 此函式庫不包含源**(由組合語言書寫,且公布源**會降低安全性) 2. 此函式庫僅用於簡單的加密手段!!!!對於商業險很強的工作,建議您購買正式的 dongle 許可管理軟體。 3. 部分函式可能需要管理員身份才能獲得正確的值。

以下為筆者身邊三颱電腦的執行結果:

以下為呼叫的範例**:

program www_fcode_cn

!//此**示範 fcforhard 函式庫的呼叫

!//安全性不高,請合理使用!

!//www.fcode.cn 發布

use kernel32 , only : getmodulehandle

use advapi32

implicit none

inte***ce

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 inte***ce

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

乙個用C 獲取硬體資訊的類

乙個用c 獲取硬體資訊的類 獲得主機ip位址 public string gethostip 獲取cpu編號 public string getcpuid return strcpuid catch return strharddiskid catch exception ex 獲取網絡卡mac位址...

android 獲取系統硬體資訊

一,首先設定許可權訪問 二,邏輯 獲取系統硬體資訊 package com.wangfubin.getmyphoneinformation import org.w3c.dom.userdatahandler import android.r.id import android.annotation...

乙個小視覺系統的硬體與軟體

最近做乙個機器視覺專案,對光學 鏡頭 相機 採集卡 軟體等都有了一些理解,做下筆記,慢慢完善。乙個小的機器視覺系統,分為硬體和軟體。硬體需要對光學 鏡頭 相機 採集卡等。軟體需要對做操作介面,主要是控制板塊對相機的影象採集。注意 相機與鏡頭之間有乙個法蘭距離,這個距離如果沒有對應,會對視野 焦距調節...