Казалось бы, тема безопасности 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 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