TFTP-Server zero-padded-Dateinamen

#4891600
Lesenswert?

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.
(Firma: Schweigstill IT) Persönliche Seite #4891609
Lesenswert?

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.
OP (Firma: dm2sh) #4892619
Lesenswert?

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
#4892879
Lesenswert?

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.

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