Чтение базы ViberPC (viber.db)

1. Xershi 1486 26.04.18 12:04 Сейчас в теме
Требуется разобраться, как читать сообщения ПК версии вайбера!

Исходные данные:
Платформа - 1С:Предприятие 8.3 (8.3.11.2924) (просто такая стоит, можно любую 8.3.11+)
База: Файловая (для кода и так сойдет)
ОС: Windows 7 (что стоит то и пользуем)

Что имеем:
Сначала нужно было выяснить, где лежит сам файл гугл дал ссылку:
https://habr.com/post/276777/
Самое главное в ней было: %USERPROFILE%\AppData\Roaming\ViberPC\%номер_телефона%\viber­.db
При анализе файла viber.db стало понятно, что он в формате SQLite format 3.
Далее наткнулся на ссылку чтения базы https://infostart.ru/public/103371/
Но судя по комментариям 3 версию не читает.

Сейчас начинаю интеграцию любой дельный совет ускорит процесс.
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Xershi 1486 26.04.18 20:05 Сейчас в теме
Скачал драйвер http://www.ch-werner.de/sqliteodbc/
Не знаю правда запустилось бы подключение без него или нет.
Затем поставил SQLiteStudio
Получил список таблиц:
Calls
ChatInfo
ChatRelation
ChatsMetaData
Contact
DownloadFile
Events
EventsMetaData
LikeRelation
Messages
RecycleBin
Settings
UploadFile
Versions
3. Xershi 1486 26.04.18 20:17 Сейчас в теме
Из интересного Messages
CRE ATE   TABLE Messages (
    EventID            INTEGER            REFERENCES Events (EventID) ON UPDATE CASCADE,
    Type               [UNSIGNED INTEGER] NOT NULL,
    Status             INTEGER            NOT NULL,
    Subject            VARCHAR (500),
    Body               VARCHAR (5000),
    Flag               [UNSIGNED INTEGER] DEFAULT 0,
    PayloadPath        VARCHAR (1000),
    ThumbnailPath      VARCHAR (100),
    StickerID          [UNSIGNED LONG]    DEFAULT 0,
    PttID              VARCHAR (100),
    PttStatus          [UNSIGNED SHORT]   DEFAULT 0,
    Duration           SIGNED             DEFAULT 0,
    PGMessageId        [UNSIGNED LONG]    DEFAULT 0,
    PGIsLiked          INTEGER,
    PGLikeCount        INTEGER,
    Info               VARCHAR (7000),
    AppId              INTEGER            DEFAULT 0,
    ClientFlag         [UNSIGNED INTEGER] DEFAULT 0,
    FollowersLikeCount [UNSIGNED INTEGER] DEFAULT 0,
    PRIMARY KEY (
        EventID
    )
);
Показать

Как видим связи с контактами тут нет.
Идем в таблицу Events
CRE ATE   TABLE Events (
    EventID           INTEGER                   PRIMARY KEY AUTOINCREMENT,
    TimeStamp         LONGINT                   NOT NULL,
    Direction         [UNSIGNED INTEGER]        NOT NULL,
    Type              SMALLINT                  NOT NULL,
    ContactLongitude  [SIGNED LONG]             DEFAULT 0,
    ContactLatitude   [SIGNED LONG]             DEFAULT 0,
    ChatID            INTEGER                   REFERENCES ChatInfo (ChatID) ON UPDATE CASCADE,
    ContactID         INTEGER                   REFERENCES Contact (ContactID) ON UPDATE CASCADE,
    IsSessionLifeTime [UNSIGNED INTEGER] (0, 1) DEFAULT 0,
    Flags             INTEGER                   DEFAULT 0,
    Token             [UNSIGNED LONG]           NOT NULL,
    IsRead            SMALLINT (0, 1)           NOT NULL
                                                DEFAULT 0,
    SortOrder         [UNSIGNED LONG]           NOT NULL
                                                DEFAULT 0,
    Seq               INTEGER                   NOT NULL
                                                DEFAULT 0
);
Показать

Тут уже есть связь с контактами Contact
CRE ATE   TABLE Contact (
    ContactID       INTEGER         PRIMARY KEY AUTOINCREMENT,
    Name            TEXT,
    ABContact       SMALLINT (0, 1) DEFAULT 0
                                    NOT NULL,
    SortName        TEXT,
    Number          TEXT            UNIQUE,
    ViberContact    SMALLINT (0, 1) DEFAULT 0
                                    NOT NULL,
    ClientName      TEXT,
    DownloadID      TEXT,
    EncryptedNumber TEXT            UNIQUE,
    MID             TEXT            UNIQUE,
    VID             TEXT            UNIQUE,
    ContactFlags    LONG            DEFAULT 0
);
Показать

Здесь уже есть заветный номер телефона по которому мы будем фильтровать сообщения.
Осталось только написать запрос.
7. user1082719 05.11.18 12:18 Сейчас в теме
Добрый день,Xershi
Можете подробно написать, какой запрос вы делали, со скринами, чтобы привязать номера телефонов к сообщениям
8. Xershi 1486 05.11.18 14:14 Сейчас в теме
(7) забыл отписать.
Вот готовая публикация:
https://infostart.ru/public/857477/
4. Fox-trot 158 26.04.18 20:28 Сейчас в теме
так а в чем проблема-то?
5. Xershi 1486 26.04.18 20:30 Сейчас в теме
(4) проблемы уже нет. Осталось написать код.
Как оказалось структуру таблиц можно было получить и без менеджера запросом:
sel ect * fr om sqlite_master where type = 'table'

Затем используя модуль интеграции с sql получил таблицу.
6. Xershi 1486 26.04.18 22:10 Сейчас в теме
Все успешно получилось.
Буду готовить публикацию.
9. user1245028 28.06.19 12:51 Сейчас в теме
Давно готовите публикацию. У меня вот примерно такая же проблема. надо прочитать историю своих переписок в вайбере (так вышло что не перенес в виде резервной копии). У меня есть файл viber.db как из него вытащить эту информацию?
10. пользователь 31.01.20 17:03
Сообщение было скрыто модератором.
...
11. user1498585 25.11.20 12:57 Сейчас в теме
Добрый день.
Написал запрос, чтобы получить список всех контактов из чата, но выдает только тех, кто хоть раз писал что-то в чате. Не могу разобраться где в БД хранится информация о всех участниках чата. Может кто сталкивался?
12. Xershi 1486 25.11.20 13:24 Сейчас в теме
(11) откройте таблицы и изучите их содержимое.
13. user1503938 05.12.20 12:43 Сейчас в теме
(11) Приветы) Я тоже создавал приложуху на PHP, она подгружает базу вайбера. Но в таблицах не нашел списка пользователей принадлежащих одному чату. В "Contact" таблице они все есть. У меня тоже контакты из таблицы EventInfo. В ChatRelation модеры прописаны. В ChatInfo количество мемберов в чате. Не нашел решение?
14. пользователь 20.04.23 19:46
Сообщение было скрыто модератором.
...
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот