motofan logo
> 

Чтение файлов .sms, сделанных программой SMSBackUp, Уважаемые кодеры, есть просьба!

Doktor Кот
сообщение 26.3.2007, 6:05


Опытный
***

Группа: Пользователи
Сообщений: 106
Регистрация: 12.8.2006
Из: Красноярск
Пользователь №: 94 751
Модель телефона: ROKR E1 with ТП
Прошивка: Electro_R373...49R

Рейтинг: 4.5



Уважаемые кодеры, есть к Вам небольшая просьба! Я уверен, что все Вы знакомы с программой SMSBackup, встроенной в корелет от Valleo: MediaViewer. Она, по приходу смс, считывает ее, и сохраняет в файл на флешку с расширением .sms, в котором находится текст входящей смс. И данный бэкап так же просто можно восстановить в телефон при помощи MediaViewer. Хотелось бы увидеть программу, при помощи которой можно было бы читать эти резервные копии смс на компе! А если она еще и сохранять/восстанавливать будет уметь, то это будет просто классно! Ну что, возьмется кто-нибудь?

Сообщение отредактировал Doktor Кот - 26.3.2007, 6:11
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
 
Ответ в темуСоздание новой темы
Ответов
Valleo
сообщение 1.4.2007, 18:12


Гуру
******

Группа: Почётные мотофаны
Сообщений: 728
Регистрация: 21.10.2005
Из: Находка
Пользователь №: 55 219
Модель телефона: Z3
Прошивка: 0DR

Рейтинг: 692.5



формат СМС очень странный =)
Если смс состоит из 1 части - из нее легко вытащить текст и все остальное.
Если уже из нескольких - то там уже начинаются траблы.

Собственно вот класс в прошивке, разбирающий СМС по частям (и работает он вроде тока для 1-составной смс, так как с многосоставними смс выскакивает ошибка)

Код

public class SMSMessage
{

    public static final byte m_TEXTB = 1;
    public static final byte m_MMSB = 3;
    private byte m_myVersionB;
    private byte m_myEndianB;
    private byte m_myDataaB[];
    private int m_myMsgSizeI;
    private int m_myHdrSizeI;
    private String m_myFolderString;
    private int m_myIdentifierI;
    private byte m_myTypeB;
    private Date m_myTimestampDate;
    private String m_myFromAddressString;
    private String m_myToAddressString;
    private byte m_myStateReadB;
    private byte m_myStateLockB;
    private String m_myBodyTextString;
    private int m_mySegmentaI[];
    static final byte m_CURRENT_VERSIONB = 1;
    static final byte m_BIG_ENDIANB = 1;
    static final byte m_LITTLE_ENDIANB = 2;

    public SMSMessage(byte message[])
        throws IOException, IllegalArgumentException, SecurityException
    {
        m_myDataaB = new byte[message.length];
        System.arraycopy(message, 0, m_myDataaB, 0, m_myDataaB.length);
        int cursor = 0;
        m_myVersionB = m_myDataaB[cursor];
        cursor++;
        if(1 != m_myVersionB)
            throw new IllegalArgumentException("Message representation of version " + m_myVersionB + " is not supported");
        m_myEndianB = m_myDataaB[cursor];
        cursor++;
        if(1 != m_myEndianB)
            throw new IllegalArgumentException("Message data endianess number " + m_myEndianB + " is not supported");
        m_myMsgSizeI = _getShortII(cursor);
        cursor += 2;
        if(m_myMsgSizeI + 4 != message.length)
            throw new IllegalArgumentException("Incorrect message size " + message.length + ", shall be " + (m_myMsgSizeI + 4));
        m_myHdrSizeI = _getShortII(cursor);
        cursor += 2;
        m_myFolderString = getString(cursor);
        cursor += 1 + m_myDataaB[cursor];
        m_myIdentifierI = _getShortII(cursor);
        cursor += 2;
        m_myTypeB = (byte)(m_myDataaB[cursor] & 0xff);
        cursor++;
        if(1 != m_myTypeB && 3 != m_myTypeB)
            throw new IllegalArgumentException("Incorrect type of message " + m_myTypeB);
        long timestamp = getLong(cursor);
        cursor += 8;
        m_myTimestampDate = 0L != timestamp ? new Date(timestamp) : null;
        m_myFromAddressString = getString(cursor);
        cursor += 1 + m_myDataaB[cursor];
        m_myToAddressString = getString(cursor);
        cursor += 1 + m_myDataaB[cursor];
        m_myStateReadB = m_myDataaB[cursor];
        cursor++;
        m_myStateLockB = m_myDataaB[cursor];
        cursor++;
        int count = _getShortII(cursor);
        cursor += 2;
        m_myBodyTextString = null;
        if(count > 0)
        {
            if(1 == m_myTypeB)
                m_myBodyTextString = getString(cursor, count);
            cursor += count;
        }
        count = m_myDataaB[cursor] & 0xff;
        cursor++;
        m_mySegmentaI = new int[count];
        for(int index = 0; index < count;)
        {
            m_mySegmentaI[index] = _getShortII(cursor);
            index++;
            cursor += 2;
        }

    }

    private final int _getShortII(int cursor)
    {
        return (m_myDataaB[cursor + 0] & 0xff) << 8 | m_myDataaB[cursor + 1] & 0xff;
    }

    private final long getLong(int cursor)
    {
        long value = 0L;
        for(int index = 0; index < 8; index++)
        {
            value <<= 8;
            value |= m_myDataaB[index + cursor] & 0xff;
        }

        return value;
    }

    private final String getString(int cursor, int length)
    {
        length >>= 1;
        if(0 == length)
            return null;
        char chars[] = new char[length];
        for(int index = 0; index < length; index++)
            chars[index] = (char)_getShortII(cursor + (index << 1));

        return new String(chars);
    }

    private final String getString(int cursor)
    {
        return getString(cursor + 1, m_myDataaB[cursor] & 0xff);
    }
}


Попробуйте разобраться wink.gif Мож что выйдет.
Тестовую СМС прилагаю (извращенцам не стоит пытаться отыскать там мой номер - изменил в хексе =)) )

Собственно прошивка позволяет делать бэкап исхоящих СМС =) Но их восстановить невозможно.

Сообщение отредактировал Valleo - 3.4.2007, 9:16
Прикрепленный файл 07_12_43.zip   ( 538 байт ) Кол-во скачиваний: 502
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить

Сообщений в этой теме
Doktor Кот   Чтение файлов .sms, сделанных программой SMSBackUp   26.3.2007, 6:05
Serg c650   Если уважаемый Valleo поделится информацией о алго...   26.3.2007, 7:28
Avton   не знает этой информации. Его уже оч. много раз с...   26.3.2007, 7:34
Doktor Кот   Сейчас заметил, что PST работает с файлами с расши...   26.3.2007, 8:12
Serg c650   Киньте сюда какой-нибудь файл *.sms И чё там напис...   26.3.2007, 11:53
Valleo   формат СМС очень странный =) Если смс состоит из 1...   1.4.2007, 18:12
Serg c650   Valleo, спасибо за код, но яву я не знаю(( Щас поп...   2.4.2007, 10:49
dvsdigiman   А этот код для восстановления смс из файла? Он пре...   2.4.2007, 15:13
dvsdigiman   Код простенький, только вроде не хватает чего-то.....   2.4.2007, 19:59
Valleo   Serg c650, Ну С++ тоже самое все ) dvsdigiman, Э...   3.4.2007, 7:13
Serg c650   Valleo, а я в Си не шарю, тока дельфи(( В принцип...   3.4.2007, 8:58
Valleo   Serg c650, Думаю программу надо такую: по меню: Ф...   3.4.2007, 9:19
Serg c650   Valleo, про навороты не совсем понятно. Ты хочешь,...   3.4.2007, 17:18
dvsdigiman   Valleo, а куда же тогда дальше передается m_mySegm...   3.4.2007, 19:59
Serg c650   На форумы по программированию зайди   4.4.2007, 10:16
Valleo   Нет. Чтобы например была папка рядом с программой...   4.4.2007, 12:00
Serg c650   Valleo, понял, спасибо)) А какая кодировка в этих ...   4.4.2007, 16:44
dvsdigiman   пойду жевать... Serg c650, кодировка Unicode - UC...   4.4.2007, 17:19
Valleo   dvsdigiman, Я уже все выложил =) ?+2: byte -...   4.4.2007, 21:49
Serg c650   Чё-то не получается у меня эти каракули из файла в...   5.4.2007, 11:07
dvsdigiman   Sergc650, Valleo уже выложил utf2ascii: Короче бе...   5.4.2007, 13:33
Ezik   Направьте меня куда-нибудь, где есть инфа про PDU...   5.4.2007, 17:52
Serg c650   dvsdigiman, в дельфи есть встроеные функции, тольк...   6.4.2007, 2:46
dvsdigiman   Как я понял, в тех блоках полезная информация (тек...   6.4.2007, 5:28
Valleo   dvsdigiman, Сделаю для VC бэкапер всех остальных ...   6.4.2007, 9:37
dvsdigiman   Valleo, а аналогичное для MV можно?   6.4.2007, 11:19
Valleo   dvsdigiman, Для MV лень писать... Там таким спосо...   6.4.2007, 14:14
Serg c650   dvsdigiman, Delphi - это среда для разработки про...   6.4.2007, 17:34
dvsdigiman   Встречайте первый тест-релиз SMSBackup Viewer: Ми...   6.4.2007, 18:31
Ezik   Встречайте первый тест-релиз SMSBackup Viewer: Ми...   6.4.2007, 20:02
Serg c650   dvsdigiman, уже собственно и не надо, т.к. ты взял...   7.4.2007, 2:01
Valleo   Прикрепил СМС которая не открывается. Это информац...   7.4.2007, 4:28
Ezik   Прикрепил СМС которая не открывается. Это информа...   7.4.2007, 6:17
dvsdigiman   Valleo, это только тест версия, как раз таки для т...   7.4.2007, 9:18
Valleo   dvsdigiman, Пооткрывал кучу СМС - вроде все пашут...   7.4.2007, 11:29
dvsdigiman   Valleo, все - да не все... Открываются только смс...   8.4.2007, 16:32
Valleo   Ну эт уже я не могу исправить увы. Это уже сами к...   9.4.2007, 1:24
dvsdigiman   Щас попробую сделать прогу "сообщение" -...   9.4.2007, 13:05
Unlimit   dvsdigiman, По пводу интерфейса, было бы не плохо...   9.4.2007, 14:27
Serg c650   Unlimit, а файл в АТ режиме не скачаешь(   9.4.2007, 15:13
Unlimit   Serg c650, Я не про то чтоб юзать телефон в АТ ре...   9.4.2007, 15:20
dvsdigiman   Я уже сказал, что пока занимаюсь изучением формата...   9.4.2007, 18:39
alamer   Я уже сказал, что пока занимаюсь изучением формат...   15.4.2007, 14:41
Serg c650   Unlimit, предупреждать надо)   10.4.2007, 5:29
Valleo   sava82, ёк, меня поражают люди которые даже заголо...   11.4.2007, 7:13
dvsdigiman   alamer, чуть подожди, выложу... правда только опис...   16.4.2007, 14:13
alamer   alamer, чуть подожди, выложу... правда только опи...   17.4.2007, 5:52
dvsdigiman   Вот маленькое продолжение SMSBackup Viewer RC1 До...   18.4.2007, 17:49
dvsdigiman   Вот выложу на обозрение дескрипшн, может кто возьм...   20.4.2007, 22:11
Valleo   dvsdigiman, В некоторых смс-ках СМС-центр не пише...   23.4.2007, 17:27
Will_See   у меня такой вопрос... можно ли с помощью эанной п...   1.10.2007, 16:15
Gleb   Прикольно. Спасибо за прогу, хотя Valleo прав, ном...   4.10.2007, 11:59
dvsdigiman   2Gleb, лень уже браться за переделку проги (свой L...   8.10.2007, 18:26
Doktor Кот   Проге очень не хватает drag-n-drop! :( может к...   22.10.2007, 12:05
dvsdigiman   По просьбе добавил drag-n-drop и не больше, ну лен...   22.10.2007, 14:34
Авоська   А как сделать чтобы сохранялись ещё и исходящие см...   27.10.2007, 7:07
dvsdigiman   Исходящие СМС можно сохранять с помощью плагина SM...   27.10.2007, 11:05
Авоська   Исходящие СМС можно сохранять с помощью плагина S...   6.1.2008, 15:36
zbrd   dvsdigiman а можешь сделать чтобы твоя прога откр...   28.2.2008, 14:26
McLarenXS   dvsdigiman респект тебе друг! :) если есть мыс...   28.6.2008, 23:37
baat   сорри, что тему поднимаю, но у меня тут попросили ...   14.11.2017, 13:27
baat   новая версия... + сделал чтение 7-битной кодиров...   7.12.2017, 6:22

Чтение файлов .sms, сделанных программой SMSBackUp, Уважаемые кодеры, есть просьба! · Программы для работы со справочником и SMS-сообщениями · Forum
 

Ответ в темуСоздание новой темы
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 29.3.2024, 4:34

Форум живёт: