[Из песочницы] Использование pyrit вместе с GalliumCompute

Казалось бы, тема безопасности WPA/WPA2 сетей уже давно была расписана до мелочей, как при использовании cuda, так и amd-app-sdk, но всегда находишь новый способ извращений.Увы, реализация FGLRX оставляет желать лучшего, поэтому мы будем использовать Gallium.

a7dc40ac0ef44904b742dac6e0b3ef76.png

Когда у доброй половины однокурсников есть ноутбуки Linux с AMD GPU, можно найти легкий способ получить доступ к интренету прогреть аудиторию.Тестовая конфигурация на момент написания статьи:

1. Acer E1–572GCPU: Intel Core i5–4200U (with AES)GPU: AMD Radeon HD 8750mRAM: 8 GB DDR3–1600OS: Fedora Workstation 21 (x64_86)

2. Emachines E732ZGCPU: Intel Core i3 M350 @ 2.27GHz (without AES)GPU: AMD Radeon HD 5470 MobilityRAM: 8 GB DDR3–1600OS: Fedora Workstation 21 (x64_86)

0. Проверим поддерживается ли наш GPUНа freedesktop есть страница с текущим статусом разработки GalliumCompute.Имя граф. ускорителя можно узнать здесь.1. Добавим необходимые для работы пакеты $ sudo -s # yum install @development-tools -y # yum install opencl-headers libclc mesa-libOpenCL mesa-libOpenCL-devel opencl-filesystem ocl-icd ocl-icd-devel openssl-devel libpcap-devel python-devel -y 2. Сборка pyrit В сборке есть один нюанс. В trunk (svn 308) версии была сломана поддержка сети, а в стабильной (v. 0.4.0) не работает GalliumCompute.Решение — собрать cpyrit_opencl из trunk, а стабильный pyrit — поставить из репозитория. # yum install pyrit # svn checkout http://pyrit.googlecode.com/svn/trunk/ pyrit_svn # cd pyrit/cpyrit_opencl Далее необходимо добавить путь к библиотеке openCL в setup.py:53 … for path in ('/usr/local/opencl/OpenCL/common/inc', \ '/opt/opencl/OpenCL/common/inc', \ '/usr/local/opencl/include', \ '/usr/local/cuda/include',\ '/usr/include/CL'): … Устанавливаем pyrit:

# yum install pyrit -y # ./setup.py build # ./setup.py install Теперь каждый раз отображается сообщение об ошибке: /usr/lib64/python2.7/site-packages/cpyrit/cpyrit.py:63: UserWarning: WARNING: Version mismatch between ('0.4.0') and ('0.4.1-dev (svn r308)')

»('%s')\n» % (_cpyrit_cpu, _cpyrit_cpu.VERSION, mod, ver)) Убираем его — в файле /usr/lib64/python2.7/site-packages/cpyrit/cpyrit.py:63 меняем на: def version_check (mod): pass Проверяем:

$ pyrit benchmark Pyrit 0.4.0 © 2008–2011 Lukas Lueg http://pyrit.googlecode.com This code is distributed under the GNU General Public License v3+

Calibrating… WARNING: Linking two modules of different data layouts: '/usr/lib64/clc//oland-r600--.bc' is 'e-p3:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64' whereas 'input.cl' is 'e-p:32:32-p1:64:64-p2:64:64-p3:32:32-p4:64:64-p5:32:32-p24:64:64-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64' Running benchmark (19441.7 PMKs/s)… —

Computed 19441.74 PMKs/s total. #1: 'OpenCL-Device 'AMD OLAND'': 19519.9 PMKs/s (RTT 2.8) #2: 'CPU-Core (SSE2)': 461.9 PMKs/s (RTT 3.5) #3: 'CPU-Core (SSE2)': 511.2 PMKs/s (RTT 2.9) #4: 'CPU-Core (SSE2)': 516.5 PMKs/s (RTT 2.5) 3. Добавляем поддержку сети На серверах создаем с следующим содержимым: default_storage = file:// limit_ncpus = 2 rpc_announce = true rpc_announce_broadcast = false rpc_knownclients = rpc_server = false workunit_size = 75000 limit_ncpus — для лучшей производительности необходимо указать количество физических ядер CPU.На клиенте:

default_storage = file:// limit_ncpus = 0 rpc_announce = true rpc_announce_broadcast = false rpc_knownclients = 192.168.0.100 rpc_server = true workunit_size = 75000 rpc_knownclients — через пробел указываем ip клиентов: rpc_knownclients = 192.168.0.100 192.168.0.101 192.168.0.102 … Также адреса серверов можно указать внося их в ~/.pyrit/hosts … 192.168.1.100 192.168.1.101 … 4. Запускаем pyrit На каждом из серверов: $ pyrit serve Pyrit 0.4.0 © 2008–2011 Lukas Lueg http://pyrit.googlecode.com This code is distributed under the GNU General Public License v3+

Serving 0 active clients; 0 PMKs/s; 0.0 TTS Далее включался hotspot встроенными средствами Fedora.На клиенте:

$ pyrit benchmark Pyrit 0.4.0 © 2008–2011 Lukas Lueg http://pyrit.googlecode.com This code is distributed under the GNU General Public License v3+

Calibrating… WARNING: Linking two modules of different data layouts: '/usr/lib64/clc//oland-r600--.bc' is 'e-p3:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64' whereas 'input.cl' is 'e-p:32:32-p1:64:64-p2:64:64-p3:32:32-p4:64:64-p5:32:32-p24:64:64-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64' Running benchmark (19643.1 PMKs/s)… \

Computed 19643.10 PMKs/s total. #1: 'OpenCL-Device 'AMD OLAND'': 20223.9 PMKs/s (RTT 2.7) #2: 'CPU-Core (SSE2)': 808.2 PMKs/s (RTT 3.0) #3: 'Network-Clients': 2189.6 PMKs/s (RTT 2.3) При практическом применении удавалось получить скорость около 300k~200k PMKs/s и нагреть аудиторию до комфортных 18–20 градусов.

Данный материал публикуется лишь в образовательных целях.

© Habrahabr.ru