rt

解决方案 »

  1.   

    to kmzs(.:RNPA:.山水岿濛) 
    如何获得网卡的MAC编码(网络中的任意一台电脑)
      

  2.   

    如何获得网卡的MAC编码(网络中的任意一台电脑)
    //
    'frmMain
    Private Sub cmdGet_Click()
       txtNIC.Text = GetMACAddress
       txtMB.Text = MBSerialNumber
    End Sub
    'basNIC
    Option ExplicitPublic Const NCBASTAT As Long = &H33
    Public Const NCBNAMSZ As Long = 16
    Public Const HEAP_ZERO_MEMORY As Long = &H8
    Public Const HEAP_GENERATE_EXCEPTIONS As Long = &H4
    Public Const NCBRESET As Long = &H32Public Type NET_CONTROL_BLOCK  '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 TypePublic 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
       
    Public Type NAME_BUFFER
       name        As String * NCBNAMSZ
       name_num    As Integer
       name_flags  As Integer
    End TypePublic Type ASTAT
       adapt          As ADAPTER_STATUS
       NameBuff(30)   As NAME_BUFFER
    End TypePublic Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
       (hpvDest As Any, ByVal _
        hpvSource As Long, ByVal _
        cbCopy As Long)
        
    Public Declare Function GetProcessHeap Lib "kernel32" () As LongPublic Declare Function HeapAlloc Lib "kernel32" _
        (ByVal hHeap As Long, ByVal dwFlags As Long, _
         ByVal dwBytes As Long) As Long
         
    Public Declare Function HeapFree Lib "kernel32" _
        (ByVal hHeap As Long, _
         ByVal dwFlags As Long, _
         lpMem As Any) As Long
         
    Public Declare Function Netbios Lib "netapi32.dll" _
       (pncb As NET_CONTROL_BLOCK) As Byte
         
    '=========================================================================================
    ' 目  的:    取得本机网络卡号码。
    '=========================================================================================
    Public Function GetMACAddress() As String
      
      ' retrieve the MAC Address for the network controller
      ' installed, returning a formatted string
       Dim AST                              As ASTAT
       Dim NCB                              As NET_CONTROL_BLOCK
       Dim pASTAT                           As Long
       Dim strTmp                              As String  'The IBM NetBIOS 3.0 specifications defines four basic
      'NetBIOS environments under the NCBRESET command. Win32
      'follows the OS/2 Dynamic Link Routine (DLR) environment.
      'This means that the first NCB issued by an application
      'must be a NCBRESET, with the exception of NCBENUM.
      'The Windows NT implementation differs from the IBM
      'NetBIOS 3.0 specifications in the NCB_CALLNAME field.
       NCB.ncb_command = NCBRESET
       Call Netbios(NCB)
       
      'To get the Media Access Control (MAC) address for an
      'ethernet adapter programmatically, use the Netbios()
      'NCBASTAT command and provide a "*" as the name in the
      'NCB.ncb_CallName field (in a 16-chr string).
       NCB.ncb_callname = "*               "
       NCB.ncb_command = NCBASTAT
       
      ' For machines with multiple network adapters you need to
      ' enumerate the LANA numbers and perform the NCBASTAT
      ' command on each. Even when you have a single network
      ' adapter, it is a good idea to enumerate valid LANA numbers
      ' first and perform the NCBASTAT on one of the valid LANA
      ' numbers. It is considered bad programming to hardcode the
      ' LANA number to 0 (see the comments section below).
       NCB.ncb_lana_num = 0
       NCB.ncb_length = Len(AST)
       
       pASTAT = HeapAlloc(GetProcessHeap(), HEAP_GENERATE_EXCEPTIONS _
                Or HEAP_ZERO_MEMORY, NCB.ncb_length)
                
       If pASTAT = 0 Then
          Debug.Print "memory allocation failed!"
          Exit Function
       End If
       
       NCB.ncb_buffer = pASTAT
       Call Netbios(NCB)
       
       CopyMemory AST, NCB.ncb_buffer, Len(AST)
       
       strTmp = Format$(Hex(AST.adapt.adapter_address(0)), "00") & " " & _
                Format$(Hex(AST.adapt.adapter_address(1)), "00") & " " & _
                Format$(Hex(AST.adapt.adapter_address(2)), "00") & " " & _
                Format$(Hex(AST.adapt.adapter_address(3)), "00") & " " & _
                Format$(Hex(AST.adapt.adapter_address(4)), "00") & " " & _
                Format$(Hex(AST.adapt.adapter_address(5)), "00")
               
       HeapFree GetProcessHeap(), 0, pASTAT
       
       GetMACAddress = strTmpEnd Function'=========================================================================================
    ' 目  的:    取得主机板号码。
    ' 参考数据:    WMI Object Browser。
    '=========================================================================================
    Public Function MBSerialNumber() As String
        
        Dim obj                             As Object
        Dim objs                            As Object
        Dim strAnswer                       As String
        
        Set objs = GetObject("WinMgmts:").InstancesOf("Win32_BaseBoard")
            
        ' 取出所有主机板的序号。
        For Each obj In objs
            strAnswer = strAnswer & obj.SerialNumber
            If strAnswer < objs.Count Then
                strAnswer = strAnswer & ","
            End If
        Next
        
        MBSerialNumber = strAnswer
    End Function
      

  3.   

    取CPU请参考这个程序:http://www.applevb.com/sourcecode/Detect%20cpu.zip
      

  4.   

    得到CPU序列号。********函数引用方法:AA = CPUInof_ME() (其中AA应为String类型)********
    Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long
    Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long
    Private Const VER_PLATFORM_WIN32_NT = 2
    Private Const VER_PLATFORM_WIN32_WINDOWS = 1
    Private Const VER_PLATFORM_WIN32s = 0
    Private Type OSVERSIONINFO
            dwOSVersionInfoSize As Long
            dwMajorVersion As Long
            dwMinorVersion As Long
            dwBuildNumber As Long
            dwPlatformId As Long
            szCSDVersion As String * 128      '  Maintenance string for PSS usage
    End TypePublic Function CPUInfo_ME() As String
        Dim len5 As Long, aa As Long
        Dim cmprName As String
        Dim osver As OSVERSIONINFO
        '取得Computer Name
        cmprName = String(255, 0)
        len5 = 256
        aa = GetComputerName(cmprName, len5)
        cmprName = Left(cmprName, InStr(1, cmprName, Chr(0)) - 1)
        computer = cmprName        '取得CPU端口号
        Set CPUs = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & computer & "\root\cimv2").ExecQuery("select * from Win32_Processor")
        For Each mycpu In CPUs
          CPUInfo_ME = mycpu.ProcessorId
        Next
    End Function
      

  5.   

    http://www.china-askpro.com/msg14/qa61.shtml
      

  6.   

    to   haohaohappy(爱要冒险,工作要拼) 
    Set CPUs = GetObject("winmgmts:{impersonationLevel=impersonate}!\\  " & computer & "\root\cimv2  ").ExecQuery("select  *  from  Win32_Processor  ")
    中有"自动化错误"
      

  7.   

    种植一个绑定了上述获取CPU ID 的程序的木马  :)