Instalar Pyrit con soporte para CUDA y OpenCL

En esta entrada explicamos como instalar pyrit con soporte CUDA y OpenCL
enfocado a tarjetas gráficas NVIDIA y la distribución Debian aunque
deberá funcionar correctamente en otras derivadas como Ubuntu (para AMD
no tenemos GPU con la que probar)

Antes de comenzar tal vez sea buena idea comprobar si tienes soporte
en los paquetes que tienes en tus repositorios para conocer si está
soportado CUDA y/o OpenCL cuando se compiló.
En el caso de no estar disponible entonces si continuar con este
tutorial.

Puedes leer más sobre pyrit en esta entrada:
https://laguialinux.es/pyrit-descifrar-clave-wpa-con-gpu

También puedes ver ejemplos e información de uso en esta entrada:
https://laguialinux.es/pyrit-analizando-y-capturando-handshakes

Pyrit, OpenCL y CUDA

Instalando Pyrit

También disponemos de un vídeo explicando y mostrando estos pasos:

Eliminar

Antes de comenzar, nos aseguramos de no tener instalada ninguna versión
de los repositorios (en los repositorios puede estar sin soporte CUDA y
OpenCL)

Si tenéis instalado pyrit ya lo removemos con las siguientes líneas,
pero con precaución al introducir los comandos y mirar antes de aceptar:


sudo apt purge pyrit

sudo apt purge pyrit-opencl
sudo rm -rf /usr/local/lib/python2.7/dist-packages/pyrit

Si usáis otra distribución deberéis adaptar los paquetes y gestor.

Instalar dependencias para pyrit

Necesitamos una serie de herramientas para instalar y poder usar
correctamente pyrit con cuda

  • git: Para obtener el repositorio
  • python-pycuda: Para acceder con python a cuda
  • libssl: Librerías para ssl

A continuación pongo un ejemplo de la instalación en debian y derivados:

sudo apt install git python2.7-dev mesa-utils libssl-dev zlib1g-dev libpcap-dev python-pycuda python3-pycuda

Instalar dependencias para nvidia cuda

Para nvidia disponemos de CUDA lo cual instalaremos desde repositorios


    sudo apt install nvidia-driver nvidia-cuda-toolkit nvidia-xconfig
    
sudo apt install libegl-nvidia0 libglx-nvidia0 ocl-icd-libopencl1

Una vez instalado el controlador nvidia privativo y cuda reiniciamos:


    reboot

Preparando para compilar pyrit y sus módulos

Entramos al directorio /usr/src y descargamos los sources:


cd /usr/src/

sudo git clone https://github.com/JPaulMora/Pyrit pyrit

Ahora damos grupo a nuestro propio usuario para poder listar directorios
y acceder correctamente a ellos (puedes cambiar a root en su lugar):

yo=$(whoami) && sudo chown -R :$yo pyrit

Editamos el módulo para adaptarlo a la distribución. Primero abrimos
el editor nano o vim:

sudo nano -c /usr/src/pyrit/modules/cpyrit_cuda/setup.py

Modificar en la línea 34:


for path in (‘/usr/local/cuda’, ‘/opt/cuda’):

Por el siguiente contenido:


for path in (‘/usr/local/cuda’,’/usr/lib/nvidia-cuda-toolkit’,’/opt/cuda’):

Modificar línea 88:


nvcc_cmd = NVCC+ bit_flag + ‘ -ccbin clang -Xcompiler “-fPIC” –ptx ./_cpyrit_cudakernel.cu’

Por este contenido:


nvcc_cmd = NVCC + bit_flag + ‘ -ccbin clang-3.8 -Xcompiler “-fPIC” –ptx ./_cpyrit_cudakernel.cu’

Instalar módulo CUDA para pyrit

Ahora entramos al módulo CUDA y lo instalamos:


    cd /usr/src/pyrit/modules/cpyrit_cuda
    
sudo python setup.py clean build install

Instalar módulo OpenCL para pyrit

Ahora instalamos OpenCL si tenemos amd o si lo preferimos a CUDA por
cualquier motivo.


    cd /usr/src/pyrit/modules/cpyrit_opencl
    
sudo python setup.py clean build install

Instalar pyrit


    cd /usr/src/pyrit
    
sudo python setup.py clean build install

Configurar pyrit

En el directorio personal tenemos que establecer las configuraciones
que utilizará pyrit.

Esto se realiza en el archivo config dentro de .pyrit, en este
caso lo configuramos para root ya que para acceder al hardware será él
quien lo haga.

Si damos permisos a otro usuario también lo configuramos en su home.


    sudo nano /root/.pyrit/config

Dentro del archivo de configuración agregamos:


default_storage = file://

limit_ncpus = 1

rpc_announce = true

rpc_announce_broadcast = false

rpc_knownclients =

rpc_server = false

workunit_size = 75000

use_CUDA = true

use_OpenCL = false

Esta configuración la adaptamos a nuestro entorno o preferencias.

Usando solo una CPU se logra más potencia de GPU que con más núcleos.

Comprobar GPU y testear potencia de cómputo con pyrit

Si hemos realizado todos los pasos anteriores ya deberíamos lograr
listar y utilizar todas las gpu que tengamos.

Podemos listar todos los núcleos con esta orden:


    sudo pyrit list_cores

Nos devolvería un resultado similar al siguiente:

Listar gpu pyrit

Si todo está correctamente detectado podemos hacer un benchmark con:


    sudo pyrit benchmark

Devolviendo un resultado parecido a este:

Benchmark con cuda y Pyrit

Ya podemos utilizar nuestra GPU para el cómputo acelerado en toda su potencia:

pyrit y CUDA con nvidia gtx 970

En esta imagen anterior utilizo como ejemplo mi nvidia gtx 970

Además podemos obtener más información de uso aquí

Comenta si tienes algún inconveniente aunque para un soporte más certero puedes recurrir al repositorio oficial y plantear tus problemas directamente a los desarrolladores y comunidad:
https://github.com/JPaulMora/Pyrit

Tenemos esta entrada donde mostramos ejemplos de uso y más información adicional sobre pyrit y trabajar con bases de datos.

Instalar pyrit desde fuentes con soporte para GPU y CUDA o OpenCL

En este vídeo explicamos como instalar pyrit con soporte CUDA y OpenCL enfocado a tarjetas gráficas NVIDIA y la distribución Debian.

Pentesting

Raúl Caro Pastorino

Informático, técnico en sistemas, redes, baja tensión (electricidad) y desarrollador de aplicaciones WEB. Soy un apasionado por GNU/LINUX y el software libre en general desde prácticamente el año 2001-2003 que comencé. Intento usar y trabajar siempre con código libre o abierto de forma profesional. Me apasiona la programación, la micro-electrónica, el diseño gráfico y edición multimedia. Fan de Raspberry y arduino. Programo en bash, python, php y javascript principalmente. Repositorios de código con git: https://gitlab.com/fryntiz https://github.com/fryntiz

5 comentarios:

  1. Muchas gracias me sirvió pero si puedes modificar la línea 34, ya que falta un espacio entre las comas y el ‘

    Dejo aquí como debería ser:
    (‘/usr/local/cuda’, ’/usr/lib/nvidia-cuda-toolkit’, ’/opt/cuda’)

    Saludos

  2. Me dice que el directorio .pyrit no existe.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.