Как восстановить личные сообщения в IPBoard из резервной копии базы

Возникла на днях следующая ситуация. На одном довольно крупном форуме, работающем на движке IPBoard, через взломанное мыло пользователя был получен доступ на форум. Всё бы ничего, но на форуме работает аукцион, и злоумышленник ухитрился «продать» несколько лотов и получить за них деньги. После того как его запалили, быстренько удалил переписку в личке и пропал.

Собственно это не такая уж и большая проблема, поскольку сообщения все равно будут храниться у того с кем ты переписывался, до того пока он их сам не удалит. Но хотелось бы увидеть переписку со всеми жертвами обмана в одном месте.

Приступим. Нам потребуется резервная копия базы и замечательная программа dbForge Studio for MySQL.

1. Создаем пустую базу и восстанавливаем туда резервную копию.

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

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

SELECT imtum.*
	FROM ibf_message_topic_user_map imtum
	WHERE imtum.map_topic_id IN (SELECT	imtum1.map_topic_id
	                               FROM ibf_message_topic_user_map imtum1
	                               WHERE imtum1.map_user_id = :user_id)
SELECT imt.* FROM ibf_message_topics imt
	JOIN ibf_message_topic_user_map imtum
		ON imt.mt_id = imtum.map_topic_id
	WHERE imtum.map_user_id = :user_id
SELECT imp.* FROM ibf_message_posts imp
	JOIN ibf_message_topics imt
		ON imt.mt_id = imp.msg_topic_id
	JOIN ibf_message_topic_user_map imtum
		ON imtum.map_topic_id = imp.msg_topic_id
	WHERE imtum.map_user_id = :user_id

3. После выполнения каждого запроса кликаем на полученной таблице правой кнопкой, из контекстного меню выбираем «Экспорт данных». Формат экспорта SQL =>кнопка «Далее» => тип выражения MEGRE => кнопка «Экспорт».

4. Затем полученные SQL-файлы нужно выполнить на рабочей базе данных, в том же порядке, в котором выполняли запросы. Сделать это можно через PHPMyAdmin, либо с помощью той же dbForge Studio for MySQL, которая позволяет подключаться к базе данных через SSH.