06. juni 2002 - 10:31Der er
12 kommentarer og 1 løsning
Finde MAC adresse ud fra IP adresse
Jeg kunne godt tænke mig en rutine der kan returnere MAC adressen på et netkort hvis man kender IP adressen på kortet ! (Ikke bare på den PC man sidder på)
Jeg har en rutine i en Access database der returnerer alle aktuelle IP numre for alle registrerede computere i min PC Inventory DB, men jeg har også brug for MAC adressen i forbindelse med styring af internetadgang.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Slettet bruger
06. juni 2002 - 10:33#1
En ip adresse defineres ikke ud fra mac adressen og omvendt. Så det kan du ikke gøre på denne måde.
Altså nu er det jo sådan at hvis man pinger en IP adresse så før man entry i sin ARP tabel hvor man kan se MAC adressen på det netkort der har svaret, så teoretisk set burde det være muligt.
Synes godt om
Slettet bruger
06. juni 2002 - 10:48#3
Jo men det er jo på et lokalt net. Det er måske det du taler om?
Det er det nemlig. Jeg kan godt fortælle baggrunden : jeg har en database med oplysninger om alle vores computere hvor jeg har en rutine der finder den aktuelle IP adresse ud fra det computernavn som maskinen nu er tildelt. I forbindelse med noget nyt software vi skal have installeret til at kontrollere adgangen til interne, skal jeg bruge MAC adressen (den er permanent for maskinen/netkortet hvor imod IP'en kan skifte p.g.a. DHCP) og så mangler jeg lige en rutine til at klare det ud fra IP - jeg gider ikke at gå rundt til alle maskiner for at finde den :-)
Hi hugopedersen! I am also sure its possible and I am sure I have seen some software someware. I have a link which may be of use concerning WO (Wake On Lan) which uses the MAC address. www.depicus.com
Hi again Hugo! I can see they have chaged their homepage. It was possible to download software, but now it doesnt seem to be possible. I still have what I downloaded although I dont think it is exactly what you want. I can send it if your interested!
Måske ikke den pæneste kode, men det ser ud til at virke :-)
Public 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 = &H32
Public 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 Type
Public 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 Type
Public Type ASTAT adapt As ADAPTER_STATUS NameBuff(30) As NAME_BUFFER End Type
Public Declare Function Netbios Lib "netapi32" _ (pncb As NET_CONTROL_BLOCK) As Byte
Public 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 Long
Public 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 Function fhpGet_Address_MAC(Optional strComputer As String) As String ' ----------------------------------------------------------------------------------- ' Purpose : Retrieve the MAC Address for a computer ' Parameters : ' Returns : String ' Created : 06-07-02 HP ' Modified : ' Remarks : ' ----------------------------------------------------------------------------------- Dim strTemp As String 'Returnvalue Dim strNetBiosName As String 'Name of computer Dim intX As Integer 'Counter Dim intZeros As Integer 'Check Dim pASTAT As Long Dim NCB As NET_CONTROL_BLOCK Dim AST As ASTAT
If (strComputer = "") Or (fhpGetComputerName = strComputer) Then strNetBiosName = "* " Else strNetBiosName = Left(Trim(strComputer) & " ", 16) End If NCB.ncb_callname = strNetBiosName 'Send to API NCB.ncb_command = NCBASTAT
NCB.ncb_lana_num = 0 'Use first adaptor NCB.ncb_length = Len(AST)
pASTAT = HeapAlloc(GetProcessHeap(), _ HEAP_GENERATE_EXCEPTIONS Or _ HEAP_ZERO_MEMORY, _ NCB.ncb_length)
Exit_fhpGet_Address_MAC: HeapFree GetProcessHeap(), 0, pASTAT 'Clear memory For intX = 1 To Len(strTemp) 'Loop string If Mid(strTemp, intX, 1) = "0" Then intZeros = intZeros + 1 'Zero value End If Next intX
If intZeros = 12 Then 'Only zero values strTemp = "" 'Use empty string Else strTemp = strTemp 'Use found adress End If fhpGet_Address_MAC = strTemp 'Return address Exit Function
Error_fhpGet_Address_MAC: strTemp = "" 'If an error occured Select Case Err.Number Case 2501 Case 3021 Case Else MsgBox Err.Number & ": " & Err.Description, vbOKOnly + vbCritical, "Error in procedure 'fhpGet_Address_MAC'" End Select Resume Exit_fhpGet_Address_MAC
End Function
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.