
Итак, что у нас есть
- Браузер Opera. Хранит он все запомненные пароли от сайтов в файле wand.dat в открытом виде. Правда в открытом только в том случае, если не стоит мастер-пароль, который конечно же никто не ставит. Что заставило разработчиков сохранять пароли в незашифрованном виде, если нет мастер-пароля? Неизвестно. Логичней было бы форсированно не сохранять пароли вообще, пока пользователь-таки не установит мастер-пароль.
- Direct Connect. «Частично централизованная файлообменная (P2P) сеть». Пользователь расшаривает папки/файлы на своём компьютере, заходит на хабы, качает/раздаёт. Поиск работает в пределах подключенных хабов. Уникальность файлов определяется через Tiger Tree Hashing. Люди, которым нечего расшаривать (на многие хабы не пускают без минимальной шары в 10-15 ГБ), расшаривают Program Files, Windows, ну и иже с ними.
- /dev/hands. Ну а без этого никак.
В чём состояла задумка: написать бота, сидящего на хабах и регулярно ищущего и качающего wand.dat. Писал я программу на любимом Delphi.
Собственно, алгоритм работы бота:
- Бот сканирует папку для сохранённых файлов, перебирает файлы по заданному паттерну имён, сохраняет TTH файлов (модуль для снятия TTH для Delphi написан MetalFan’ом и взят отсюда) в памяти. Заодно создаётся batch-скрипт для обработки всех существующих wand’ов за один двойной клик. В качестве парсера используется, например, вот это.
- Открывается заранее приготовленный список хабов в формате «одна строчка — один хаб». На каждый хаб создаётся отдельный тред.
- Откуда брать список хабов? Качается bz2-файл с хабами, распаковывается, парсится чем угодно (внизу пример парсера на php).
- Заходим на хаб. Ищем wand.dat размером не меньше килобайта. Повторяем поиск каждые 20-ь минут.
- Качаем каждый найденный wand.dat, если такого TTH ещё нет во внутренней базе программы. Сохраняем в папку к остальным. Добавляем TTH нового файла к своему списку, обновляем batch-скрипт для обработки накаченного.
- Когда надоест качать, выключаем бота, запускаем скрипт, Получаем один конечный файл со всеми паролями
Ну а парсер списка хабов на php вот:
<?php
header('Content-type: text/plain');
$f_name='./hublist.xml';
$f =fopen($f_name,'r');
$buf=fread($f,filesize($f_name));
fclose($f);
preg_match_all('|address="dchub://([a-z0-9:.-]+?)"|i',$buf,$a);#да-да, знаю, паттерн не самый прямой
$f =fopen('./hublist.txt','w');
for ($i=0;$i<count($a[1]);$i++){fwrite($f,$a[1][$i]."\r\n");}
fclose($f);
echo 'done '.count($a[1]);
?>
Паттерн при надобности можно поправить, например, на исключительно .ru-хабы.
Тест
Тестировал программу с 25 по 28 апреля 2010. За это время накачано 232 wand.dat. Самый жирный занимал 129 Килобайт. Что нашёл в этих вандах? Я их даже не открывал, ибо это уже нехорошо. Да и не пароли от вконтактиков были целью. Целью написания бота была проверка на трудность задачи автоматизации утаскивания паролей, лежащих на видном месте без присмотра.Что накаченным богатством делать
А что там в этих вандах может быть?- Во-первых, список валидных почтовых адресов. Можно использовать для спама. (На самом деле затраты их добычи таким способом не окупаются совершенно, легче использовать встроенный поиск MailAgent’а).
- Пароли от всяких Контактов/Одноклассников/Фейсбуков — ценности для хакеров никакой.
- Доступ к ftp сайтов, это уже опаснее — от надписи «Haxored by xakep Vasya666» до эксплойта на главной хакера отделяет лишь выдумка.
- Список почтовых аккаунтов с паролями. По-моему, это самое опасное. Почту, как всем известно, с серверов никто не удаляет.
- Пароли от аккаунтов у вашего провайдера. Правда за такое вас однозначно накажет провайдер. Жесто-о-око накажет.