День добрый
Вот у вас есть малинка и вы не знаете что еще можно з ней сотворить? Выход есть благоларя кастомной прошивке можно получить неплохой SDR ну или очень мощный инстумен для сетей
Все бы хорошо но зачем все это делать? Что это такое SDR и зачем он нужен?
SDR - это программно управляемое радио, нужно оно затем что з ним можно много чего сделать вплоть до получение траффика от спутника. Как вы знаете все приборы у которых есть так называемая "сеть"
работают на определенных радио частотах которые наша малинка и сможет перехватывать , создавать и изменять.
Nexmon SDR. Это кастомная прошивка чипсета Wi-Fi, которая может дать обладателю raspberry pi model B+ много интересного функционала
Чип Broadcom BCM43455c0 можно заставить передавать любой сигнал на частотах от 2,4 до 5 ГГц. BCM43455c0 используеться в Raspberry Pi 3B+ чем мы и будем пользоваться в своих целях (только эта модель поддерживает Nexmon-SDR, на всех остальных можно просто запустить обычный Nexmon)
Nexmon SDR надо использовать вместе с основным проектом Nexmon. Он представляет собой большой фреймворк для патчинга прошивки чипа Wi-Fi с целью возможностью перехвата пакетов и инжекта фреймов. Он, кстати, поддерживает гораздо большее количество устройств
Cобственно что-то мы заговорились, начинаем установку основного Nexmon (на linux разумеется):
Что нам нужно?
Raspberry pi
micro-sd карта минимум на 16гб
Raspbian
Доступ к малинке (можно через PuTTY)
ровные руки
Обновляемся на самой малинке:
Код:
Код:
sudo apt-get update
sudo apt-get upgrade
Перезагружаем устройство:
Код:
Мы можем проверить версию ядра, pвыполнив команду ниже:
Код:
Этой командой вы должны получить что-то вроде «4.14.98-v7 +». Пока вы используете версию ядра, которая начинается с «4.9», «4.14» или «4.19», то все хорошо и вы сможете установить Nexmon
На малинке нам нужен полный доступ для выполнения дальшейших действий
рутимся:
Код:
Теперь, когда мы взаимодействуем как суперпользователь, нам нужно будет установить все пакеты, необходимые для компиляции патчей ядра Nexmon.
Код:
Код:
apt install git libgmp3-dev gawk qpdf bison flex make raspberrypi-kernel-headers
Теперь клонируем репозиторий:
Код:
Код:
git clone https://github.com/seemoo-lab/nexmon.git
Теперь, когда у нас есть код Nexmon, клонированный на Raspberry Pi, нам нужно перейти к компиляции двух необходимых библиотек.
Перед тем, как скомпилировать и установить эти библиотеки, мы должны убедиться, что вы все еще работаете как пользователь «root». В командной строке вы должны увидеть текст «root@raspberrypi», а не «pi@raspberrypi»
Чтобы продолжить, нам нужно проверить, доступна ли нам необходимая библиотека. Для этого мы можем просто запустить команду «stat» ниже, чтобы увидеть, существует ли файл:
Код:
Код:
stat /usr/lib/arm-linux-gnueabihf/libisl.so.10
Если эта команда возвращает текст, показанный ниже, вам нужно выполнить некоторые команды а если текст без ошибок то вы можете идти дальше):
stat: cannot stat '/usr/lib/arm-linux-gnueabihf/libisl.so.10': No such file or directory
пишем:
Код:
Код:
cd /home/pi/nexmon/buildtools/isl-0.10
./configure
make
make install
ln -s /usr/local/lib/libisl.so /usr/lib/arm-linux-gnueabihf/libisl.so.10
Наш следующий шаг - проверить, работает ли библиотека libmpfr.so.4, выполнив следующую команду:
Код:
Код:
stat /usr/lib/arm-linux-gnueabihf/libmpfr.so.4
Если вы получили следующее сообщение, вам нужно будет выполнить следущие команды:
stat: cannot stat '/usr/lib/arm-linux-gnueabihf/libmpfr.so.4': No such file or directory
Код:
Код:
cd /home/pi/nexmon/buildtools/mpfr-3.1.4
autoreconf -f -i
./configure
make
make install
ln -s /usr/local/lib/libmpfr.so /usr/lib/arm-linux-gnueabihf/libmpfr.so.4
Теперь, когда две библиотеки, которые нам нужны, установлены и доступны на нашем Raspberry Pi, мы можем приступить к компиляции.
Для начала нам нужно использовать команду «source» и файл «source_env.sh».
Файл «source_env.sh» настроит текущий сеанс bash с переменными среды, которые ожидает make-файл Nexmon:
Код:
Код:
cd /home/pi/nexmon
source setup_env.sh
Теперь, когда сеанс bash настроен правильно, давайте запустим команду «make» в корневом каталоге исходного кода nexmon.
Эта команда сгенерирует все необходимые файлы, необходимые для исправления различных версий ядра:
Код:
Здесь все немного сложнее. Есть две разные папки, в которые вам нужно будет перейти в зависимости от того, какая у вас версия Raspberry Pi.
Эти папки содержат патчи для текущей версии чипа Broadcom на нашем Raspberry Pi.
Raspberry Pi 3 / Raspberry Pi Zero W
Код:
Код:
cd /home/pi/nexmon/patches/bcm43430a1/7_45_41_46/nexmon/
Raspberry Pi 3+
Код:
Код:
cd /home/pi/nexmon/patches/bcm43455c0/7_45_154/nexmon/
Также для Raspberry Pi 3+ вам нужно будет запустить следующие две команды, находясь в этом каталоге из-за проблемы в make-файле. Это исправление было предоставлено WiredLife с GitHub, вы можете найти больше об этой проблеме ТУТ
Вот собственно команды:
Код:
Код:
sed -i -e 's/ifeq ($(findstring 4.9,$(shell uname -r)),4.9)/ifeq ($(findstring 4.9.,$(shell uname -r)),4.9.)/g' Makefile
sed -i -e 's/else ifeq ($(findstring 4.14,$(shell uname -r)),4.14)/else ifeq ($(findstring 4.14.,$(shell uname -r)),4.14.)/g' Makefile
Теперь, когда мы находимся в правильном каталоге, мы можем продолжить и запустить make-файл с помощью команды make.
Выполнение команды make сгенерирует исправленные версии прошивки
Код:
Теперь, когда созданы скомпилированные версии исправленной прошивки, давайте продолжим и сделаем резервную копию текущей прошивки, выполнив команду ниже:
Код:
Код:
make backup-firmware
Теперь давайте установим прошивку, выполнив следующую команду.
Эта команда заменит текущую прошивку. Однако нам нужно будет внести другие изменения, чтобы драйвер правильно загружался при загрузке:
Код:
Код:
make install-firmware
Последнее, что нам нужно сделать, это скомпилировать и установить служебную программу Nexmon.
Для этого мы должны сначала перейти в каталог nexutil:
Код:
Код:
cd /home/pi/nexmon/utilities/nexutil
Теперь, когда мы находимся в правильном каталоге, мы можем приступить к компиляции утилиты и установить ее в нашу операционную систему Raspbian:
Код:
В этом разделе нам нужно будет отметить версию ядра, которое мы в настоящее время используем, поскольку существуют различные версии драйвера brcmfmac, которые мы можем использовать.
Выполните следующую команду, чтобы получить версию ядра и запомнить первые два числа:
Код:
Теперь, когда мы знаем версию ядра, нам нужно найти путь к драйверу по умолчанию.
Мы можем получить информацию о драйвере, используя команду «modinfo»:
Код:
Используя эту команду, вы можете получить каталог, в котором находится драйвер, и он должен быть первой записью в списке.
Ниже показано расположение, созданное для нашей системы. Обратите внимание, что мы также удалили файл «brcmfac.ko» из имени каталога.
Запишите это, так как каталог нам понадобится для следующих нескольких шагов:
Код:
Код:
filename: /lib/modules/4.14.98-v7+/kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/
Имея каталог в руках, мы можем начать процесс замены драйвера brcmfac, чтобы наша модифицированная версия с патчами Nexmon загружалась при загрузке.
Перед заменой драйвера мы должны сделать резервную копию оригинала на случай, если вы когда-нибудь захотите вернуться к драйверу по умолчанию.
Давайте сделаем резервную копию драйвера, выполнив следующую команду. Убедитесь, что вы заменили на каталог, который мы нашли
Код:
Код:
mv /brcmfmac.ko /brcmfmac.ko.orig
Теперь, когда мы сделали резервную копию драйвера по умолчанию, мы можем приступить к замене драйвера нашим новым.
Убедитесь, что вы используете правильную команду для используемой версии ядра. Существуют две разные команды в зависимости от того, используете ли вы версию ядра «4.9» или «4.14».
Кроме того, убедитесь, что вы выбрали правильный каталог для версии Pi, которую вы используете.
Как и в предыдущем шаге, убедитесь, что вы заменили на каталог, который вы получили ранее:
Kernel Version 4.9
Raspberry Pi 3 / Raspberry Pi Zero W
Код:
Код:
cp /home/pi/nexmon/patches/bcm43430a1/7_45_41_46/nexmon/brcmfmac_kernel49/brcmfmac.ko /
Raspberry Pi 3+
Код:
Код:
cp /home/pi/nexmon/patches/bcm43455c0/7_45_154/nexmon/brcmfmac_4.9.y-nexmon/brcmfmac.ko /
Kernel Version 4.14
Raspberry Pi 3 / Raspberry Pi Zero W
Код:
Код:
cp /home/pi/nexmon/patches/bcm43430a1/7_45_41_46/nexmon/brcmfmac_4.14.y-nexmon/brcmfmac.ko /
Raspberry Pi 3+
Код:
Код:
cp /home/pi/nexmon/patches/bcm43455c0/7_45_154/nexmon/brcmfmac_4.14.y-nexmon/brcmfmac.ko /
Kernel Version 4.19
Raspberry Pi 3 / Raspberry Pi Zero W
Код:
Код:
cp /home/pi/nexmon/patches/bcm43430a1/7_45_41_46/nexmon/brcmfmac_4.19.y-nexmon/brcmfmac.ko /
Raspberry Pi 3+
Код:
Код:
cp /home/pi/nexmon/patches/bcm43455c0/7_45_154/nexmon/brcmfmac_4.19.y-nexmon/brcmfmac.ko /
После того, как вы скопировали заменяющий драйвер, исправленный с помощью Nexmon, нам нужно выполнить следующую команду.
Эта команда будет использовать утилиту depmod для воссоздания списка модулей. Это обеспечит загрузку нашего модифицированного драйвера:
Код:
После этого перезагрузите Raspberry Pi, используя следующую команду:
Код:
Один из способов проверить, работает ли исправление должным образом, - это проверить, есть ли «монитор» в списке поддерживаемых интерфейсов.
Вы можете сделать это, сначала получив физический идентификатор интерфейса wlan, используя команду ниже:
Код:
Запишите физический номер вашего интерфейса wlan0, в нашем случае это был «phy # 0»
Теперь доступен физический идентификатор. Выполните следующую команду, чтобы получить всю информацию об этом устройстве.
Убедитесь, что вы заменили phy0 на правильный для вашего интерфейса wlan0
Код:
Эта команда сбросит массу информации о вашем беспроводном интерфейсе. Однако есть только один раздел, который мы хотим исследовать.
Этот раздел является разделом «Supported interfaces modes:». Здесь вы хотите увидеть, есть ли «*monitor».
Если текст присутствует, это означает, что исправления прошивки Nexmon работают должным образом и позволили беспроводной сети Raspberry Pi перейти в режим монитора.
Теперь установим Nexmon-SDR (работает только на 3 малинке модели B+)
Копируем репозиторий:
Код:
Код:
git clone https://github.com/seemoo-lab/nexmon.git
Перейдите в ранее клонированный каталог nexmon и запустите:
Код:
Компилируем:
Код:
Переходим клонированый репозиторий и ищем в нем папку "utilities", нашли? Отлично пишите:
Код:
Опять переходим в главную директорию nexmon и ищем теперь папку "patches" в ней "bcm43455c0" а уже в ней "7_45_154"
В последней папке запускаем терминал и пишем:
Код:
Код:
git clone https://github.com/seemoo-lab/mobisys2018_nexmon_software_defined_radio.git
Войдите в созданный подкаталог mobisys2018_nexmon_software_defined_radio и запустите:
Код:
Скопируйте компилированый файл brcmfmac43455-sdio.bin на свой пи
Это конечно не HackRF One но функионал и диапазон поражают , да и собсвенно вы выдели цены на HackRF One? Бюджетным я бы это устройство не назвал. А з нашим любимым микрокомпьютером все намного лучше стоит она дешево а делает очень много полезного)
Саму Raspberry Pi, то ее можно превратить в радиопередатчик и при помощи утилиты rpitx. Она подает сигнал от 5 кГц до 1500 МГц на пины GPIO, к которым можно подключить антенну что усиливает мощность сигнала.
Экспериментируя со всем этим, не забывай, что вещание без лицензии за пределами экранированного помещения чреваты злыми дядями
.
Вот собственно видео: ТЫК
В этой статье мы установили обычный Nexmon в нем уже можно делать много чего интересного например: перехват пакетов, инжект фреймов и еще многое. Но также мы установили Nexmon-SDR и теперь сможем иследовать радиоволны и непосредсвенно влиять на них. Данный материал ексклюзив вы не найдете нигде такой. Соответсвенно я на него поторатил много сил и времени, надеюсь ваши симпатии это компенсируют.
Спасибо за внимание!