Audiophile's Blog
Логин:Пароль:


Забыл пароль | Регистрация (убрать всю рекламу)
О сайте | Ликбез | Словарь | Audiophile's Testroom | Поддержать | Контакты
Разделы
Поиск по сайту
Популярное
Персональная настройка
Настройка звука онлайн (foobar2000, драйвера, Windows), создание персональных сборок foobar2000.

Контакты

Случайный опрос
Какой формат аудио вы предпочитаете для домашнего прослушивания?
Всего ответов: 2939
Полезный софт
Opera QIP 2010 Download Master µTorrent
Ace Utilities AIDA64 SpeedFan 7-Zip
ESET NOD32 FileZilla Media Player Classic Home Cinema Paint.NET
Sony Sound Forge VirtualDub Unlocker Punto Switcher
Похожие проекты
Сейчас на сайте
Онлайн всего: 14
Гостей: 14
Пользователей: 0
»

Перенос пользователей на новый движок. Как uCoz/uWeb шифрует пароли?


02 Февраля 2015, 22:05

С тех пор, как занимаюсь написанием собственного движка (пока для английской версии), подумываю о переносе на него данных с текущего uWeb CMS (по сути тот же uCoz). Само собой, что перенос данных вручную при наличии нескольких сотен материалов — процесс крайне трудоёмкий. Поэтому хотелось бы его автоматизировать.

Как известно, в системах uCoz/uWeb есть возможность создания файла бекапа, а также последующего восстановления данных из него. Кроме всего прочего, в архиве бекапа находятся и текстовые файлы, содержащие в себе значения полей базы данных uCoz. Как правило, это значения из таблиц материалов, комментариев, пользователей и т. д. Каждая строка в таком файле бекапа отвечает за определенный материал; значения параметров разбиты разделителем «|». Так что, предварительно определив последовательность полей, не представляет большого труда написать скрипт, импортирующий в ту же БД MySQL данные из таких текстовых файлов.

Однако, есть одно «но» и связано оно с бекапом таблицы пользователей. Пароли в базах данных, как вправило, хранятся в зашифрованном виде, и БД uCoz — не исключение. Таким образом, даже имея на руках таблицу БД, обычно невозможно определить, у какого пользователя какой пароль — в БД хранится только его хэш. Однако, это не значит, что пользователей нельзя экспортировать с паролями — вполне можно импортировать в БД эти хэши, а затем, как это обычно и делается, при входе пользователя сравнивать хэш введённого им пароля и хэш в БД. Для этого нужно только одно — знать алгоритм хэширования.

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

Однако, проанализировав такие скрипты, я не смог сразу определить алгоритм хэширования. Тогда я решил обратиться в поддержку uWeb — раз алгоритм уже фактически доступен, они вполне могут мне его описать. После первых вопросов последовал ответ:

«Расшифровать пароль не представляется возможным и по понятным причинам нам также запрещено вдаваться в подробности обсуждения алгоритма шифрования паролей».

Однако, когда я объяснил, что хочу не расшифровать пароли, а просто экспортировать пользователей на другой проект, консультант взялся мне помочь, пообещав проконсультироваться у коллег.

И тут на одном из форумов я случайно наткнулся на расшифровку этой самой строки. Как оказалось, она представляет собой стандартный хэш Unix, получаемый в PHP функцией crypt(), а $1$*$ (* — любые символы) — это соль.

Я решил проверить данную теорию. Для этого я попробовал хешировать свой пароль, взяв соль из хеша uCoz, что выглядело примерно так: crypt('my_pass', '$1$SIq1$');, после чего сравнил результат с хэшем uCoz. И — бинго! —точное совпадение.

Но забавней всего, что вскоре последовал ответ техподдежки uWeb:

«Увы, такой возможности нет и быть не может».

Что ж, теперь им осталось только заблокировать мой аккаунт за разглашение конфиденциальной информации осуществление невозможного. И тем самым ускорить переезд на новый движок, на котором, как вы уже поняли, не надо будет заново регистрироваться :)


Информация от спонсора

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

 
   
Просмотров: 1297 | Автор: | Добавил: Audiophile () | Рейтинг: 4.0/5, голосов: 4
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Авторские статьи
Сообщество
Последнее на форуме
Кодеки
TAK FLAC APE WV
MPC OGG AAC/ALAC MP3
WMA TTA OFR LA
Теги
Follow me
Twitter YouTube
Google+ Facebook
Полезные ссылки
Copyright Taras Kovrijenko © 2009–2016