Топ 25 паролей от mail.ru
Как то совершенно случайно ко мне попала база паролей от ящиков на mail.ru. Да-да, совершенно случайно, файл со ящикам и паролями от них общим числом около 193-х тысяч. И вот у меня возник вопрос, а какие пароли самые распространенные у пользователей майл ру? Если вам не терпится узнать ответ, то вот, пожалуйста: список из 25-ти самых популярных паролей в mail.ru:
Позиция | Пароль | Сколько раз встречается |
1 | qwerty | 1731 |
2 | 123456 | 717 |
3 | klaster | 377 |
4 | qwertyuiop | 271 |
5 | qwe123 | 165 |
6 | qwerty123 | 138 |
7 | 1qaz2wsx | 104 |
8 | 1q2w3e4r5t | 92 |
9 | qazwsx | 77 |
10 | qqq111 | 75 |
11 | qweqwe | 72 |
12 | 123456789 | 70 |
13 | zxcvbnm | 70 |
14 | 1234qwer | 67 |
15 | qwer1234 | 66 |
16 | 123qwe | 63 |
17 | 1q2w3e4r | 63 |
18 | marina | 57 |
19 | 123QWE123 | 56 |
20 | 1q2w3e | 51 |
21 | 123456a | 43 |
22 | nikita | 41 |
23 | 12345 | 41 |
24 | 12345q | 41 |
25 | qazxsw | 41 |
А теперь, если вам все еще интересно, приведу решение этой задачи. Итак, у нас есть файл, в нем 192909 строк. Для решения задачи инициализируем массив в строке 15 - в нем будут храниться пароли. Массив делаем с запасом - на 193 тысячи элементов. В строках 22-34 задаем файл с паролями и считываем его в массив. Формат файла таков - на каждой новой строке связка почта-пароль, разделенная двоеточием. Мы считываем строку, а в массив заносим только вторую часть её - после двоеточия, то есть только пароль. В строке 35 надо бы конечно обработать исключение, но программа только для собственных нужд, так что пропущу.
В строках 37-46 проходим по массиву паролей и заполняем массив, сколько раз встречается пароль. Строка номер 39 - это что-то типа прогресс бара, чтобы понимать, что программа не зависала, а работает нормально - следить за ходом выполнения. В строках 48-61 находим наибольшие 25 значений. В цикле 65-68 записываем в файл пароли, а в цикле 70 выводим результаты на консоль.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.IO; namespace PassMail { class Program { static void Main(string[] args) { int count = 0; string[] mass = new string[193000];//массив паролей int[] chet = new int[193000]; string line; int max = 0; int[] chet_max = new int[25]; string[] mass_max = new string[25]; string nameFile = "C:\\Users\\Друг\\Dropbox\\mail.txt"; try { using (StreamReader sr = new StreamReader(nameFile)) { while ((line = sr.ReadLine()) != null) { line = sr.ReadLine(); count++; mass[count] = line.Remove(0, line.IndexOf(":", StringComparison.InvariantCulture) + 1); } } } catch (Exception e) { } for (int i = 0; i < count; i++) { if (i%10000 == 0 ) Console.WriteLine(i); for (int j = i + 1; j < count; j++) { if (mass[i] == mass[j]) { chet[i]++; } } } for (int k = 0; k < 25; k++) { max = 0; for (int i = 0; i < count; i++) { if (max < chet[i]) { max = chet[i]; chet_max[k] = chet[i]; mass_max[k] = mass[i]; } } for (int j = 0; j< count; j++) if (mass_max[k] == mass[j]) chet[j] = 0; } using (System.IO.StreamWriter file = new System.IO.StreamWriter("C:\\Users\\Друг\\Dropbox\\m.txt", true)) { for (int i = 1; i < 26; i++){ file.WriteLine("Место: " + i + " Пароль: " + mass_max[i - 1] + " Сколько раз встречается: " + chet_max[i - 1]); } } for (int i = 1; i < 26; i++) Console.WriteLine("Место: "+i+ " Пароль: " + mass_max[i-1] + " Сколько раз встречается: " + chet_max[i-1]); Console.ReadKey(); } } }Напоследок стоит сказать, что у каждого уважающего себя хакера имеется целая база паролей, так что чтобы не допустить проникновения в свой ящик, используйте не вышеприведенные пароли, а посложнее. Если у вас имеются какие-либо комментарии по данному коду или требуется решить какую либо задачу на C#, то вы можете написать на почту up777up@yandex.ru.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.