transWhat
transWhat ist ein XMPP Transport, der den WhatsApp Messenger in das Jabber Netzwerk einbindet.
Das Gateway simuliert dabei serverseitig die normale WhatsApp App von Android beziehungsweise iPhone. Der User benötigt nur noch einen normalen XMPP Client wie beispielsweise Adium, Gaijm, IM+ oder Pidgin. Damit ist es nun möglich WhatsApp auf nahezu allen Geräten und Betriebssystemen einzusetzen. Ich kann transWhat sehr in Kombination mit Pidgin auf Desktops und Laptops und mit IM+ auf Tablets empfehlen 😊.
Nutzung
Section titled “Nutzung”Alle Details, Serverdaten, Logins, Tipps und Tricks findet ihr hier im Wiki.
Aus verschiedenen Gründen werde ich den Code nicht veröffentlichen sondern das Gateway nur als Service anbieten.
Ich habe mich nun doch dazu entschieden den Quelltext freizugeben. Er ist auf Codeberg zu finden: /stv0g/transwhat .
Nach dem Break gibt’s noch ein paar technische Details und Informationen zur Umsetzung.
Background
Section titled “Background”WhatsApp basiert bereits selbst auf einer abgewandelten Form des XMPP Protokolls ( /koenk/whatspoke ), welches es mir recht einfach machte sämtliche Features der offiziellen App in mein Gateway zu implementieren. Gruppenchats, das Empfangen von Medien, Statusbenachrichtungen, der Online Status, Tipp-Benachrichtigungen werden unterstützt.
Probleme gab es nur bei der Registrierung und dem Verwalten der Buddyliste, da WhatsApp hier von XMPP abweicht:
- WhatsApp lässt den Nutzer kein eigenes Passwort wählen um sich damit zu authentifizieren. Das Passwort wird im Hintergrund während des ersten Start der App vom Server beantragt und dann verschlüsselt im Handy gespeichert. Nun können wir auch diesen Mechanismus nachbilden, was aber leider dazu führt, dass das Handy nunmehr ein ungültiges Passwort besitzt und sich nicht mehr einloggen kann. Oder wir sniffen das Passwort während der Registrierung mit (weiteres dazu im Wiki)
- WhatsApp speichert keine Kontaktlisten auf ihren Servern. Folglich benötigen wir einen alternativen Weg um Kontakte in die XMPP Buddyliste zu importieren. Gelöst haben wir das Problem mit dem Import des Google Adressbuchs. Dafür ist eine kurze, einmalige Authentifizierung nach der ersten Anmeldung nötig.
Sicherheit
Section titled “Sicherheit”In der Vergangenheit kassierte WhatsApp Kritik für massive Sicherheitslücken in ihrem Service. Seit Mitte 2012 hat man die Schwachstellen auch auf Seiten von WhatsApp erkannt und, mit der Einführung einer neuen Version der API, reagiert. Mit dieser neuen Version konnte ein Angreifer, der in Besitz der IMEI oder MAC Adresse des Opfers war, nun nicht mehr das Passwort “entschlüsseln”. Auch die kritisierte Klartextübertragung von Adressbuch und Nachrichten, die ein einfaches mitsniffen erlaubte, wurde durch Verschlüsselung erschwert.
Mittlerweile zeigt sich, dass auch die neue Version schlampig umgesetzt wurde. Mit /tgalal/yowsup (Python) und /venomous0x/WhatsAPI (PHP) existieren zwei nahezu vollständige OpenSource Implementierungen des Protokolls.
Bei WhatsApp herrscht das Motto “Security by Obscurity”, auch wenn in Vergangenheit hier nachgebessert wurde. Da man bereits den Entwicklern von /venomous0x/WhatsAPI mit rechtlichen Schritten gedroht hat, möchte ich den Sourcecode nicht releasen. Ich hoffe nur dass man hier in Zukunft einen vielleicht versöhnlicheren Weg findet mit Entwicklern umzugehen und offene Schnittstellen anbietet. WhatsApp trägt (Missbrauch ausgeschlossen) keinen finanziellen Schäden davon. Ihr jährlicher Beitrag wird auch weiterhin fällig. Sie profitieren im Gegenteil durch den Zuwachs von neuen Usern.
Wer mein Gateway zum Spammen missbraucht wird sofort dauerhaft gebannt.