kleine Netzwerkpakete (Linux)



  • Hallo C++-Forum,

    erstmal möchte ich sagen, dass Ihr eine gute und nette Informationsquelle seit (war bisher immer nur passiver Nutzer).

    Aber jetzt habe ich auch mal eine Frage:
    Ich muss ein Netzwerk-Paket (Ehternet, sock_packet) verschicken welches kleiner als 60 bytes (ohne checksumme, mit kleiner als 64bytes) ist.

    Sprich ich habe mir mein Netzwerkpaket erstellt (54bytes) und sobald ich es mit TCPDUMP oder Wireshark bekomme sind es automatisch 60bytes.

    Habe auch schon einige Kernel-Headerdateien versuchsweise angepasst - ohne erfolg. Es wird immer wieder der Trailer angehangen (=60bytes ohne/ 64 bytes mit EthernetCRC) 😞

    Das Paket darf aber nicht länger als 54bytes sein. (Ich habe es schon bei einem Windowsproggy live gesehen - das verschickt auch weniger als 60bytes)

    Hat jemand soetwas schon einmal gemacht? Wäre nett wenn mir jemand bei diesem speziellen Problem helfen könnte

    Vielen Dank schonmal

    logoFF



  • ethernet schreibt vor, dass pakete nicht kleiner als 512 bit bzw 64 byte sein dürfen. der grund dafür ist das alte csma/cd verfahren, das zwar heute so gut wie kaum mehr in kabelgebundenen ethernet netzwerken verwendet wird, aber trotzdem nach wie vor die minimale paketlänge vorschreibt.
    linux wird dir deshalb wohl keine chance geben, was kleineres zu schicken. microsoft hat sich schon allgemein nicht gerne an standards gehalten und wird deshalb auch programmierer nicht dazu zwingen. letzteres ist aber in beiden fällen eine vermutung.

    wenn du wirklich 56 byte verschicken willst, wirst du das #define ETH_ZLEN in der datei linux/if_ether.h ändern müssen und den kernel dann neu compilieren. das ist aber auch nur gut geraten und nicht ausprobiert.



  • @besserwisser,

    wieso kommst Du auf 56bytes?

    natuerlich ist die ETH_ZLEN die richtige konstante, aber naja was soll ich sagen et lüppt net 😞

    naja irgendwo muss es ja hinterlegt sein, dass ein paket min. 60bytes ham muss... und da bei GNU/Linux alles im source vorliegt isset acuh manipulierbar 🙂

    würde mich also freuen, wenn mich jemand auf die passende stelle stupsst

    grüüssse



  • sorry. 54. ein lapsus meinerseits 🙂

    hast du nach der veränderung den kernel neu compiliert und den neu compilierten gestartet?



  • @besserwisser
    ich brauche ein paket mit 56bytes, war mir heute morgen aber noch nicht ganz fit 😉

    zum Kernel, ja ich habe die Konstante geändert nen neuen Kernel gebacken und auch diesen gebootet. mit dem Ergebnis, dass nix mehr übers Kabel ging - ein Wireshark (über einen HUB-Angeschlossen) zeichnete nix mehr auf...
    ... auch ICMP-Echo-Request blieben ohne Antwort (PING)

    zum eigentlichen Problem:
    Ich habe ein aktives Netzwerkgerät, welches misskonfiguriert ist (seine IP zur Konfiguration liegt im D-Klasse bereich liegt). Dem Gerät wird normalerweise über ein UDP-Paket eine IP zugewiesen, doch die proprietäre Konfigurationssoftware spricht nicht ins Mulicast (D-Klasse). Da ich aber die MAC habe und den Aufbau des Paketes kenne (56bytes) hoffte ich das Paket selbst zusammenzubasteln und auf den Weg zuschicken. Mit der MAC des "misskonfiguierten" Gerätes - problem gelöst.
    Leider reagiert das Gerät nicht wirklich auf das Paket (mit 60bytes) 😞 und ich hoffe, dass es auf das "kaputte" 56 bytes eine reaktion zeigt 🙄

    Windows lässt mich nunmal nicht ein eigenes Paket auf der Ethernetebene abschicken und bei Linux glaube ich fest daran🕶

    also bin ich für jede Idee (auch unter einem Windows) sehr dankbar

    LogoFF

    ps - nein der Resetschalter ist nicht vorhanden, und nen schönen (teuren 😡) Briefbeschwerer habe ich schon



  • Geht das unter Windows nicht mit der WinPcap Library?



  • paket, verdammt. P-A-K-E-T.



  • ob nun die englische Schreibweise oder die deutsche (Paket) nur wenn Du die ganze Zeit im vi packet tippen musst, ist es auch im Forum schnell passiert ...

    btw. unter Windows versendet er auch 60bytes (XP/Vista) 😞

    Aber, ich habe ein Programm gezeigt bekommen, welches unter xBSD auch unter 60bytes sendet... Leider war dies nur kurzfristig und ich war einwenig in Karnevalsstimmung 🤡

    Ich denke Aschermittwoch werde ich neues probieren...



  • ethernet schreibt nun mal 64 byte mindestlänge pro paket vor. du wirst nichts anderes schaffen. dein zukünftiger briefbeschwerer ist vielleicht einfach nur komplett kaputt.

    es kenn z.b. gut sein, dass die netzwerkkarte das padding erledigen, wenn das nötig sein sollte. das kannst du nicht umgehen.


Anmelden zum Antworten