Frage

war ich nicht sicher, wie die Frage zu bilden, so dass ich entschuldige mich, wenn der Titel irreführend ist. Darüber hinaus können Sie einen Kaffee bekommen und einen Sitz für diese nehmen ... Es ist lange.

Im Grunde genommen, ich versuche, das Protokoll von der Windows Mobile Live Search-Anwendung verwendet, um Reverse Engineering Standort auf CELLID Basis zu erhalten. Bevor ich weitergehen, bin ich von anderen Open-Source-Diensten bewusst (wie Opencellid), aber dies ist im Interesse der Bildung und ein wenig für Redundanz.

Nach den Paketen I erfasst, eine POST-Anforderung wird auf ...

mobile.search.live.com/positionlookupservice_1/service.aspx

... mit einigen speziellen Header (Agent, Content-Länge, etc.) und ohne Körper. Sobald dies durchläuft, sendet der Server eine 100-Continue-Antwort zurück. An dieser Stelle macht die Anwendung diese Daten (I abgehackt den Paket-Header):

                  00 00 00 01 00 00 00 05 55 54         ........UT
46 2d 38 05 65 6e 2d 55 53 05 65 6e 2d 55 53 01   F-8.en-US.en-US.
06 44 65 76 69 63 65 05 64 75 6d 6d 79 01 06 02   .Device.dummy...
50 4c 08 0e 52 65 76 65 72 73 65 47 65 6f 63 6f   PL..ReverseGeoco
64 65 01 07 0b 47 50 53 43 68 69 70 49 6e 66 6f   de...GPSChipInfo
01 20 06 09 43 65 6c 6c 54 6f 77 65 72 06 03 43   . ..CellTower..C
47 49 08 03 4d 43 43 b6 02 07 03 4d 4e 43 03 34   GI..MCC....MNC.4
31 30 08 03 4c 41 43 cf 36 08 02 43 49 fd 01 00   10..LAC.6..CI...
00 00 00                                          ...

Und erhält diese als Antwort (Paket und HTTP-Response-Header gehackt):

         00 00 00 01 00 00 00 00 01 06 02 50 4c      ...........PL
06 08 4c 6f 63 61 6c 69 74 79 06 08 4c 6f 63 61   ..Locality..Loca
74 69 6f 6e 07 03 4c 61 74 09 34 32 2e 33 37 35   tion..Lat.42.375
36 32 31 07 04 4c 6f 6e 67 0a 2d 37 31 2e 31 35   621..Long.-71.15
38 39 33 38 00 07 06 52 61 64 69 75 73 09 32 30   8938...Radius.20
30 30 2e 30 30 30 30 00 42 07 0c 4c 6f 63 61 6c   00.0000.B..Local
69 74 79 4e 61 6d 65 09 57 61 74 65 72 74 6f 77   ityName.Watertow
6e 07 16 41 64 6d 69 6e 69 73 74 72 61 74 69 76   n..Administrativ
65 41 72 65 61 4e 61 6d 65 0d 4d 61 73 73 61 63   eAreaName.Massac
68 75 73 65 74 74 73 07 10 50 6f 73 74 61 6c 43   husetts..PostalC
6f 64 65 4e 75 6d 62 65 72 05 30 32 34 37 32 07   odeNumber.02472.
0b 43 6f 75 6e 74 72 79 4e 61 6d 65 0d 55 6e 69   .CountryName.Uni
74 65 64 20 53 74 61 74 65 73 00 00 00            ted States...

Nun, hier ist das, was ich bisher bestimmt:

  • Alle Strings vorangestellt mit einem Byte, das das Dezimaläquivalent ist ihre Länge.

  • Es scheint drei verschieden zu sein Abgüsse, die während der Verwendung Anfrage und Antwort. Sie zeigen sich als ein Byte vor dem Byte Länge. Ich habe festgestellt, dass die drei Typen Karte wie folgt:

    1. 0x06 - Mutterelement (Folge- Werte Kinder, geschlossen mit 0x00)
    2. sind
    3. 0x07 - Zeichenfolge
    4. 0x08 - int

Auf der Grundlage dieser Bestimmungen, hier ist das, was die Anfrage und Antwort in eine besser lesbare Weise aussehen (Werte in eckigen Klammern bezeichnen Länge und von Klammern umgeben Werte bezeichnen eine Besetzung):

\0x00\0x00\0x00\0x01\0x00\0x00\0x00
[5]UTF-8
[5]en-US
[5]en-US
\0x01
[6]Device
[5]dummy
\0x01
(6)[2]PL
  (8)[14]ReverseGeocode\0x01
  (7)[11]GPSChipInfo[1]\0x20
  (6)[9]CellTower
    (6)[3]CGI
      (8)[3]MCC\0xB6\0x02         //310
      (7)[3]MNC[3]410             //410
      (8)[3]LAC\0xCF\0x36         //6991
      (8)[2]CI\0xFD\0x01          //259
    \0x00
  \0x00
\0x00
\0x00

und ..

\0x00\0x00\0x00\0x01\0x00\0x00\0x00
\0x00\0x01
(6)[2]PL
  (6)[8]Locality
    (6)[8]Location
      (7)[3]Lat[9]42.375621
      (7)[4]Long[10]-71.158938
    \0x00
    (7)[6]Radius[9]2000.0000
  \0x00
  \0x42     //"B" ... Has to do with GSM
  (7)[12]LocalityName[9]Watertown
  (7)[22]AdministrativeAreaName[13]Massachusetts
  (7)[16]PostalCodeNumber[5]02472
  (7)[11]CountryName[13]United States
\0x00
\0x00\0x00

Meine Analyse scheint ziemlich gut zu arbeiten, bis auf ein paar Dinge:

  1. Die 0x01s in ganz verwirrt mich ... Zuerst dachte ich, sie waren einige Art von Basis-Ebene-Element Terminatoren, aber ich bin nicht sicher.
  2. Ich bin mir nicht sicher, dass der 7-Byte-Header ist, in der Tat, ein sieben Byte-Header. ich frage mich, ob es vielleicht 4 Bytes und dass die drei verbleibenden 0x00s sind von einer anderen Bedeutung.
  3. Die Hinter 0x00s. Warum ist es das gibt es nur eine auf Wunsch aber zwei auf die Antwort?
  4. Der Typ 8 Besetzung oben erwähnt ... Ich kann nicht scheinen, um herauszufinden, wie diejenigen, Werte werden codiert. Ich fügte hinzu Kommentare zu diesen Linien mit dem, was dem Werte sollte entspricht.

Jede Beratung über diese vier Punkte wird sehr geschätzt.

Und ja, diese Pakete wurden in Watertown, MA erfasst. :)

War es hilfreich?

Lösung

Ich habe nicht alle Zusammenbruch, aber Sie können unter diese aussehen mögen Codeproject, die scheint die google celltower nach Standort API gebrochen zu haben. Es sieht aus wie es die ID in celltower seinen Komponenten wie auszuspucken, was für die Live-Suche Anfrage erforderlich ist.

Sie vielleicht ein bisschen das wird helfen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top