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 printfcomandi:
printf "\xDE\xAD\xBE\xEF\x...\xF0"
printf "\xCA\xFE\x33\xE1\x...\xD3"
fondamentalmente printfcomandi di shell con \xsequenze di escape che printfinterpreta. Sul dispositivo ho fatto:
device $ cat > firmware.sh
quindi ha utilizzato il minicomfile 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 printfscript:
device $ chmod a+x firmware.sh
device $ ./firmware.sh > firmware.bin
Controllato usando BusyBox md5sumche il firmware.binchecksum sul dispositivo corrisponde all'immagine del firmware originale sull'host.
PS La sintassi della doppia virgoletta della shell passa alla \xlettera perché non è una sequenza di escape riconosciuta; quindi non dobbiamo raddoppiare le barre rovesciate.
busybox --helpels -l /binels -l /usr/bin, per favore.