Проект №02. Читаем из Cookies данные. Часть 1.

Сегодня я бы хотел начать писать программу, которая смогла бы читать файл с Cookies и вытаскивать оттуда информацию. Начну параллельно с ведением этой статьи. Итак поехали:
Цель.
Программа, которая показывала бы логин-пароль от социальной сети Vkontakte.ru из Cookies в браузерах Mozilla Firefox, Internet Explorer последних версий. Программа должна работать на операционных системах Windows XP, Vista.
PS: Пароль находится в зашифрованном виде, в md5 хеше.
План разработки.
1. Определения нахождения файла с Cookies в браузере Mozilla Firefox, Internet Explorer. Для этого нужно исследовать работу этих браузеров, определить местонахождения сохранения файла(ов) Cookies в зависимости от операционной системы Windows XP, Vista. После этого нужно узнать в каком файле(файлах) сохранён логин-пароль и сохранить пути до этих файлов. Нужно сделать проверки на установленные браузеры, что бы не искать файлы, там где их нет. А по возможности, узнать настройки браузера, где находится папка с куками.
2. Вытащить логин-пароль из файлов Cookies. С помощью регулярного выражения вытащить логин-пароль из полученных файлов.
3. Оформить дизайн программы.
Разработка.
1. Находим местоположение файла с Cookies.
Начну с Firefox. На сайте WikiMozilla я нашёл документацию О профилях Mozilla Firefox, в которой и был путь к файлу с Cookies(cookies.sqlite).
Windows XP C:\Documents and Settings\<Windows login>\Application Data\Mozilla\Firefox\Profiles\<Profile name>\ Windows Vista C:\Users\<Windows login>\AppData\Roaming\Mozilla\Firefox\Profiles\<Profile name>\
Cookies в Internet Explorer:
Windows XP C:\Documents and Settings\<Windows login>\Cookies\ Windows Vista C:\Users\<Windows login>\AppData\Roaming\Microsoft\Windows\Cookies\
Теперь надо найти все константы этих путей.
Сначала я стал подходить с другого бока. Увидел, что нужно заменить только переменную “Windows login” на Имя пользователя.
String User = System.Environment.UserName;
Дальше надо было определить какая операционная система. Для этого я получил полное название, в которой не указывалось “имени” операционной системы. Поэтому мне пришлось немного изобрести велосипед.
String OS = System.Environment.OSVersion.ToString(); String[] OSVersion = OS.Split(new char[] { '.', ' ' }); //Цифра в OSVersion[3]: 6 - Vista, 5 - XP;
Но потом я нашёл более интересное решение(Работа со специальными папками). В .Net есть переменная, содержащая путь к Cookies Internet Explorer, независимо от версии OS:
Environment.GetFolderPath(Environment.SpecialFolder.Cookies)
А для Mozilla Firefox можно определить путь до папки Application Data.
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
В итоге всё стало намного проще, красивее и динамичнее что ли, так как тут определяется более точный путь для каждой конкретной OS и её настройкам.
Так, пути до папки с Cookies определили, теперь надо определить конкретный путь до самого файла с Cookies.
В Mozilla Firefox это файл cookies.sqlite, но он находится в папке с Профилем к каждому пользователю, а имя папки генерируется “рандомно”. Дабы облегчить себе ненамного задачу, я предположил, что в операционной системе будет только один профиль. Что бы найти имя папки, я просканировал каталог с профилем и взял первую папку(профиль), который там был:
String[] pathFirefoxDir = Directory.GetFileSystemEntries(pathFirefox); pathFirefox = pathFirefoxDir[0] + @"\cookies.sqlite";
Ну и собственно, путь до файла с “куками” был получен.
Теперь о Internet Explorer. Куки хранятся к каждому серверу в отдельном файле, и порой к одному серверу бывает несколько файлов(user@vkontakte[n].txt), но не во всех находится нужная информация. Дабы упростить, ненамного, я брал опять, только первый попавшийся. Для этого сканируем папку, потом в цикле проверяем наличие имени сервера vkontakte, после того как файл найден записывается путь к файлу и цикл заканчивается.
String[] pathIEDir = Directory.GetFileSystemEntries(pathIE); String[] filepathIECookies; for (int i = 0; i < pathIEDir.Length; i++) { filepathIECookies = pathIEDir[i].Split(new char[] { '@', '[' }); if (filepathIECookies.Length > 1 && filepathIECookies[1].Equals("vkontakte")) { pathIE = pathIEDir[i]; break; } }
Ну и теперь для Internet Explorer получен файл.
В следующей части я расскажу, о том как вытащить данные и профильтровать.
Что можно ещё почитать:

AnS
В чем смысл статьи вообще, расказать где находится куки у ff и IE дак это вроде не проблема, а вот как их вытащить и использовать уже другая история!
Алексей(admin)
В принципе и вытащить их не такая уж проблема!
Смысл статьи - с помощью языка C# найти местоположении этих файлов. Можно конечно просто прописать дефолтный путь к этой папке, но! это может не сработать на компьютерах, которые настроены по особенному.
рома
как найти куки,я не могу!! у меня vista там где вы указали их нет(( напишите на мыло gunba913@rambler.ru
Алексей(admin)
рома, Хм… не знаю, поидее там должны быть.
Kiryaha
Кто вкурсе где куки от opera AC?
Саша
да кстати у меня тоже виста и тоже не могу найти где тут находятся куки….подскажите??
Сергей
Саша каким браузером пользуешься? Если firefox то там очень просто найти кукис (в настройках самого браузера, независимо от операционной системы, легко можно посмотреть кукис)
felix
Да кстати, файер фокс в этом деле рулит, куки там даж ребёнок найдёт) Оперой не пользуюсь, подсказать тоже не могу.
Володя
Большое спасибо автору статьи.
Всегда приятно, когда по-человечески описаны вещи, которые для профи уже аксиомы, а для новичка - недели тупняка) Спасибо.
cat
Opera хранит куки в:
C:\Documents and Settings\ИМЯ ПОЛЬЗОВАТЕЛЯ\Application Data\ Opera\Opera\profile\cookies
Rosya
Согласен, тупое прописывание пути может не сработать, надо использовать переменные окружения
LeGioN
Люди а что делать если она не ишет?
Логин не найден
и пороль тоже самое что делаеть?
MNML
Народ,помогите плиз!Мне нужно зайти на страницу пользователя, который с моего браузера заходил вконтакт, но перед входом он ставил галочку “чужой компьютер”,меня интересует,куда будут сохраняться пароль и мыло?(в IE)
Алексей(admin)
MNML, это не возможно.
Алексей(admin)
LeGioN, ничего не делать. Я же написал, что программа больше не работает.
MNML
а если пользователь не ставил галочку “чужой компьютер”,а просто вышел с страницы,то мыло и пароль так же не реально узнать?
Алексей(admin)
MNML, сейчас в Вконтакте не пишет пароль и логин в Куки, т.ч. нет.
Shamil
Я вот нашел файл coocies.sqlite что с ним нужно дальше сделать, чтобы вытащить из него куки?
marfa
А как найти сохраненный пароль для аккаунта? я забыла пароль. Я пользуюсь своим ящиком, но захожу туда с помощью автосохранения пароля.
Очень была бы Вам благодарна за помощь.
JIaIvIeR
Всем привет!!! кто знает как от Mozilla Firefox открыть cookies.sqlite
Роман
Проше всего ставить кейлогер на подобии Ardamax_Kelogger я вот имел глупость его удалить вмести с системой а поставить забыл.Теперь думал пароль из куки сташить но не тут то было((