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 fitzum 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.