Sphairon IAD 3221 - reverse engineering goes on… (ger)

10. Februar 2009

Es geht ein bisschen weiter mit der AliceBox, auch wenn ich schon meine Zugangsdaten habe :-)

Das IAD verwendet folgende Adressbereiche:

  • FLASH (0xB0000000 - B0FFFFFF)
    • 0xB0000000 (uboot, size:0×1FF00) part0
    • 0xB001FF00 (ETL, size:0×100)
    • 0xB001FF80 (MACADDR, size:0×11) //als ASCII mit Doppelpunkt gespeichert
    • 0xB0020000 (ubootconfig, size:0×10000) part1
    • 0xB0030000 (sysconfiga, size:0×10000) part2/part7
    • 0xB0040000 (sysconfigb, size:0×10000)
    • 0xB0050000 (firmware, size:0×40000) part8
    • 0xB0090000 (rootfs, size:0×0) part9
    • 0xB07FFFFF (kernel: size:0×0)
    • 0xB0800000 (uboot2, size:0×1FF00) part5
    • 0xB0820000 () part6
    • 0xB0830000 (sysconfig2a, size:0×10000)
    • 0xB0840000 (sysconfig2b, size:0×10000)
    • 0xB0850000 (firmware2, size:0×27040) part3
    • 0xB0890000 (rootfs2, size:0×521000, end:0xb0db0fff) part4
    • 0xB0F27C3B (kernel2, size:0xd83c5)
  • RAM (0×80400000 - ?)

Das root filesystem ist ein Squashfs mit lzma Kompression.

Um das auslesen der VoIP Daten etwas einfacher zu gestalten, bieten sich folgende Möglichkeiten an:

  1. eigene Firmware uploaden, die die Daten irgendwo ins Web-Verzeichnis schreibt
  2. über die Weboberfläche lassen sich Pakete sniffen (br0-2 und eth0 /.1 /.2 /.3)
  3. config konverter reversen

Im IAD Webinterface befinden sich, wie bereits im vorherigen Blogeintrag festgestellt wesentlich mehr Seiten, als nur die verlinkten. Eine Zusammenfassung aller gefundenen Controller:

Error
Overview
Internet
Network
Security
System
Wizard
Help

Jeder Controller hat seine eigenen Seiten…

Mehr Informationen findet man in folgendem Forum-Thread: Sphairon IAD 3221

Fritz!Box Wake On LAN - der einfache, schnelle und sichere Weg… (ger)

10. Februar 2009

Nach dem ich jetzt die VoIP Zugangsdaten aus dem Sphairon IAD 3221 habe, wurde gleich eine Fritz!Box 7240 angeschlossen. Eigentlich hatte ich mir erhofft, dass nun Wake On Lan für meinen Heimserver mit der Box ohne Probleme funktioniert… Leider sah es so aus, als würde es nicht ohne eine Firmware Modifikation ablaufen.

Möglichkeit 1: SSH auf der Fritz!Box

Möglichkeit 2: Remotezugang zur Fritz!Box Oberfläche aktivieren, jedesmal einloggen und ‘Computer starten’ klicken.

Beides würde ein zusätzliches Passwort benötigen und eine zusätzliche Angriffsoption eröffnen.

Thomas Hinz hat ein Webscript und eine Anleitung für ‘Directed Broadcasting’ geschrieben. Um dies zu nutzen, muss die FB allerdings das Paket an alle Computer im Netzwerk weiterleiten, also an die Broadcast Adresse x.x.x.255. Die Oberfläche der FB lässt solch eine Portweiterleitung aber nicht zu… Da die Abfrage nur aus JavaScript besteht, lässt sie sich leicht umgehen und die ‘verbotene’ Weiterleitung doch hinzufügen.

Am einfachsten funktioniert das durch modifizieren der POST Daten. POST Daten lassen sich leicht mit dem Firefox Plugin Tamper Data modifizieren. Plugin installieren und einfach eine beliebige Weiterleitung in der FritzBox einrichten (UDP und den gewünschten Port auswählen). Als Ziel IP Adresse irgendwas zwischen x.x.x.2-254 angeben. Bevor die neue Weiterleitung übernommen wird, jetzt Tamper Data starten und den Request abfangen. forwardrules%3Asettings%2Frule2%2Ffwip auf 255 ändern. Fertig ;-)

Jetzt kann z.B. über die Seite von Thomas Hinz der PC über’s Internet gestartet werden.

Update: gerade durch Zufall gesehen, dass andere das auch schon festgestellt haben. Z.b. hier ohne Tamper Data: http://stephan.mestrona.net/wol/forum/viewtopic.php?t=1277 Scheint aber mit Tamper Data zuverlässiger und universeller zu sein.

Update2: Habe einen CommandLine Client für WoL over Internet gefunden ;)

Sphairon IAD 3221 / wie komme ich an meine Zugangsdaten? (ger)

27. Januar 2009

Ich brauche für meinen Intel Atom Server einen Router mit WakeOnLan (directed broadcast forwarding) und dyndns Unterstützung. Das Sphairon IAD 3221 von Alice ist dazu leider nicht geeignet, allerdings sind die VoIP Daten irgendwo da drin…

Erste Versuche waren, Fehler im Webinterface zu finden. Das Sphairon nutzt den thttp/2.25b_29dec2003, zu welchem ich aber keinen nutzbaren Exploit finden konnte. vsFTPd läuft auch auf dem Router, nützt allerdings ohne Zugangsdaten nichts.

Im IP-Phone-Forum habe ich dann einen Hinweis zur seriellen Schnittstelle gefunden, also eine alte Pegelwandler Platine mit dem CP2102 rausgesucht. Es wird auch wunderbar der komplette Bootlog angezeigt. Das IAD verwendet U-Boot, welches in früheren Versionen durch senden eines Zeilenumbruchs zum ‘prompt’ geführt hat. in der Version 2.1.xx scheint das aber nicht mehr zu funktionieren. Ich habe hierzu einen Tipp gefunden, dass man den !Enable Eingang vom Flashchip auf Masse ziehen kann, U-Boot keine Firmware findet und man dadurch automatisch zum ‘prompt’ gelangt. Werde ich bei Gelegenheit auch mal ausprobieren ;-) Dieses IAD scheint es auch mit WLAN Modul zu geben, auf der PCB ist auf jeden Fall ein Platz vorgesehen. Im JavaScript finden sich auch Funktionen für WLAN Sicherheit.

In der Zwischenzeit habe ich mir den Webserver noch etwas genauer angesehen und ein paar versteckte Seiten durch Ausprobieren und JavaScript Analyse gefunden. Folgende Links sind mehr oder weniger interessant:

  • http://192.168.1.1/js/
  • http://192.168.1.1/images/
  • http://192.168.1.1/web.cgi?controller=Security
  • http://192.168.1.1/web.cgi?controller=Internet
  • http://192.168.1.1/web.cgi?controller=System    //FW version steht auch auf Flashchip Aufkleber
  • http://192.168.1.1/web.cgi?controller=Error    //nächste Seite -> Startseite
  • http://192.168.1.1/web.cgi?controller=System&action=IndexSystemTest    //Diagnose… leider leer
  • http://192.168.1.1/web.cgi?controller=System&action=IndexFirmware //a_usermode <= roWebAppCfg.userMode()
  • http://192.168.1.1/web.cgi?controller=System&action=IndexFirmwareWait&ajaxrequest=0
  • http://192.168.1.1/web.cgi?controller=Security&action=IndexMacFilter    //a_usermode <= roWebAppCfg.userMode()
  • http://192.168.1.1/web.cgi?controller=System&action=IndexConfig    //read & write config
  • http://192.168.1.1/web.cgi?controller=System&action=IndexLoadConfigWait&id=0

Firmware Update & Mac Filter funktionieren aufgrund fehlender Benutzerrechte nicht. Diese lassen sich aber bestimmt in der Konfig einstellen. Schön, dass man die Config auch speichern kann ;-) Vielleicht befinden sich darin ja bereits alle benötigten Daten?

Aufbau config.bin (in progress):

bytes | default | type

4 | ‘CFG1′ | header ident

4 | … | size

Mal sehn, irgendwie muss man doch an seine Zugangsdaten kommen… Wenn Interesse am Bootlog besteht oder jemand ein paar Tipps hat, einfach mal melden.

DualSim Ocean V2 Handy aus China - Bewertung (ger)

15. Dezember 2008

Da ich immer 2 Handys benutzt habe, war es irgendwann an der Zeit mir ein DualSim Handy zu besorgen. Es gab da z.B. das Samsung D880 und jede Menge Handys aus China. Gegen das D880 sprach für mich das Design, dass das Handy ein Slider ist und der doch etwas gewaltige Preis. Eine Alternative war ein Handy aus China, wo DualSim durchaus weit verbreitet sind.

Für mich war wichtig, dass 2 Sim Karten gleichzeitig funktionieren und dass das Handy 1 Bluetooth Modul hat mit welchem ich beide Sim Karten nutzen kann. Hierzu hatte ich auf etlichen chinesischen Seiten keine brauchbaren Informationen gefunden. Bei einem Import aus China fällt zudem noch die MwSt. und die Versandgebühren an. Auch muss man das Vertrauen in solch einen chinesischen Shop haben :-)

Die chinesischen Handys scheinen innovativ, günstig und mit jeder Menge Features ausgestattet zu sein. Klar, dass da womöglich die Qualität der einzelnen Features etwas leiden muss.

Ich habe schließlich ein Ocean V2 bei amazon für 115 € inkl 2 GB SD Karte erworben, welches durch die Firma emotion-24 importiert wird. Zudem liefert emotion-24 noch ein Paper über erfüllte Richtlinien mit. Online kann man sich ein Handbuch zu diesem Handy ansehen. Ob dieses Handbuch soviel taugt, sei dahin gestellt… Es hat eine chaotische Struktur und könnte etwas ausführlicher sein.

Ein Lob an emotion-24. Sie antworten auf jede Mail freundlich. Ein paar Tage nach dem Kauf haben sie mich sogar angerufen und gefragt, ob alles in Ordnung ist und ich zufrieden bin. Bin ich auch, dennoch gibt es überall Verbesserungspotential :-)

Ein Auszug aus der Mail, welche ich natürlich auch an emotion-24 gesendet habe:

  • einige Strings sind nicht korrekt übersetzt und sind daher missverständlich
  • der 2. Akku ist schon leicht ‘aufgeblasen’ und funktioniert nicht
  • wäre es schön, nachträglich noch Akkus oder Headsets zu diesem Handy kaufen zu können- das mitgelieferte Headset/Kopfhörer ist nicht von guter Qualität :-)
  • Bluetooth im Auto verbindet sich nur automatisch wenn das allgemeine Profil aktiviert ist
  • Warntöne sind zu laut bzw. wäre es schön, diese einstellen zu können
  • das Menü für den Alarm ist nicht schön zu bedienen
  • Ex/Importmöglichkeit für Kontakte wäre super
  • Tastaturlicht sollte auch bei Tastensperre angehen, man erkennt die Tasten sonst nicht
  • ab und an bleibt das Tastaturlicht aus
  • fehlende Updatemöglichkeit für Firmware
  • Zwischenspeichern von Thumbnails, damit große Bilder in der Vorschau nicht jedes mal neu geladen werden müssen
  • mp4 Unterstützung: mp4 ist eigentlich nur ein Container, ich tue mir etwas schwer einen passenden Codec zu finden um selbst Videos auf das Ocean zu kopieren

Einige Anmerkungen und Erweiterung hierzu (negatives):

  • Die Default Klingeltöne sind laut und schrill, zum Glück kann man ein mp3 als Klingelton festlegen
  • Seit neuestem stürzt das Handy beim fotografieren ab :-/
  • Die Tastatur schaut etwas ‘billig’ aus, funktioniert aber wunderbar
  • kein Java möglich, dass heisst es gibt nicht mehr als das eine vorinstallierte Spiel
  • von meinem N73 bin ich gewohnt, dass man Anrufe ‘lautlos’ drücken kann. Leider fehlt das hier.

An der Seite befindet sich ein Schriftzug ‘Vogue Lifestyle’ und schaut nach Sony aus. Das Menü finde ich sehr an Nokia angelehnt, ist aber wesentlich schneller als das Menü von meinem Nokia N73. Die USB Stick Funktion ist auch gut und das USB Kabel hat keine Wackelkontakte wie beim N73.

Um Kontakte zu importieren würde sich anbieten, diese als *.vcf auf der SD Karte zu speichern und dann im Handy einzufügen.

Super gelungen finde ich das Design. Das Gewicht ist auch vollkommen in Ordnung. Anrufen und Anrufe entgegennehmen funktioniert einwandfrei und viel mehr brauche ich eigentlich auch nicht. Allerdings könnte der Akku länger als 2-3 Tage halten.

Alles in allem, ein etwas anderes Handy für einen top Preis! Benutze es jetzt 2 Wochen und werde es vermutlich noch viele weitere benutzen ;-)

I’m late ’cause I was too fast! (ger)

20. August 2008

Ich bin zu spät, weil ich zu schnell war!

based on the theory of relativity.

… Meine neue Ausrede, wenn ich mal zu spät komme ;)

Habe gestern ein bisschen oberflächig über die Relativitätstheorie diskutiert und dazu ein paar Filme bei YouTube angesehen:

Im Film wird erzählt, wenn man 1 Jahr mit Lichtgeschwindigkeit im Weltall unterwegs ist, vergehen auf der Erde 20 Jahre. Genau das bedeutet, wenn man schnell ist, kommt man zu spät, weil die Zeit langsamer vergeht. Natürlich ist der Weg über’s Weltall ein Umweg, außerdem fliegt man dieses Jahr nicht geradlinig, was, wie ich verstanden habe, aber die Voraussetzung ist, damit dieser Effekt wirklich so auftritt.

Im Film ist folgendes Beispiel erklärt. Wenn ein Komet auf einen Planeten einschlägt, sieht man das aus dem Raumschiff, welches mit c unterwegs ist, in Zeitlupe. Wenn auf dem Planeten aber 20 Jahre, im Gegensatz zu dem einen Jahr im Raumschiff vergehen, müsste man den Kometen aber eigentlich wesentlich schneller sehen - nämlich im Zeitraffer, denn in 20 Jahren passiert eindeutig mehr als in einem Jahr…

Ein weiterer Denkanstoss: Wenn man sich von der Erde mit Lichtgeschwindigkeit entfernt, kann man natürlich auch den Betrachtungspunkt ändern und meinen die Erde entfernt sich mit Lichtgeschwindigkeit von einem. Das würde dann bedeuten, dass in einem Jahr auf der Erde 20 Jahre im Raumschiff vergehen. Im Film kommt leider nicht so ganz klar rüber, was der Bezugspunkt ist und wie wichtig er ist. In die Gravitation wird erst später eingeführt, eventuell liegt es daran, dass man den Betrachtungspunkt nicht einfach ändern kann.

J2ME: sending human readable SMS

25. Juli 2008

A short entry ’cause Java bothered me today.

If you want to send a human readable SMS with J2ME do NOT supply a port - else the SMS would not get delivered (or even sent). Somehow this is not really well documented and solutions are difficult to find…

And a sample for that (copy paste to your favourite editor):

import javax.wireless.messaging.*;
import javax.microedition.io.Connector;

public MessageConnection newMessageConnection(String addr)
throws Exception {
return((MessageConnection)Connector.open(addr));
}

public void sendTextMessage(MessageConnection mc, String
msg, String url) {
try {
TextMessage tmsg =
(TextMessage)mc.newMessage
(MessageConnection.TEXT_MESSAGE);
if (url!= null)
tmsg.setAddress(url);
tmsg.setPayloadText(msg);
mc.send(tmsg);
}
catch(Exception e) {
error.setText (”send failed ” + e);
}
}

public void sendSMS ( String msg )
{
MessageConnection mc;

try
{
mc = newMessageConnection(”sms://” + phoneNo.getString());
} catch ( Exception e )
{
error.setText(”failed to create message connection!”);
return;
}

info.setText(”sending message…”);
sendTextMessage(mc, msg, null);
info.setText(”sent message!”);

try
{
mc.close();
} catch ( Exception e )
{
error.setText(”error closing connecting!”);
}
}

StringItems error and info for output used, TextField phoneNo for the phone number.

LG Flatron L226WTQ-xF 1.80 - minimize ghosting

22. Juli 2008

Someone asked me what he should do if he has ghosting with that screen (didn’t have original bill). I told him to call service hotline and try them to replace the LCD. What was surprising me… They told him that they don’t replace those sreens anymore but gave him the tipp to set panel in service menu to LPL22W 4LG and set aging on. He tried this some hours with different games and the the result was quite ok - nearly no ghosting :-)

I did not verify this on my own, but i think worth to mention. If you want to try it and it’s working, leave a comment ;)

DCT4 Crypt - Firmware Encryption - another approach

22. Juli 2008

g3gg0 and nok5rev created a DCT4 crypter to encrypt and decrypt mobile phone flashfiles of a widly known company some time ago. This algorithm is also used in Trix. They use a table with 65535 entries (each 16 bit) for both directions. This table is build from a small table with 16 entries. Now, since this is originally done in an ASIC there must be another way, because storing those big tables is not effective and a waste of everything ;-) On PC this is perfect since the code to code translation is only a table lookup which is quite fast. But how this was done in the ASIC?

I analysed the 16 bit 16 entries table… I counted the bits set in every entry and found that the count of bits increase (shuffled) through the table. Nearly every count was there two times. If you xor the current entry with the result for that code you get a value which you find again in this table. So in generally we have two ‘chains’ with a start value. The start value includes the bits for the chain. Sounds easy but took me around 2 days :)

Unfortunately it’s not working 100% yet - but most of the results are correct.

Here’s the table from g3gg0 and nok5rev (for understanding), if you’re interested on the algo take a look into Trix source code.

unsigned short mbit[] = {
0×1221, 0xA91A, 0×52A5, 0×0908, // 0001 0002 0004 0008
0xa918, 0×1020, 0xFFFF, 0×52A1, // 0010 0020 0040 0080
0×0100, 0×1220, 0xAD1A, 0×0900, // 0100 0200 0400 0800
0×1000, 0×2908, 0×5221, 0xa908, // 1000 2000 4000 8000
};

the following is what I produced from it to replace the big table:

void k_dct4_code_to_code_part ( unsigned short *enc, unsigned short *dec, unsigned short bit, unsigned short *xorval )
{
if ( *enc & bit )
{
*enc ^= *xorval;
*dec ^= bit;
}
*xorval ^= bit;
}

unsigned short k_dct4_code_to_code_chain_1 ( unsigned short enc )
{
unsigned short dec = 0;
unsigned char c;
unsigned short xorval = 0×52A5;
//order is important!
//we can break if enc equals zero

unsigned short bits[7] = { 0×4, 0×80, 0×4000, 0×1, 0×200, 0×20, 0×1000 };

enc &= xorval;

for ( c = 0; c < 7; c++ )
{
k_dct4_code_to_code_part ( &enc, &dec, bits[c], &xorval );
}

if ( enc )
printf ( “decrypting err in chain 1, wrong algo :) )” );

return enc;

}

For chain two the xorvalue is 0xad5a and the bits array is { 0×40, 0×400, 0×2, 0×10, 0×8000, 0×2000, 0×8, 0×800, 0×100 } (9 entries!).

Remember this is only code to code translation/scrambling and somehow some values are wrong. I think this is ’cause of a wrong order, start value or maybe one or two values in wrong chain. If you find the bug, let me know. Address scrambling is little bit different and not covered here.

Update: Instead of using 0×400 as value, try 0×404, this could solve the bug in theory.

g3gg0 also did some brainstorming on this and found an easier way - wow, never thought it could be that small and easy :-)

RSA: Warum gibt es keine Rainbowtables?! (ger)

22. Juli 2008

Man findet Rainbowtables für MD5, für DES und diverse andere, aber keine für RSA - warum eigentlich nicht? Die Antwort auf die Frage ist einfach, aber der Spannung halber, werde ich sie erst am Ende beantworten :-)

RSA verwendet zwei hohe Primzahlen, welche miteinander multipliziert werden. Aus der Multiplikation geht der öffentliche Schlüßel hervor. Das Hauptproblem um RSA zu knacken liegt also darin, dass man diese multiplizierte Zahl faktorisieren müsste und das geht selbst mit dem Sieb des Atkins nur sehr ineffizient.

Da das Faktorisieren also ausscheidet, könnte man ja Rainbowtables anlegen. Sinnvollerweise würde so eine Tabelle jede Multiplikationsmöglichkeit und das Ergebnis bereit halten. Das Suchen in so einer Tabelle geht sehr schnell.

Kommen wir zum Problem… RSA mit einem öffentlichen Schlüßel von 1024 Bit hat ca. 300 Dezimalstellen, also eine Zahl die ungefähr so aus sieht: 1,2545252 * 10 ^ 300
Da rein theoretisch auch 2 eine Primzahl ist, die eingesetzt werden könnte und somit die anderePrimzahl extrem hoch sein würde, schauen wir uns an, wie viele Primzahlen bis 10 ^ 300 existieren. Mit der einfachen Formel f(x) = x / ln x und 10 ^ 300 als x existieren also 1.4476 * 10 ^ 297 Primzahlen - jede Menge :-) Jetzt müssen immer 2 Primzahlen multipliziert werden, und zwar, wenn möglich jede mal mit jeder. Das ist dann eine Kombination mit Zurücklegen. Dadurch wird solch eine Tabelle unermeßlich groß und die Kosten für die benötigten Festplatten dürften in Millionhöhe schnellen - ganz zu schweigen vom technischen Aufwand.

Man kann diese Tabelle zwar verkürzen, indem man z.b. die ersten Zahlen des Produktes speichert, dann die Länge und die letzten Zahlen und natürlich die beiden benutzten Primzahlen bzw. deren Indezes davon… die Tabellen haben aber trotzdem genau so viele Einträge, jetzt eben nur mit weniger Speicherbelegung pro Eintrag.

Weiterhin besteht das Problem der effektiven Primzahlerzeugung, hier bietet sich das Sieb des Eratosthenes oder das optimierte Sieb des Atkin. Man könnte die Erzeugung theoretisch auch auf FPGAs oder auf Grafikprozessoren verlagern, z.B. mit CUDA von Nvidia auf G80 GPUs, die bei mathematischen Funktionen doch einen enormen Geschwindigkeitsvorteil bieten.

Auch könnte man versuchen die Primzahlerzeugung weiter zu optimieren, Atkin und Bernstein haben mit dem Sieb des Atkin quadratische Zahlen verwendet - ähnlich eines Kreises, eventuell könnte man das Ganze im dreidimensionalen Raum versuchen. In der heutigen Zeit wird ja auch viel aus der Natur abgeschaut, eventuell treten Primzahlen ja auch hier auf… :-)

Vorerst habe ich die Idee der Rainbowtables für RSA aber aufgrund des Umfangs auf Eis gelegt.

TrueCrypt batch: BruteForce files

24. Juni 2008

I encrypt my HDD with TrueCrypt since I want to protect my work and documents from unauthorized access. I used a keyfile on a SanDisk Cruzer Micro usb stick.

Unfortunately this stick died suddenly (now it’s some months ago) - I knew that somewhere I still had the file on another HDD, but I did not remember any more which file exactly it was, ’cause I also renamed on the USB stick. I bought a second USB stick and changed the flash IC, but with no success, since it was a little bit different USB stick. So I put all files inside the TrueCrypt that could be possible. I did not know that TrueCrypt takes only the first MiB of every file and sum them. I thought it just trys all files. After a week I noticed this and created a small batchfile that helps to find the right keyfile.

I put it here, just if someone has a similiar problem :)

File bruteforce.bat (started from commandline):

@echo off

for %%x IN (*.*) do CALL check.bat “%%x”

File check.bat

TrueCrypt.exe /v \Device\Harddisk0\Partition2 /l d: /b /k %1 /q /s

if errorlevel 1 goto error

echo key found: %1
pause

:error
echo key %1 wrong

One of my HDDs was still mounted, but I didn’t find a way to get the key from it :(

I also bugged the people from TrueCrypt Forums with that problem - they had some good ideas for the future. This and the full story can be found there: http://forums.truecrypt.org/viewtopic.php?t=8961