Właśnie przesłałem plik oprogramowania sprzętowego o wielkości ~ 7 Kb do systemu Linux opartego na BusyBox przez port szeregowy.
Bez pracy w sieci, bez narzędzi do przesyłania plików; brak narzędzi Base64 lub cokolwiek zdalnie przydatnego na urządzeniu.
Na hoście w prosty sposób zakodowałem oprogramowanie wewnętrzne w następującym formacie; rodzaj zrzutu szesnastkowego składającego się z literałów powłoki połączonych z printf
poleceniami:
printf "\xDE\xAD\xBE\xEF\x...\xF0"
printf "\xCA\xFE\x33\xE1\x...\xD3"
w zasadzie printf
polecenia powłoki z interpretowanymi \x
sekwencjami ucieczki printf
. Na urządzeniu zrobiłem:
device $ cat > firmware.sh
następnie użył minicom
pliku ASCII send ( Ctrl-AS), aby wysłać ten plik do hosta. Mogłem po prostu użyć funkcji kopiuj i wklej, ponieważ ilość danych jest niewielka.
Następnie zaznaczył plik wykonywalny i uruchomił printf
skrypt:
device $ chmod a+x firmware.sh
device $ ./firmware.sh > firmware.bin
Sprawdzono za pomocą BusyBox, md5sum
czy firmware.bin
suma kontrolna urządzenia odpowiada oryginalnemu obrazowi oprogramowania układowego na hoście.
PS Składnia podwójnego cudzysłowu powłoki przechodzi przez \x
dosłownie, ponieważ nie jest to rozpoznana sekwencja ucieczki; dlatego nie musimy podwajać ukośników odwrotnych.
busybox --help
ils -l /bin
ils -l /usr/bin
, proszę.