AX3600 Global verzióból Kínai +MiWifi

írta: FingR86, 3 éve

A leírásom és a hozzá szükséges fájlok ebből a topikból lettek összeollózva. Köszönet jár az alábbi kollégáknak az értékes tippekért, tanácsokért valamint saját tárhelyükön megosztott fájlokért.

trance89
tlala
takcslajos1
lafaty80
Tonyk

"A gyári fw irdatlan mennyiségű adatot küldözget haza (a webuin is minden egyes kattintás logolva van) emellett nonstop pingelgeti a kínai szervereket, aki kicsit is odafigyel az adatai védelmére érdemes elgondolkoznia ezen.." trance89
Ugyanez a helyzet a patchelt, de Mi szolgáltatásokat tartalmazó firmwerekkel is

Mi szolgáltatás = adatküldés

El kell dönteni, hogy a MiWifi alkalmazás a fontosabb, vagy az, hogy ne küldözgessen adatokat a router az engedélyünk nélkül.

A művelethez szükséges alkalmazások és fájlok:
a legegyszerűbb, ha csináltok mondjuk a "D:" meghajtó gyökerébe egy ax3600 mappát, és mindent bele töltötök egyesével.

-Python 3.6
-ax3600-files-master
-Putty
-WinSCP
-Rollback firmware 1.0.17
-1.1.19-es kínai firmware- (MiWifi kompatibilis, legfrissebb wifi driverek)

Ha valakinek esetleg nem kell a MiWifi kompatibilitás, de cserébe nem küldözget a routere adatokat, akkor neki erre van szüksége:
miwifi_r3600_firmware_aba17_1.1.19+SSH+txpwr.zip
és az ebből kicsomagolt firmware-t használja majd r3600.bin néven később

A fentiek közül 3 programot csak szimplán fel kell telepíteni.
-Putty (SSH elérés)
-WinSCP (fájlok másolása a routerre oda/vissza)
-Python (telepítés végén bepipálni a python add PATH részt)

ezeket pedig kicsomagolni:
ax3600-files-master.zip tartalmát kicsomagolni a mappánkba
miwifi_r3600_firmware_aba17_1.1.19+SSH+MI+txpwr.zip tartalmát kicsomagolni, majd átnevezni erre: r3600.bin

valahogy így fog kinézni a mappánk tartalma:

2. Rollback firmware

fel kell rakni a router menüjéből egy régebbi firmware-t aminek a segítségével lesz SSH elérésünk
miwifi_r3600_firmware_5da25_1.0.17.bin (router oldalán Settings (2. fül felül) >> Status (utolsó sárga ikon))
a lapon az első gomb, betallózod a firmware-t és elindítod a frissítést
megvárod amíg újra elindul a router, belépsz ismét a főmenübe amit megelőz újra pár alap beállítás.

3. SSH engedélyezés

Ha a router főmenüben vagy, nyomsz egy F12 gombot, felugrik egy ablak ahol átkattintasz a console fülre és beilleszted ezt:

function getSTOK() {
let match = location.href.match(/;stok=(.*?)\//);
if (!match) {
return null;
}
return match[1];
}

function execute(stok, command) {
command = encodeURIComponent(command);
let path = `/cgi-bin/luci/;stok=${stok}/api/misystem/set_config_iotdev?bssid=SteelyWing&user_id=SteelyWing&ssid=-h%0A${command}%0A`;
console.log(path);
return fetch(new Request(location.origin + path));
}

function enableSSH() {
stok = getSTOK();
if (!stok) {
console.error('stok not found in URL');
return;
}
console.log(`stok = "${stok}"`);

password = prompt('Input new SSH password');
if (!password) {
console.error('You must input password');
return;
}

execute(stok,
`
nvram set ssh_en=1
nvram commit
sed -i 's/channel=.*/channel=\\"debug\\"/g' /etc/init.d/dropbear
/etc/init.d/dropbear start
`
)
.then((response) => response.text())
.then((text) => console.log(text));
console.log('New SSH password: ' + password);
execute(stok, `echo -e "${password}\\n${password}" | passwd root`)
.then((response) => response.text())
.then((text) => console.log(text));
}

enableSSH();

a felugró ablakban megadod az SSH-hoz szükséges jelszót, ami legyen admin

4. SSH bejelentkezés

Putty program indít, a képen szereplő adatok beállítása és OPEN

- felh név: root
- jelszó: admin (nem fogod látni miközben írod be a jelszót, de a végén enter)

a zöld villogó kurzor után beilleszted az alábbi parancsokat

5. Bdata kinyerés

Putty parancs

nanddump -f /tmp/bdata_mtd9.img /dev/mtd9

6. WinSCP bejelentkezés

SCP protokollt használd, port: 22

a két ablak között lehet másolgatni F5 gombbal

7. Bdata másolása a PC-re

WinSCP művelet

/tmp/bdata_mtd9.img másolása ./ax3600-files-master/scripts könyvtárba
azaz a router temp mappájában létrejött bdata_mtd9.img fájlt kell átmásolni a D meghajtón létrehozott ax3600-files-master SCRIPTS mappájába

8. Parancssor (CMD) indítása

Parancssor megnyitása (start menüben elkezded gépelni (cmd)

9. SCRIPTS mappa megnyitása

A scripts mappa megnyitása parancssorból

d: enter
cd ax3600 enter
cd ax3600-files-master enter
cd scripts enter

10. Bdata módosítása

CMD parancs
kiadjuk az alábbi parancsot a scripts mappából
(ezzel lesz állandó SSH, telnet és CN lesz az országkód)

header.py modify --country CN bdata_mtd9.img bdata_mtd9.img.modified

11. Crash_unlock másolása a routerre

WinSCP művelet

D: meghajtón található crash mappa tartalmát átmásolni a router tmp mappájába (winSCP-vel)
./ax3600-files-master/crash/crash_unlock.img másolása /tmp könyvtárba

12. Crash_unlock futtatása a routeren

Putty-ba írandó parancs

mtd write /tmp/crash_unlock.img crash
enter

13. Router újraindítása

Putty-ba írandó parancs

reboot
enter

14. Módosított Bdata másolása a routerre

WinSCP művelet

D meghajtóról másolunk a routerre
./ax3600-files-master/scripts/bdata_mtd9.img.modified másolása /tmp könyvtárba

15. A módosított Bdata futtatása a routeren

Putty parancs (újra bejelentkezés, ha az ablak felül inactive-ot mutatna)

mtd write /tmp/bdata_mtd9.img.modified bdata
enter

16. Router újraindítása

Putty parancs

reboot
enter

17. Putty parancsok egyesével, ha inactive, előtte újra bejelentkezni

sed -i 's/channel=.*/channel=\"debug\"/g' /etc/init.d/dropbear

enter

/etc/init.d/dropbear start

enter

echo -e 'admin\nadmin' | passwd root

enter

mtd erase crash

enter

reboot

enter

nvram set CountryCode=CN

majd ENTER (ez átírja CN-re az értéket)

nvram commit

majd ENTER (ez véglegesíti az átírást)

18. A legújabb firmware routerre másolása

WinSCP másolás
a r3600.bin firmware fájlt bemásolni a router tmp mappájába

19. Putty parancsok (inaktív ablak esetén újra bejelentkezés)

A következő parancsokat Ctrl-C-vel másolni, majd Puttyba kattintással lehet copy/paste-elni, majd ENTER.

grep rootfs /proc/mtd

Ennek az eredménye ez kell, hogy legyen:
mtd12: 023c0000 00020000 "rootfs"
mtd13: 023c0000 00020000 "rootfs_1"
mtd17: 015cc000 0001f000 "ubi_rootfs"

Következik Puttyban az alábbi parancs:

nvram get flag_boot_rootfs

Amire pedig kétféle eredmény lehetséges, 0 vagy 1 értéket kapunk.

1 esetén beírjuk:
ubiformat /dev/mtd12 -f /tmp/r3600.bin -s 2048 -O 2048

0 esetén pedig:
ubiformat /dev/mtd13 -f /tmp/r3600.bin -s 2048 -O 2048

Majd sorban a következő 3 parancs jön (külön-külön, ENTER-rel egyenként beadva):
nvram set flag_ota_reboot=1
nvram commit
reboot

CSINÁLJ RESET-ET A HÁTSÓ GOMBBAL (KB 10 MÁSODPERCIG TARTSD NYOMVA)

Régió kód ellenőrzése:

1. lépj be a router web-es felületére (főmenü), és másold ki a saját stok azonosítód valahova
(stok azonosítót csak azután fogsz látni, amikor már be vagy jelentkezve a router admin menüjében, és végig vitted a kezdő beállítás varázslót. Ezt minden firmware frissítés és reset után végig kell kattintgatni)

2. az alábbi kódban szereplő stok azonosítót cseréld ki arra, amit az előbb feljegyeztél

http://192.168.31.1/cgi-bin/luci/;stok=d5df39a297daff7e325df31f16724619/api/xqsystem/country_code

3. ENTER

4. a kapott szövegben nézd meg az első részt, ha mindent jól csináltál akkor ezt kapod
{"current":"CN"

Firmware frissítés a későbbiekben

"tlala" Mivel a módosított fw-ek már tartalmaznak egy xqflash scriptet, így frissítés esetén nem kell a teljes procedúrát végigcsinálni, csak bemásoljuk WinSCP-vel a friss fw-t (r3600.bin-re átnevezve) a tmp mappába és kiadjuk ezt a két parancsot egymás után Putty alatt SSH-n:

xqflash /tmp/r3600.bin
reboot