ActiveSync - Widerufen eines Termins

  • 2 Antworten
  • Letztes Antwortdatum
N

nomatrix

Gast
nach reichlich fummelei entdeckte ich nun einen Fehler in ActiveSync

Ich erstellte im Kalender einen Termin mit einem Teilnehmer. Der Teilnehmer erhielt darauf eine Terminanfrage die bestätigt oder abgelehnt werden kann.

Später löschte ich den Termin im Kalender. Daraufhin sollte dem eingetragenen Teilnehmer eine Mail zugestellt werden dass dieser Termin eben abgesagt wurde.

Hier ereignete sich ein Fehler den ich mit Hilfe von Wireshark nun nachvollziehen kann.

Das Gerät "GT-S6802" sendet ruft das Kommnando SendMail auf und will eine Mail senden. die erzeugten WBXML Daten des Geräts enthalten jedoch einen fehler wodurch eine Zustellung unmöglich wird.

hier ein auzug aus wireshark:

0000 03 01 6a 00 00 15 45 51 03 31 32 38 31 00 01 48 ..j...EQ.1281..H
0010 03 00 01 50 c3 8c 44 61 74 65 3a 20 54 75 65 2c ...P..Date: Tue,
...
05f0 6f 6d 2e 61 6e 64 72 6f 69 64 2e 65 6d 61 69 6c om.android.email
0600 5f 31 36 39 38 37 37 31 31 39 38 38 38 34 32 32 _169877119888422
0610 2d 2d 0d 0a 0d 0a 01 01 --......

Dem Tag für "Mime" (0x50) folgt das Byte welches mitteilt dass nun OPAQE-Daten folgen (0xC3). Daraufhin folgt in Form eines MultiByte Integer die Angabe wieviele Daten folgen. Hier wird 0x8C 0x44 angegeben.

Wireshark zeigt mir an dass dies dem Wert 1604 entspricht. Der Wert 0x44 entspricht dem ASCII-Zeichen D. dieses Zeichen ist allerdings der erste Buchstabe der in der Kopfzeile der mail enthaltenen Angabe für "Date".

Ich habe daraufhin die Daten manuell kopiert und stellte fest dass die Mail eine Grösse von 1536 Byte hat. Fies entspräche dem MultiByte wert 0x8C 0x00

Das Gerät übermittelt den Wert 0x00 jedoch nicht.

Nun darf ich raten wodurch dieser Fehler auftritt. Ich könnte das Gerät nun komplett zurücksetzen und versuchen diesen Fehler erneeut zu erzeugen indem ich das Gerät dazu bringe eine 1536 Byte grosse mail zu erzeugen. Wie ich das anstelle weiss ich auch noch nicht.

Wenn ich wüsste dass das Gerät zwangsläufig den Buchstaben D für Date als erstes in einer Mail stehen hat, könnte ich hier ja nun in meiner eigenen ActiveSync-Server-Software einen workaround für dieses Gerät einbauen.

oder ich lade mir den quellcode von android herunter und suche und suche und suche und patche die fehlerhafte stelle.

*würg*
 
Zuletzt bearbeitet von einem Moderator:
Ich versuchte gerade den Fehler zu reproduzieren. Beim Ändern eines Termins ist es mir mir nach einigen Versuchen gelungen eine Mail erzeugen zu lassen die die zuvor genannte Grösse von 1536 aufweist. In wireshark wird mir stattdessen aber wieder 1604 byte angezeigt. ActiveSync im Gerät verschluckt das zwite bytes des multibyte, hier 0x00.

Selbstverständlich macht der von mir gebaute ActiveSync-Server hier anstalten und verweigert die Verarbeitung, da nicht genügend zu lesende Daten vorhanden sind. Ich erzeuge nämlich aus den binären XML Daten lesbare XML Daten, welche ich sodann mit dem simplexml object in php verarbeite. Das erzeugte XML-Dokument ist hier dann natürlich nicht fehlerfrei.

Den Quellcode der dafür Verantwortlichen Software fand ich noch nicht.
 
In meinem ActiveSync-Server habe ich nun einen workaround für dieses Situation eingearbeitet indem ich im übermittelten Datenstrom nach dem Vorkommen suche und eine binäre null einfüge. Das funktioniert bisher leider nur bis zu einer Mailgrösse von 16256 (0xFF 0x00 -> 0x3F 0x80) zuverlässig

Das ist jetzt die Frage: Passiert das nur bei benachrichtigen von Teilnehmern von Terminen oder auch generell beim Versand von Emails. Wenn das auch beim Versand von Email passiert habe ich ein etwas gröseres Problem
 

Ähnliche Themen

M
Antworten
0
Aufrufe
152
Madcap79
M
pueh
Antworten
10
Aufrufe
349
pueh
pueh
meute
Antworten
10
Aufrufe
1.958
holms
holms
Zurück
Oben Unten