Jak skorzystać z bramki Silvercrest?

0

Cześć,
próbuję wykonać wszystko zgodnie z poradnikiem:
https://paulbanks.org/projects/lidl-zigbee/#gaining-initial-access
Niestety podczas etapu

python dump_flash.py --serial-port /dev/ttyUSB0 --output-file rootfs.bin --start-addr 0x200000 --end-addr 0x400000

pokazuje mi się błąd:

File "sciezka do pliku\dump_flash(1).py", line 57, in <module>
    with open(args.output_file,"wb") as fOut:
TypeError: expected str, bytes or os.PathLike object, not NoneType

Google nie jest za bardzo w stanie mi pomóc w rozwiązaniu tego problemu. Czy ktoś mógłby mi pomóc?

skrypt dostępny jest pod adresem: https://github.com/banksy-git/lidl-gateway-freedom/blob/master/scripts/dump_flash.py

0

Podczas etapu, jakiego etapu? A błąd , chyba jest oczywisty.

0

niestety nie pokazał się kod…

python dump_flash.py --serial-port /dev/ttyUSB0 --output-file rootfs.bin --start-addr 0x200000 --end-addr 0x400000

Dla mnie - człowieka nie znającego Pythona nie jest oczywisty, dlatego napisałem na forum z prośbą o pomoc…

0

Nie wnikając jak działa to parsowanie argumentów (bo może jest tutaj gdzieś jakiś babol), widzę że args jest używane tylko w mainie. Więc weź tam zahardkodź args.output_file jako twoja nazwa pliku i zobacz co się stanie.

EDIT: aczkolwiek u mnie działa, jak sobie wyedytowałem to, żeby tylko printował output_file i jest ok. Może coś z wersją pythona?

0

instalowałem najnowszą wersję na Windowsie i na Linuxie. Z jakiej wersji korzystałeś?

0
import serial
import struct
import argparse


def doit(s, fOut, start_addr=0, end_addr=16*1024*1024):
    print(fOut)

if __name__=="__main__":

    parser = argparse.ArgumentParser("RTL Flash Dumper")
    parser.add_argument("--serial-port", type=str,
                        help="Serial port device - e.g. /dev/ttyUSB0")
    parser.add_argument("--output-file", type=str,
                        help="Path to file to save dump into")
    parser.add_argument("--start-addr", type=str, help="Start address",
                        default="0x0")
    parser.add_argument("--end-addr", type=str, help="End address",
                        default=hex(16*1024*1024))

    args = parser.parse_args()

    s = serial.Serial(args.serial_port, 38400)
    start_addr = int(args.start_addr, 0)
    end_addr = int(args.end_addr, 0)

    print(args.output_file)
    with open(args.output_file,"wb") as fOut:
        doit(s, fOut, start_addr, end_addr)

/tmp  python3 a.py --output-file xxxxx
xxxxx
<_io.BufferedWriter name='xxxxx'>

1 użytkowników online, w tym zalogowanych: 0, gości: 1