Как увеличить мощность (TX Power) Wi-Fi карты в Kali Linux и BlackArch в 2017

В разных странах разное законодательство и технические нормативы, в том числе в отношении Wi-Fi. В некоторых странах не разрешено использовать частоты некоторых Wi-Fi каналов (например, в США нельзя использовать каналы 12, 13 и 14). В большинстве стран установлено ограничение на мощность Wi-Fi сигнала в 20.0 dBm. Но есть страны в которых стоит ограничение в 30.0 dBm. Можно воспользоваться этой лазейкой (заставить думать Wi-Fi карту, что она в стране где разрешено 30.0 dBm) и поднять её мощность (TX Power) до значения в 30.0 dBm.

Для Wi-Fi устройств есть такое понятие как управляющий домен (regulatory domain или "regdomain") – именно в этом параметре указана страна, в котором, как предполагается, работает данное устройство. Также имеется сопутствующая база данных, в которой для каждой страны прописаны разрешённые частоты и разрешённая для них мощность.

Алгоритм следующий:

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

По идее, описанный метод должен работать для многих беспроводных карт, но на практике встречаются следующие ограничения:

  • физическая неспособность карт работать на мощностях более 20.0 dBm (например, беспроводной интерфейс изначально показывает мощность 15.0 dBm при разрешённых 20.0 dBm – в таком случае никаким способом не удастся поднять мощность выше 15.0 dBm, хотя бы даже до тех же самых 20.0 dBm);
  • особенности драйверов, например, некоторые драйверы игнорируют системные настройки. Это не является неразрешимой проблемой – но для каждой модели нужен свой подход (обычно, требуется небольшой патч для драйвера).

Посмотреть, что вам разрешено прямо сейчас и на что способен ваш беспроводной адаптер можно командой:

sudo iw list

Например, для России разрешены следующие частоты и мощность:

Оказывается, каналы с 100 по 128 не разрешается использовать, а для каналов с 132 по 165 разрешена повышенная мощность.

Полную актуальную базу в текстовом виде можно посмотреть здесь.

Странами, в которых разрешены каналы с 1 по 13 на мощности 30.0 dBm являются (к примеру):

  • BZ
  • GY
  • NZ
  • VE

Обратите внимание, что для каналов на 5 ГГц у них разные значения (разный список разрешённых частот и мощностей).

Далее я покажу поднятие мощности на примере Alfa AWUS052NH в Kali Linux. В старых инструкциях указывается на необходимость установить дополнительные пакеты – в настоящее время это не нужно. Всё необходимое в Kali Linux уже имеется! Подробности для BlackArch/Arch Linux ниже.

Останавливаем службы, которые могут нам помещать (это необязательно, должно работать и с ними):

sudo systemctl stop NetworkManager
sudo airmon-ng check kill

Чтобы узнать, настройки какого региона действуют в данный момент выполните команду:

sudo iw reg get

Строка country 00 говорит о том, что у меня не установлено какое-либо значение и применяются стандартные настройки.

Теперь устанавливаем управляющий домен на значение BZ:

sudo iw reg set BZ

Сразу можно проверить, принялись ли настройки:

sudo iw reg get

Заодно на новые возможности можно посмотреть командой:

sudo iw list

Если на данном этапе настройки управляющего замена не применились (не установились) на системном уровне, то не получится повысить мощность Wi-Fi адаптера, пока вы не разберётесь с причиной этого.

Посмотреть имя беспроводного интерфейса и его текущее состояние можно командой:

sudo iw dev

Далее увеличиваем мощность (замените wlan0 на имя вашего беспроводного интерфейса):

sudo ip link set wlan0 down
sudo iw dev wlan0 set txpower fixed 30mBm
# sudo iw wlan0 set monitor control # если нужно, переводим в режим монитора
sudo ip link set wlan0 up

Проверяем:

sudo iw dev

Строка txpower 30.00 dBm говорит о том, что у нас всё получилось.

Усиление мощности для Alfa AWUS036NHA

Для AWUS036NHA эти же команды не имеют эффекта.

Объяснение можно найти здесь:

«За назначение свойств каналам отвечает regulatory domain, который зависит от страны. Данные берутся из базы данных в юзерспейсе при помощи утилиты crda. По идее сменить страну можно командой «iw reg set $КОД_СТРАНЫ», но в случае с устройствами от atheros из коробки этот метод не работает, так как у атеросов regulatory domain зашит в EEPROM и линуксовый драйвер читает именно его, игнорируя настойки системы. К счастью, у нас тут opensource и мы можем наложить несложный патч:»

Т.е. это тот самый случай, когда драйвер игнорирует системные настройки и использует значение, зашитое производителем на аппаратном уровне. Проблема, в принципе, решаема, причём несколькими различными методами.

Если у вас Alfa AWUS036NHA или любая другая, которая игнорирует системные настройки regulatory domain, то это не повод впадать в отчаянье.

Вы обратили внимание, что база данных, из которых берутся данные, представляет собой обычный текстовый файл? По идее, сразу должна возникнуть мысль, можно ли подправить его под нужную страну? Можно!

Начнём с того, что проверим, для какой страны произведена ваша беспроводная карта:

sudo iw reg get

В моём случае строка country GB говорит о том, что карта произведена для страны, которая в базе данных названа GB.

Мой метод отличается от других инструкций, где вручную устанавливаются пакеты wireless-regdb и crda. Эти пакеты уже должны быть установлены в вашей системе (в Kali Linux есть по умолчанию). Единственное что мы сделаем – заменим файл базы данных.

Клонируем исходные файлы:

git clone git://git.kernel.org/pub/scm/linux/kernel/git/sforshee/wireless-regdb.git
cd wireless-regdb/

Теперь нам нужно отредактировать текстовый файл базы данных:

gedit db.txt

В нём найдите строку country 00 и пропишите для неё что-то вроде (можете подправить под свой вкус):

	(2402 - 2482 @ 40), (30)
	(5170 - 5835 @ 80), (30)
	(57000 - 66000 @ 2160), (40)

Эти же строки впишите для country GB:

Сохраните и закройте файл.

Выполните команду:

make

В результате из текстового файла был создан бинарный файл БД (regulatory.bin) которым мы подменим одноимённый файл в системе.

Удаляем исходный файл базы данных:

sudo rm /lib/crda/regulatory.bin

Копируем нашу модифицированную БД:

sudo cp regulatory.bin /lib/crda/regulatory.bin

Копируем необходимый публичный ключ (файл БД подписан сгенерированным специально для нашего пользователя ключом):

sudo cp $USER.key.pub.pem /lib/crda/pubkeys/

Перезагрузите компьютер.

Теперь НЕ нужно использовать sudo iw reg set BZ.

Убедимся в этом:

sudo iw reg get

Строки

country GB: DFS-ETSI
	(2402 - 2482 @ 40), (N/A, 30), (N/A)

говорят о возможности увеличить мощность до 30 dBm.

Пробуем:

sudo ip link set wlan0 down
sudo iw dev wlan0 set txpower fixed 30mBm
# sudo iw wlan0 set monitor control # если нужно, переводим в режим монитора
sudo ip link set wlan0 up

Результат:

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

Повышение можности Wi-Fi адаптера в BlackArch / Arch Linux

Все вышеприведённые команды работают и в BlackArch / Arch Linux. Но необходимо установить пару дополнительных пакетов:

sudo pacman -S crda wireless-regdb

В файле /etc/conf.d/wireless-regdom можно разкомментировать строку с соответствующей страной, чтобы значение устанавливалось при загрузке системы.

Также в BlackArch / Arch Linux другое имя беспроводных интерфейсов – замените их в командах на правильные.

В BlackArch / Arch Linux при генерации бинарного файла БД возникнет ошибка

openssl rsa -in ~/.wireless-regdb-mial.key.priv.pem -out mial.key.pub.pem -pubout -outform PEM
writing RSA key
Generating regulatory.bin digitally signed by mial...
./db2bin.py regulatory.bin db.txt ~/.wireless-regdb-mial.key.priv.pem
  File "./db2bin.py", line 13
    print 'Usage: %s output-file input-file [key-file]' % sys.argv[0]
                                                      ^
SyntaxError: Missing parentheses in call to 'print'
make: *** [Makefile:58: regulatory.bin] Ошибка 1

Она связана с тем, что по умолчанию Arch Linux использует Python 3, а не Python 2. Для решения проблемы откройте файл Makefile:

gedit Makefile

И замените в нём строку

./db2bin.py regulatory.bin db.txt $(REGDB_PRIVKEY)

на

python2 ./db2bin.py regulatory.bin db.txt $(REGDB_PRIVKEY)

Заключение

Увеличение мощности Wi-Fi адаптера бесспорно полезно только при глушении Wi-Fi, а также в атаках деаутентификации. Во всех остальных атаках увеличение мощности совсем не обязательно что-то изменит, поскольку мощность влияет на то, как громко «кричит» ваш Wi-Fi адаптер, но не увеличивает его чувствительность (как хорошо он «слышит» других).

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

Рекомендуемые статьи:

13 комментариев на Как увеличить мощность (TX Power) Wi-Fi карты в Kali Linux и BlackArch в 2017

  1. Денис:

    Алексей спасибо за статью,но насчет патча не совсем понял,то есть его  нужно применять в самой системе или его нужно зашить в само устройство? или на AWUS036NHA  физически невозможно увеличивать мощность?

    • Alexey Alexey:

      Судя по этой инструкции, AWUS036NHA должна вытягивать 30.0 dBm (хотя я не смог найти в спецификации её «output power»).

      По поводу патча – по ссылке патчиться драйвер беспроводной карты (модуль ядра). Но там для другой модели – привёл в качестве хорошего объяснения проблемы и примера решения.

      Ещё один пример (проблема решается для карт на драйвере ath5k) здесь.

      Кстати, в инструкции по ссылке https://dscallday96.wordpress.com/2013/08/14/maximizing-the-tx-power-of-alfa-awus036nha/ используется другой подход – редактируется база данных со спецификациями стран. По идее, это намного проще, чем искать исправление для драйвера – сейчас попробую и, если получится, дополню инструкцию.

    • Alexey Alexey:

      Получилось и для AWUS036NHA! Для неё использовался другой метод - патч БД. Дополнил эту инструкцию.

      • Денис:

        Алексей спасибо,Вы гений! )) обязательно попробую данный метод когда куплю себе эту карту,Еще раз спасибо Вам за Вашу работу.

  2. Денис:

    тестовый коммент,что то не мог написать вчера.

  3. Денис:

    Добрый день Алексей,решил я вчера попробовать данную инструкцию на своем TP-Link 722N ,сделал все по порядку как вы описали,и Вы знаете,действительно  получилось,вот посмотрите скриншот

    , но не знаю,что то я сомневаюсь что данный адаптер может работать на такой мощности,может это только визуально он так показывает 30 dBm ,Вы как думаете? 

    И еще хотел спросить насчет вот этой команды-

    sudo iw dev wlan0 set txpower fixed 30mBm

    слово fixed означает что при  каждом подключении адаптера он всегда будет работать на мощности в 30 dBm ?

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

    • Alexey Alexey:

      Комментарий попал в спам, думаю, из-за ссылки на хостинг картинок. Здесь на сайте вы можете прикрепить картинку к вашему сообщению (под кнопкой «Отправить комментарий») – лучше пользуйтесь ей, чем хостингами картинок.

      В характеристиках в интернете про TP-Link 722N я нашёл:

      Output power (before antenna): 17.8 dBm peak (т.е. на пике до 17.8)

      В другом месте:

      EIRP (Мощность беспроводного сигнала): < 20 дБм или < 100 мВт

      Т.е. получается, что действительно он не может.

      Думаю, с USB тестером можно было бы сказать более точно – у меня есть тестер, но нет TP-Link 722N.

      В команде слово fixed означает фиксированную величину. Действие этой команды можно изменить другой аналогичной командой, также действие прекратиться после перезагрузки ОС.

      • Денис:

        у меня после этой команды даже после перезагрузки как только подключал адаптер  и в терминале набирал sudo iw dev  мощность сразу была на 30 dBm, не знаю почему так.

  4. Александр:

    Спасибо! мне не помогло)))

    • Alexey Alexey:

      У вас тот случай, когда изначально показывает менее 20. Кстати, команда sudo iw reg set BZ не попала в скриншот или вы её не вводили (хотя, как уже сказал, для данной беспроводной карты это неважно)?

       

  5. Александр:

    через sudo iw reg set BZ тоже самое

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

Ваш e-mail не будет опубликован.