Пароли Ucoz
С тех пор, как занимаюсь написанием собственного движка (пока для английской версии), подумываю о переносе на него данных с текущего uWeb CMS (по сути тот же uCoz). Само собой, что перенос данных вручную при наличии нескольких сотен материалов — процесс крайне трудоёмкий. Поэтому хотелось бы его автоматизировать.
Как известно, в системах uCoz/uWeb есть возможность создания файла бекапа, а также последующего восстановления данных из него. Кроме всего прочего, в архиве бекапа находятся и текстовые файлы, содержащие в себе значения полей базы данных uCoz. Как правило, это значения из таблиц материалов, комментариев, пользователей и т. д. Каждая строка в таком файле бекапа отвечает за определенный материал; значения параметров разбиты разделителем «|». Так что, предварительно определив последовательность полей, не представляет большого труда написать скрипт, импортирующий в ту же БД MySQL данные из таких текстовых файлов.
Однако, есть одно «но» и связано оно с бекапом таблицы пользователей. Пароли в базах данных, как вправило, хранятся в зашифрованном виде, и БД uCoz — не исключение. Таким образом, даже имея на руках таблицу БД, обычно невозможно определить, у какого пользователя какой пароль — в БД хранится только его хэш. Однако, это не значит, что пользователей нельзя экспортировать с паролями — вполне можно импортировать в БД эти хэши, а затем, как это обычно и делается, при входе пользователя сравнивать хэш введённого им пароля и хэш в БД. Для этого нужно только одно — знать алгоритм хэширования.
В бекапе пользователей uCoz третьим значением идёт строка, например, вот такая: $1$SIq1$Z7ujk8SsSwv/TCxmI6NzT0. Именно это значение и является хэшем пароля пользователя. Далее, как уже было сказано, встаёт вопрос: что это за хэш и как он получен? Я начал рыться в сети и обнаружил несколько страниц, где рассказывалось о скриптах (PHP), позволяющих импортировать бекап пользователей uCoz в БД движков Wordpress, Joomla, Drupal. Таким образом, мне стало очевидно, что алгоритм шифрования известен, по крайней мере разработчикам этих плагинов-скриптов.