Разбор / конвертирование файлов резервных копий .ib файлов Nokia «Smart Feature OS»? - PullRequest
0 голосов
/ 02 января 2019

Я уже написал немного об этом в https://superuser.com/questions/1389657/backup-access-sms-on-nokia-3310-3g-2017-from-linux-pc;в основном я пытаюсь создать резервную копию SMS-сообщений на Nokia 3310 3G на ПК с Ubuntu 18.04;обратите внимание, что аппаратная система на кристалле и ОС отличаются по версии для Nokia 3310 (2017) :

Система на кристалле / Операционная система:

  • MediaTek MT6260 / Nokia Series 30+ (2G)
  • Spreadtrum SC7701B / интеллектуальная ОС с поддержкой Java (3G)
  • Spreadtrum SC9820A / ОС Yun (4G, CMCC)

У меня есть 3G, поэтому у меня есть «Smart Feature OS», которая, по-видимому, является версией KaiOS ( Есть ли какая-либо разница между KaiOS и «Smart Feature OS»?: KaiOS ), который, по-видимому, ( KaiOS - операционная система для смартфона | Новости хакеров ) является форком ОС Firefox.

Когда вы нажимаете Меню> Хранилище> Создать резервную копию (* 1026)* на этом телефоне он создает папку с файлами в ней, которая называется так:

$ tree All-backup_01-01-2019_20-18-54
All-backup_01-01-2019_20-18-54
├── ibphone_head.in
├── phonebook.ib
└── sms.ib

Я никогда раньше не слышал о .ib файлах, и я надеялся, что кто-то здесь знает, что это такое.Беглый взгляд предлагает Расширение файла IB - Открыть файл .IB (База данных InterBase) , однако я попытался использовать these .ib файлы с http://fbexport.sourceforge.net/fbexport.php «Инструментом для экспорта и импорта данных с базами данных Firebird и InterBase», и я получаю:

Engine Code    : 335544323
Engine Message :
file ./All-backup_01-01-2019_20-18-54/phonebook.ib is not a valid database

Так что это не так.

Вот шестнадцатеричный код ibphone_head.in - похоже, здесь нет личной идентификационной информации:

$ hexdump -C All-backup_01-01-2019_20-18-54/ibphone_head.in 
00000000  00 00 00 00 41 00 6c 00  6c 00 2d 00 62 00 61 00  |....A.l.l.-.b.a.|
00000010  63 00 6b 00 75 00 70 00  5f 00 30 00 31 00 2d 00  |c.k.u.p._.0.1.-.|
00000020  30 00 31 00 2d 00 32 00  30 00 31 00 39 00 5f 00  |0.1.-.2.0.1.9._.|
00000030  32 00 30 00 2d 00 31 00  38 00 2d 00 35 00 34 00  |2.0.-.1.8.-.5.4.|
00000040  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000100  00 00 00 00 45 00 3a 00  5c 00 42 00 61 00 63 00  |....E.:.\.B.a.c.|
00000110  6b 00 75 00 70 00 73 00  5c 00 41 00 6c 00 6c 00  |k.u.p.s.\.A.l.l.|
00000120  2d 00 62 00 61 00 63 00  6b 00 75 00 70 00 5f 00  |-.b.a.c.k.u.p._.|
00000130  30 00 31 00 2d 00 30 00  31 00 2d 00 32 00 30 00  |0.1.-.0.1.-.2.0.|
00000140  31 00 39 00 5f 00 32 00  30 00 2d 00 31 00 38 00  |1.9._.2.0.-.1.8.|
00000150  2d 00 35 00 34 00 00 00  00 00 00 00 00 00 00 00  |-.5.4...........|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000200  00 00 00 00 30 30 30 31  2e 30 30 30 30 33 00 00  |....0001.00003..|
00000210  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000230  00 00 00 00 00 00 6d 6d  69 6b 65 79 62 61 63 6b  |......mmikeyback|
00000240  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000250  00 00 00 00 00 00 03 00  00 00 00 00 b0 cd 09 00  |................|
00000260  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000270  00 00 00 00 00 00 00 00  f3 dd 00 00 7e 2f 00 00  |............~/..|
00000280  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000002c4

Итак, кажется, что строки кодируются 2 байтами, "широкий символ";и, по большей части, ibphone_head.in, кажется, просто кодирует имя содержащей его / родительской папки, All-backup_01-01-2019_20-18-54.

Вот шестнадцатеричная запись телефонной книги, где я анонимизировал имена для AAAAAAAAA и BBB:

$ hexdump -C -n 1900 All-backup_01-01-2019_20-18-54/phonebook.ib
00000000  70 00 68 00 6f 00 6e 00  65 00 62 00 6f 00 6f 00  |p.h.o.n.e.b.o.o.|
00000010  6b 00 2e 00 69 00 62 00  00 00 00 00 00 00 00 00  |k...i.b.........|
00000020  00 00 00 00 01 00 00 00  30 f8 04 00 62 01 00 00  |........0...b...|
00000030  62 01 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |b...............|
00000040  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000240  00 00 00 00 98 03 00 00  01 00 00 00 ff ff ff ff  |................|
00000250  ff ff ff ff 01 00 01 00  00 00 00 00 00 00 00 00  |................|
00000260  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000360  d9 d4 37 46 00 00 00 00  00 00 01 02 00 00 04 01  |..7F............|
00000370  07 12 80 88 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000380  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000003b0  09 00 41 00 41 00 41 00  41 00 41 00 41 00 41 00  |..A.A.A.A.A.A.A.|
000003c0  41 00 41 00 00 00 00 00  00 00 00 00 00 00 00 00  |A.A.............|
000003d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000005e0  00 00 00 00 00 00 00 00  00 00 00 00 ff ff ff ff  |................|
000005f0  ff ff ff ff 98 03 00 00  01 00 00 00 ff ff ff ff  |................|
00000600  ff ff ff ff 04 00 01 00  00 00 00 00 00 00 00 00  |................|
00000610  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000710  d9 d4 37 46 00 00 00 00  00 00 01 02 00 00 06 11  |..7F............|
00000720  83 29 23 13 58 f9 00 00  00 00 00 00 00 00 00 00  |.)#.X...........|
00000730  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000760  03 00 42 00 42 00 42 00  00 00 00 00              |..B.B.B.....|
0000076c

Здесь кажется, что d9 d4 37 46 является разделителем для записей, и записи кажутся 0x3b0 = 944 байта друг от друга;не могу сказать, где хранится фактический номер телефона.

Я не буду вставлять содержимое hexdump sms.ib, потому что боюсь раскрыть больше личной информации, чем намереваюсь.

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

1 Ответ

0 голосов
/ 06 января 2019

phonebook.ib является проприетарным форматом файла.Я провел некоторый анализ и дошел до того, что смог извлечь из него имена и номера телефонов.

  • Заголовок имеет размер 580 байт и не содержит ничего интересного.
  • Похоже, что записи начинаются с длины записи, закодированной в виде 3 4-битных десятичных кусочков, за которыми следует другая цифра (возможно, номер версии?).

В моем примере файла все записи были 940 байтов и, следовательно, имели94 03 как их первые два байта.Другие поля, которые я идентифицировал в разных смещениях:

  • запись + 0x12a [1 байт]: количество байтов, представляющих номер телефона.
  • запись + 0x12b [1 байт]: выглядит какдвузначный десятичный кодированный флаг.Если установлен высокий полубайт (например, 10), тогда номер телефона начинается с +.
  • entry + 0x12c: номер телефона в десятичной кодировке.Например, 123456 будет выглядеть как 21 43 65.Специальные цифры:
    • a равно *
    • b равно #
    • f игнорируется (рассматривается как последняя цифра, когда числоцифры не четные).
  • запись + 0x16c [1 байт]: длина имени.
  • запись + 0x16e: имя в UTF-16 (т.е. 2 байта на символ).

В качестве примера взят ваш фрагмент:

  • 0x36e - длина телефона, 4 байта.
  • 0x36f - дополнительный флаг, высокий клевis 0, поэтому префикс + отсутствует.
  • 0x370 - это место, где начинается номер телефона, 07 12 80 88 переводится в 70210888.

Можно найти простой анализатор ссылокв моем репо: https://github.com/yossigo/phonebook_ib_export

...