2

CDMA3GPP2ポイントツーポイントSMSメッセージをデコードするプログラムを作成しました。インターネットで見つけたいくつかのCDMAPDU16進文字列でテストしましたが、完全に機能します。ただし、Androidプラットフォームのすべての受信テキストメッセージに実装しようとすると、常に失敗します。

着信PDUを調べましたが、これまで見たのと同じパターンになっていないようです。誰かがこのPDUがどのフォーマットであるか、またはこのPDUを正しくデコードするために私が欠けているものを説明できますか?考慮していない追加のヘッダーまたはフィールドはありますか?

電話の着信テキストメッセージからプルされたPDUの例:

000000000000100200000000000000000A36373839313031363734000000000000000000001B000310864D000306120624205611010B104C2CF9F3F5EBD73E7000

パーサーを見つけてテストしたすべてのCDMApdusは、次のようになります。

00000210020207028CE95DCC65800601FC08150003168D3001061024183060800306101004044847

キャリア:Verizon 電話:Samsung Galaxy S Fascinate実行中Android 2.3.3

4

1 に答える 1

3

$SDK/sources/android-16/com/android/internal/telephony/cdma/SmsMessage の javadoc を参照してください。

/**
 * Creates byte array (pseudo pdu) from SMS object.
 * Note: Do not call this method more than once per object!
 */

...だから、特定の CDMA 標準に従っているわけではありません。ただし、デコードできます。ファインアスキーアートでは: -

000000000000100200000000000000000A36373839313031363734000000000000000000001B000310864D000306120624205611010B104C2CF9F3F5EBD73E7000
--------messageType     --digitMode                   --------bearerReply   ------------------------------------------------------bearer data
        --------teleService --ton --------------------src     --replySeqNo  --messageID --msts          --userdata
                --------serviceCategory                         --errorClass  --len   --XX--len           --len
                          --numberMode                            --causeCode   ------      ------------2012/06/24 20:56:11
                              --npi                                 --------bearerDataLength                ----------------------userdata
                                --len                                           

メッセージで切り取り/貼り付けのエラーが発生したと思われることに注意してください-「XX」とマークされた00バイトはそこにあるべきではないと思います-幸いなことに、日付を見つけて逆方向に作業するのは簡単です. したがって、これはユーザーデータを含む 6789101674 からのメッセージです。

104C2CF9F3F5EBD73E7000 の最初の 5 ビットは、7 ビットでエンコードされていることを示しています (0x02)。ユーザーデータの残りを 5 ビット左にシフトすると、次のようになります。

09859f3e7ebd7ae7ce00
--len(septets) 9 septets == 63 bits, so we expect 8 bytes of body
  ----------------7bit-body

したがって、デコードされた7bit-bodyは「Bggguuugg」です。

于 2012-07-09T19:05:36.863 に答える