Windows ARP cache

Gast #4257331
Lesenswert?
• ▲
▼
Guten Morgen,

unter Windows 7 im Kommandofenster habe ich folgendes zum ARP cache 
festgestellt:

Wenn ich den ARP cache mit "arp -a" auslese, dann werden alle Einträge 
angezeigt.

 192.168.0.10          02-00-00-00-00-00     dynamisch
 192.168.0.15          01-02-03-04-05-06     dynamisch

Sobald ich aber einen ARP Eintrag von einer bestimmten IP Adresse 
192.168.0.12 auslesen möchte, dann erhalte ich einen ARP Eintrag.

 arp -a 192.168.0.12

 192.168.0.12          00-00-0c-07-ac-bd     dynamisch

Warum kann dies sein? Der ARP Eintrag für die IP Adresse 192.168.0.12 
müsste doch leer sein oder?
Gast #4257337
Lesenswert?
• ▲
▼
Wenn ich meine C# Applikation das erstemal starte, dann werden dreimal 
ARP request packete (192.169.0.10; 192.168.0.12; 192.168.0.15) gesendet. 
Dies passiert mit der Funktion SendARP.
1
[DllImport("iphlpapi.dll", ExactSpelling = true)]
2
        public static extern int SendARP(int DestIP, int SrcIP, byte[] pMacAddr, ref int PhyAddrLen);

Bei der IP Adresse 192.168.0.12 ist das erstemal auch kein ARP Eintrag 
vorhanden. Ist auch richtig so. Nur wenn ich dann das zweitemal die 
Applikation starte, dann erhalte ich einen ARP Eintrag bei dieser IP 
Adresse.
#4257342
Lesenswert?
• ▲
▼
netzwerk schrieb:
> Bei der IP Adresse 192.168.0.12 ist das erstemal auch kein ARP Eintrag
> vorhanden. Ist auch richtig so. Nur wenn ich dann das zweitemal die
> Applikation starte, dann erhalte ich einen ARP Eintrag bei dieser IP
> Adresse.

Das ist wie Kaffeesatz lesen, woher sollen wir wissen, was Dein Programm 
alles schönes macht!?

Erklär doch mal, wieso es beim erste Mal richtig ist, dass für die .12 
kein ARP-Eintrag kommt und beim zweiten Mal ist es dann falsch!?
Gibt es in dem Moment kein System mit der IP .12 und es ist deshalb 
falsch?
Wie wäre es, einfach mal einen Wireshark / tcpdump zu verwenden?
Gast #4257346
Lesenswert?
• ▲
▼
Send arp request Methode:
1
[DllImport("iphlpapi.dll", ExactSpelling = true)]
2
        public static extern int SendARP(int DestIP, int SrcIP, byte[] pMacAddr, ref int PhyAddrLen);
3

4
        public string SendMACAddress(string ipAddress)
5
        {
6
            IPAddress dstIP = IPAddress.Parse(ipAddress);
7
            byte[] macAddr = new byte[6];
8
            int maxAddrLen = macAddr.Length;
9
            int retValue = SendARP((int)dstIP.Address, 0, macAddr, ref maxAddrLen);
10
            string macAddress = BitConverter.ToString(macAddr, 0, maxAddrLen);
11
            return macAddress;
12
        }
Gast #4257352
Lesenswert?
• ▲
▼
Erste Durchlauf:

1. Aufruf: mMacAddr = SendMACAddress("192.168.0.10"); --> mac addr 
vorhanden
2. Aufruf: mMacAddr = SendMACAddress("192.168.0.12"); --> mac addr leer
3. Aufruf: mMacAddr = SendMACAddress("192.168.0.15"); --> mac addr 
vorhanden

Zweiten Durchlauf:

1. Aufruf: mMacAddr = SendMACAddress("192.168.0.10"); --> mac addr 
vorhanden
2. Aufruf: mMacAddr = SendMACAddress("192.168.0.12"); --> mac addr 
vorhanden
3. Aufruf: mMacAddr = SendMACAddress("192.168.0.15"); --> mac addr 
vorhanden

Im zweiten Durchlauf müsste bei der IP Adresse 192.168.0.12 kein arp 
Eintrag auszulesen sein.
Gast #4257365
Lesenswert?
• ▲
▼
Ich habe ganz vergessen zu erwähnen, dass der Teilnehmer 192.168.0.12 
absichtlich nicht am Rechner angeschlossen ist. Nur die anderen beiden 
Teilnehmer sind mit dem Rechner via Hub verbunden. Das ist genau das 
Problem. Trotzdem das der Teilnehmer mit der IP 192.168.0.12 nicht mit 
dem Rechner verbunden ist, erhalte ich beim zweiten Ausführen der 
Funktion SendMACAddress eine ungültige MAC Adresse.
Gast #4262037
Lesenswert?
• ▲
▼
Eddy C. schrieb:
> Dazu müsste man wissen, warum Du Dich überhaupt mit ARP beschäftigst,
> bzw. wofür Du ARP vergewaltigen willst.

Die letzten paar Kerle, die hier was mit Visual-Basic, Windows, ARP und 
DHCP machen wollten, hatten vor irgendwelche ESP8266/Arduinos im lokalen 
Netz zu finden.
Vielleicht ist der TE hier auch so einer, ist da irgendwo ein Nest?

> Vielleicht solltest Du einfach wieder ein paar OSI-Layer hochkommen.

Seh ich auch so. DHCP-Client auf die ESPs, Auffinden per UDP-Broadcast.

Einfach, sicher und portabel. Kein Gefrickel mit ARP-Caches, kein 
Screen-Scraping von Router-Configurations-Webseiten.
Gast #4262163
Lesenswert?
• ▲
▼
Hallo, mir geht es eigentlich nur darum, dass ich beim zweiten Senden 
vom ARP Request eine falsche MAC Adresse erhalte. Die ersten fünf Bytes 
von der MAC Adresse siehen dann so aus: "00-00-0C-07-AC"
Es handelt sich dabei um eine virtuelle MAC Adresse. Ich verstehe trotz 
dem Wikipedia nicht, wie dazu kommen kann.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren