Требуется разобраться, как читать сообщения ПК версии вайбера!
Исходные данные:
Платформа - 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 версию не читает.
Сейчас начинаю интеграцию любой дельный совет ускорит процесс.
Скачал драйвер http://www.ch-werner.de/sqliteodbc/ Не знаю правда запустилось бы подключение без него или нет.
Затем поставил SQLiteStudio Получил список таблиц:
Calls
ChatInfo
ChatRelation
ChatsMetaData
Contact
DownloadFile
Events
EventsMetaData
LikeRelation
Messages
RecycleBin
Settings
UploadFile
Versions
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
);
Показать
Здесь уже есть заветный номер телефона по которому мы будем фильтровать сообщения.
Осталось только написать запрос.
Давно готовите публикацию. У меня вот примерно такая же проблема. надо прочитать историю своих переписок в вайбере (так вышло что не перенес в виде резервной копии). У меня есть файл viber.db как из него вытащить эту информацию?
Добрый день.
Написал запрос, чтобы получить список всех контактов из чата, но выдает только тех, кто хоть раз писал что-то в чате. Не могу разобраться где в БД хранится информация о всех участниках чата. Может кто сталкивался?
(11) Приветы) Я тоже создавал приложуху на PHP, она подгружает базу вайбера. Но в таблицах не нашел списка пользователей принадлежащих одному чату. В "Contact" таблице они все есть. У меня тоже контакты из таблицы EventInfo. В ChatRelation модеры прописаны. В ChatInfo количество мемберов в чате. Не нашел решение?