Для тех кто пытается понять что за "Тенда алгоритм" и как его считать . Я попытался упростить пример вычисления "алгоритма" Дано: Целевой мак:04:95:e6:3d:40:18 - число в 16-ричной системе разделённое двоеточиями. Примерный алгоритм нахождение пин-кода 1)Находим максимально схожий мак адрес к целовому маку(04:95:e6:3d:40:18 ). Максимально схожий мак адрес в данном случае 04:95:e6:3d:40:30 2) Переводим целевой и схожий мак адреса из 16-ричной в 10-чную систему исчисление и находим их разность (04:95:e6:3d:40:30 - 04:95:e6:3d:40:18 ) 04:95:e6:3d:40:30 == 5041859412016 04:95:e6:3d:40:18 == 5041859411992 5041859412016 - 5041859411992 = 24 3) Ищем роутеры, 5 чисел мак адреса которые совпадают, а последние отличаются на 24 (проделываем операции которые мы делали в пункте 2) 24 разность 1 пара 04:95:E6:3E:88:B8 7558907 (пины wps) 04:95:E6:3E:880 8145748 24 разность 2 пара 04:95:E6:48:81:40 6432006 04:95:E6:48:81:58 7084639 24 разность 3 пара 04:95:E6:3F:40:A8 8959580 04:95:E6:3F:40:C0 9612213 4) Берём 7 цифр пин-кода каждой пары и вычисляем между ними разность. Для первой пары: 8145748-7558907=586841 Для второй пары: 7084639-6432006=652633 Для третьей пары: 9612213-8959580=652633 5) Берём 7 цифр пинкода 04:95:e6:3d:40:30 - максимального схожего мак адреса к целевому и вычитаем из пинкода полученные разности из пункта 4: 5827241-652633=5174608 - правильный пин-код 5827241-586841=5240400 - не верный пин-код 5174608 пин-код роутера с маком 04:95:e6:3d:40:18 Данный пример работает если разность в +1 устройство
И да, и нет: да, алгоритм основан на вероятностном подборе правильной дистанции DeltaPIN = f(DeltaMAC), но нет, не так примитивно Алгоритм точно работает в пределах двух младших байт, причём при DeltaMAC<=2048 его эффективность почти столь же высока, как при DeltaMAC=8 (правда, в последнем случае, нередко доступна ещё и SolidChain-фильтрация). За пределами двух младших байт (DeltaMAC>65536), алгоритм то ли уже не работает, то ли в базе недостаточно данных (пока недоизучено). На днях сделаю калькулятор и покажу, что получилось. Но немешало бы дополнить базу (затем базу снова придётся отфильтровать, ибо алгоритм чувствителен к "слабым" опорным точкам. Впрочем, эту чувствительность можно значительно снизить...)
Monohrom Наверное, более удачная формулировка--"точки отсчёта". ВСЕМ Просветите меня немного по этим точкам. 1. Вскрытая точка не позволяет сменить пароль wpа (при беспроводном подключении). Это так и задумано? 2. А пин у них, похоже, вообще не меняется?
Если это Тенда на Реалтеке то пинкод должен меняться.Там есть реалтековский пвсевдорандомный генератор с признаками линейности. В прошивке грепать "gen-pin" оно должно вывести на бинарники wscd и flash которые можно найти в папке bin.
1. Не нужно менять пароль, если это не ваша точка. 2. Вопросы по настройке роутеров задают в соседних темах, здесь это оффтопик. Интересно будет посмотреть, спасибо за ваш труд. Как ограничения самоизоляции ослабят, можно будет флешмоб провести по поиску точек в Wigle и последующей отработке на местности.
Составил список из вопросов по поводу алгоритма для Тенд и не понятно как эти вопросы связать. 0.Непонятно как связать DeltaMAC и DeltaPIN. 1.Есть ли смысл в формуле DeltaPIn = (DeltaMAC) ? И что там есть ещё ? какую роль выполняет DeltaMAC ? 2.Повторения, нет ПОВТОРЕНИЯ - как они появились, зачем их оставили если заметили? 4. Видно что после переполнения генератор начинает отчёт с нуля, почему? 5.Эти переполнения есть в каждой дельте. Почему? 6.Почему на больших DeltaMAC повторов DeltaPIN всё меньше и меньше? 7.Добавляющие числа к DeltaPIn это степень двойки в большенстве случаев. Зачем стали добавлять числа? Генератор выдавал слишком похожие значения? 8. Начальная DeltaPIN она какая? Самое маленькое значение DeltaPIN которое мне попалось это 0049062 В качестве подозреваемого выбор пал на линейно конгруэнтный метод, а если точнее на его модификацию. 1) Этот метод есть во многих стандартных библиотеках программирования 2) Этим можно обьяснить повторы в DeltaPIN. В минусы можно занести то что я не могу точно потвердить что линейно конгруэнтный метод или его модификация. Excel файл с расчётами сделаный не мною но достаточно полезный. https://t.me/routerscan/66754 - ссылка в телеграме https://dropmefiles.com/RLNSM - дубль ссылки
Поскольку у меня пока нет времени для дальнейших экспериментов, выкладываю всё, что нарыл. Итак, я реализовал многовекторный (точнее, двухвекторный) поиск пина по базе: 1) находим в базе два мака, ближайших к целевому (моя реализация ищет по одному маку сверху и снизу) и запоминаем расстояния до них (DeltaMAC_Up и DeltaMAC_Dn); 2) для каждого из них составляем базу знаний DeltaPIN=f(DeltaMAC): просматриваем все имеющиеся в базе пары с таким DeltaMAC, берём из них DeltaPIN-ы, группируем их и сортируем по убыванию "мажорности"; 3) возвращаемся к нашим опорным точкам (MAC_Up и MAC_Dn) и вычисляем все возможные значения целевого пина как PinUP-DeltaPIN и PinDn+DaltaPIN, вычисленные пины сводим в одну таблицу, группируем и сортируем по убыванию перекрёсности и мажорности; 4) делаем дополнительную оптимизацию: от всех пинов берём фёст-халфы и ещё раз группируем и сортируем результат. Конёк в том, что, при достаточном объёме базы, искомый пин с высочайшей вероятностью будет перекрёстным, что мне довелось испытать на практике: Code: MariaDB [Tenda]> select tenda_pin('04:95:E6:62:EA:D8'); *************************** 1. row *************************** tenda_pin('04:95:E6:62:EA:D8'): |------------------------------------------------------------------------| |Ближайшие данные в базе: | сверху: +1376 (04:95:E6:62:F0:38) | 296 пар, 85 уникальных дельт, 41 мажорных (вес 85%, 51% в ТОП-10); | снизу: -400 (04:95:E6:62:E9:48) | 354 пар, 87 уникальных дельт, 48 мажорных (вес 89%, 49% в ТОП-10); |После объединения осталось 130 пинов, из них 42 перекрёстных. |Эффективность халф-оптимизации: 1.97 общая, 2.47 у перекрёстных. |------------------------------------------------------------------------| |ИТОГО: 66 фёст-халфов, 17 перекрёстных (вес 88.9%, 76.5% в ТОП-8). |------------------------------------------------------------------------| 1 row in set (0.25 sec) MariaDB [Tenda]> select * from tmp_TendaPins order by n; +------+---------+------+------+------+------+ | n | PIN | mUp | mDn | m | X | +------+---------+------+------+------+------+ | 1 | 9226150 | 24 | 25 | 49 | 1 | | 2 | 9226151 | 17 | 31 | 48 | 1 | | 3 | 9226407 | 20 | 12 | 32 | 1 | | 4 | 9226406 | 19 | 12 | 31 | 1 | | 5 | 6003367 | 3 | 26 | 29 | 1 | | 6 | 9160614 | 14 | 11 | 25 | 1 | | 7 | 9160615 | 11 | 13 | 24 | 1 | | 8 | 6003623 | 6 | 16 | 22 | 1 | | 9 | 9160870 | 14 | 5 | 19 | 1 | | 10 | 6003366 | 2 | 16 | 18 | 1 | | 11 | 9291687 | 7 | 11 | 18 | 1 | | 12 | 9160871 | 11 | 6 | 17 | 1 | | 13 | 5937831 | 4 | 12 | 16 | 1 | | 14 | 9291942 | 12 | 3 | 15 | 1 | | 15 | 9291943 | 8 | 6 | 14 | 1 | | 16 | 226150 | 6 | 7 | 13 | 1 | | 17 | 6068903 | 4 | 7 | 11 | 1 | | 18 | 226407 | 9 | 2 | 11 | 1 | | 19 | 226151 | 4 | 6 | 10 | 1 | | 20 | 5938087 | 4 | 5 | 9 | 1 | | 21 | 6003622 | 4 | 4 | 8 | 1 | | 22 | 5937830 | 2 | 5 | 7 | 1 | | 23 | 9291686 | 1 | 6 | 7 | 1 | | 24 | 5003622 | 5 | 1 | 6 | 1 | | 25 | 291687 | 2 | 4 | 6 | 1 | | 26 | 160614 | 2 | 3 | 5 | 1 | | 27 | 5003366 | 1 | 4 | 5 | 1 | | 28 | 5003367 | 2 | 3 | 5 | 1 | | 29 | 8226150 | 1 | 4 | 5 | 1 | | 30 | 8226407 | 2 | 2 | 4 | 1 | | 31 | 5003623 | 3 | 1 | 4 | 1 | | 32 | 160615 | 1 | 3 | 4 | 1 | | 33 | 8226151 | 1 | 3 | 4 | 1 | | 34 | 6069159 | 1 | 3 | 4 | 1 | | 35 | 291943 | 2 | 1 | 3 | 1 | | 36 | 8226406 | 1 | 2 | 3 | 1 | | 37 | 4937830 | 1 | 2 | 3 | 1 | | 38 | 8160614 | 1 | 1 | 2 | 1 | | 39 | 5069158 | 1 | 1 | 2 | 1 | | 40 | 6069158 | 1 | 1 | 2 | 1 | | 41 | 4938087 | 1 | 1 | 2 | 1 | | 42 | 5069159 | 1 | 1 | 2 | 1 | | 43 | 160870 | 4 | 0 | 4 | 0 | | 44 | 6068902 | 0 | 4 | 4 | 0 | | 45 | 6003111 | 0 | 4 | 4 | 0 | | 46 | 226663 | 3 | 0 | 3 | 0 | | 47 | 291686 | 3 | 0 | 3 | 0 | | 48 | 9225895 | 0 | 3 | 3 | 0 | | 49 | 8291687 | 0 | 3 | 3 | 0 | | 50 | 226406 | 3 | 0 | 3 | 0 | | 51 | 9225894 | 0 | 3 | 3 | 0 | | 52 | 5068903 | 0 | 2 | 2 | 0 | | 53 | 6068647 | 0 | 2 | 2 | 0 | | 54 | 5938086 | 0 | 2 | 2 | 0 | | 55 | 9226662 | 2 | 0 | 2 | 0 | | 56 | 9292199 | 2 | 0 | 2 | 0 | | 57 | 9226663 | 2 | 0 | 2 | 0 | | 58 | 5003879 | 2 | 0 | 2 | 0 | | 59 | 225895 | 0 | 2 | 2 | 0 | | 60 | 160871 | 2 | 0 | 2 | 0 | | 61 | 6003110 | 0 | 2 | 2 | 0 | | 62 | 8160871 | 2 | 0 | 2 | 0 | | 63 | 5937575 | 0 | 2 | 2 | 0 | | 64 | 8291942 | 2 | 0 | 2 | 0 | | 65 | 8291686 | 0 | 2 | 2 | 0 | | 66 | 9292198 | 2 | 0 | 2 | 0 | | 67 | 9291431 | 0 | 2 | 2 | 0 | | 68 | 225894 | 0 | 2 | 2 | 0 | | 69 | 8291307 | 1 | 0 | 1 | 0 | | 70 | 2932579 | 1 | 0 | 1 | 0 | | 71 | 9161126 | 1 | 0 | 1 | 0 | | 72 | 291430 | 0 | 1 | 1 | 0 | | 73 | 3875611 | 0 | 1 | 1 | 0 | | 74 | 939942 | 1 | 0 | 1 | 0 | | 75 | 5791621 | 1 | 0 | 1 | 0 | | 76 | 4937831 | 1 | 0 | 1 | 0 | | 77 | 8160615 | 0 | 1 | 1 | 0 | | 78 | 2436013 | 0 | 1 | 1 | 0 | | 79 | 8226663 | 1 | 0 | 1 | 0 | | 80 | 4938086 | 1 | 0 | 1 | 0 | | 81 | 1403802 | 0 | 1 | 1 | 0 | | 82 | 8041355 | 1 | 0 | 1 | 0 | | 83 | 431107 | 0 | 1 | 1 | 0 | | 84 | 3878 | 0 | 1 | 1 | 0 | | 85 | 5159271 | 1 | 0 | 1 | 0 | | 86 | 7499623 | 1 | 0 | 1 | 0 | | 87 | 2144745 | 1 | 0 | 1 | 0 | | 88 | 9372360 | 0 | 1 | 1 | 0 | | 89 | 9160359 | 0 | 1 | 1 | 0 | | 90 | 8160870 | 1 | 0 | 1 | 0 | | 91 | 508221 | 1 | 0 | 1 | 0 | | 92 | 8204432 | 0 | 1 | 1 | 0 | | 93 | 291431 | 0 | 1 | 1 | 0 | | 94 | 5798410 | 1 | 0 | 1 | 0 | | 95 | 5857156 | 1 | 0 | 1 | 0 | | 96 | 5922436 | 0 | 1 | 1 | 0 | | 97 | 9772077 | 0 | 1 | 1 | 0 | | 98 | 8827290 | 1 | 0 | 1 | 0 | | 99 | 8269968 | 0 | 1 | 1 | 0 | | 100 | 4691906 | 0 | 1 | 1 | 0 | | 101 | 8659397 | 1 | 0 | 1 | 0 | | 102 | 3922479 | 1 | 0 | 1 | 0 | | 103 | 9080690 | 0 | 1 | 1 | 0 | | 104 | 8175226 | 0 | 1 | 1 | 0 | | 105 | 9403284 | 1 | 0 | 1 | 0 | | 106 | 8724677 | 0 | 1 | 1 | 0 | | 107 | 5392161 | 0 | 1 | 1 | 0 | | 108 | 6003879 | 1 | 0 | 1 | 0 | | 109 | 5791365 | 0 | 1 | 1 | 0 | | 110 | 8160359 | 0 | 1 | 1 | 0 | | 111 | 8291562 | 1 | 0 | 1 | 0 | | 112 | 3308193 | 1 | 0 | 1 | 0 | | 113 | 9560243 | 1 | 0 | 1 | 0 | | 114 | 6068646 | 0 | 1 | 1 | 0 | | 115 | 277075 | 0 | 1 | 1 | 0 | | 116 | 9262896 | 1 | 0 | 1 | 0 | | 117 | 5937574 | 0 | 1 | 1 | 0 | | 118 | 4794286 | 0 | 1 | 1 | 0 | | 119 | 7567051 | 1 | 0 | 1 | 0 | | 120 | 226662 | 1 | 0 | 1 | 0 | | 121 | 14882 | 1 | 0 | 1 | 0 | | 122 | 9015138 | 0 | 1 | 1 | 0 | | 123 | 592183 | 0 | 1 | 1 | 0 | | 124 | 5068902 | 1 | 0 | 1 | 0 | | 125 | 8612407 | 1 | 0 | 1 | 0 | | 126 | 9709283 | 0 | 1 | 1 | 0 | | 127 | 8109690 | 0 | 1 | 1 | 0 | | 128 | 2731788 | 1 | 0 | 1 | 0 | | 129 | 5791620 | 0 | 1 | 1 | 0 | | 130 | 6552254 | 0 | 1 | 1 | 0 | +------+---------+------+------+------+------+ 130 rows in set (0.00 sec) MariaDB [Tenda]> select * from tmp_TendaHalfs; +------+------+------+------+------+------+ | n | Half | mUp | mDn | m | X | +------+------+------+------+------+------+ | 1 | 9226 | 84 | 80 | 164 | 1 | | 2 | 9160 | 50 | 36 | 86 | 1 | | 3 | 6003 | 16 | 68 | 84 | 1 | | 4 | 9291 | 28 | 28 | 56 | 1 | | 5 | 226 | 26 | 15 | 41 | 1 | | 6 | 5937 | 6 | 20 | 26 | 1 | | 7 | 5003 | 13 | 9 | 22 | 1 | | 8 | 6068 | 4 | 14 | 18 | 1 | | 9 | 8226 | 6 | 11 | 17 | 1 | | 10 | 160 | 9 | 6 | 15 | 1 | | 11 | 291 | 7 | 7 | 14 | 1 | | 12 | 5938 | 4 | 7 | 11 | 1 | | 13 | 8160 | 4 | 3 | 7 | 1 | | 14 | 6069 | 2 | 4 | 6 | 1 | | 15 | 5069 | 2 | 2 | 4 | 1 | | 16 | 4937 | 2 | 2 | 4 | 1 | | 17 | 4938 | 2 | 1 | 3 | 1 | | 18 | 8291 | 4 | 5 | 9 | 0 | | 19 | 9225 | 0 | 6 | 6 | 0 | | 20 | 9292 | 4 | 0 | 4 | 0 | | 21 | 225 | 0 | 4 | 4 | 0 | | 22 | 5791 | 1 | 2 | 3 | 0 | | 23 | 5068 | 1 | 2 | 3 | 0 | | 24 | 3 | 0 | 1 | 1 | 0 | | 25 | 9709 | 0 | 1 | 1 | 0 | | 26 | 9161 | 1 | 0 | 1 | 0 | | 27 | 2731 | 1 | 0 | 1 | 0 | | 28 | 8269 | 0 | 1 | 1 | 0 | | 29 | 277 | 0 | 1 | 1 | 0 | | 30 | 6552 | 0 | 1 | 1 | 0 | | 31 | 4691 | 0 | 1 | 1 | 0 | | 32 | 8827 | 1 | 0 | 1 | 0 | | 33 | 939 | 1 | 0 | 1 | 0 | | 34 | 14 | 1 | 0 | 1 | 0 | | 35 | 9772 | 0 | 1 | 1 | 0 | | 36 | 2932 | 1 | 0 | 1 | 0 | | 37 | 7499 | 1 | 0 | 1 | 0 | | 38 | 5798 | 1 | 0 | 1 | 0 | | 39 | 9372 | 0 | 1 | 1 | 0 | | 40 | 4794 | 0 | 1 | 1 | 0 | | 41 | 9015 | 0 | 1 | 1 | 0 | | 42 | 1403 | 0 | 1 | 1 | 0 | | 43 | 8175 | 0 | 1 | 1 | 0 | | 44 | 3308 | 1 | 0 | 1 | 0 | | 45 | 8612 | 1 | 0 | 1 | 0 | | 46 | 431 | 0 | 1 | 1 | 0 | | 47 | 7567 | 1 | 0 | 1 | 0 | | 48 | 5857 | 1 | 0 | 1 | 0 | | 49 | 9403 | 1 | 0 | 1 | 0 | | 50 | 9080 | 0 | 1 | 1 | 0 | | 51 | 2144 | 1 | 0 | 1 | 0 | | 52 | 8204 | 0 | 1 | 1 | 0 | | 53 | 5159 | 1 | 0 | 1 | 0 | | 54 | 9262 | 1 | 0 | 1 | 0 | | 55 | 3875 | 0 | 1 | 1 | 0 | | 56 | 8659 | 1 | 0 | 1 | 0 | | 57 | 508 | 1 | 0 | 1 | 0 | | 58 | 8041 | 1 | 0 | 1 | 0 | | 59 | 5922 | 0 | 1 | 1 | 0 | | 60 | 9560 | 1 | 0 | 1 | 0 | | 61 | 2436 | 0 | 1 | 1 | 0 | | 62 | 5392 | 0 | 1 | 1 | 0 | | 63 | 3922 | 1 | 0 | 1 | 0 | | 64 | 8724 | 0 | 1 | 1 | 0 | | 65 | 592 | 0 | 1 | 1 | 0 | | 66 | 8109 | 0 | 1 | 1 | 0 | +------+------+------+------+------+------+ 66 rows in set (0.00 sec) MariaDB [Tenda]> Ну, а дальше--дело техники: Code: 9226 150 - 9160 614 - 6003 623 - 9291 + 687 - 9291942 - 9291943 +
Походу, есть немало аномалий (или это кривые данные?) Анализ результатов "тренировки на кошках" показал, что примерно 1% устройств с DeltaMAC<=512, и ~7% с DeltaMAC<=8192 имеют минорные (абсолютно уникальные) DeltaPIN. Т.е., в реальных полевых условиях, пин для таких устройств найден не будет. Вот, навскидку, 04:95:E6:7E:95:48 -- выпадает даже из SolidChain! У кого есть база с подробностями (ESSID и пароль)--попробуйте уточнить, что это за зверь. В аттаче все миноры с DeltaMAC<=512. Могу выложить всю таблицу, если интересно.
Кажется, я нашёл решение этой и подобных проблем. Поскольку мой генератор по возможности использует все опорные точки, которые получены из 3WiFi по маске 11:22:33:44:5*:** в пределах DeltaMAC=4096, я решил добавить в него алгоритм формирования унифицированного списка, который содержит в себе пин-коды, полученные от разных опорных точек и отсортированные по количеству вхождений (первый критерий), сумме их индексов в исходных списках, взятой с отрицательным знаком (второй критерий). Это уже реализовано, но работает пока что только для тех, у кого есть аккаунт 3WiFi. Для 04:95:E6:7E:95:48 генератор определяет 32 опорные точки. Результаты работы генератора: классический список, унифицированный список (верный пин на первом месте!). Я готовлю веб-версию своего генератора. 2019-08-17 BSSID: 04:95:E6:7E:95:48 ESSID: Internet Password: Saad172508 WPS PIN: 26842592 Широта, долгота: 39.103130 116.0299
4Fun Похоже, Вы чересчур увлеклись идеей многовекторности (наверное, с моей подачи): 32 вектора--это, ИМХО, перебор: разумное значение где-то в пределах восьми... Но важнее другое: когда "на учениях" код оказывается а первом месте, есть серьёзные опасения, что "в бою" он вообще не будет найден. Это, конечно, не догма, а именно опасения. Но в вашей сводной таблице не видно самого главного: критериев сортировки (нет колонок m и X), так что комментировать мне нечего. Впрочем, для боевых испытаний, Вам достаточно исключить целевой мак из базы и проверить, будет ли он найден после этого. PS Попытка согласовать терминологию: и Скорее всего, мы говорим об одном и том же, только мой вариант более читабелен, Вы не находите? Предлагаю закрепить следующие термины: 1) "мажорная DeltaPIN" (или просто "мажорная дельта")--DeltaPIN, которая встречается в базе более 1 раза для данного DeltaMAC; 2) "мажорный пин"--пин, вычисленный хотя бы от одной опорной точки по мажорной дельте (mn>1 или m>(X+1)); 3) "перекрёстный пин"--пин, значение которого совпало при вычислении от разных опорных точек (столбец X, где 0 <= X < nVectors) PPS И всё-таки, что делать с пинами, значение которых 0 < PIN < 10^6? Практика показывает, что их можно просто отбрасывать, но это неверно идеологически...
Слабоват, как и предполагалось (вполне вероятно, что пин тоже не дефолтный). Я бы пока исключил его из базы.
Я вижу, что чем больше опорных точек, тем ближе к началу унифицированного списка верный пин. Пробовал разные BSSID из 3WiFi, и для тех, к которым находилось 15 и более опорных точек, верный пин-код всегда стоял на первом месте в унифицированном списке, хоть количество пин-кодов в списке было огрромным.
Да, именно такого эффекта я и ожидал. Но ведь это всё при "тренировке на кошках", т.е., все искомые пины были в базе, верно? А исключить из базы тот же 04:95:E6:7E:95:48, а затем попытаться его найти Вы пробовали? PS И всё же, можете показать сводную (или, в вашей терминологии, унифицированную) таблицу со всеми m и X?
В базе 3WiFi, верно. Я согласен с вами. Я уже проверил унифицированный список на нескольких точках не из базы — работает. Т.е. переформировать хэш-таблицу дельт? Обязательно покажу, я принял ваши конструктивные замечания и уже дорабатываю генератор, спасибо.