Под влиянием открытий последних дней мы с
@4Fun занялись изучением генерации пин-кодов в роутерах TP-LINK по специальной кнопке в веб-интерфейсе и сделали несколько выводов:
1) Мак адрес не участвует в генерации пин-кодов
2) Пин-коды генерируются на основе текущего времени, и более ни на чём не основываются, кроме времени;
3) время, на котором они основываются, локальное, то есть timestamp, но зависящий от часового пояса (в старых прошивках) — в новых прошивках (с голубой веб-мордой) за основу взят самый обычный UTC timestamp.
Для потверждения наших выводов мы провели эксперимент:
Взяли две разные модели роутеров от TP-LINK на базе Atheros: TL-WR740N v6 и TL-WR741ND v4.
Синхронизировали на них время, часовые пояса и начали генерировать пин-коды через веб-морды с помощью кнопок "Создать новый пин-код", при этом нажимая их одновременно. Так проделали три раза и получили 3 пары совпадающих пин-кодов. Вы можете наблюдать их ниже, котрольные суммы пин-кодов отброшены.
Код:
TL-WR740N v6 TL-WR741ND v4
2752101 2752101
3120642 3120642
9544919 9544919
После мы решили проделать аналогичные действия на новых роутерах TP-LINK на базе Mediatek (с голубыми веб-мордами): TL-WR840N v4 и TL-WR841N v13
И тоже получили 3 пары совпадающих пин-кодов:
Код:
TL-WR840N v4 TL-WR841N v13
2786309 2786309
2067563 2067563
3089540 3089540
За этими двумя экспериментами последовал ряд других, в ходе которых мы заметили, что:
1) у старых роутеров TP-LINK на базе чипов Atheros timestamp, который участвует в генерации пинкода, привязан к часовому поясу;
2) у новых роутеров TP-LINK на базе MediaTek для генерации пин-кода используется классический юниксовый timestamp, не привязанный к часовому поясу, то есть количество секунд с 1 января 1970 года по UTC.
Для того чтобы окончательно удостовериться в увиденном, мы написали пару скриптов для синхронной генерации пин-кодов на двух роутерах TP-Link (работают как нажатие кнопки в веб-морде, по сути): https://mega.nz/file/fnpU1SDS#2RpEv2vk-OJBoQrEgbuMKuPmCJ1tiWOTFqVSo9uqLIU
В архиве:
main_green_basic.py — для роутеров TP-LINK с зелёным веб-интерфейсом и базовой аутентификацией
main_blue.py — для роутеров TP-Link с голубым веб-интерфейсом и форм-авторизацией
Оба скрипта работают только с парой идентичных роутеров. IP-адреса и авторизация роутеров настраивается в файле config.json. Для запуска требуется Python 3.6 и выше и модуль requests.