Чтение Cookies у Mozilla Firefox, Internet Explorer. | Блог программиста C# .Net, C++

vkontakte-cookies-9976218

Сегодня я бы хотел начать писать программу, которая смогла бы читать файл с 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\\Application Data\Mozilla\Firefox\Profiles\\
Windows Vista
C:\Users\\AppData\Roaming\Mozilla\Firefox\Profiles\\

Cookies в Internet Explorer:

Windows XP
C:\Documents and Settings\\Cookies\
Windows Vista
C:\Users\\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 получен файл.

В следующей части я расскажу, о том как вытащить данные и профильтровать.

google_bmarks-8590562 bobrdobr-8440502 delicious-2180053 technorati-3477021 linkstore-6829647 news2-ru-6309114 rumark-5702076 memori-9618540 moemesto-8114949 Что можно ещё почитать:

Запись опубликована в рубрике Без рубрики. Добавьте в закладки постоянную ссылку.