Конференция "Сети" » Расшифровка PDU длинного смс. HELP! [D7]
 
  • SaJek © (30.08.11 10:35) [0]
    Здравствуйте, уважаемые дамы и господа. Оч. люблю Ваш форум. Во многом помогал и помогает. Но увы. Столкнулся с проблемой, решение которой не могу по сей день найти.

    Есть программа, которая принимает смс сообщения с USB GSM модема Teleofis RX101-r. Все сообщения принимает. Звонки делает. Так как мне не нужны сообщения в кирилице - форматом PDU не пользовался. НО! Столкнулся с проблемой, когда начал принимать длинные смс сообщения.
    Под длинными смс я понимаю смс более 160 символов. Приходит полный ужас. Мало того, что приходит белиберда в Text режиме (вместо латинских букв), так то же самое и с PDU режимом.

    Text режим (лог из Hyper Terminal) 1-я смс
    0500036003018275FADBF876839AE17C780D6AD35C34B9E2089D82682F596CAE40D3E970DD EBD576
    B5C3F0B92B1F7693CB7897BCFEFAB17BED307C6E62B37BB019CC25ABC56E3718CB0673C164335CAE
    6682D37BB019CC25ABC56E3718CB0673C164335CAE66D2F76233059A4E87EB5EAF7618EE0AD7E96F
    F3DBED92D75FBFB5B937ABE564B3186C36ABDD00



    Text режим (лог из Hyper Terminal) 2-я смс
    05000360030264329B6C47A3C977B21C0C178BC170B0DB2EB683CD602E592D76BBC1763698 0B269B
    E172B51D8CB683C1603BD9CCB693D5603B986C172BE264BB1ACC18DCC166B0E6EEBA5BB676B05C6E
    B792D97630457338ECC96A3045D339ECC1640A6670D88B157132C53049ECD560C6A0A2F926977BB0
    19ACC9BAB2962DC5112A9D82E86FD0BC2CB79701



    Text режим (лог из Hyper Terminal) 3-я смс
    050003600303E43AD0DB6C5608C3F45E2E5752D07B2B996D08



    Ну я сразу подумал. Надо просто перевести в PDU режим и легче простого прочитать её. Но как оказалось не так уж и просто...

    PDU режи (лог из Hyper Terminal) 1-я смс
    07919712999090F0400B919712577456F10000118092217315619F0500036003018275FADB F87683
    9AE17C780D6AD35C34B9E2089D82682F196DAE40D3E970DDEBD576B5C3F0B92B1F7693CB7897BCFE
    FAB17BED307C6E62B37BB019CC25ABC568B31ACB0673C164B31CCC6682D37BB019CC25ABC568B31A
    CB0673C164B31CCC66D2F76233059A4E87EB5EAF7618EE0AD7E96FF3DBED92D75FBFB5B937ABE564
    B3186C36ABDD00



    PDU режи (лог из Hyper Terminal) 2-я смс
    07919712999090F0400B919712577456F10000118092217345619F05000360030264329B6C 47A3C9
    77B21C0C178BC170B3DB2EB683CD602E592D469BD57636980B269BE560B61D8CB683C162BBD9CCB6
    93D5603B986C172BE264BB1ACC18DCC166B0E6EEBA5BB676B05C6EB792D57630457338ECC96A3045
    D339ECC1640A6670D88B157132C53049ECD560C6A0A2F926977BB019ACC9BAB2962DC5112A9D82E8
    6FD0BC2CB79701



    PDU режи (лог из Hyper Terminal) 3-я смс
    07919712999090F0440B919712577456F10000118092217365611C050003600303E43AD0DB 6C5608
    C3F45E2E5752D07B2B596D08



    Попытки перевести text режим ни к чему не привели. Попытка перевода PDU режима:

    Перевод PDU режима 1-я смс

    SMSC#+79219909090
    Sender:+79217547651
    TimeStamp:29/08/11 12:37:51
    TP_PID:00
    TP_DCS:00
    TP_DCS-popis:Uncompressed Text
    class:0
    Alphabet:Default

    &#233;@&#248;@6 @AutoFon&#191;&#232;./&#198;&#249;h:k&#926;C&#936;y&#232;&#934;_6&#915;$c&#196;TM<&#165;&#201;&#936;&# 8364;xn&#228;j&#926;.?&#928;H&#248;&#228;>&#926;&#223;7&#915;n&#228;&#248;&#214; &#252;X&#228;ZCagMXY&#228;&#191;f&#191;&#214;djbhfjXl&#191;&#214;&#191;dfr&#191; lL&#191;i&#228;&#191;f&#191;&#214;djbhfj&#191;@v&#920;&#223;&#928;&#928;Eal8&#19 6;&#936;vF&#161;IE&#923;:?5U§&#229;f_xV&#252;,&#252;oc7v&#928;uvo§5R&#223;§V
    Length:159



    Перевод PDU режима 2-я смс
    SMSC#+79219909090
    Sender:+79217547651
    TimeStamp:29/08/11 12:37:54
    TP_PID:00
    TP_DCS:00
    TP_DCS-popis:Uncompressed Text
    class:0
    Alphabet:Default

    &#233;@&#248;@6&#161;@2262;44r&#165;&#228;B@&#197;&#248;&#229;o&#216;&#216;zH&#2 09;&#197;
    &#229;k$JK¤&#230;-o+cR&#163;&#923;&#8364;M/+&#216;Ba&#220;&#248;
    &#229;&#216;+zr&#214;&#248;ldj&#191;v&#191;dvb
    qdvj&#191;&#248;&#165;w&#191;f&#191;&#926;w.w&#928;&#196;v&#191;rrvVdjv&#191;&#9 23;&#926;&#236;&#236;&#228;dj&#191;&#923;j0F'f&#928;@&#920;=V&#163;bXW&0&#920;E& #161;gfV&#931;(SpEd4wv&#249;PIyfU)Dq&#197;%"*l.
    Length:159



    Перевод PDU режима 3-я смс
    SMSC#+79219909090
    Sender:+79217547651
    TimeStamp:29/08/11 12:37:56
    TP_PID:00
    TP_DCS:00
    TP_DCS-popis:Uncompressed Text
    class:0
    Alphabet:Default

    &#233;@&#248;@6&#191;@r: off
    $&#249;?
    &#199;/&#220;.K&#165;2kZ&#232;
    Length:28



    Отсюда вопрос - что за дела-то такие получаются? Вроде и кодировка та. А не переводится. Или склеенные смс как-то по другому переводятся?

    Текст там должен быть примерно следующим:

    AutoFon Mayak m4.4r
    GPS 9/26s
    http://m.maps.yandex/?LI=037..........
    http://map.autofon.ru/?kf=356895.......
    MCC=250
    MNC=99
    LAC=568A
    CID=L23C5
    Mode=030M,S,K-
    Move sensor: off
    GPRS to server: off
    Bat=99%
    t=+25C

    Господа, помогите пожалуйста с перекодировкой этих длинных смсок. Уже несколько дней ломаю себе голову. В перекодировщике, когда пытаюсь убрать некоторые "F" символы - у меня частично вылезает текст. Может быть проблема в этом? Кто знает. Отзовитесь.

    Спасибо
  • Anatoly Podgoretsky © (30.08.11 11:20) [1]
    > SaJek  (30.08.2011 10:35:00)  [0]

    C английскими все в порядке, а русские в кодировке UTF-8
  • OW © (30.08.11 11:22) [2]
    совет дилетанта, но вдруг
    а еще бы попробовать перед каждыми 7ми битами еще один добавить и попробовать декодировать
  • SaJek © (30.08.11 11:25) [3]

    > C английскими все в порядке, а русские в кодировке UTF-8

    Так мне русские и не нужны. Мне лишь латиница нужна.


    > совет дилетанта, но вдруг
    > а еще бы попробовать перед каждыми 7ми битами еще один добавить
    > и попробовать декодировать

    Вот с этого места поподробнее. Мне что-то об этом говорили. Я ввожу данные в WinHEX. Просто тупо PDU текст. И что дальше делать-то?

    Раскодировал я, кстати, с помощью http://twit88.com/home/utility/sms-pdu-encode-decode
  • Медвежонок Пятачок © (30.08.11 11:33) [4]
    в пду семибитная кодировка.
    исходное сообщение переводится в ucs, затем у каждого байта откусывается старший бит.
    полученные семибитные байты толкаются "влево" таким образом, чтобы заполнять старшие биты.

    а тебе нужно сделать наеборот.
  • Anatoly Podgoretsky © (30.08.11 11:33) [5]
    А с английскими все нормально

    > é@ø@6 @AutoFon¿è./Æùh:kΞCΨyèΦ_6Γ$cÄTM<¥ÉΨ&#  8364;xnäjΞ.?
    > ΠHøä>Ξß7ΓnäøÖ üXäZCagMXYä¿f¿ÖdjbhfjXl¿Ö¿dfr¿ lL¿iä¿f¿Ödjbhfj¿@vΘßΠΠEal8
    > 6;ΨvF¡IEΛ:?5U§åf_xVü,üoc7vΠuvo§5RߧV

    Может UTF-7
  • Anatoly Podgoretsky © (30.08.11 11:36) [6]
  • SaJek © (30.08.11 11:38) [7]

    > Медвежонок Пятачок

    Может хоть как-то подтолкнете на код? Ибо со сдвигами этими я вообще не понимаю.

    И почему короткие смс-ки (в 1 смс сообщение) читаются нормально?


    > А с английскими все нормально
    >
    > > é@ø@6 @AutoFon¿è./Æùh:kΞCΨyèΦ_6Γ$cÄTM<¥ÉΨ&#   8364;xnäjΞ.
    > ?
    > > ΠHøä>Ξß7ΓnäøÖ üXäZCagMXYä¿f¿ÖdjbhfjXl¿Ö¿dfr¿  lL¿iä¿f¿Ödjbhfj¿@vΘßΠΠEal8
    >
    > > 6;ΨvF¡IEΛ:?5U§åf_xVü,üoc7vΠuvo§5RߧV
    >
    > Может UTF-7


    Нормально да не совсем. Там ещё должны быть слова GPRS, t, Move sensor, CID, LAC, MCC, MNC...

    Такое ощущение что где-то происходит сбой. Но понять почему? Я не в силах
  • Омлет © (30.08.11 11:48) [8]
    А телефон это принимает нормально?
  • SaJek © (30.08.11 11:50) [9]
    Вот именно что телефон принимает как надо. Но у него, видимо есть свой алгоритм чтения подобных смс. Я вот пытался в гугле найти инфу. Но даже не понимаю как запрос сделать нормально. Вылезает шлак всякий
  • OW © (30.08.11 11:51) [10]

    > Вот с этого места поподробнее.


    Символ1 Символ2 Символ3
    пусть, кодируются как
    11010101 10011111 11001100

    возможно, первый бит "оборвали"
    х1010101 х0011111 х1001100

    полученное склеили
    10101010 01111110 01100
    получилось 2 байта и еще немного, но, для восстановления исходного
    надо 1 (добавить самому) + 7 следующих, 1 (добавить самому) + 7 и т.д.,
    тогда и будут исходные байты.
    Возможно :)


    > Может хоть как-то подтолкнете на код? Ибо со сдвигами этими
    > я вообще не понимаю.
    > И почему короткие смс-ки (в 1 смс сообщение) читаются нормально?

    Нет, потому что лень. Плохо.
    Не знаю. просто предлагаю вариант для попробовать. Восможно, поможет. А может и нет.
  • Anatoly Podgoretsky © (30.08.11 12:05) [11]
    > SaJek  (30.08.2011 11:38:07)  [7]

    Выданая ссылка, что совсем не помогла?
  • SaJek © (30.08.11 12:21) [12]

    > Выданая ссылка, что совсем не помогла?

    По их коду выдаёт

    0j@f 0`L3&3CHCjXgPFhT)$&Q7jH!f
    !2eIc8`TL6`@& 2nT1!Fp\1gLA
    E93h
    0Y DhLCfP'0pd!G 8d*GM!A
    QChL"9n@!D(!Dj\1&
    0`L1L0dX!3FLBl "s&PCr\9#HLC`
    s!Cb\# "BddNCY#&Q9d:cF!Cb\13FM8`c&!0j@f 0`L3&3CHCjX gPFhT)$&Q7jH!f
    !2eIc8

  • SaJek © (30.08.11 20:11) [13]
    Самый то главный вопрос... Не читаются в ПДУ формате именно смс длинные. С короткими (в 1 смску) всё в порядке.
    Тут просто какой-то специальный алгоритм.

    Ребят. Ну может кто нибудь сталкивался?
  • RWolf © (31.08.11 01:38) [14]
    multipart кодируются хитро, перед собственно текстом идут ещё поля, которые надо откусывать, прежде чем начинать декодировать 7-битные символы.
  • SaJek © (31.08.11 15:04) [15]

    > multipart кодируются хитро, перед собственно текстом идут
    > ещё поля, которые надо откусывать, прежде чем начинать декодировать
    > 7-битные символы.

    А есть более подробная инфа? Покопался в инете - не нашёл. Спасибо
  • Вариант (31.08.11 15:57) [16]

    > SaJek ©   (31.08.11 15:04) [15]


    Я не разбирался сильно с мультипарт, но получил примерно следующее (первые 7 символов удалил у каждой PDU SMS, так что это подгонка, надо разбираться дальше)
    "AutoFon Mayak m4.4r\nGPS 4/24s\nhttp://m.maps.yandex.ru/?l=maps&ll=030.251435,60.023906&pt=030.251435,60.023906&z=13\nhttp://map.autofon.ru/?kf=359231033572262;44r;2908110837;1;030.251435;60.023906;04;001;336;250;02;1E82 ;50FA;030M;W;K-;099;+25;0\nMCC=250\nMNC=02\nLAC=1E82\nCID=50FA\nMode=030M,W,K-\nGPRS to server: off\nBat=99%\nt=+25C".
    Но
    остальные буковки вроде как нормальные \n - новая строка. Раскодировал как обычную 7-битную смс.
  • RWolf © (31.08.11 16:28) [17]

    > А есть более подробная инфа? Покопался в инете - не нашёл.
    >  Спасибо

    я в своё время нагуглил формат multipart SMS без проблем.
    сейчас документации не осталось, но поля, о которых я говорю — это 6 байт перед текстом.
    смотрим PDU SMS №1:
    050003600301
    здесь 05 — длина доп.поля, 60 — SMS sequence; 03 — всего частей, 01 — № части.
  • SaJek © (31.08.11 18:28) [18]

    > Вариант   (31.08.11 15:57) [16]
    >
    > > SaJek ©   (31.08.11 15:04) [15]
    >
    >
    > Я не разбирался сильно с мультипарт, но получил примерно
    > следующее (первые 7 символов удалил у каждой PDU SMS, так
    > что это подгонка, надо разбираться дальше)
    > "AutoFon Mayak m4.4r\nGPS 4/24s\nhttp://m.maps.yandex.ru/?
    > l=maps&ll=030.251435,60.023906&pt=030.251435,60.023906&z=13\nhttp:
    > //map.autofon.ru/?kf=359231033572262;44r;2908110837;1;030.
    > 251435;60.023906;04;001;336;250;02;1E82 ;50FA;030M;W;K-;
    > 099;+25;0\nMCC=250\nMNC=02\nLAC=1E82\nCID=50FA\nMode=030M,
    > W,K-\nGPRS to server: off\nBat=99%\nt=+25C".
    > Но
    > остальные буковки вроде как нормальные \n - новая строка.
    >  Раскодировал как обычную 7-битную смс.


    Скажи пожалуйста. Как ты раскодировал? Всё верно. Именно так и расшифровывается смс-ка!!!!!!!!!!!!!!!!!!!
  • Вариант (01.09.11 08:20) [19]

    > RWolf ©   (31.08.11 16:28) [17]

    Вот видно их я и удалял, не разобравшись с multipart.


    > SaJek ©   (31.08.11 18:28) [18]

    Раскодировал я не правильно, подгонка скажем так, о чем уже писал. Тебе надо найти доку по этому вопросу. А я просто представил

    > PDU режи (лог из Hyper Terminal) 1-я смс
    > 07919712999090F0400B919712577456F10000118092217315619F0500036003018275FADB
    > F87683
    > 9AE17C780D6AD35C34B9E2089D82682F196DAE40D3E970DDEBD576B5C3F0B92B1F7693CB7897BCFE  
    >
    > FAB17BED307C6E62B37BB019CC25ABC568B31ACB0673C164B31CCC6682D37BB019CC25ABC568B31A  
    >
    > CB0673C164B31CCC66D2F76233059A4E87EB5EAF7618EE0AD7E96FF3DBED92D75FBFB5B937ABE564  
    >
    > B3186C36ABDD00


    как одну СМС, выделил в первой части на основе  поле текста  и начиная от него до конца СМС  удалил все символы, не принадлежащие ['0'..'9','A'..'F'], убрав служебную инфо и слив текстовые части в один поток, не закладываясь на поля длинный текста - что опять подчеркиваю является неверным, надо найти нормальную доку и делать как положено.  
    А  раскодировка уже самих символов проста -  каждую пару в шестнадцатиричном формате я перевел в байт и получил поток байт, содержащий 7-битные символы. Старший бит 1 -го байта является младшим битом второго семибитного символа, а  уже старшие два бита второго байта являются двумя младшими битами третьего символа и т.д. Таким образом у нас накапливается постоянно N-ое число бит, которые переходят в следующий символ. Когда число этих бит в остатке становится =7, то у нас набежал целый символ, потому вставляем его без учета следующего байта из текстового потока, и начинаем обрабатывать следующий байт и всю последующую цепочку, как первый байт...
 
Конференция "Сети" » Расшифровка PDU длинного смс. HELP! [D7]
Есть новые Нет новых   [134435   +18][b:0][p:0.007]