Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MotoFan.Ru - все для моторола _ Программы для работы с смс, справочником и другими файлами _ Чтение файлов .sms, сделанных программой SMSBackUp

Автор: Doktor Кот 26.3.2007, 6:05

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

Автор: Serg c650 26.3.2007, 7:28

Если уважаемый Valleo поделится информацией о алгоритме созранения и восстановления смс, то реализовать это на компе будет не сложно.

Автор: Avton 26.3.2007, 7:34

Цитата(Serg c650 @ Сегодня, 15:28)

уважаемый Valleo

не знает этой информации. Его уже оч. много раз спрашивали. Плагин просто отсылает команду ОС телефона: Сохранить смс. А в каком формате он ее сохранят пока неизвестно sad.gif

Автор: Doktor Кот 26.3.2007, 8:12

Сейчас заметил, что PST работает с файлами с расширением sms, вот только что то не открывает sms от SMSBackup'а, пишет, что формат не опознал... Ну я считаю, если будет большое желание, то сделать можно все! Ведь еще не такие вещи сотворяли с нашей старушкой-моторолой!!

Автор: Serg c650 26.3.2007, 11:53

Киньте сюда какой-нибудь файл *.sms
И чё там написано желательно тоже выложьте, поковыряю

Автор: Valleo 1.4.2007, 18:12

формат СМС очень странный =)
Если смс состоит из 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 Мож что выйдет.
Тестовую СМС прилагаю (извращенцам не стоит пытаться отыскать там мой номер - изменил в хексе =)) )

Собственно прошивка позволяет делать бэкап исхоящих СМС =) Но их восстановить невозможно.
Прикрепленный файл 07_12_43.zip   ( 538 байт ) Кол-во скачиваний: 324

Автор: Serg c650 2.4.2007, 10:49

Valleo, спасибо за код, но яву я не знаю(( Щас попробую в файлике поковыряться

Автор: dvsdigiman 2.4.2007, 15:13

А этот код для восстановления смс из файла?
Он предназначен и для длинных смс, т.е. других кусков кода в проше больше нет?

Valleo,[OFF] я конечно не сюда запостил, но добавь все-таки бэкап исходящих...[/OFF]


p/s/ щас попытаюсь разобраться с алгоритмом...

Автор: dvsdigiman 2.4.2007, 19:59

Код простенький, только вроде не хватает чего-то... Все обрывается...

Valleo, может есть еще немножко кода? И еще если есть таблицу кодировки Unicode BigEndian...

Автор: Valleo 3.4.2007, 7:13

Serg c650,
Ну С++ тоже самое все )

dvsdigiman, Это парсер СМС - т.е. он парсит СМС на составляющие, и ему не важно односоставная или несколькисостовная смс. Но с несколькисоставными он не фурычит - так как не возвращает текст. В том то и дело что этим кодом тока односоставные смс читать.


dvsdigiman,
Я выдрал кусок из класса который касается именно парсинга смс по составляющим. Остальные вспомогательные функции, такие как getText() которая вернет m_myBodyTextString, я убрал так как для вас они не важны.
таблиц таких у меня нет

Автор: Serg c650 3.4.2007, 8:58

Valleo, а я в Си не шарю, тока дельфи((

В принципе прогу можно сделать в таком виде:
Номер того кому пишем
Сама смска

Кнопочку для скачки и т.д. и т.п.

Больше ни чё не надо??

Автор: Valleo 3.4.2007, 9:19

Serg c650,
Думаю программу надо такую:
по меню: Файл->Открыть, Файл->Сохранить как txt, Файл->Закрыть, ну и About кнечно же =)
по самой функциональности:
поля "Date", "From", "To", "Parts" (сколько частей смс)
и поле с текстом смс.

В тхт сохранять все поля поочереди через перенос строки.
Ну и фиксированный размер окна. Собственно это ToDo для красивой работоспособной программы.

Как "наворот" можно сделать папочку-архив, куда будут скидываться папки с смс (с одним, двумя, тремя и т.д. подуровнями), и по которым можно будет внутри программы лазить (в виде дерева к примеру панелька слева). Для удобства использования наворота - всплывающее окошко над смс в виде облачка, которая под курсором, в котором поле From и кусочек текста смс в несколько строчек. Думаю если делать навигацию по папке - то только по фиксированной, а не Мой компьютре и так далее как в проводнике wink.gif

Дизайн думаю не стоит выдумывать - пусть держит стандартный виндосовский.

Вот собственно что мне бы хотелось видеть в такой программе wink.gif

Автор: Serg c650 3.4.2007, 17:18

Valleo, про навороты не совсем понятно. Ты хочешь, чтоб прога скинула весь бэкап в папку, а потом пользователь оттуда уже выбирал бы смски для чтения?

Автор: dvsdigiman 3.4.2007, 19:59

Valleo, а куда же тогда дальше передается m_mySegmentaI и m_myBodyTextString?

И верно ли, что если m_myTypeB=1 и Count>0, то смска одиночная, и вслед за Count идет само тело смски?
Иначе m_mySegmentaI заполняется набором непонятных чисел...

У кого есть инфа как переводить UTF-8 в Win1251?

Автор: Serg c650 4.4.2007, 10:16

Цитата
У кого есть инфа как переводить UTF-8 в Win1251?

На форумы по программированию зайди

Автор: Valleo 4.4.2007, 12:00

Цитата
Valleo, про навороты не совсем понятно. Ты хочешь, чтоб прога скинула весь бэкап в папку, а потом пользователь оттуда уже выбирал бы смски для чтения?

Нет. Чтобы например была папка рядом с программой, в которую пользователь сам (вручную, незачем усложнять программу вскими импортами) копирует папки с смсками или сами смски. А прога уже работает с этой папкой, выстраивая дерево файлов и папок начиная с именно этой папки...
Ну надеюсь ты понял =)

Добавлено позже (4.4.2007, 23:02):
Цитата
Иначе m_mySegmentaI заполняется набором непонятных чисел...


Сорьки, вот кусок кода:

Код

   public byte getType()
    {
        return m_myTypeB;
    }

    public Date getTimestamp()
    {
        return m_myTimestampDate;
    }

    public String _getFromAddressvString()
    {
        return null != m_myFromAddressString ? new String(m_myFromAddressString) : null;
    }

    public String _getToAddressvString()
    {
        return null != m_myToAddressString ? new String(m_myToAddressString) : null;
    }

    public int getSize()
    {
        return m_myDataaB.length;
    }

    public int _getSegmentsvI()
    {
        return m_mySegmentaI.length;
    }

    public String _getBodyTextvString()
        throws IllegalArgumentException
    {
        if(1 == m_myTypeB)
            return m_myBodyTextString;
        if(3 == m_myTypeB)
            return null;
        else
            throw new IllegalArgumentException("Wrong message type: not textual message");
    }

    public boolean _isUnreadvZ()
    {
        return 0 == m_myStateReadB;
    }

    public boolean _isLockedvZ()
    {
        return m_myStateLockB > 0;
    }

думаю из этого понятно как получается кол-во сегментов wink.gif
Ну и все остальное как получается...

Добавлено позже (4.4.2007, 23:06):
Цитата
И верно ли, что если m_myTypeB=1 и Count>0, то смска одиночная, и вслед за Count идет само тело смски?

Видимо получается так...
Но если смс многосоставная - это там ужас какой то =)

И вот еще:

Код

    public static char byte2Char(int i){
        if(i < 0) i += 256;
        char c = (char)i;
        if(c == '\n') return c;
        if(c == '\r') return c;
        if(c == '\t') return c;
        if(c < ' ') return ' ';
        if(c < '\200') return c;
        if(i == 168) return '\u0401';
        if(i == 184) return '\u0451';
        if(i == 179) return '\u0456';
        if(i == 178) return '\u0406';
        if(i == 191) return '\u0457';
        if(i == 175) return '\u0407';
        if(i == 186) return '\u0454';
        if(i == 170) return '\u0404';
        if(i >= 192 && i <= 255) return (char)(i + 848);
        else return ' ';
    }

    public static int char2Byte(char c){
        char c1 = c;
        if(c == '\n') return c;
        if(c == '\r') return c;
        if(c == '\t') return c;
        if(c < ' ')   return 32;
        if(c < '\200') return c;
        if(c1 == '\u0401') return 168;
        if(c1 == '\u0451') return 184;
        if(c1 == '\u0456') return 179;
        if(c1 == '\u0406') return 178;
        if(c1 == '\u0457') return 191;
        if(c1 == '\u0407') return 175;
        if(c1 == '\u0454') return 186;
        if(c1 == '\u0404') return 170;
        if(c1 >= '\u0410' && c1 <= '\u044F') return c1 - 848;
        else return 32;
    }

//*************************************************//

    public static String ascii2Utf(String s){
        String s1 = "";
        try{
            byte abyte0[] = s.getBytes();
            for(int i = 0; i < abyte0.length; i++) s1 += String.valueOf(byte2Char(abyte0[i]));
        }
        catch(Exception exception){
            s1 = "";
        }
        return s1;
    }

    public static String utf2Ascii(String s){
        String s1 = "";
        try{
            char ac[] = s.toCharArray();
            for(int i = 0; i < ac.length; i++) s1 += (char)char2Byte(ac[i]);
        }
        catch(Exception exception){
            s1 = "";
        }
        return s1;
    }


Вроде то что ты ищешь =)

Автор: Serg c650 4.4.2007, 16:44

Valleo, понял, спасибо)) А какая кодировка в этих файлах (*.sms)?

Автор: dvsdigiman 4.4.2007, 17:19

пойду жевать...

Serg c650, кодировка Unicode - UCS-2 Big Endian
Вот только начальная позиция текста может быть разной,
как раз-таки из-за этого в прогах типа AkelPad пропадают куски текста...

Добавлено позже (4.4.2007, 21:52):
Получается примерно так:
0. Начало (4 байта)
1. Заголовок
2. хз какие-то блоки wink.gif

В начале:
0000: byte -> версия (=01)
0001: byte -> кодировка (=01)
0002: int -> [размер_файла]-4

В заголовке:
0004: int -> размер заголовка (фактически численно совпадает со смещением первого "хз_блока")
0006: string -> папка (Inbox,...)
?: int -> идентификатор (?)
?+2: byte -> тип (=01 или 03) (?)
?+3: long -> дата+время (8 байт)
?+11: string -> отправитель (например, sms://+1234567890)
??: string -> получатель (обычно пустая строка - 1 байт = 00)
???: byte -> прочитано/непрочитано (=00 - прочитано, другие значения не смотрел...)
???+1: byte -> заблокировано/незаблокировано (=00 - нет)
???+2: int -> "count" => Если count>0, то смска одиночная и сразу за count идет тело смски длиной count байт (реальная длина - count/2 символов), иначе ничего...
????: byte -> N - кол-во блоков, равное кол-ву страниц смс
???+1: -> таблица из N значений (int), каждое значение - размер блока.
Т.е. размеры_всех_блоков + размер_заголовка + размер начала (=4) = размер файла

Далее идут один за другим N блоков...
Вот тут пока что Ж*ПА.... Если приглядется, то в блоках, кроме текста присутствует также номер отправителя и номер смс-центра, ну и есессно куча всякой, пока непонятной хрени...

Если смска одиночная, то тело смски помещается в заголовок, при этом его длина входит в длину заголовка... Кодировка при этом - что-то подобное на юникод, но не пойму что... Также при этом все-равно присутствует 1 хз_блок, в котором тоже присутствует текст смски (уже в кодировке юникод)

Возможно хз_блоки имеют структуру схожую со структурой симов 007D, вот только размер блоков по 600-800 байт...
Также возможно структура блоков такая же, которая приходит от оператора (тут уже надо pdu глянуть)

Valleo, поищи, может где-нибудь все таки есть парсинг этих хз_блоков
И вообще может выложи то, откуда ты выдирал этот класс...

Автор: Valleo 4.4.2007, 21:49

dvsdigiman,
Я уже все выложил =)

?+2: byte -> тип (=01 или 03) (?)
01 - SMS
03 - MMS

В смс пишется обязательно насколько я понял номер смс-цента, номер отправителя и номер получателя. (т.е. 3 номера)

Про блоки - вот тоже не понимаю их структуры... Но то что кол-во блоков = количество смс в 1 смс-ке это факт. Значит надо парсить каждый блок чтобы извлечь само сообщение.

Автор: Serg c650 5.4.2007, 11:07

Чё-то не получается у меня эти каракули из файла в ANSI перевести. Кто в Delphi это умеет делать, помогите.

Автор: dvsdigiman 5.4.2007, 13:33

Sergc650, Valleo уже выложил utf2ascii:

Короче берешь по два байта и переводишь так:
$04 01 -> #168
$04 51 -> #184
$04 56 -> #179
$04 06 -> #178
$04 57 -> #191
$04 07 -> #175
$04 54 -> #186
$04 04 -> #170
$00 20 -> #32
от $04 10 до $04 4F -> вычитаешь из числа 848
---------------------------------------------------------
Щас повытаскиваю все xз_блоки из всех файлов *.sms и буду сравнивать...

Направьте меня куда-нибудь, где есть инфа про PDU...

Автор: Ezik 5.4.2007, 17:52

Цитата(dvsdigiman @ 5.4.2007, 17:33) *

Направьте меня куда-нибудь, где есть инфа про PDU...

shuffle.gif это не подойдет?
http://www.ixbt.com/mobile/review/comp-sms.shtml

Автор: Serg c650 6.4.2007, 2:46

dvsdigiman, в дельфи есть встроеные функции, только у меня они не работают((

Автор: dvsdigiman 6.4.2007, 5:28

Как я понял, в тех блоках полезная информация (текст сообщения) находится только в конце блока, остальное (кроме номеров отправителя/получателя/смс-центра) - случайный мусор из симов...
Осталось научится определять смещение начала текста в данном блоке или хотя бы размер куска текста в данном блоке...

Sergc650, какая именно делфи, какие именно функции?

Ezik, для начала пойдет...

Valleo, можешь ли сделать отдельно маленькую прогу для бэкапа черновых или исходящих. Так хоть можно будет экспериментировать (без затрат денюжков) - изменил/добавил/удалил одну буковку, сохранил, сделал бэкап и опять сидишь изучаешь...

Автор: Valleo 6.4.2007, 9:37

dvsdigiman,
Сделаю для VC бэкапер всех остальных папок (будет отдельным плагином)
Прикрепил плагин для VC. Делает бэкап СМС из ВСЕХ папок, но ТОЛЬКО смс. Папки создаются там же, куда бэкапер сливает входящие (путь указан в txt файле в плагине).
Это Invisible плагин.
Положить оба класса в папку
Plugins/SMSBackup/
в VC и прописать в InvisiblePlugin.txt:
SMSBackupAll|Plugins.SMSBackup.SMSBackupAll

Он будет всегда висеть в фоне, я просто не замудрялся с этим.
Бэкап делает при запуске плагина из VC (появится окошко с процессом, когда скроется - бэкап сделан)
Прикрепленный файл SMSBackup.zip   ( 1.77 килобайт ) Кол-во скачиваний: 322

Автор: dvsdigiman 6.4.2007, 11:19

Valleo, а аналогичное для MV можно?

Автор: Valleo 6.4.2007, 14:14

dvsdigiman,
Для MV лень писать... Там таким способом не отделаешься =)
И вообще привыкайте к новинками =) Скоро от MV отвыкать придется...

Автор: Serg c650 6.4.2007, 17:34

dvsdigiman, Delphi - это среда для разработки прог))

Автор: dvsdigiman 6.4.2007, 18:31

Встречайте первый тест-релиз SMSBackup Viewer:

Минимум интерфейса, минимум функциональности.
Прога только для просмотра *.sms файлов, в т.ч. многостраничных

Минусы:
- только для type01 файлов (т.е. SMS)
- не показывает картинки эмоций, также как и ems-картинки (и не будет в скором времени)
- не показывает дату/время (не могу я пока javaвский Date в делфи прикрутить)
- не малый размер для проги - писал на делфях (VCL) только для простоты и быстроты

Еще раз повторяю - это тест версия. Для одиночных смсок в данной версии выдает два текста - один из заголовка, второй из сегмента

Big thx to Valleo...

p/s/
Valleo, не могу пока перейти на VC из-за отсутствия там файлменеджера...

Serg c650, я в курсе что такое дельфи, я спрашивал в какой версии ты работаешь...
Прикрепленный файл SMSBackup_Viewer_001test.zip   ( 132.13 килобайт ) Кол-во скачиваний: 590

Автор: Ezik 6.4.2007, 20:02

Цитата(dvsdigiman @ 6.4.2007, 22:31) *

Встречайте первый тест-релиз SMSBackup Viewer:
Минимум интерфейса, минимум функциональности.
Прога только для просмотра *.sms файлов, в т.ч. многостраничных

замечательно работает, многостраничные тоже без проблем. жду продолжения wink.gif

Автор: Serg c650 7.4.2007, 2:01

dvsdigiman, уже собственно и не надо, т.к. ты взялся за разработку.

Автор: Valleo 7.4.2007, 4:28

Прикрепил СМС которая не открывается. Это информационное сообщение с номера 502 но думаю читабельность их стоит сделать.
Далее лучше сделать так чтобы индиетичный текст он не отображал, т.е. к примеру:

Цитата
Я уже дома
*****
Я уже дома

Псалось просто "Я уже дома". Думаю сравнение строк на индиетичность сделать легко.
Далее а где поле "получатель"? =)
Когда будет кнопка "Сохранить в txt"? =))))
И еще хотелось бы фичу такую - перетаскиваешь смс из папки прямо в программу и она открывается...

НО главное исправить считывание смс.
Народ не стесняйтесь, выкладывайте смс которые не читаются программой (но читаются в телефоне)
Прикрепленный файл 01_24_08.zip   ( 444 байт ) Кол-во скачиваний: 103

Автор: Ezik 7.4.2007, 6:17

Цитата(Valleo @ 7.4.2007, 8:28) *

Прикрепил СМС которая не открывается. Это информационное сообщение с номера 502 но думаю читабельность их стоит сделать.

у меня сервисные сообщения открывает, но текст отбражается не полностью
http://forum.motofan.ru/index.php?act=Attach&type=post&id=118111

Автор: dvsdigiman 7.4.2007, 9:18

Valleo, это только тест версия, как раз таки для того, чтобы народ выкладывал не открывающиеся смски.
То, что для одиночных отображается два текста, так это я пока для себя сделал. И сохранение в txt пока убрал.

Как я ни смотрел, но номера получателя я так и не смог найти в *.sms - только отправитель и смс-центр - их не сложно достать. Номер получателя я видел только в забэкапленных исходящих, и то с парой отсутствующих цифр.

С информационными сообщениями (именно от оператора) на английском языке я пока разбираюсь, т.к. там пока непонятная кодировка - совсем не Unicode. Хотя входящие смс только с латинскими символами с обычных номеров тоже приходят в unicode (по два байта на символ).

Сейчас делаю упор не на функциональность, а на более подробное изучение структуры файла.
Так что пока не изучу формат в более-менее нормальном виде, всяких штук, типа drag&drop и дерева смс не будет.
Пока скажу только, что прога открывает файлы *.sms, переданные в качестве параметра.

p/s/
Не стесняйтесь выкладывать свои нечитаемые sms-файлы. Кто не хочет разглашения своего номера лучше не меняйте его вручную, а отправляйте файл в личку... Естественно вместе с файликом пишите текст сообщения...

p/p/s Если у кого-нибудь показываются тестовые сообщения типа:
"Different ID in ... block", "Checkpoint 5 not found in ... block", "Different block number in ... block" тоже выкладываем свои файлики...


Добавлено позже (7.4.2007, 14:10):
Вот небольшой апдейт - улучшено считывание смсок...
Прикрепленный файл SMSBackup_Viewer_002test.zip   ( 132.3 килобайт ) Кол-во скачиваний: 182

Автор: Valleo 7.4.2007, 11:29

dvsdigiman,
Пооткрывал кучу СМС - вроде все пашут без проблем...

Автор: dvsdigiman 8.4.2007, 16:32

Valleo, все - да не все...

Открываются только смски с кодировкой Unicode, а сообщения с 7-битной кодировкой - нет - пока разбираюсь...
И с датой пока разбираюсь, т.к. есть различия между хранением времени в java (Date) и в винде (filetime) - а именно различные точки отсчета (начала)...

Valleo, исчо есть проблема - SMSBackup не хочет бэкапить смски размером 4 и более страниц...

Автор: Valleo 9.4.2007, 1:24

Цитата
исчо есть проблема - SMSBackup не хочет бэкапить смски размером 4 и более страниц...

Ну эт уже я не могу исправить увы. Это уже сами классы такие.

Автор: dvsdigiman 9.4.2007, 13:05

Щас попробую сделать прогу "сообщение" -> "*.sms"

Автор: Unlimit 9.4.2007, 14:27

dvsdigiman,
По пводу интерфейса, было бы не плохо если бы ты сделал его как и в P2KTools в АТ режиме, только с левого бока дерево каталогов как писал Valleo.
Прога нужная! Спасибо за то, что ты взялся её делать.

Автор: Serg c650 9.4.2007, 15:13

Unlimit, а файл в АТ режиме не скачаешь(

Автор: Unlimit 9.4.2007, 15:20

Serg c650,
Я не про то чтоб юзать телефон в АТ режиме, а про пользовательский интерфейс. Чтоб не по одной смске открывать, а чтоб список смс был которые содержаться в выбранной папке

Автор: dvsdigiman 9.4.2007, 18:39

Я уже сказал, что пока занимаюсь изучением формата, а не интерфейсом...

Вот еще апдейт:
+ показывает получателя
+ показывает дату/время
+ сохранение в *.txt
- 7-битная кодировка пока не катит...

Уже почти сделал сохранение в *.sms (т.е. можно изменить смску и сохранить)

Прикрепленный файл SMSBackup_Viewer_003test.zip   ( 133 килобайт ) Кол-во скачиваний: 237

Автор: Serg c650 10.4.2007, 5:29

Unlimit, предупреждать надо)

Автор: Valleo 11.4.2007, 7:13

sava82, ёк, меня поражают люди которые даже заголовки тем не читают... А уж прочитать первый топик темы - это МАСТ в первую очередь...

Автор: alamer 15.4.2007, 14:41

Цитата(dvsdigiman @ 10.4.2007, 2:39) *

Я уже сказал, что пока занимаюсь изучением формата, а не интерфейсом...

Вот еще апдейт:
+ показывает получателя
+ показывает дату/время
+ сохранение в *.txt
- 7-битная кодировка пока не катит...

Уже почти сделал сохранение в *.sms (т.е. можно изменить смску и сохранить)


Привет всем программистам ))
А возможно ли выложить исходники или например класс/тип или функцию?
Которая разбирает смс на составные части...
Программка нужная но функций очень мало...
Хотелось бы продолжить развивать проект ))
А заново разбираться в формате смс бекапа как мне кажется глупо (((

Автор: dvsdigiman 16.4.2007, 14:13

alamer, чуть подожди, выложу... правда только описание формата... (исходники не люблю давать)

Автор: alamer 17.4.2007, 5:52

Цитата(dvsdigiman @ 16.4.2007, 23:13) *

alamer, чуть подожди, выложу... правда только описание формата... (исходники не люблю давать)


Главное чтобы не пришлось долго копаться в описании формата...
Остальное уже не столь важно )))
Жду с нетерпением ))
Заранее спасибо

Автор: dvsdigiman 18.4.2007, 17:49

Вот маленькое продолжение SMSBackup Viewer RC1

Добавлено:
+ показывает номер смс-центра
+ показывает папку (inbox,outbox,drafts)
+ сохранение смски не только в *.txt, но и в *.sms (т.е. открыли, поменяли, сохранили...)
Сохраненные *.sms восстанавливаются телефоном без проблем (только inbox смски)

Недоделки:
- присутствуют "Прочитано" и "Заблокировано", но не работают...
- до сих пор не сделал чтение 7-битной кодировки (редкость)
- теряются картинки эмоций и емски при сохранении в *.sms

Один из минусов - это невозможность бэкапа смсок размером 4 и более страниц...
Также если самому сделать такую смску и сохранить бэкапится без проблем...
Эти проблемы - проблемы телефона...

Формат уже более менее изучен методом тыка, т.е. вытащено все, что-нужно и определено, что не нужно... Описание выложу завтра...

Сохранение *.sms не тестил, т.е. попробуйте например outbox смску сохранить как inbox и т.д. и т.п.

Прикрепленный файл SMSBackup_Viewer_rc1.zip   ( 138.78 килобайт ) Кол-во скачиваний: 624

Автор: dvsdigiman 20.4.2007, 22:11

Вот выложу на обозрение дескрипшн, может кто возьмется за дело...

Описание формата *.SMS


Прикрепленный файл sms_file_format.zip   ( 8.51 килобайт ) Кол-во скачиваний: 238

Автор: Valleo 23.4.2007, 17:27

dvsdigiman,
В некоторых смс-ках СМС-центр не пишется полностью.
Т.е. пишется часть номера.

И еще
Плагин SMSBakupAll есть в стандартной поставке, но он не прописан в InvisiblePlugins
Чтобы он заработал пропишите в оном
SMSBackupAll|Plugins.SMSBackup.SMSBackupAll
и все.

Автор: Will_See 1.10.2007, 16:15

у меня такой вопрос... можно ли с помощью эанной програмки в сообщения вставить смс-ку, которая никогда не приходила? а то у меня глюк произошел с смсками, хотел бы восстановить... остались старые MDSM_FAT_FILE mdsm_file MDSM_MSG_BLK_FILE и новые смс, можно ли их совместить? smile.gif сам пытался - ниче не вышло.. ВК пишет сообщение востановлено, а на самом то деле нет .

Автор: Gleb 4.10.2007, 11:59

Прикольно. Спасибо за прогу, хотя Valleo прав, номер сцентра не полный... Ну и есть косяки с некоторыми смс. Но в общем - весьма не плохо. thumbsup.gif

____
Но вот уже думаю что не удобно лазить в "открыть" постоянно. Нужен какой-то боковой эксплорер или чего нить такого...) unsure.gif

Автор: dvsdigiman 8.10.2007, 18:26

2Gleb, лень уже браться за переделку проги (свой L7 потерял)
p/s/ Кстати можно ассоциировать мою прогу с sms расширением и *.sms файлы будут открываться с помощью проги

Кому надо, могу выложить также прогу для просмотра *.sms файлов с телефона Z3, которые автоматически сохраняются в какой-то там папке в телефоне

Автор: Doktor Кот 22.10.2007, 12:05

Проге очень не хватает drag-n-drop! sad.gif может кто нибудь сделает?

Автор: dvsdigiman 22.10.2007, 14:34

По просьбе добавил drag-n-drop и не больше, ну лень пока просто...
Прикрепленный файл SMSBackupViewer_rc101.zip   ( 137.61 килобайт ) Кол-во скачиваний: 664

Прикрепленный файл SMSBackupViewer_rc101.zip   ( 137.61 килобайт ) Кол-во скачиваний: 664

Автор: Авоська 27.10.2007, 7:07

А как сделать чтобы сохранялись ещё и исходящие смс. На своей v3i смотрела, только входящие.Вообще это возможно? Очень нужно!

Автор: dvsdigiman 27.10.2007, 11:05

Исходящие СМС можно сохранять с помощью плагина SMSBackupAll для VirtualCorelet и только вручную. Автоматом они сохраняться не будут

p/s/ http://forum.motofan.ru/index.php?showtopic=104889&st=15#

Автор: Авоська 6.1.2008, 15:36

Цитата(dvsdigiman @ 27.10.2007, 14:05) *

Исходящие СМС можно сохранять с помощью плагина SMSBackupAll для VirtualCorelet и только вручную. Автоматом они сохраняться не будут

p/s/ http://forum.motofan.ru/index.php?showtopic=104889&st=15#



А вообще есть возможность восстановить удаленные исходящие смс или нет? Поставил прогу data doctor recovery- sim card, но как понял она работает только с симкардридером,но уменя его нет и найти не могу.Есть какой нибудь спец драйвер для мотора,чтобы он работал с этой прогой

Автор: zbrd 28.2.2008, 14:26

dvsdigiman

а можешь сделать чтобы твоя прога открывала .sms которые лежат на теле в папке \mobile\msgdb

а то не открывается ;( пишет 'Неизвестная версия файла'


Автор: McLarenXS 28.6.2008, 23:37

dvsdigiman
респект тебе друг! smile.gif если есть мысли, выкладывай smile.gif очень помог

Автор: baat 14.11.2017, 13:27

сорри, что тему поднимаю, но у меня тут попросили найти программу (чтение бэкапов смс), которую я лет десять назад делал...

естественно не нашел... но оказалось проще написать заново, чем найти... минимальный функционал, может кому ещё пригодиться...
Прикрепленный файл p2k_sms.rar   ( 223.19 килобайт ) Кол-во скачиваний: 5

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)