Scheinbar ist meine Dlink 932L Webcam eingegangen… – schade. Irgendwie macht die keinen Wackler mehr, meldet sich bei keinem WLAN an, über Kabel gibts auch keinen DHCP Request. LEDs gehen aber noch.
Wäre das nicht nett, wenn man da irgendwie „reinschauen“ könnte? Eine Shell wäre echt nice…
Flugs das Gehäuse aufgeschraubt und nach verdächtigen 4poligen Steckern oder Lötpunkten gesucht: ein Kandidat auch recht schnell am unteren Ende des Boards entdeckt. Aber ist es wirklich uart?
Die vier verdächtigen mal ausgemessen – von links nach rechts:
- Pin 1: Durchgang zur Masse -> GND
- Pin 2: verdächtig ruhig bei < 0.1V -> evtl. wartet der auf Übertragung? -> RX
- Pin 3: 3.30V dropped immer wieder mal runter -> TX
- Pin 4: 3.36 V stabil -> VIN
OK – das sieht vielversprechend aus!
Auf die schnelle 3 Pins angelötet und einen USB2TTY Adapter angeschlossen.
Als ersten schnellen Versuch mit screen die Verbindung aufgebaut – funktioniert, aber die Baudrate will noch gefunden werden. Statt per LogicAnalyzer oder Ozi rumzuwerken habe ich einfach die Standardraten durchgetestet und schau da: bei 56700 wird aus dem Kauderwelsch eine Shell 🙂
Offenbar ist das Teil in einem Bootloop:
******************************
Software System Reset Occurred
******************************
flash_protect ON: from 0xBF000000 to 0xBF021767
flash_protect ON: from 0xBF030000 to 0xBF030FFF
*** Warning - bad CRC, using default environment
============================================
Ralink UBoot Version: 3.5.2.0
--------------------------------------------
ASIC 3052_MP2 (Port5<->None)
DRAM component: 256 Mbits SDR
DRAM bus: 16 bit
Total memory: 32 MBytes
Flash component: NOR Flash
============================================
icache: sets:256, ways:4, linesz:32 ,total:32768
dcache: sets:128, ways:4, linesz:32 ,total:16384
##### The CPU freq = 320 MHZ ####
estimate memory size =32 Mbytes
Signature: DCS-930 932L Release 1.11 (2011-05-31)
Please choose the operation:
1: Load system code to SDRAM via TFTP.
2: Load system code then write to Flash via TFTP.
3: Boot system code via Flash (default).
4: Entr boot command line interface.
7: Load Boot Loader code then write to Flash via Serial.
9: Load Boot Loader code then write to Flash via TFTP.
Das scheint leichter zu werden als gedacht: Flugs die Firmware vom Hersteller gezogen, entpackt, 7 gedrückt und per Kermit neu geflasht.
Mission accomplished 🙂
Bonus:
Wenn wir schon die Firmware da haben, dann können wir auch gleich ein wenig reinschauen:
Die Entropie zeigt an, dass in dem binary gepackte und ungepackte Daten liegen.
Binwalk zeigt uns die jeweiligen Teile an:
Daraus lernen wir (was wir teils schon wissen): U-Boot samt Version, wir sehen HTML Daten (vermutlich wird das für das Webinterface benutzt) einen uImage Header samt Einstiegspunkt und Verweis auf den gepackten Kernel. Diesen sehen wir ab 327744 als LZMA gepacktes File (siehe Entropie).
Dieses könnte man jetzt mit dd in ein eigenes lzma File rausschneiden, entpacken und das Filesystem anschauen. Dann zb. die shadow Datei holen, Telnet aktivieren etc.
Aber da nun wieder alles funktioniert…