Hallo, wie kann man bei tftp-hda einstellen, dass der Server die Datei auch herausgibt, wenn der Client eine beliebige Anzahl an <NUL>-Bytes an den Dateinamen anhängt? Es können unter Umständen über 1024 <NUL>-Bytes sein.
Moin, welcher Client macht denn sowas? Ich kenne allerdings keine Möglichkeit (mal abgesehen von einem Eingriff in die Sourcen). Warum auch, nach dem Null-terminiertem Dateinamen kommt ja noch der, ebenfalls Null-terminierte, Mode-String. Danach können noch beliebig viele Nullen kommen, die werden ignoriert (Option-Felder). timpi.
Der Aufbau des RRQ/WRQ-Pakets ist in RFC 1350 definiert, und zwar mit genau einem NUL-Byte als Trennzeichen zwischen Dateiname und Mode-Feld und genau einem NUL-Byte nach dem Mode-Feld. Alles andere wäre eben kein TFTP. Natürlich kann das UDP-Paket, dass diesen Request enthält, wesentlich länger sein, aber das Längenfeld der Nutzdaten darf im UDP-Header natürlich nur die Länge des Requests umfassen.
Ich habe es doch noch lösen können. Falls es noch jemand braucht, schreibe ich die Lösung. Stefan L. schrieb: > welcher Client macht denn sowas? so ca. 50 % aller PXE-Clients! Nur wenige halten sich an den Standard. Andere liefern eine <NUL> nach dem Name zuviel, wieder andere hängen über 1000 <NUL>-Bytes an. Andreas S. schrieb: > Der Aufbau des RRQ/WRQ-Pakets ist in RFC 1350 definiert Naja, ist ja kein Standard nur ein Request for Comment ;) Lösung: https://github.com/TheTesla/pxe_salt Man muss tftpd-hpa mit der Option für regex starten: tftpd-hpa -m regex_tftpd Die Datei regex_tftpd mit dem regex drin anlegen: rg [^[:print:]] Es ersetzt nicht druckbare Zeichen gegen nichts. Man muss das regex wirklich so formulieren. [ [:cntrl:]] ging nicht, obwohl es korrekt ist. Für die Suchmaschine: PXE-T00 filename too long PXE-T01 file not found
:
Bearbeitet durch User
Vielen Dank, gut zu wissen.
> so ca. 50 % aller PXE-Clients!
Na, da hab' ich wohl bislang fast immer die anderen 50% erwischt. Ein
Problem hatte ich zwar mal mit dem Dateinamen, das wurde aber gelöst
indem ich auf DHCP-Serverseite den Bootfilenamen <NUL>-terminiert habe
(statt "pxelinux.0" "pxelinux.0\000" eingetragen).
timpi.
Stefan H. schrieb: > Andreas S. schrieb: >> Der Aufbau des RRQ/WRQ-Pakets ist in RFC 1350 definiert > > Naja, ist ja kein Standard nur ein Request for Comment ;) Doch, dass ist ein Standard. Auch fast jedes andere Protokoll, inklusive TCP, IP, UDP, etc. existiert als RFC, dass ist nicht nur eine empfehlung, sonst würde ja garnichts richtig funktionnieren.
Stefan L. schrieb: > indem ich auf DHCP-Serverseite den Bootfilenamen <NUL>-terminiert Ich habe das DHCP-Paket angeschaut, da war alles mit <NUL> aufgefüllt. Das sind immer 128 Bytes für den namen. Daniel A. schrieb: > Doch, dass ist ein Standard. Danke, das hilft auch den anderen, die meinen Ironie-Smiley übersehen haben.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.