День добрый
Вот у вас есть малинка и вы не знаете что еще можно з ней сотворить? Выход есть благоларя кастомной прошивке можно получить неплохой 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)
ровные руки
Обновляемся на самой малинке:
Перезагружаем устройство:
Мы можем проверить версию ядра, pвыполнив команду ниже:
Этой командой вы должны получить что-то вроде «4.14.98-v7 +». Пока вы используете версию ядра, которая начинается с «4.9», «4.14» или «4.19», то все хорошо и вы сможете установить Nexmon
На малинке нам нужен полный доступ для выполнения дальшейших действий
рутимся:
Теперь, когда мы взаимодействуем как суперпользователь, нам нужно будет установить все пакеты, необходимые для компиляции патчей ядра Nexmon.
Теперь клонируем репозиторий:
Теперь, когда у нас есть код Nexmon, клонированный на Raspberry Pi, нам нужно перейти к компиляции двух необходимых библиотек.
Перед тем, как скомпилировать и установить эти библиотеки, мы должны убедиться, что вы все еще работаете как пользователь «root». В командной строке вы должны увидеть текст «root@raspberrypi», а не «pi@raspberrypi»
Чтобы продолжить, нам нужно проверить, доступна ли нам необходимая библиотека. Для этого мы можем просто запустить команду «stat» ниже, чтобы увидеть, существует ли файл:
Если эта команда возвращает текст, показанный ниже, вам нужно выполнить некоторые команды а если текст без ошибок то вы можете идти дальше):
stat: cannot stat '/usr/lib/arm-linux-gnueabihf/libisl.so.10': No such file or directory
пишем:
Наш следующий шаг - проверить, работает ли библиотека libmpfr.so.4, выполнив следующую команду:
Если вы получили следующее сообщение, вам нужно будет выполнить следущие команды:
stat: cannot stat '/usr/lib/arm-linux-gnueabihf/libmpfr.so.4': No such file or directory
Теперь, когда две библиотеки, которые нам нужны, установлены и доступны на нашем Raspberry Pi, мы можем приступить к компиляции.
Для начала нам нужно использовать команду «source» и файл «source_env.sh».
Файл «source_env.sh» настроит текущий сеанс bash с переменными среды, которые ожидает make-файл Nexmon:
Теперь, когда сеанс bash настроен правильно, давайте запустим команду «make» в корневом каталоге исходного кода nexmon.
Эта команда сгенерирует все необходимые файлы, необходимые для исправления различных версий ядра:
Здесь все немного сложнее. Есть две разные папки, в которые вам нужно будет перейти в зависимости от того, какая у вас версия Raspberry Pi.
Эти папки содержат патчи для текущей версии чипа Broadcom на нашем Raspberry Pi.
Raspberry Pi 3 / Raspberry Pi Zero W
Raspberry Pi 3+
Также для Raspberry Pi 3+ вам нужно будет запустить следующие две команды, находясь в этом каталоге из-за проблемы в make-файле. Это исправление было предоставлено WiredLife с GitHub, вы можете найти больше об этой проблеме ТУТ
Вот собственно команды:
Теперь, когда мы находимся в правильном каталоге, мы можем продолжить и запустить make-файл с помощью команды make.
Выполнение команды make сгенерирует исправленные версии прошивки
Теперь, когда созданы скомпилированные версии исправленной прошивки, давайте продолжим и сделаем резервную копию текущей прошивки, выполнив команду ниже:
Теперь давайте установим прошивку, выполнив следующую команду.
Эта команда заменит текущую прошивку. Однако нам нужно будет внести другие изменения, чтобы драйвер правильно загружался при загрузке:
Последнее, что нам нужно сделать, это скомпилировать и установить служебную программу Nexmon.
Для этого мы должны сначала перейти в каталог nexutil:
Теперь, когда мы находимся в правильном каталоге, мы можем приступить к компиляции утилиты и установить ее в нашу операционную систему Raspbian:
В этом разделе нам нужно будет отметить версию ядра, которое мы в настоящее время используем, поскольку существуют различные версии драйвера brcmfmac, которые мы можем использовать.
Выполните следующую команду, чтобы получить версию ядра и запомнить первые два числа:
Теперь, когда мы знаем версию ядра, нам нужно найти путь к драйверу по умолчанию.
Мы можем получить информацию о драйвере, используя команду «modinfo»:
Используя эту команду, вы можете получить каталог, в котором находится драйвер, и он должен быть первой записью в списке.
Ниже показано расположение, созданное для нашей системы. Обратите внимание, что мы также удалили файл «brcmfac.ko» из имени каталога.
Запишите это, так как каталог нам понадобится для следующих нескольких шагов:
Имея каталог в руках, мы можем начать процесс замены драйвера brcmfac, чтобы наша модифицированная версия с патчами Nexmon загружалась при загрузке.
Перед заменой драйвера мы должны сделать резервную копию оригинала на случай, если вы когда-нибудь захотите вернуться к драйверу по умолчанию.
Давайте сделаем резервную копию драйвера, выполнив следующую команду. Убедитесь, что вы заменили <kerneldirectory> на каталог, который мы нашли
Теперь, когда мы сделали резервную копию драйвера по умолчанию, мы можем приступить к замене драйвера нашим новым.
Убедитесь, что вы используете правильную команду для используемой версии ядра. Существуют две разные команды в зависимости от того, используете ли вы версию ядра «4.9» или «4.14».
Кроме того, убедитесь, что вы выбрали правильный каталог для версии Pi, которую вы используете.
Как и в предыдущем шаге, убедитесь, что вы заменили <kerneldirectory> на каталог, который вы получили ранее:
Kernel Version 4.9
Raspberry Pi 3 / Raspberry Pi Zero W
Raspberry Pi 3+
Kernel Version 4.14
Raspberry Pi 3 / Raspberry Pi Zero W
Raspberry Pi 3+
Kernel Version 4.19
Raspberry Pi 3 / Raspberry Pi Zero W
Raspberry Pi 3+
После того, как вы скопировали заменяющий драйвер, исправленный с помощью Nexmon, нам нужно выполнить следующую команду.
Эта команда будет использовать утилиту depmod для воссоздания списка модулей. Это обеспечит загрузку нашего модифицированного драйвера:
После этого перезагрузите Raspberry Pi, используя следующую команду:
Один из способов проверить, работает ли исправление должным образом, - это проверить, есть ли «монитор» в списке поддерживаемых интерфейсов.
Вы можете сделать это, сначала получив физический идентификатор интерфейса wlan, используя команду ниже:
Запишите физический номер вашего интерфейса wlan0, в нашем случае это был «phy # 0»
Теперь доступен физический идентификатор. Выполните следующую команду, чтобы получить всю информацию об этом устройстве.
Убедитесь, что вы заменили phy0 на правильный для вашего интерфейса wlan0
Эта команда сбросит массу информации о вашем беспроводном интерфейсе. Однако есть только один раздел, который мы хотим исследовать.
Этот раздел является разделом «Supported interfaces modes:». Здесь вы хотите увидеть, есть ли «*monitor».
Если текст присутствует, это означает, что исправления прошивки Nexmon работают должным образом и позволили беспроводной сети Raspberry Pi перейти в режим монитора.
Теперь установим Nexmon-SDR (работает только на 3 малинке модели B+)
Копируем репозиторий:
Перейдите в ранее клонированный каталог nexmon и запустите:
Компилируем:
Переходим клонированый репозиторий и ищем в нем папку "utilities", нашли? Отлично пишите:
Опять переходим в главную директорию nexmon и ищем теперь папку "patches" в ней "bcm43455c0" а уже в ней "7_45_154"
В последней папке запускаем терминал и пишем:
Войдите в созданный подкаталог mobisys2018_nexmon_software_defined_radio и запустите:
Скопируйте компилированый файл brcmfmac43455-sdio.bin на свой пи
Это конечно не HackRF One но функионал и диапазон поражают , да и собсвенно вы выдели цены на HackRF One? Бюджетным я бы это устройство не назвал. А з нашим любимым микрокомпьютером все намного лучше стоит она дешево а делает очень много полезного)
Саму Raspberry Pi, то ее можно превратить в радиопередатчик и при помощи утилиты rpitx. Она подает сигнал от 5 кГц до 1500 МГц на пины GPIO, к которым можно подключить антенну что усиливает мощность сигнала.
Экспериментируя со всем этим, не забывай, что вещание без лицензии за пределами экранированного помещения чреваты злыми дядями
.
Вот собственно видео: ТЫК
В этой статье мы установили обычный Nexmon в нем уже можно делать много чего интересного например: перехват пакетов, инжект фреймов и еще многое. Но также мы установили Nexmon-SDR и теперь сможем иследовать радиоволны и непосредсвенно влиять на них. Данный материал ексклюзив вы не найдете нигде такой. Соответсвенно я на него поторатил много сил и времени, надеюсь ваши симпатии это компенсируют.
Спасибо за внимание!
Вот у вас есть малинка и вы не знаете что еще можно з ней сотворить? Выход есть благоларя кастомной прошивке можно получить неплохой 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
Код:
sudo reboot
Код:
uname -r
На малинке нам нужен полный доступ для выполнения дальшейших действий
рутимся:
Код:
sudo su
Код:
apt install git libgmp3-dev gawk qpdf bison flex make raspberrypi-kernel-headers
Код:
git clone https://github.com/seemoo-lab/nexmon.git
Перед тем, как скомпилировать и установить эти библиотеки, мы должны убедиться, что вы все еще работаете как пользователь «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
Код:
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
Для начала нам нужно использовать команду «source» и файл «source_env.sh».
Файл «source_env.sh» настроит текущий сеанс bash с переменными среды, которые ожидает make-файл Nexmon:
Код:
cd /home/pi/nexmon
source setup_env.sh
Эта команда сгенерирует все необходимые файлы, необходимые для исправления различных версий ядра:
Код:
make
Эти папки содержат патчи для текущей версии чипа Broadcom на нашем Raspberry Pi.
Raspberry Pi 3 / Raspberry Pi Zero W
Код:
cd /home/pi/nexmon/patches/bcm43430a1/7_45_41_46/nexmon/
Код:
cd /home/pi/nexmon/patches/bcm43455c0/7_45_154/nexmon/
Вот собственно команды:
Код:
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 backup-firmware
Эта команда заменит текущую прошивку. Однако нам нужно будет внести другие изменения, чтобы драйвер правильно загружался при загрузке:
Код:
make install-firmware
Для этого мы должны сначала перейти в каталог nexutil:
Код:
cd /home/pi/nexmon/utilities/nexutil
Код:
make
make install
Выполните следующую команду, чтобы получить версию ядра и запомнить первые два числа:
Код:
uname -r
Мы можем получить информацию о драйвере, используя команду «modinfo»:
Код:
modinfo brcmfmac
Ниже показано расположение, созданное для нашей системы. Обратите внимание, что мы также удалили файл «brcmfac.ko» из имени каталога.
Запишите это, так как каталог нам понадобится для следующих нескольких шагов:
Код:
filename: /lib/modules/4.14.98-v7+/kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/
Имея каталог в руках, мы можем начать процесс замены драйвера brcmfac, чтобы наша модифицированная версия с патчами Nexmon загружалась при загрузке.
Перед заменой драйвера мы должны сделать резервную копию оригинала на случай, если вы когда-нибудь захотите вернуться к драйверу по умолчанию.
Давайте сделаем резервную копию драйвера, выполнив следующую команду. Убедитесь, что вы заменили <kerneldirectory> на каталог, который мы нашли
Код:
mv <kerneldirectory>/brcmfmac.ko <kerneldirectory>/brcmfmac.ko.orig
Убедитесь, что вы используете правильную команду для используемой версии ядра. Существуют две разные команды в зависимости от того, используете ли вы версию ядра «4.9» или «4.14».
Кроме того, убедитесь, что вы выбрали правильный каталог для версии Pi, которую вы используете.
Как и в предыдущем шаге, убедитесь, что вы заменили <kerneldirectory> на каталог, который вы получили ранее:
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 <kerneldirectory>/
Код:
cp /home/pi/nexmon/patches/bcm43455c0/7_45_154/nexmon/brcmfmac_4.9.y-nexmon/brcmfmac.ko <kerneldirectory>/
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 <kerneldirectory>/
Код:
cp /home/pi/nexmon/patches/bcm43455c0/7_45_154/nexmon/brcmfmac_4.14.y-nexmon/brcmfmac.ko <kerneldirectory>/
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 <kerneldirectory>/
Код:
cp /home/pi/nexmon/patches/bcm43455c0/7_45_154/nexmon/brcmfmac_4.19.y-nexmon/brcmfmac.ko <kerneldirectory>/
Эта команда будет использовать утилиту depmod для воссоздания списка модулей. Это обеспечит загрузку нашего модифицированного драйвера:
Код:
depmod -a
Код:
sudo reboot
Вы можете сделать это, сначала получив физический идентификатор интерфейса wlan, используя команду ниже:
Код:
iw dev
Теперь доступен физический идентификатор. Выполните следующую команду, чтобы получить всю информацию об этом устройстве.
Убедитесь, что вы заменили phy0 на правильный для вашего интерфейса wlan0
Код:
iw phy0 info
Этот раздел является разделом «Supported interfaces modes:». Здесь вы хотите увидеть, есть ли «*monitor».
Если текст присутствует, это означает, что исправления прошивки Nexmon работают должным образом и позволили беспроводной сети Raspberry Pi перейти в режим монитора.
Теперь установим Nexmon-SDR (работает только на 3 малинке модели B+)
Копируем репозиторий:
Код:
git clone https://github.com/seemoo-lab/nexmon.git
Код:
source setup_env.sh
Код:
make
Код:
make
В последней папке запускаем терминал и пишем:
Код:
git clone https://github.com/seemoo-lab/mobisys2018_nexmon_software_defined_radio.git
Код:
make
Скопируйте компилированый файл brcmfmac43455-sdio.bin на свой пи
Это конечно не HackRF One но функионал и диапазон поражают , да и собсвенно вы выдели цены на HackRF One? Бюджетным я бы это устройство не назвал. А з нашим любимым микрокомпьютером все намного лучше стоит она дешево а делает очень много полезного)
Саму Raspberry Pi, то ее можно превратить в радиопередатчик и при помощи утилиты rpitx. Она подает сигнал от 5 кГц до 1500 МГц на пины GPIO, к которым можно подключить антенну что усиливает мощность сигнала.
Экспериментируя со всем этим, не забывай, что вещание без лицензии за пределами экранированного помещения чреваты злыми дядями
.
Вот собственно видео: ТЫК
В этой статье мы установили обычный Nexmon в нем уже можно делать много чего интересного например: перехват пакетов, инжект фреймов и еще многое. Но также мы установили Nexmon-SDR и теперь сможем иследовать радиоволны и непосредсвенно влиять на них. Данный материал ексклюзив вы не найдете нигде такой. Соответсвенно я на него поторатил много сил и времени, надеюсь ваши симпатии это компенсируют.
Спасибо за внимание!
Последнее редактирование: