科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件取得网卡序列号

取得网卡序列号

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

很多软件以取得网卡地址作为license验证,这不失为一个验证合法用户的好办法,不过要付出回复用户电话、传真的代价

来源:soft6 2008年5月13日

关键字: 序列号 网卡 VB vb.net Windows

  • 评论
  • 分享微博
  • 分享邮件

很多软件以取得网卡地址作为license验证,这不失为一个验证合法用户的好办法,不过要付出回复用户电话、传真的代价哦 ^_^
  将下面这段代码拷贝到程序中,然后在你的程序需要的时候调用ethernetaddress(0),该函数返回的字符串就是您机器上网卡的以太序列号。

private const ncbastat = &h33
private const ncbnamsz = 16
private const heap_zero_memory = &h8
private const heap_generate_exceptions = &h4
private const ncbreset = &h32

private type ncb
 ncb_command as byte
 ncb_retcode as byte
 ncb_lsn as byte
 ncb_num as byte
 ncb_buffer as long
 ncb_length as integer
 ncb_callname as string * ncbnamsz
 ncb_name as string * ncbnamsz
 ncb_rto as byte
 ncb_sto as byte
 ncb_post as long
 ncb_lana_num as byte
 ncb_cmd_cplt as byte
 ncb_reserve(9) as byte '' reserved, must be 0
 ncb_event as long
end type

private type adapter_status
 adapter_address(5) as byte
 rev_major as byte
 reserved0 as byte
 adapter_type as byte
 rev_minor as byte
 duration as integer
 frmr_recv as integer
 frmr_xmit as integer
 iframe_recv_err as integer
 xmit_aborts as integer
 xmit_success as long
 recv_success as long
 iframe_xmit_err as integer
 recv_buff_unavail as integer
 t1_timeouts as integer
 ti_timeouts as integer
 reserved1 as long
 free_ncbs as integer
 max_cfg_ncbs as integer
 max_ncbs as integer
 xmit_buf_unavail as integer
 max_dgram_size as integer
 pending_sess as integer
 max_cfg_sess as integer
 max_sess as integer
 max_sess_pkt_size as integer
 name_count as integer
end type

private type name_buffer
 name as string * ncbnamsz
 name_num as integer
 name_flags as integer
end type

private type astat
 adapt as adapter_status
 namebuff(30) as name_buffer
end type

private declare function netbios lib "netapi32.dll" _
(pncb as ncb) as byte

private declare sub copymemory lib "kernel32" alias _
"rtlmovememory" (hpvdest as any, byval hpvsource as long, _
byval cbcopy as long)

private declare function getprocessheap lib "kernel32" () _
as long

private declare function heapalloc lib "kernel32" _
(byval hheap as long, byval dwflags as long, _
byval dwbytes as long) as long

private declare function heapfree lib "kernel32" _
(byval hheap as long, byval dwflags as long, lpmem as any) _
as long

private function ethernetaddress(lananumber as long) _
as string

 dim udtncb    as ncb
 dim bytresponse as byte
 dim udtastat   as astat
 dim udttempastat as astat
 dim lngastat   as long
 dim strout    as string
 dim x      as integer

 udtncb.ncb_command = ncbreset
 bytresponse = netbios(udtncb)
 udtncb.ncb_command = ncbastat
 udtncb.ncb_lana_num = lananumber
 udtncb.ncb_callname = "* "
 udtncb.ncb_length = len(udtastat)
 lngastat = heapalloc(getprocessheap(), _
heap_generate_exceptions or heap_zero_memory, udtncb.ncb_length)

 strout = ""
 if lngastat then
  udtncb.ncb_buffer = lngastat
  bytresponse = netbios(udtncb)
  copymemory udtastat, udtncb.ncb_buffer, len(udtastat)
   with udtastat.adapt
   for x = 0 to 5
    strout = strout & right$("00" & hex$(.adapter_address(x)), 2)
   next x
  end with
  heapfree getprocessheap(), 0, lngastat
 end if
 ethernetaddress = strout
end function

    • 评论
    • 分享微博
    • 分享邮件
    闂備緡鍙庨崰鏇炩枎閵忋垺濯奸柕蹇嬪€栭~锟�

    婵犵鈧啿鈧綊鎮樻径鎰畺闁靛ň鏅滄慨婊堟偨椤栨稓鎽冮柟鐑╂櫊瀹曟岸宕堕埡鍌滄殸闂佽鍨伴崢鏍姳閿涘嫭鍠嗘い銈呭姬婵☆偅婢樺Λ妤呮偂濞嗘挸瀚夐柍褜鍓熷顒侊紣娓氣偓閻涙捇鏌涘┑鍛樂缂佹鐭傞獮搴ㄥ焵椤掑嫬瀚夋い鏍ㄧ懁缁诲棝鏌熼褍鐏茬紒杈ㄧ箞閺屽洭鏁愰崟顓犳澖闁荤姳闄嶉崹钘壩i崟顖涘殜闁硅泛顫曢埀顒€锕︾槐鏃堝箣閻愬弬妤呮煛閸偄鐏﹂柛瀣墬缁傛帞鎹勯搹瑙勵啈闂佸搫瀚烽崹閬嶅磻瀹ュ鍎嶉柛鏇ㄥ墯娴犳ê霉閿濆棗鈻曢柍褜鍓氶弻銊ф閻愬鈻曢悗锝傛櫇椤忛亶鏌曢崱顓熷

    重磅专题
    往期文章
    最新文章