Взлом WiFi на Python

Взлом WiFi Python

Работа пентестера основана на законом взломе и довольно часто возникает необходимость подключиться к WiFi, не зная пароль. Технология WPS уже давно помогает пентестерам взламывать WiFi. В нашей сегодняшней статье мы посмотрим, как самостоятельно реализовать атаку на WiFi, основанную на слабостях алгоритмов генерации WPS PIN.

Еще по теме: Лучшие хакерские программы для взлома со смартфона

Большинство сегодняшних роутеров поддерживает стандарт WPS (Wi-Fi Protected Setup), который дает возможность меньше чем за минуту установить надежное соединение между устройством и маршрутизатором, минуя этап настройки шифрования и ввода пароля. Девайсы подключаются по отдельному восьмизначному ключу WPS PIN, который состоит из цифр. Восьмая цифра — дайджест.

Вся информация предоставлена исключительно в ознакомительных целях. Ни редакция сайта www.spy-soft.net, ни автор не несут никакой ответственности за любой возможный вред, причиненный материалами этой статьи. Взлом WiFi преследуется по закону!

Из всего разнообразия методов взлома WiFi:

  • подбор ПИН-кода или ключа безопасности методом перебора (брутфорс);
  • использование уязвимостей реализации;
  • социальная инженерия;
  • использование слабостей генерации ПИН-кодов.

В сегодняшней статье мы рассмотрим последний метод из списка.

Атака WPS Pixie Dust уже морально устарела, однако и сегодня мне встречаются подверженные ей роутеры. Проблема кроется в генерации случайных чисел и позволяет не ломать все восемь цифр в лоб, а угадывать лишь четыре из них, так как оставшиеся можно получить из ответов роутера.

Откуда берут стандартный PIN

При покупке маршрутизатора, в нем уже содержится полученный специальным алгоритмом WPS PIN для начального подключения к роутеру через WPS. WPS PIN состоит из восьми цифр. Как производители роутеров его получают? Очевидно, что нужно нечто уникальное для идентификации и генерации различных значений. Правильно — это MAC устройства, который мы можем получить из широковещательного BSSID.

BSSID (Basic Service Set Identifier) — уникальный идентификатор беспроводной сети. Часто BSSID совпадает с MAC-адресом устройства Ethernet MAC.

Генерация WPS PIN на примере

Как вы уже поняли, все начинается с BSSID. Подключаем к сети наш сeксуaльный роутер.

взлом wifi python
Страстный роутер ждет взлома

Анализируем любым удобным способом (например, Dumpper).

взлом wifi python
Dumpper внятным языком рассказывает нам о близлежащих беспроводных сетях

BSSID получили: C4:6E:1F:6A:8D:04.

Пришло время пошалить: открываем браузер и начинаем искать на различных (в том числе и на буржуйских) сайтах и форумах, как работают алгоритмы генерации PIN-кодов у конкретного производителя сетевого оборудования. Если нет желание это делать, то всегда можно «выдернуть» эти функции из сторонних программных продуктов с открытым исходным кодом.

Предположим, мы нашли, что большинство стареньких роутеров этого вендора используют алгоритм генерации ПИН-кода из последних трех октетов MAC-адреса устройства: 24-bit PIN = MAC[7..12].

Вот реализация этого алгоритма на Python.

Результатом работы скрипта будет ПИН-код 69829161. Проверим его достоверность.

взлом wifi python
Полученный WPS PIN идентичен стандартному (заводскому)

Подготовка и требования

Приступим. При разработке собственной утилиты для тестирования беспроводных точек доступа нам потребуется:

  • Windows 7 и выше;
  • Python 3 и выше;
  • удобная IDE;
  • любимый браузер;
  • личный маршрутизатор Wi-Fi с технологией WPS «для пыток»;
  • WpsWin (входит в состав того самого Dumpper);
  • IDA и Hex-Rays Tool.

Сразу, забегая вперед, скажу, что запускать готовый скрипт нужно будет с правами администратора. Можно с этим либо согласиться и перейти непосредственно к разработке, либо читать дальше.

Автозапуск с правами администратора

Для автозапуска мы будем использовать следующий код:

Теперь при попытке запустить скрипт вызов будет передан на UAC (если активен) и откроется новое окно терминала, где наш код выполнится от под администратором.

Если такой вариант не устраивает, то всегда можно воспользоваться готовыми решениями.

Разработка

Прежде всего добавим алгоритм подсчета дайджеста MAC-адреса (он уже был выше):

А также несколько функций генерации заветных ПИН-кодов.

Это далеко не полный список существующих алгоритмов, поэтому оставшиеся варианты будут вашим домашним заданием.

Немного реверса

Разумеется, нужен способ проверить получившиеся ПИН-коды. В этом нам и поможет WpsWin. Эта утилита позволяет подключиться к беспроводной точке доступа посредством технологии WPS. Но какие параметры ей передавать? Расчехляем IDA, подгружаем наш PE и исследуем.

Вот что нам необходимо проделать с исполняемым файлом:

  • найти передаваемые аргументы для взаимодействия через командную строку;
  • отыскать сообщения об успешных, неудачных и ошибочных результатах подключения;
  • пропатчить PE с целью сокращения тайм-аута на подключение к маршрутизатору.

Первая нужная функция находится по адресу 0x004012A0.

взлом wifi на python
Все аргументы командной строки как на ладони

Вторую можно найти по 0x00403370, а третья — это локальная метка основной функции.

взломать wifi python
Ошибка при невозможности подключения к беспроводной точке доступа
взломать wifi на python
Сообщение о некорректном ключе для подключения

По дефолту время тайм-аута соединения с роутером равно девяноста секундам.
Мы столько ждать не готовы, поэтому уменьшаем это время до (приблизительно) пяти секунд.

Само значение передается аргументом второй, найденной нами функции.

взломать wifi на python
Долой длительное ожидание

Патчим через «Edit → Patch program → Assemble…» и сохраняем.

взломать wifi на python
Да здравствует маленький тайм-аут!

Подключение по WPS

Продолжаем дописывать наш код. Запускаем WpsWin, передавая ему параметры для подключения к конкретной беспроводной сети, после чего благополучно перехватываем вывод и проверяем результат.

К сожалению, WpsWin не позволяет отобразить список близлежащих сетей с поддержкой WPS, как это делает wash в Linux, а значит, нам остается реализовать эту функцию самим.

Угадываем WPS PIN

Еще несколько десятков кликов по клавиатуре, и код готов.

Тестирование утилиты

Запускаем скрипт из терминала Windows. Выбираем беспроводную сеть. Профит!

утилита для взлома wifi на python
Удивительно, но программа работает
программа на python для взлома wifi
Вознаграждение за труды

Дополнительные фичи

Если же вам, дорогой читатель, захочется модернизировать этот код, то вот несколько интересных идей для реализации.

  1. Переписать утилиту с использованием встроенной библиотеки cmd, которая имитирует CLI.
  2. Придумать иной способ получения списка беспроводных сетей.
  3. Отыскать все возможные алгоритмы генерации WPS PIN у разных производителей.
  4. Добавить проверку на наличие у беспроводной точки доступа технологии WPS.
  5. Создать счетчик неудачных попыток ассоциации, что поможет выявить вероятную блокировку (Lock) или использование межсетевого экранирования в беспроводной сети.
  6. Добавить звуковое оповещение, когда будет найден верный ПИН-код.

Выводы

Что у нас есть по результатам:

  • +10 к интеллекту скиллу разработки средств автоматизированного тестирования;
  • небольшой список алгоритмов генерации ПИН-кодов;
  • работающая утилита тестирования слабостей генерации WPS PIN;
  • пароль от беспроводной сети.

Не могу не сказать, что вендоры уже давно знают об этой слабости и в последних обновлениях прошивок проблема, скорее всего, уже исправлена. Хоть иногда я и встречал «современные» точки доступа, где для генерации ПИН-кода был использован MAC, увеличенный (или уменьшенный) на единицу, доля уязвимых устройств с каждым днем все меньше.

ВКонтакте
OK
Telegram
WhatsApp
Viber

75 комментариев

  1. Даниель Стародубцев

    Это действительно работает

    • Влад

      Можеш на почту скинуть алгоритм пжпжп

    • ANDREY

      Брат, пожалуйста скинь мне код nout.org@gmail.com , за ранее огромное спасибо здоровья тебе и счастья!

  2. Deth man

    Мне код скинеш?
    Вот она : dethmanize@gmail.com

  3. Саня

    Скинь тоже по братски, почта вот: nailjonenailjone@gmail.com

  4. Alcohol

    Скинь мне тоже пж на почту: dmitry.arsyonov@mail.ru

  5. Vasea

    Скиньте алгоритм плиз

  6. Максон

    Скиньте код пожалуйста.
    merser.zombie@gmail.com

  7. Ахмедов Руслан

    Привет, можешь пж скинуть исходный код ? Буду очень благодарен. Вот почта: rus8412014@gmail.com

  8. Oleg

    Скиньте мне на почту пожалуйста
    oleglaguta43@gmail.com

  9. Влад

    Сбросьте мне тоже пожалуйста код. Почта: vorona.vor62@gmail.com. Заранее спасибо!

  10. Кирилл

    Пожалуйста пришлите мне код, большое спасибо тому кто откликнется. Почта:lirikman2007@gmail.com
    Очень нужен код

  11. Knsag

    Ща скину

  12. m

    скиньте код, пожалуйста.вот почта jakobvip2005@gmail.com

  13. михаил

    скинь и мне пожалуста на эту etoturnikman@gmail.com

  14. Bohdan

    буду благодарен, если скинете и мне yarinko.b@gmail.com

  15. Тихон

    Привет! Можешь мне скинуть код в телеграмм:@Zero4kaX Либо на почту monopiskam@gmail.com

  16. вася

    скиньте плиз sonyatitova674@gmail.com

  17. Romka

    скиньте плиз мне тоже prophetix@rambler.ru

  18. Егорка

    скинь пожалуйста и мне, очень прошу !!!! H0rs4@yandex.ru

  19. kitles

    Привет, скинешь пожалуйста алгоритим. Почта : clash2018super@gmail.com

  20. Андрей

    Скиньте код плез на почту
    darkandrey929@gmail.com

  21. Алдияр

    скиньте мне алгоритм пожалуйста
    aldikzaldik@gmail.com

  22. Kostia

    скиньте мне пж почта : kostia.4gore@gmail.com

  23. Artem

    Скиньте пж мне на почту: ghm623595@gmail.com

  24. cleve56

    скиньте пж на почту выводит ошибку в 130 строке pin = i(mac)

    norboyev.diyorbek03@gmail.com

  25. NoName

    Скинь код ПЖ uzikyavny@gmail.com

  26. Михаил

    Привет можете скинуть на почту код?Буду благодарен

  27. Андрей

    Скиньте мне тоже алгоритм пж
    adsizov09@mail.ru

  28. Эд

    скиньте и мне на почту код
    kulaga.m.d@gmail.com

  29. Illya

    Скиньте код плиз на почту
    illyaterescho2007@gmail.com

  30. Влад

    Скиньте пожалуйста код, буду очень признателет если кто-то откликнеться!

  31. Влад

    Скинь пожалуйста код cyud.2019@gmail.com

  32. Андрей

    Пожалуйста и мне скиньте andreiuzik777@gmail.com

  33. alex

    скиньте код пожалуйста alekseipetrushenko@inbox.ru

  34. AtomMax_

    Раз все просят скинуть я тоже попрошу
    Telegram: @AtomMax_
    Или atommax228@gmail.com

  35. Nikita

    Можно скинуть код пожалуйста
    pablo.na0220@gmil.com

  36. Никита

    Скинь тоже код пожалуйста

  37. Никита

    Скинь тоже код пожалуйста kabanovnikita81@gmail.com

  38. Anton

    скинь ссылку код пожалуйста scorpingorance@gmail.com

  39. Danial

    Скиньте пожалуйста newlogi26@gmail.com

  40. Ярос

    Скинь код пожалуйста
    dedurinaroslav@gmail.com

  41. Justin

    Можешь скинуть код
    babyfun215@gmail.com

  42. Степан

    почему после ввода числа окно сворачивается?

  43. MaKaRoShKa

    Скиньте мне код пж
    maksrddr@gmail.com

  44. MaKaRoShKa

    Скиньте код пж
    maksrddr@gmail.com

  45. павел

    отправишь на почту? она: pashada6@mail.ru

  46. slashq

    скиньте код на почту пожалуйста
    почта: fansare6@gmail.com

  47. Эля

    Скиньте код на почту пожалуйста:nuriddinoveldor2008@gmail.com

  48. Эля

    Скиньте исходный код на почту пожалуйста:nuriddinoveldor2008@gmail.com

  49. ITNoob

    Можно пожалуийста обьяснить как написать эту программу и какие файлы нужно создавать?

  50. Utkirbek

    скиньте исходный код пожалуйста на olimovotkirbek49@gmail.com

  51. Женя

    скинь пожалуйста код и мне тоже xocderx@gmail.com

  52. Кира

    Скиньте код пожалуйста

  53. Рома

    скиньте мне тож код fedorcukroma1@gmail.com

  54. Даниил

    скиньте код mqwoy@mail.ru

  55. vladislav

    Привет, можешь скинуть код на почту пожалуйста, буду очень благодарен! почта: vladrozhentsev@inbox.ru

  56. гулайым

    мне тоже скиньте

  57. Александр

    Скиньте код пожалуйста

  58. Денис

    Скиньте код пожалуйста, буду очень признателен
    denysdzhumalo@gmail.com

  59. Tester

    Прошу скинуть код geor55@bk.ru

  60. Самандар

    Пожалуйста можете скинуть код на эту почту smamedsaliev@mail.ru

  61. Umidjon

    Скиньте код плиз на почту

  62. Виталий

    скиньте мне код пожалуйста . почта-mortytv443@gmail.com

  63. ишдщд

    Скиньте код плиз на почту

  64. Клон

    скинте код плиз на почту michael.lopachak@gmail.com

  65. John

    здравствуйте! если вас не затруднит, скиньте пожалуйста! t_n_x@mail.ru

  66. ivan

    здравствуйте! если вас не затруднит, скиньте пожалуйста! misoher797@pgobo.com

  67. Vano

    отправьте код пожалуйста arti.m.2019@inbox.ru

  68. MIM0kr@k0d!1

    коротко о том как собрать базу email, даже парсить удобно

  69. Артём

    скиньте мне код пожалуйста
    вот email: artesyl680@gmail.com

  70. Ярослав

    Прошу пожалуйста отправить код на почту
    Почта — Sklyaryarik@gmail.com

  71. Валентин

    Скиньте умоляю код на почту) promaxemenem@mail.ru

  72. Olha Lazyniuk

    я только начала учится Python.
    посоветуй какие ресурсы лучше использовать для учебы. Уровень информатики близится к 0😅 но я стараюсь впитывать все что нахожу, но не все что нахожу мне понятно. А без понимания начинаются затыки. если есть поясняющая литература на понятном чайнику языке, отправьте пожалуйста в телегу @Olhalazyniuk

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *