我不知道如何形成这个问题所以如果标题有误导性我会道歉。此外,你可能想喝点咖啡,为这个喝一杯......这很长。
基本上,我正在尝试对Windows Mobile Live Search应用程序使用的协议进行反向工程,以获取基于cellID的位置。在我继续之前,我知道其他开源服务(例如OpenCellID),但这更多是为了教育和冗余。
根据我捕获的数据包,发出POST请求...
mobile.search.live.com/positionlookupservice_1/service.aspx
...有一些特定的标题(代理,内容长度等),没有正文。一旦完成,服务器将发回100-Continue响应。此时,应用程序提交此数据(我切断了数据包标头):
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 ...
并在响应中收到此信息(数据包和HTTP响应标头被切断):
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...
现在,这是我到目前为止所确定的:
所有字符串前置一个 小数当量的字节 他们的长度。
似乎有三种不同 在整个过程中使用的演员阵容 请求和回复。他们出现了 作为长度字节之前的一个字节。 我已经得出结论,这三种类型 如下图所示:
基于这些确定,以下是请求和响应以更易读的方式显示的内容(括号括起来的值表示长度,括号括起来的值表示强制转换):
\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
和..
\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
除了以下几点之外,我的分析似乎很顺利:
对这四点的任何建议都将不胜感激。
是的,这些数据包是在马萨诸塞州的Watertown捕获的。 :)
答案 0 :(得分:0)
我还没有看到您的所有细分,但您可能希望查看this代码项目,该项目似乎已将谷歌小区功能破坏为位置API。看起来它正在将Celltower ID分散到它的组件中,就像实时搜索请求所需要的那样。
也许这会对你有所帮助。