Использование pyrit вместе с GalliumCompute

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

Увы, реализация FGLRX оставляет желать лучшего, поэтому мы будем использовать Gallium.

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

Тестовая конфигурация на момент написания статьи:

1. Acer E1-572G
CPU: Intel Core i5-4200U (with AES)
GPU: AMD Radeon HD 8750m
RAM: 8 GB DDR3-1600
OS: Fedora Workstation 21 (x64_86)

2. Emachines E732ZG
CPU: Intel Core i3 M350 @ 2.27GHz (without AES)
GPU: AMD Radeon HD 5470 Mobility
RAM: 8 GB DDR3-1600
OS: 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 <module 'cpyrit._cpyrit_cpu' from '/usr/lib64/python2.7/site-packages/cpyrit/_cpyrit_cpu.so'> ('0.4.0') and <module 'cpyrit._cpyrit_opencl' from '/usr/lib64/python2.7/site-packages/cpyrit/_cpyrit_opencl.so'> ('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 (C) 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 (C) 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 (C) 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 градусов.

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

ссылка на оригинал статьи http://habrahabr.ru/post/247187/

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

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