Використання pyrit разом з GalliumCompute

Здавалося б, тема безпеки 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
ОПЕРАТИВНОЇ пам'яті: 8 GB DDR-1600
OS: Fedora Workstation 21 (x64_86)

2. Emachines E732ZG
CPU: Intel Core i3 M350 @ 2.27 GHz (without AES)
GPU: AMD Radeon HD 5470 Mobility
ОПЕРАТИВНОЇ пам'яті: 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 ruby-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 © 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 градусів.

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

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.