2012-09-10 23 views
21

Mara-Naboisho Lion Project已解碼並繪製出裝有GPS項圈的獅子的位置。解碼SMS報告肯尼亞獅子會的GPS位置

他們收到的短信從衣領:

Collar07854_100806210058.SMS 

074952494449554d0000000000000000000000000000000000000000000000040f33303030333430313232393738393000000000000000000000000000000000f10a0806100028008c13ef348a0039d0fe000de871004cc92b5ca92d6213ef26640039d108000de86b004cc92d5ca92d5d13ef18620039d101000de865004cc92c5ca92d5813ef0a930039d0fc000de864004cc9311c682d5413eefc170039d045000de7d4004cc95b7c692c5013eeee280039d0ff000de85f004cc92a7c692d6fffffffffffffffffffffffffffffffffffffffffff 

Collar07854_100807060011.SMS 

074952494449554d0000000000000000000000000000000000000000000000040f33303030333430313232393738393000000000000000000000000000000000f10a0807020038008c13efb2eb0039d0ed000de853004cc92e3cea2d8813efa5060039d0fb000de860004cc9291c6a2d8413ef96fd0039d0fc000de85e004cc92d5c6a2d7f13ef88e00039d0f6000de85a004cc92b5c6a2d7b13ef7ad80039d0fa000de85a004cc9327c6a2d77ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 

這大概是短信的PDU,雖然看似簡單的在線解碼器不使他們的多大意義。其中有ASCII文本「IRIDIUM」,可能是SMSC或發件人或某種字符串,因爲IRIDIUM是衛星電話系統,可能是領隊發送職位時的持證人。

UPDATE:他們有一些KML文件對應這些項圈;我已經上傳了KML herehere。衣領可能由Vectronic-Aerospace製造。

它是什麼格式,我們如何解碼它?

(這是一個giving code項目;也許你想help them,或在其他問題看嗎?)

+2

+1表示非常不尋常但實際的問題。我甚至覺得它很幽默。獅子! ha –

回答

0

這看起來像一個很好的參考:

http://www.dreamfabric.com/sms/

訣竅可能是在最後解碼消息。

我設法提取IRIDIUM,但沒有進一步。對於

快速perl腳本:

my $text="....."; 
my $str; 
while($text) { 
    $str .= chr(hex(substr $text, 0, 2)); 
    if(length($text) > 2) { 
    $text8 = substr($text, 2); 
    } else { 
    $text8 = ''; 
    } 
} 
print $str; 
2

它似乎並不成爲一個正常的PDU。它也是8位信息,而不是7位(像大多數PDU一樣)。

也似乎有模式,如果你拿走它們共有的第一頭:

074952494449554d0000000000000000000000000000000000000000000000040f33303030333430313232393738393000000000000000000000000000000000f10a 

下一頁似乎有另外16個字節的報頭/時間戳/ ID:

SMS 1: 0806100028008c13 
    SMS 2: 0807020038008c13 

並格式化了一下,格局逐漸明朗:在羅伊的言論

Message #1: 
    ef348a0039d0fe000de871004cc92b5ca92d6213 
    ef26640039d108000de86b004cc92d5ca92d5d13 
    ef18620039d101000de865004cc92c5ca92d5813 
    ef0a930039d0fc000de864004cc9311c682d5413 
    eefc170039d045000de7d4004cc95b7c692c5013 
    eeee280039d0ff000de85f004cc92a7c692d6fff 
    ffffffffffffffffffffffffffffffffffffffff 

    Message #2: 
    efb2eb0039d0ed000de853004cc92e3cea2d8813 
    efa5060039d0fb000de860004cc9291c6a2d8413 
    ef96fd0039d0fc000de85e004cc92d5c6a2d7f13 
    ef88e00039d0f6000de85a004cc92b5c6a2d7b13 
    ef7ad80039d0fa000de85a004cc9327c6a2d77ff 
    ffffffffffffffffffffffffffffffffffffffff 
    ffffffffffffffffffffffffffffffffffffffff 
+0

所以數據似乎是20字節長?但我仍然不知道它是什麼......第一條消息似乎有6個「值」,第二條只有5個「值」,有7個空間...? –

6

擴展:

也許'13'不是標題的一部分? 然後,報頭將是:

SMS 1: 10a0806100028008c 
    SMS 2: 10a0807020038008c 

然後是消息將是:

Message #1 
    13ef 348a 0039 d0fe 000d e871 004c c92b 5ca9 2d62 
    13ef 2664 0039 d108 000d e86b 004c c92d 5ca9 2d5d 
    13ef 1862 0039 d101 000d e865 004c c92c 5ca9 2d58 
    13ef 0a93 0039 d0fc 000d e864 004c c931 1c68 2d54 
    13ee fc17 0039 d045 000d e7d4 004c c95b 7c69 2c50 
    13ee ee28 0039 d0ff 000d e85f 004c c92a 7c69 2d6f 
    ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff 
    ff 

    Message #2 
    13ef b2eb 0039 d0ed 000d e853 004c c92e 3cea 2d88 
    13ef a506 0039 d0fb 000d e860 004c c929 1c6a 2d84 
    13ef 96fd 0039 d0fc 000d e85e 004c c92d 5c6a 2d7f 
    13ef 88e0 0039 d0f6 000d e85a 004c c92b 5c6a 2d7b 
    13ef 7ad8 0039 d0fa 000d e85a 004c c932 7c6a 2d77 
    ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff 
    ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff 
    ff 

它似乎像一個日誌,與該消息爲8月6日(猜測)具有6個條目和所述第二從07年8月起擁有7. 什麼是領記?我猜測經度,緯度和時間戳?

前八位數字表示時間戳的機會很高。從底部到頂部它們是遞增的。

例如, 13ef348a = 334443658. 334443658秒= 10年8個月6天23:00:58(自1970年起)。這匹配在第一個短信標題中的日期:Collar07854_ 。它甚至可以將標題中的時間戳減去2小時。

海報問題:每天收到這些文本的頻率如何?他們哪年(我猜2010年)?

+0

太棒了!它的確可以解決這兩個消息。所以看起來SMS中的當前日期/時間是10年,8個月,6天和7天。 這些衣領是舊的嗎?或者時間從01-01-2000開始或什麼?接下來的3x8字節是什麼意思? :-) 將有可能獲得有關衣領的更多信息,以及何時記錄數據(以及在哪裏!?)因爲如果我們知道經緯度記錄在哪裏(有或無),它將幫助我們匹配它! –

2

因此,通過dstibbe提高後,我們知道的格式,並可能是一個日期/時間標記:

Message #1 
    334443658 seconds, 0039 d0fe 000d e871 004c c92b 5ca9 2d62 
    334440036 seconds, 0039 d108 000d e86b 004c c92d 5ca9 2d5d 
    334436450 seconds, 0039 d101 000d e865 004c c92c 5ca9 2d58 
    334432915 seconds, 0039 d0fc 000d e864 004c c931 1c68 2d54 
    334429207 seconds, 0039 d045 000d e7d4 004c c95b 7c69 2c50 
    334425640 seconds, 0039 d0ff 000d e85f 004c c92a 7c69 2d6f 

    Message #2 
    334476011 seconds, 0039 d0ed 000d e853 004c c92e 3cea 2d88 
    334472454 seconds, 0039 d0fb 000d e860 004c c929 1c6a 2d84 
    334468861 seconds, 0039 d0fc 000d e85e 004c c92d 5c6a 2d7f 
    334465248 seconds, 0039 d0f6 000d e85a 004c c92b 5c6a 2d7b 
    334461656 seconds, 0039 d0fa 000d e85a 004c c932 7c6a 2d77 

我集中我的搜索上嘗試下一對8個字節轉換成座標。 讓我們的第一行: 334443658秒,0039 d0fe 000D e871 004C c92b 5ca9 2D62

可能有四個不同的部分左:

  1. 0039 d0fe
  2. 000D e871
  3. 004c c92b
  4. 5ca9 2d62

我的第一個猜測是第1部分是緯度和第2部分的經度。數字很​​可能是整數,而不是浮點數。浮點數的指數部分(11位)幾乎總是非零。這些數字似乎並不有一部分,從000

翻譯萬事成整數,可能會導致:

看這個,我猜部分#1是經度,部分#2是緯度。這是非常平常的,只需看一下Google Earth,它也預計lon-lat而不是lat-lon。

現在,有很多的方式來轉換整數/緯度我最有可能的候選人是:

lon = part_1/6371000/PI * 180

lat = atan(exp(part_2/6371000))/PI * 360 - 90

這導致埃塞俄比亞的「甘貝拉」國家公園座標.. 。?在將衣服送到肯尼亞之前,衣領是否在埃塞俄比亞錄製? 我們需要更多信息來翻譯座標,恐怕...

緯度:8.169253103106428

經度:34.075781281927895

Coordinates in Google Maps

+0

我在想類似的東西,但並不認爲它們會是整數。這隻剩下第3部分和第4部分仍然沒有解決... – dstibbe

+0

我希望GPS座標包含高程。也許這符合其中一個專欄? – Will

12

我已經能夠翻譯的經/緯度位置!從領域開發人員的網站上看到,我看到他們正在使用x/y/z ECEF座標。

所述第一消息的第一行:

 
13ef 348a 0039 d0fe 000d e871 004c c92b 5ca9 2d62 

被翻譯爲:

 
0039 d0fe = X = 3789054 
000d e871 = Y = 911473 
004c c92b = Z = 5032235 

這轉化爲:

 
Lat: 52.43067054630929 
Lon: 13.525755535406619 
Height: 88.99500464554876 

這導致成在德國的位置..這對肯尼亞的保護區聽起來是錯誤的,但實際上這是公司的街道,這使得這些保護區成爲可能ARS: check their website

翻譯座標的代碼已經在網上找到:

public static double[] xyz2LLH(double x, double y, double z) 
{ 
    double[] llh = new double[3]; 
    double da = 0.0; // datum parameter 
    double df = 0.0; // datum parameter 
    double a = 6378137 - da; 
    double f = 1/298.2572235630 - df; 
    double b = (1 - f) * a; 
    double e2 = 2 * f - f * f; 
    double E2 = (a * a - b * b)/(b * b); 
    double p = Math.sqrt(x * x + y * y); 
    llh[0] = Math.atan2(y, x); 
    double theta = Math.atan((z * a)/(p * b)); 
    llh[1] = Math.atan((z + E2 * b * Math.pow(Math.sin(theta), 3))/(p - e2 * a * Math.pow(Math.cos(theta), 3))); 
    double N = a/Math.sqrt(1 - e2 * Math.sin(llh[1]) * Math.sin(llh[1])); 
    llh[2] = p/Math.cos(llh[1]) - N; 
    llh[0] = Math.toDegrees(llh[0]); 
    llh[1] = Math.toDegrees(llh[1]); 
    return llh; 
} 

所以,唯一的代碼留給正是DeCypher爲最後的比特:5ca9 2D62

網站的另一個線索表明這些字節包含主電壓/備用電壓和溫度。

+1

+1爲找出德國的位置的原因:) –

+0

從git https://github.com/giving/giving.github.com/issues/11它說,衣領還發送「氣溫」。也許最後兩個數字是溫度? (hm ..好像數字太大了......) –

+0

也是同樣的地方說他們跟蹤的速度也是如此,可能是另外一個提示..但是數字太高了.. –

1

你爲什麼不問問德國公司的人?可以給他們打電話或給他們發送電子郵件。我很確定他們會爲你提供答案。

此外,根據網站上的產品圖表,項圈可以設置爲以不同模式錄製。你必須從獅子項目中找出衣領是如何編程的。

+0

問? Pfft,那裏面的挑戰在哪裏? ;-)(+1,實際思維) – dstibbe

2

我想貢獻一點點dstibbe的答案,但我不能評論尚未..

的「頭」的最後一個字節(8C)是消息(140)的長度,當你開始計數爲0.