Чем открыть main db Skype — Как в Скайпе восстановить переписку

История переписки в Скайпе
хранится по-разному, в зависимости от версии программы. Например, в старых изданиях для Windows ее можно найти в отдельном файле. А вот в последних обновлениях на ПК и мобильных устройствах совсем иная. Но это не осложняет для пользователя доступ к своим чатам, наоборот, делает ее гораздо проще.

Подробности

Skype регулярно обновляется с тех пор, как за его поддержку стала отвечать компания Microsoft. По сути, сейчас существует две глобальные по своим различиям версии: под номером 7 (классическая, с привычным видом) и под номером 8 (Modern). Загрузить нужную вам вы можете на нашем сайте. Сейчас мы разберемся, где Скайп хранит историю переписки в каждом из случаев. А в конце статье пойдет речь об ее чистке.

Классическая программа

Тут все довольно просто: информация касательно всех полученных и отправленных сообщений содержится в отдельном файле на компьютере, который содержится в скрытом каталоге (он изначально невидим для пользователя). Проще всего до него добраться так:

  1. Откройте Проводник на компьютере (просто зайдите в любую папку через).
  2. Кликните по полю с адресной строкой, впечатайте туда %appdata%
    и нажмите Enter
    на клавиатуре.
  3. Перейдите к каталогу Skype
    .
  4. Найдите папку, в названии которой содержится имя вашей учетной записи и откройте ее.
  5. Здесь найдите файл main.db
    , он нам и нужен.

Main.db — файл базы данных, куда программа загружает все чаты, привязанные к определенному аккаунту. Открыть его можно через любую таблицу, например, через Excel
. Но это не слишком удобно, поэтому мы предлагаем другой способ. Существует специальная утилита, Log Viewer, которая поможет с просмотром этого файла. Чтобы ей воспользоваться, сделайте следующее:

  1. Загрузите архив по ссылке https://www.nirsoft.net/utils/skypelogview.zip.
  2. Извлеките его в удобное место.
  3. Запустите SkypeLogView.exe
    .
  4. Убедитесь, что указана правильная папка с main.db
    . Если это не так, то укажите верный путь.
  5. Нажмите на OK
    .

Вся информация будет представлена в виде таблице, где отображается время сообщения, его текст, отправитель, получатель и т. д.

Skype Modern

В случае использования последней версии программы вы не найдете такого файла, а даже если и найдете, то он будет неактуальным. Дело в том, что с недавних пор просмотреть историю сообщения в Скайпе выйдет непосредственно из самой программы. Ведь хранится она на серверах Microsoft. Пользователю достаточно зайти в нужный чат и пролистать его до нужного момента, альтернативный вариант — воспользоваться функцией поиска. Аналогичная ситуация и с мобильным приложением.

Про восстановление переписки в Скайп можно почитать тут.

Чистка

В некоторых случаях пользователю необходимо удалить историю чатов в Скайпе. И здесь есть небольшая загводка: сделать это выйдет только в старой программе. Вам нужно перейти к окну параметров. Далее, во вкладке «Чаты и
SMS – Настройки чата» 
нажмите на «Открыть дополнительные…»
.Здесь вы и найдете нужную опцию.

В новом Скайпе пользователь в настоящий момент может только удалять отдельные сообщения.

Вы защитили Skype хорошим паролем. Вы регулярно выходите из своего аккаунта. Вы думаете: «Мою переписку Skype с Васей муж точно не прочтет! Пароль-то он не знает!». Если данную статью прочтете раньше Вы, то поймете, что Вы под ударом все эти полгода, что строчите Васе любовные признания. Если муж… Я не виновата  . Но для этого ему необходим физический доступ к компьютеру, с которого Вы сидели в Skype. Как было обещано в предыдущей статье про SQLite, я расскажу, как можно прочитать свою переписку в Skype из его базы данных SQLite
совершенно открыто. Для этого нам понадобится SQLite Expert. Если его нет на Вашем компьютере, то скачайте его и установите.

Будем считать, что программа у Вас уже установлена и даже открыта. В окне программы на панели инструментов, расположенной в верхней части окна, нажимаем на кнопку с зеленым плюсиком. При наведении мышью на данную кнопку должна появиться подсказка «Open Database», как на рисунке.

После нажатия на нее появится стандартное виндовое окно открытия файла. Чтобы найти файл базы данных Skype, в окне в верхнее поле ввода адреса вставьте следующий адрес: %APPDATA%SkypeSkAcc
, где вместо SkAcc напишите свой логин в скайпе, и нажмите Enter.

Прошу взять на заметку, что SkAcc — это не мой логин в скайпе =) Он кому-то принадлежит, но я его не знаю =).

В этом же окне откроется список файлов указанной Вами папки. Щелкните мышью по файлу main.db
и нажмите кнопку «Открыть».

Как изображено на рисунке выше, в программе SQLite Expert откроется содержимое базы данных Skype. Мы видим список всех ее таблиц. Давайте кратко пробежимся по самым интересным из них.

  • Accounts
    — в этой таблице есть подробная информация об аккаунте. В колонке skypename — логин в Skype, mobile_phone — мобильный телефон, привязанный к Skype, чтобы отправлять SMS, skypeout_balance — баланс Skype.
  • Calls
    — с кем Вы общались голосом по скайпу за данным компьютером
  • Chats
    — список чатов, здесь пишется в общем виде, кто с кем общался. Например, значение в колонке name #vasya/$masha;7330a1337f0667c5 — чат Васи с Вами. Более понятно это записано в колонке activemembers
  • Contacts
    — полный список контактов, логин в колонке skypename
  • Messages
    — самая на сегодня важная для нас таблица, в ней содержатся сообщения
  • Transfers
    — какие файлы мы получали и от кого (колонка partner_handle)

Щелкаем левой кнопкой мыши по таблице Messages. В левой верхней части окна Вы увидите несколько вкладок. Щелкните по вкладке Data.

Если Вы скайпом пользуетесь активно, то в левой части окна программы откроется весьма значительная табличка. Самые важные для нас колонки — это chatname (имя чата, подробности в таблице Chats), author (кто писал сообщение) и body_xml  — текст самого сообщения.

Если Вы хотите увидеть общение между Вами и определенным контактом из Вашего списка, щелкните по вкладке SQL (на картинке выше ее видно), и в открывшееся поле скопируйте следующий запрос:

, только вместо vasya и masha впишите нужные Вам логины, один из которых, скорее всего, Ваш (у нас в примере masha), а второй — Вашего партнера по нежелательному общению (vasya).

Должно получиться примерно так:

Нажимаем F5. Перед Вами должна открыться вся сохраненная история Вашего общения. Если Вы находитесь на темной стороне  , и Ваша задача удалить сообщения, то прежде всего Вы должны определиться, что именно Вы хотите удалить. Если Вам не нравятся отдельные сообщения, то тут дело нехитрое. Если Вам необходимо вычистить вообще всю переписку
с человеком, то тут по-хорошему надо поковыряться не в одной таблице, чтобы удалить следы самого чата. Но в общем в системе всегда есть какие-то чаты, которые полностью пустые, то есть в них нет ни одного сообщения, такие есть и у меня, и это нормально.

Перед тем как начать экзекуцию, скопируйте файл базы данных в ту же папку, назвав его, например, main-bak.db. На случай, если что-то пойдет не так.

Удаление части сообщений

Если нас интересует выборочное удаление сообщений с данным человеком, то подкорректируем наш запрос, добавив в него одну нужную нам колонку:

Нажимаем F5. Это позволит нам увидеть id не нравящихся нам сообщений. Запоминаем их, ниже пишем такой запрос:

delete from Messages where id in (117, 118);

, где 117, 118 — это id не нравящихся нам сообщений. Замените на свои id-шники через запятую. Нажимаем F5, и нет палевных сообщений!

Чистим историю основательно

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

create temp table chatnames(chat_name);

Теперь необходимо удалить также инфу обо всех картинках и видеозвонках из скайпа. Предположим, что из двух нами используемых логинов Вы — masha, стало быть удаляем все о Васе.

Не забудьте, что мы удалили лишь упоминание о картинках, но сами картинки остались по адресу %APPDATA%SkypeMy Skype Received Files
. Позаботьтесь и об их исчезновении.

Также следует помнить про то, что Skype синхронизирует сообщения на клиенте и на сервере. Для того, чтобы как-то ориентироваться в этом, Skype записывает некоторые данные в таблицу Conversations. С теми контактами, с которыми у меня не было никакого общения, значение поля history_sync_state было (null). Судя по всему, если мы боимся собственной тени, тоже выставим такое значение. Это проще всего сделать, щелкнув два раза по строке с нужным контактом (выбираем по колонке identity) и в открывшемся окошке в поле history_sync_state  написав (null) или оставив поле пустым:

Значение соседнего поля history_horizon было 0, после того, как я удалила все сообщения некоторого своего коллеги по скайпу, чтобы протестировать все, о чем я здесь пишу. Когда я оправила первое с точки зрения моего скайпа сообщение, history_horizon заменилось конкретным значением, поле history_sync_state  из (null) стало пустым, позже заполнилось некоторым значением, как у всех контактов, с которыми я общалась и ничего у них не удаляла . Точно тут не могу сказать, видимо, поле history_horizon тоже желательно пометить (null).

И не забудьте удалить файл main-bak.db!

Что Вы говорите?  Сложно?!

Проще всего и правильнее с этим Васей вообще не общаться или общаться на тему погоды, так никакой муж
SQLite Expert вам не страшен
не понадобится.  Еще вариант — вести переписку не в Skype  .

Update

Поигралась с данными таблицы Conversations, обнуляла различные таймштампы, среди них таймштамп последней активности (last_activity_timestamp), таймштамп ящика входящих сообщений (inbox_timestamp), уже упоминавшиеся history_horizon и history_sync_state и еще некоторые. По крайней мере у меня, даже когда я обнулила все данные у конкретного партнера по скайпу, перезатягивания сообщений не произошло после перезагрузки скайпа. Тем не менее, когда я копировала различные версии main.db, с сервера подтягивались недостающие для данной версии сообщения. Возможно, скайп ориентируется еще на что-то.

Подпишитесь на обновления блога!

Благодарю! Вы успешно подписались на новые материалы блога!

Промучавшись в очередной раз над восстановлением побившейся базы, решил набросать краткую инструкцию, как мне удалось вернуть почти всю историю сообщений скайпа. Знатоки sqlite3 приглашаются для написания более лучших способов, чем я нащупал наугад.

Предыстория

Переустановил ОС Win7, установил skype (6-й), привычно скопировал всю папку профиля из старого: %AppData%RoamingSkypeмой_профиль в новое место. Запускаю скайп и вдруг он виснет на автовходе. После повторного запуска вижу приглашение войти. Вхожу — все контакты на месте, а сообщений — практически нигде нет. Только в некоторых групповых чатах сохранились. Вся личная переписка, коей скопилось немало — исчезла. Проделал N(^k) попыток копировать базу данных, удаляя файлы блокировок, is-corrupt и прочие. Скайп ругается, что с базой проблемы, затем просит перезайти — после чего сообщений нет. Погуглив, нашел хабро-посты про экспорт сообщений, угон аккаунтов и т.п. Ага, значит sqlite! Это обнадёживает.

Инструменты и материалы
Вам понадобится:
  • уцелевшая копия базы main.db до того, как её «открыл» новый скайп, начисто затерев данные (или возьмите файл main.corrupt, если копии не оказалось)
  • SQLite Manager
  • sqlite3 command line (оптимально — работать в ней под *nix)
  • Notepad++ или любой другой редактор, который не гробит UTF-8 файлы.
  • *nix shell (какой-нибудь сервер с linux/ubuntu/…, т.к. самый важный последний шаг под виндоуз может не сработать)

Анализируем базу

Информация для админов, программистов и опытных пользователей
1. Качаем SQLite Manager (спасибо за ссылку, ). 2. Открываем файл main.db (около 150 мегабайт у меня). 3. База данных — Проверка целостности — Полная проверка. 4. Выполняю указанную команду, получаю много страшных буков: Кстати, в других утилитах при попытке просмотреть таблицы сообщений, часто получал такое: «the database disk image is malformed
«.

Поскольку я не знаток sqlite и не горю желанием изучать каждую ошибку, поступаем просто.

Лечение

Гуглим как дампить базы sqlite, получается примерно так: 1. Скачать sqlite3 command line для Windows или «apt-get install sqlite3» для *nix. Я сначала экспериментировал под виндой, но впоследствии пришлось перейти в консоль Linux, т.к. виндовая sqlite3 не совсем хорошо себя показала. 2. Под Windows копируем sqlite3.exe в папку с копией базы (архивной с предыдущей винды, которую ещё не испортил скайп). Затем запускаем cmd (Пуск > выполнить). Под линуксом — просто выполняем:cd путь-к-папке-с-базой-и-sqlite3.exe
sqlite3 main.db .dump>>myDumpSQLite.sql
(Именно «main.db[пробел].dump, не перепутайте)
3. Открываем файл myDumpSQLite.sql в нормальном текстовом редакторе, например Notepad++. В самом конце файла у меня стояла команда:ROLLBACK;
Кто знаком с SQL, знает зачем нужно удалить эту последнюю строку в файле и вместо неё написать:COMMIT;
(Можно и вовсе отказаться от транзакции, но тогда будет очень долгий импорт данных в новую базу.)
4. Создаём новую, чистую базу из файла myDumpSQLite.sql (рекомендуется под Linux).sqlite3 main-recovered.db При этом могут возникать сообщения об ошибках

У меня это были примерно такие:Error: near line 329619: PRIMARY KEY must be unique
Error: near line 329620: PRIMARY KEY must be unique
Error: near line 329621: PRIMARY KEY must be unique
Error: near line 329622: PRIMARY KEY must be unique
... ещё пару десятков таких сообщений

Благодаря тому, что мы сделали COMMIT в конце файла — ошибки будут проигнорированы. Теоретически, что-то потеряется (какие-то одиночные сообщения, может даже какой-то чат пропадёт). Но это ничто по сравнению с потерей всей базы, которую предлагает Microsoft.

Полученный файл main-recovered.db должен весить примерно столько же, сколько и sql-файл (у меня получилось 123Мб). Если пропустить шаг 3 или что-то пойдёт не так — получите пустой бесполезный файл.

Windows кака. © КЭП
У меня получилось только под Linux, так что если под Windows не работает, а linux вам не знаком — ищите нужных друзей). Виндовая sqlite3 выдала:

Error: incomplete SQL: INSERT INTO „Contacts“ VALUES(951…….

5. Копируем полученный файл в папку %AppData%RoamingSkypeмой_профиль под именем main.db, заменяя поломавшуюся (Skype должен быть выключен). 6. Запускаем Skype. Вводим логин и пароль (у меня автоматом зашло). 7. PROFIT!!! Все сообщения вернулись!

Знаете лучший способ? — приглашаю в комментарии.
Возможно есть более грамотный способ восстановления БД. Я даже нашел Кое-какую жадную утилиту, но она мне не помогла (может надо было денег дать?). Ещё пробовал SkypeHistoryReader, Kudos Chat Search, sqlite maestro и всяко-разно.
Рейтинг автора
5
Подборку подготовил
Андрей Ульянов
Наш эксперт
Написано статей
168
Ссылка на основную публикацию
Похожие публикации