Ho appena caricato un file del firmware di ~ 7 Kb su un sistema embedded Linux basato su BusyBox tramite la porta seriale.
Nessuna rete, nessuna utilità di trasferimento file; nessun programma di utilità Base64 o nulla di utile in remoto sul dispositivo.
Sull'host, ho banalmente codificato un firmware nel seguente formato; una sorta di hex-dump costituito da letterali shell combinati con printf
comandi:
printf "\xDE\xAD\xBE\xEF\x...\xF0"
printf "\xCA\xFE\x33\xE1\x...\xD3"
fondamentalmente printf
comandi di shell con \x
sequenze di escape che printf
interpreta. Sul dispositivo ho fatto:
device $ cat > firmware.sh
quindi ha utilizzato il minicom
file ASCII di send ( Ctrl-AS) per inviare questo file all'host. Avrei potuto semplicemente usare copia e incolla, poiché la quantità di dati è piccola.
Quindi, contrassegnato come eseguibile ed eseguito lo printf
script:
device $ chmod a+x firmware.sh
device $ ./firmware.sh > firmware.bin
Controllato usando BusyBox md5sum
che il firmware.bin
checksum sul dispositivo corrisponde all'immagine del firmware originale sull'host.
PS La sintassi della doppia virgoletta della shell passa alla \x
lettera perché non è una sequenza di escape riconosciuta; quindi non dobbiamo raddoppiare le barre rovesciate.
busybox --help
els -l /bin
els -l /usr/bin
, per favore.