21

マーラ・ナボイショ ライオン プロジェクトは、GPS 首輪を装着したライオンの位置を解読してプロットするために、私たちに支援を求めてきました。

首輪から SMS を受信します。

Collar07854_100806210058.SMS

074952494449554d0000000000000000000000000000000000000000000000040f33303030333430313232393738393000000000000000000000000000000000f10a0806100028008c13ef348a0039d0fe000de871004cc92b5ca92d6213ef26640039d108000de86b004cc92d5ca92d5d13ef18620039d101000de865004cc92c5ca92d5813ef0a930039d0fc000de864004cc9311c682d5413eefc170039d045000de7d4004cc95b7c692c5013eeee280039d0ff000de85f004cc92a7c692d6fffffffffffffffffffffffffffffffffffffffffff

Collar07854_100807060011.SMS

074952494449554d0000000000000000000000000000000000000000000000040f33303030333430313232393738393000000000000000000000000000000000f10a0807020038008c13efb2eb0039d0ed000de853004cc92e3cea2d8813efa5060039d0fb000de860004cc9291c6a2d8413ef96fd0039d0fc000de85e004cc92d5c6a2d7f13ef88e00039d0f6000de85a004cc92b5c6a2d7b13ef7ad80039d0fa000de85a004cc9327c6a2d77ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff

これらはおそらく SMS PDU ですが、単純なオンライン デコーダーではあまり意味がないようです。IRIDIUM は衛星電話システムであり、おそらく首輪が位置を送信するときの担い手であるため、SMSC または送信者または何かの文字列であると思われます。

更新: これらの首輪に対応する KML ファイルがいくつかあります。KMLをここここにアップロードしました。カラーはおそらく Vectronic-Aerospace 製です。

それはどのような形式で、どのようにデコードするのでしょうか?

(これは提供コードプロジェクトです。おそらくあなたは彼らを助けたいですか、それともそこで他の問題を調べたいですか?)

4

7 に答える 7

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

これは次のように変換されます。

緯度: 52.43067054630929
経度: 13.525755535406619
身長: 88.99500464554876

これはドイツの場所になります... ケニアの保護区には間違っているように聞こえますが、実際にはこれらの首輪を製造するのは会社の通りです: 彼らのウェブサイトをチェックしてください.

座標を変換するコードはオンラインで見つかりました。

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;
}

したがって、解読するコードは最後のビット5ca9 2d62 だけです。

ウェブサイトからの別の手がかりは、これらのバイトがメイン電圧/バックアップ電圧と温度を保持していることを示唆しています。

于 2012-09-11T16:08:04.007 に答える
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

ログのように見えますが、2006 年 8 月 (推測) のメッセージには 6 つのエントリがあり、2007 年 8 月のメッセージには 7 つのエントリがあります。経度、緯度、タイムスタンプを推測していますか?

最初の 8 桁がタイムスタンプを表している可能性が高いです。それらは下から上に増分されます。

例えば。13ef348a = 334443658. 334443658 秒 = 10 年 8 か月 6 日 23:00:58 (1970 年以降) . これは、最初の SMS のタイトルの日付と一致します: Collar07854_ 100806 210058。タイトルのタイムスタンプから 2 時間を引いたものにも一致します。

投稿者への質問: これらのテキストは 1 日あたりどのくらいの頻度で受信されますか? 彼らは何年からですか(私は2010年だと推測していました)?

于 2012-09-10T22:38:01.010 に答える
2

通常の PDU ではないようです。また、7 ビットではなく 8 ビットの情報でもあります (ほとんどの 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
于 2012-09-10T12:41:45.523 に答える
2

dstibbeの回答に少し貢献したいのですが、まだコメントできません..

「ヘッダー」の最後のバイト (8c) は、0 から数え始めたときのメッセージの長さ (140) です。

于 2012-11-12T15:07:32.727 に答える
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

おそらく 4 つの異なる部分が残っています。

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

私の最初の推測では、パート 1 は緯度、パート 2 は経度でした。また、数値は浮動小数点ではなく整数である可能性が最も高いです。浮動小数点数には指数部 (11 ビット) があり、ほとんどの場合ゼロではありません。これらの数字には、000 から始まるその部分がないようです。

すべてを整数に変換すると、おそらく次のようになります。

  1. 3789054
  2. 911473
  3. 5032235
  4. 1554591074

これを見ると、パート1は経度、パート2は緯度だと思います。これはごく普通のことです。Google Earth を見てください。Google Earth も lat-lon の代わりに lon-lat を想定しています。

さて、整数を緯度/経度に変換する方法はたくさんありますが、私の最も可能性の高い候補は次のとおりです。

lon = part_1 / 6371000 / PI * 180

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

これにより、エチオピアの「ガンベラ」国立公園の座標が得られます...? 首輪はケニアに送られる前にエチオピアで録音されていたのでしょうか? 残念ながら、座標を変換するにはさらに情報が必要です...

緯度: 8.169253103106428

経度: 34.075781281927895

Google マップの座標

于 2012-09-11T11:10:57.597 に答える
1

ドイツの会社の人たちに聞いてみませんか?電話するか、メールを送ってください。私は彼らがあなたに答えを提供すると確信しています。

さらに、ウェブサイトの製品シートによると、首輪はさまざまなモードで記録するように設定できます。ライオン プロジェクトから、首輪がどのようにプログラムされているかを調べる必要があります。

于 2012-09-21T08:36:11.953 に答える
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;
于 2012-09-10T08:26:40.030 に答える