Forum: PC Hard- und Software TFTP-Server zero-padded-Dateinamen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Stefan H. (Firma: dm2sh) (stefan_helmert)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Stefan L. (timpi)


Bewertung
0 lesenswert
nicht 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.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Bewertung
0 lesenswert
nicht 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.

von Stefan H. (Firma: dm2sh) (stefan_helmert)


Bewertung
0 lesenswert
nicht 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

: Bearbeitet durch User
von Stefan L. (timpi)


Bewertung
0 lesenswert
nicht 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.

von Daniel A. (daniel-a)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Stefan H. (Firma: dm2sh) (stefan_helmert)


Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.