ARP-Tabelle auslesen - gelöst



  • Ohne mir das jetzt genau angeschaut zu haben. Die MAC Adresse ist doch schon in der Variable pIPNetRow. Der Member bPhysAddr ist ein Byte Array (mit 6 Elementen), der die MAC Adresse enthält. Die kannst du dir dann auch im Speicher halten, wenn du willst.



  • Danke für deine Antwort! Das weiss ich. Nur fehlt mir leider das Wissen wie ich dieses Byte Array in einem normalem char Array abspeichern kann.

    Mein Ziel ist es alle MAC-Adressen am Ende miteinander vergleichen zu können um zu sehen ob zwei gleiche MAC-Adressen vorhanden sind.

    Hier ist mein Ansatz: (funktionert natürlich nicht, da bPhysAddr zwei Chars enthält. Ich muss herausfinden wie ich auf die einzelnen Bytes von bPhysAddr zugreifen kann)

    char myarr[80];
    
    	myarr[0] = pIPNetRow->bPhysAddr[0];
    	myarr[1] = pIPNetRow->bPhysAddr[1];
    	myarr[2] = pIPNetRow->bPhysAddr[2];
    	myarr[3] = pIPNetRow->bPhysAddr[3];
    	myarr[4] = pIPNetRow->bPhysAddr[4];
    	myarr[5] = pIPNetRow->bPhysAddr[5];
    
    	for (int i = 0; i<6; i++)
    	{
    		cout<<"myarr["<<i<<"] = "<< myarr[i] <<endl;
    	}
    

    Danke für jeden Versuch.



  • Du kannst doch auch mit memcmp arrays vergleichen.

    typedef BYTE[6] MAC;
    MAC array1;
    MAC array2; 
    //....
    if (memcmp(array1,array2,sizeof(MAC)) == 0)
    {
      //identisch...
    }
    else
    {
      //nicht indetisch
    }
    


  • Burkhi schrieb:

    Du kannst doch auch mit memcmp arrays vergleichen.

    typedef BYTE[6] MAC;
    MAC array1;
    MAC array2; 
    //....
    if (memcmp(array1,array2,sizeof(MAC)) == 0)
    {
      //identisch...
    }
    else
    {
      //nicht indetisch
    }
    

    Danke für deine Antwort!
    Zuerst muss ich jedoch wissen wie ich die MAC Adresse in diesem Array speichern kann. Etwa mit: MAC array1 = pIPNetRow->bPhysAddr ?

    Dein Code funktioniert außerdem nicht. Folgender Fehler erscheint:

    "Der Bezeichner MAC ist nicht definiert"
    

    typedef Byte[6] MAC; habe ich außerhalb von main platziert

    Ich verwende Visual Studio 2010

    Edit: Mir ist aufgefallen das bei meiner Methode für 01 ein ☺ Smiley gespeichert wird. Weshalb wird das ASCII Zeichen angezeigt anstatt die Zahl?

    http://www.pasteall.org/pic/show.php?id=80131



  • Du stellst dich schon etwas dämlich an 😃

    Vergleiche, bevor du pbyte_Buffer aufräumst: memcmp(pIPNetRow->bPhysAddr, myarr, 6)
    Oder wenn du es unbedingt speichern (kopieren) willst: memcpy(myarr2, pIPNetRow->bPhysAddr, 6)

    Das Zeichen wird angezeigt, da std::cout erkennt, dass du einen char-Typ ausgibst.
    Du könntest zB. vorher casten: std::cout << static_cast<unsigned int>(mycharvar)



  • Sag mal, brauchst du (bezahlte) Direkthilfe (Skype etc.)? 🙂



  • MAC Adresse als lesbare Zeichen speichern geht auch so:

    char ziel[32];
    
    sprintf(ziel, "%02X-%02X-%02X-%02X-%02X-%02X-%02X", pIPNetRow->bPhysAddr[0], pIPNetRow->bPhysAddr[1], pIPNetRow->bPhysAddr[2], pIPNetRow->bPhysAddr[3], pIPNetRow->bPhysAddr[4], pIPNetRow->bPhysAddr[5]);
    

    Damit wäre das Problem umgangen:

    Edit: Mir ist aufgefallen das bei meiner Methode für 01 ein ☺ Smiley gespeichert wird. Weshalb wird das ASCII Zeichen angezeigt anstatt die Zahl?

    Mit "-" getrennt, kannste natürlich auch weglassen.



  • Hi schrieb:

    Du stellst dich schon etwas dämlich an 😃

    Ich habe zu keinem Zeitpunkt erwähnt das ich mich in C++ besonders auskenne, wenn ich keine Hilfe bräuchte, dann würde ich wohl kaum einen Post in diesem Forum veröffentlichen! Das Beleidigen bringt keinem was. 👎

    Bezahlte Hilfe ?
    Wird jetzt sogar schon Geld verlangt eine so simple Frage beantwortet zu bekommen? Traurig. Ich dachte dies ist ein Forum wo man sich gegenseitig hilft.

    Danke aber für den restlichen Teil deines Posts, war hilfreich 🙂

    @HiHo,

    Vielen Dank! Genau danach habe ich gesucht !! Schon wieder etwas neues dazu gelernt 🙂 THX 👍



  • Das war nicht als Beleidigung gedacht. Schon gar nicht mit dem Smilie hinten dran.
    Außerdem ist jeder mal irgendwo "dämlich" (denkt nicht ausreichend nach) :p
    Das war sehr sanft, freundlich und etwas "anspornend" gemeint.
    Aber vielleicht liegt's an meinem Autismus, hahahah!

    Nein, traurig ist da gar nichts. Könnte ja sein, dass du noch viel mehr Fragen hast, und diese gerne viel schneller/direkter beantwortet hättest.
    Dafür könnte dann einiges meiner Zeit draufgehen.
    War außerdem nur ein Angebot.

    🙄

    PS: Wenn du C++ verwendest, vergiss das grausige "sprintf" und guck dir "stringstreams" an.



  • Hi schrieb:

    Das war nicht als Beleidigung gedacht. Schon gar nicht mit dem Smilie hinten dran.
    Außerdem ist jeder mal irgendwo "dämlich" (denkt nicht ausreichend nach) :p
    Das war sehr sanft, freundlich und etwas "anspornend" gemeint.
    Aber vielleicht liegt's an meinem Autismus, hahahah!

    Nein, traurig ist da gar nichts. Könnte ja sein, dass du noch viel mehr Fragen hast, und diese gerne viel schneller/direkter beantwortet hättest.
    Dafür könnte dann einiges meiner Zeit draufgehen.
    War außerdem nur ein Angebot.

    🙄

    PS: Wenn du C++ verwendest, vergiss das grausige "sprintf" und guck dir "stringstreams" an.

    Tut mir leid, hab wohl etwas überreagiert. Ich hatte mich eben auf die antworten so sehr gefreut und musste dann im ersten Satz gleich eine Beleidigung lesen. Sprintf ist ganz gut, aber danke für den Tipp! 🙂

    Ich konnte mein Ziel einen Arp-Table Watcher zu erstellen das Man-in-the-Middle Attacks feststellen kann, endlich erreichen 🙂 Keine Ahnung ob es solch ein Programm schon gibt (sehr wahrscheinlich schon) aber es ging mir sowieso in erster Linie nur darum etwas zu lernen und Erfahrung mit der Windows API zu sammeln.

    Danke nochmal für eure Hilfe 👍



  • EdwardBlack schrieb:

    Ich hatte mich eben auf die antworten so sehr gefreut und musste dann im ersten Satz gleich eine Beleidigung lesen.

    Willkommen im Internet.

    🤡

    *SCNR*


Anmelden zum Antworten