martes, 24 de julio de 2012

Instalacion de cuda y pyrit en debian de derivados


En el mundo de GNU/LINUX hay muchas herramientas que utilizan la potencia de la tarjetas graficas para mejorar considerablemente el rendimiento. En este articulo veremos como configurar su entorno para utilizar estas herramientas y tambien para establecer un entorno de desarrollo para hacer sus propias herramientas.

CUDA son las siglas de Compute Unified Device Architecture que hace referencia tanto a un compilador como a un conjunto de herramientas de desarrollo creadas por nVidia que permiten a los programadores usar una variación del lenguaje de programación C para codificar algoritmos en GPUs de nVidia.

Por medio de wrappers se puede usar Python, Fortran y Java en vez de C/C++ y en el futuro también se añadirá FORTRAN, OpenGL y Direct3D.



Funciona en todas las GPUs nVidia de la serie G8X en adelante, incluyendo GeForce, Quadro y la línea Tesla.1nVidia afirma que los programas desarrollados para la serie GeForce 8 también funcionarán sin modificaciones en todas las futuras tarjetas nVidia, gracias a la compatibilidad binaria.

CUDA intenta explotar las ventajas de las GPUs frente a las CPUs de propósito general utilizando el paralelismo que ofrecen sus múltiples núcleos, que permiten el lanzamiento de un altísimo número de hilos simultáneos. Por ello, si una aplicación está diseñada utilizando numerosos hilos que realizan tareas independientes (que es lo que hacen las GPUs al procesar gráficos, su tarea natural), una GPU podrá ofrecer un gran rendimiento en campos que podrían ir desde la biología computacional a la criptografía por ejemplo.

El primer SDK se publicó en febrero de 2007 en un principio para Windows, Linux, y más adelante en su versión 2.0 para Mac OS. Actualmente se ofrece para Windows XP/Vista/7, para Linux 32/64 bits y para Mac OS.

Instalacion de el driver de nvidia.

En mi caso cuento con una tarjeta de de video GeForce GTX550 Ti.




Instalación mediante module-assistant.

Primero asegurarse de tener activada la sección non-free de nuestros repositorios.


vim /etc/apt/sources.list


Luego, instalar los drivers privativos de Nvidia en Debian usando module-assistant es tan sencillo como hacer los siguiente:

# aptitude install module-assistant
# m-a prepare
# m-a a-i nvidia
# m-a a-i nvidia-kernel-source
# aptitude install nvidia-glx
# aptitude install nvidia-settings


Instalacion del kit de herramientas de cuda.

EL kit de herramientas de kuda se encuentra en los repositorios sid de debian.

deb http://mirrors.kernel.org/debian/ experimental main contrib non-free
deb-src http://mirrors.kernel.org/debian/ experimental main contrib non-free

El kit de herramientas contiene el compilador NVCC y todas las bibliotecas necesarias para construir aplicaciones basadas en cualquier GPU de la fuente. El kit de herramientas también se necesita si usted está planeando en el desarrollo de cualquiera de sus propias aplicaciones.

#apt-cache search nvidia-cuda-toolkit
#apt-get install nvidia-cuda-toolkit


Revisar el compilar de NVIDIA.


# which nvcc

/usr/bin/nvcc

# nvcc -V

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2012 NVIDIA Corporation
Built on Thu_Apr__5_00:24:31_PDT_2012
Cuda compilation tools, release 4.2, V0.2.1221

Instalacion de Pyrit


Pyrit allows to create massive databases, pre-computing part of the IEEE 802.11 WPA/WPA2-PSK authentication phase in a space-time-tradeoff. Exploiting the computational power of Many-Core- and other platforms through ATI-Stream, Nvidia CUDA, OpenCL and VIA Padlock, it is currently by far the most powerful attack against one of the world’s most used security-protocols.


WPA/WPA2-PSK is a subset of IEEE 802.11 WPA/WPA2 that skips the complex task of key distribution and client authentication by assigning every participating party the same pre shared key. This master key is derived from a password which the administrating user has to pre-configure e.g. on his laptop and the Access Point. When the laptop creates a connection to the Access Point, a new session key is derived from the master key to encrypt and authenticate following traffic. The “shortcut” of using a single master key instead of per-user keys eases deployment of WPA/WPA2-protected networks for home- and small-office-use at the cost of making the protocol vulnerable to brute-force-attacks against it’s key negotiation phase; it allows to ultimately reveal the password that protects the network. This vulnerability has to be considered exceptionally disastrous as the protocol allows much of the key derivation to be pre-computed, making simple brute-force-attacks even more alluring to the attacker. For more background see this article on the project’s blog.


The author does not encourage or support using Pyrit for the infringement of peoples’ communication-privacy. The exploration and realization of the technology discussed here motivate as a purpose of their own; this is documented by the open development, strictly sourcecode-based distribution and ‘copyleft’-licensing.


Pyrit is free software – free as in freedom. Everyone can inspect, copy or modify it and share derived work under the GNU General Public License v3+. It compiles and executes on a wide variety of platforms including FreeBSD, MacOS X and Linux as operation-system and x86-, alpha-, arm-, hppa-, mips-, powerpc-, s390 and sparc-processors.


Attacking WPA/WPA2 by brute-force boils down to to computing Pairwise Master Keys as fast as possible. Every Pairwise Master Key is ‘worth’ exactly one megabyte of data getting pushed through PBKDF2-HMAC-SHA1. In turn, computing 10.000 PMKs per second is equivalent to hashing 9,8 gigabyte of data with SHA1 in one second. The following graph shows various performance numbers measured on platforms supported by Pyrit.


Paquetes necesarios antes de instalar pyrit.



# apt-get install libssl-dev
# apt-get install scapy
# apt-get install python-dev



Pyrit via SVN



# svn checkout http://pyrit.googlecode.com/svn/trunk/ pyrit


Compilar e instalar 

# cd pyrit_svn/cpyrit_cuda

# python setup.py build

# python setup.py install

Podemos comprobar si la GPU esta siendo reconocida por pyrit con el siguiente comando


#pyrit list_cores




Podemos hacer una pruebas a nuestra GPU con


#pyrit benckmark


Para saber que tarjeta de video soportan cuda aca una lista
Referencias:

http://www.nvidia.es/object/cuda_gpus_es.html

http://es.wikipedia.org/wiki/CUDA

http://code.google.com/p/pyrit/

http://pyrit.wordpress.com/

Algun texto tomado de mi antiguo blog www.altovoltaje.org

Saludos




1 comentario:

  1. una consulta, todo me instala correctamente ,
    al ejecutar list_cores: me muestra esto.
    todo bien, quisiera saber como hago para que "'CUDA-Device #1 'GeForce 410''" me muestre en los 3 núcleos restantes?

    #1: 'CUDA-Device #1 'GeForce 210''
    #2: 'CPU-Core (SSE2)'
    #3: 'CPU-Core (SSE2)'
    #4: 'CPU-Core (SSE2)'

    GRACIAS...

    ResponderEliminar