mtd-utils für NAND Sicherung übersetzen

Es gibt im Netz viele Anleitungen zum Übersetzen der mtd-utils. Leider ist keine Einziger von mir aufgefundener Artikel auf meine Anforderungen zugeschnitten. Die meisten Anleitungen sind für sehr alte Versionen der mtd-utils verfasst, so das sie zum Beispiel davon ausgehen das kein ./configure Script für diese Software existiert oder die Anleitungen beziehen sich auf die besonderheiten des Cross-Compilings und lassen alles andere weg.

Hier ist meine Anleitung für das übersetzen der mtd-utils auf der NAS CL-35B2. Diese Anleitung wird benötigt um die Werkzeuge nanddump und nandwrite zu erhalten welche für ein Backup und Restore der NAS benötigt werden.

Die Anleitung kann direkt nach dem vorbereiten eines Buildsystems für die CL-35B2, und einem chroot in das Buildysystem, verwendet werden.

Die Bibliotheken werden direkt in das Buildsystem geschrieben und ich verwende das Paketmanagement nicht da es sich nur um das Buildsystem handelt, welches nach dem erfolgreichen übersetzten der Quellen wieder gelöscht wird. Sollte Dein Buildsystem Dauerhaft bestehen sollen empfehle ich Dir rpm-Pakete entsprechend dieser Anleitung zu erstellen.

1.) Vorbereitungen und Download der Sourcecodes

2.) zlib erstellen

3.) lzo erstellen

4.) e2sfprogs erstellen

5.) Die mtd-utils übersetzen

nach der Installation sind folgende Werkzeuge zusätzlich verfügbar.:

ToolNutzen
ubiupdatevol
ubimkvol
ubirmvol
ubicrc32
ubinfo Ausgabe von Informationen zum NAND Speicher und zur Partitionierung und zu den Details einer UBI-Partition
ubiattach
ubidetach
ubinize
ubiformat
ubirename
mtdinfoAusgabe von Informationen zum NAND Speicher und zur Partitionierung und zu den Details einer MTD-Partition
ubirsvol
ubiblock
ftl_format
doc_loadbios
ftl_check
mtd_debug
docfdisk
serve_image
recv_image
flash_erase
flash_lock
flash_unlock
flash_otp_info
flash_otp_dump
flash_otp_lock
flash_otp_write
flashcp
mtdpart Partitionierungswerkzeug für einen NAND Speicher
nanddump Export des Inhalts einer NAND-Partition
nandwrite zurückschreiben einer Sicherung in den NAND Speicher
nandtest
nftldump
nftl_format
rfddump
rfdformat
mkfs.ubifs
mkfs.jffs2
jffs2dump
jffs2reader
sumtool

Hilfe, ich habe kein uuencode!!!

Zufällige ASCII Zeichen

Ich wollte mir vor kurzem Schadcode zur Analyse von einem Computer ohne Netzwerk über die Serielle Console kopieren, musste jedoch leider feststellen das kein uuencode auf dem Server vorinstalliert war.

Nach einer kurzen suche suche bin ich auf xxd gestoßen, mit dem sich Binärdaten in hexadezimalcodes, und wieder zurück, umwandeln lässt.

Eine Datei „Datei“ kann mit dem folgenden Aufruf in Hex-Dump gewandelt werden.:

Ich schalte bei der Seriellen Console im anschluss das Logging ein, schreibe die Ausgaben also in eine Datei. und gebe mit „cat Datei.txt“ die Hex-Dump-Datei aus.

Nach dem die überzähligen Zeilen aus dem Mitschnitt entfernt wurden kann mit dem folgenden Befehl der Hex-Dump wieder in die Ursprungsdatei zurück umgewandelt werden.

Die beiden Dateien „Datei-eins“ und die auf dem ursprünglichen Computer liegende Datei „Datei“ sind identisch. Der Dateiname und die Dateirechte werden bei dieser Methode jedoch im gegensatz zu uuencode nicht übernommen.

Bei einem Größenvergleich mit uuencode schneidet xxd erwartungsgemäß nicht besonders gut ab,

Test zum Speicherbedarf:

  • Anlegen einer binären Testdatei mit:

  • Erzeugen der Testdateien für uuencode, xxd, base32 und base64:

Die Sicherung der Datei ist als Hex-Dump, xxd deutlich größer als mit uuencode oder base64, sogar noch größer als eine Umwandlung in ASCII via base32:

 

SMTP via Telnet

Ein Beispiel für die manuelle EMail-Zustellung via Telnet:

~$ telnet mx.example.com 25
Trying 198.51.100.215…
Connected to mx.example.com.
Escape character is ‚^]‘.
220 mx.angststalt.de ESMTP Postfix (Debian/GNU)

Die Verbindung zum Server mx.example.com wird über port 25 Hergestellt

EHLO domain.tld
250-mx.example.com
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

„Helo“ mit dem Eigenen Hostnamen um die Verbindung aufzunehmen

MAIL FROM: <test@domain.tld>
250 2.1.0 Ok

Absenderangabe der EMail.

RCPT TO: <zieladresse@dieseserver.tld>
250 2.1.5 Ok

 

Empfänger der EMail angeben.

DATA
354 End data with <CR><LF>.<CR><LF>

Hier beginnt die EMail…

Subject:Hey, hier eine EMail für dich

Angabe des Betreffs der EMail

Ich habe hier eine EMail für dich,
in dieser EMail steht eine ganze Menge Text…

An dieser Stelle folgt der Inhalt der EMail…

.
250 2.0.0 Ok: queued as 112AE1B1

Mit einem Punkt wird die EMail beendet.

QUIT
221 2.0.0 Bye
Connection closed by foreign host.

und mit dem Befehl „Quit“ wird die Verbindung beendet.

Multifile Tar Archive

GNU Tar selbst bietet leider keine Möglichkeit die Tar-Datei in auf mehrere Dateien aufzuteilen. Der Linux Befehls split bietet die Möglichkeit dieses Manko zu beheben.

Tar Datei in vielen (kleinen) Dateien erzeugen:

Wenn als „Größe der Ausgabedatei in Bytes“ einer der folgenden Werte eingesetzt wird, wird das tar-Archive in entsprechend kleine Teile aufgespalten.:
1 Megabyte – 1048576
1,44 Megabyte – 1474560
10 Megabyte – 10485760
1 Gigabyte – 1073741824

Die Dateien können wie folgt wieder entpackt werden:

Nützliche OpenSSL Commands

OpenSSL

Formatwandlung eines Zertifikates vom .pem in das .pkcs12 Format

openssl pkcs12 -export -out mycert.p12 \
-inkey $HOME/.globus/userkey.pem \
-in $HOME/.globus/usercert.pem -name „My Certificate“

Formatwandlung eines Host Zertifikates vom .pkcs12 in das .pem Format

openssl pkcs12 -in host.domain.p12 -clcerts -nokeys -out host.domain.cert.pem
openssl pkcs12 -in host.domain.p12 -nocerts -nodes -out host.domain.key.pem

# These files should then be placed in /etc/grid-security and httpd.conf
# modified accordingly. host.domain.cert.pem can safely be world readable
# but host.domain.key.pem must only be readable by root!:
chown root.root host.domain.key.pem
chmod 0400 host.domain.key.pem

Formatwandlung eines Benutzer Zertifikates vom .pkcs12 in das .pem Format

openssl pkcs12 -in export.p12 -clcerts -nokeys -out $HOME/.globus/usercert.pem
openssl pkcs12 -in export.p12 -nocerts -out $HOME/.globus/userkey.pem

# The user certificate can safely be world readable, but userkey.pem
# must only be readable by you!
chmod 0400 $HOME/.globus/userkey.pem

Passwort des Private keys ändern

openssl rsa -in $HOME/.globus/userkey.pem -des3
# you will be prompted for the old passphrase, the new passphrase
# and to verify the new passphrase

Informationen aus dem Zertifikat anzeigen.

# viele Informationen
openssl x509 -text -in cert.pem

# Aussteller
openssl x509 -noout -in cert.pem -issuer

# subject
openssl x509 -noout -in cert.pem -subject

# in welchem Zeitraum ist es gültig?
openssl x509 -noout -in cert.pem -dates

# Der Hash wert des Zertifikates
openssl x509 -noout -in cert.pem -hash

# Der MD5 Fingerprint
openssl x509 -noout -in cert.pem -fingerprint

Zertifikat überprüfen

openssl verify cert.pem

todo, Administrators Gedächtnisstütze…

todo nennt sich ein kleines Programm, welches dabei hilft mit den Notizen zu administrativen Aufgaben nicht immer wieder den gesamten Schreibtisch zu vermüllen.

Bei dem Wechsel in das entsprechende Verzeichniss sieht das ungefär wie folgt aus:

zuerst todo installieren:
aptitude install devtodo

anschließend dafür sorgen das das todo auch beim wechsel in das Verzeichniss angezeigt wird:
echo ‚export PROMPT_COMMAND=“todo“‚ >> ~/.bashrc

jetzt kann in jedem beliebigen Verzeichniss mit todo -a ein neues Memo angelegt werden, mit todo -e 1 lässt sich das Memo 1 bearbeiten und mit todo -d 1 auch als erledigt markieren.