В предыдущей части я начал писать программу, которая бы смогла читать Cookies от браузеров Mozilla Firefox и Internet Explorer. Уже успел определить пути до самих файлов с Cookies, теперь их нужно прочитать и вытащить нужную информацию.
2. Вытащить логин-пароль из файлов Cookies.
Перед тем, как отфильтровать данные из файла с Cookies нужно его открыть. Открывать будем так:
string InputStr; using (StreamReader reader = new StreamReader(path)) { InputStr = reader.ReadToEnd(); }
И тут я уже получил проблему. Дело в том, что Mozilla Firefox не захотел давать доступ даже для чтения и я получал ошибку – файл занят другим процессом. Не долго думая, я сделал так: файл скопировал в другое место, потом этот скопированный файл открыл, получил то что надо и его удалял. В итоге – заработало!
string pathFirefoxCopy = @"C:\cookies.txt"; if (!File.Exists(pathFirefoxCopy)) { FileInfo filed = new FileInfo(pathFirefox); filed.CopyTo(pathFirefoxCopy); }
Ну с открытием разобрался, теперь нужно вытащить из него только те данные, которые нам нужны. Для этого я воспользовался регулярными выражениями, хотя думаю можно было бы и обойтись стандартными строковыми функциями.
Так как Mozilla Firefox и Internet Explorer немного по разному записывают информацию, пришлось составлять 2 пары регулярных выражений(пары – так как один на логин, один на пароль). Сразу хочу сказать, что с Регулярными выражениями я вообще криво, поэтому немного и кривой результат вышел.
//Для Mozilla Firefox Match loginMF = Regex.Match(InputStr, @"remixemail[\w.-]+%40[\w.]+.vkontakte.ru"); Match passMF = Regex.Match(InputStr, @"remixpass[\w]{32}"); //Для Internet Explorer Match loginIE = Regex.Match(InputStrIE, @"\n[\w.-]+%40[\w.]+\n"); Match passIE = Regex.Match(InputStrIE, @"\n[\w]{32}\n");
Далее пришлось, с помощью Replace убить некоторые недочёты, и в итоге я получил нужные мне данные.
Ну, а дальше дело дизайна, сейчас оформлю и выложу в Мои программы.