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

в 11:44, , рубрики: Fedora, GalliumCompute, open source, opencl, wifi, Беспроводные технологии

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

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

image

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

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

1. Acer E1-572G
CPU: Intel Core i5-4200U (with AES)
GPU: AMD Radeon HD 8750m
RAM: 8 GB DDR-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 DDR-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',
                 <b>'/usr/include/CL'</b>):
...

Устанавливаем 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 градусов.

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

Автор: Tihon_V

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js