Programación paralela con MPI

por:

Hace algún tiempo empezamos a escribir en Somos Binarios sobre la programación paralela, explicando algunos mecanismos para lograrla y los conceptos básicos.

Un seguidor nos comentó que sería bueno hablar de MPI como máximo exponente de la programación paralela y por ello tenemos este artículo.

Programación paralela de altas prestaciones con MPI

MPI es una biblioteca pensada para la realización de programas altamente paralelizables en una única máquina o en un entorno formado por varias máquinas conectadas a través de una red.

Aunque hay muchas implementaciones de MPI básicamente es usado en programas en C o C++ que son los que realmente explotan al máximo los recursos que tenemos. En nuestro ejemplo vamos a usar C.

Instalando MPI

Lo primero que debemos hacer es instalar esta librería ya que posee un conjunto de funciones propias y para usarlas es necesario utilizar su compilador y su modulo de ejecución.

En Linux lo podemos instalar facilmente con:

 sudo apt-get install libcr-dev mpich2 mpich2-doc 

Si vemos lo que nos instala, podemos comprobar que hay un compilador de c (mpicc), uno de c++ (mpic++) y el módulo de ejecución (mpirun).

Resultado de la instalación de MPI en un ordenador

Leer más

Programacion paralela en C : Semaforos

por:

Te enseñamos a utilizar semaforos para la programación paralela
Uno de los contenidos fundamentales de la programación paralela es la sincronización con semáforos. Este concepto es el que os vamos a explicar en este artículo.

¿Qué es un semáforo?

Por si quedaba alguna duda, no son semáforos de tráfico, es un concepto usado en informática para indicar una estructura con unas características específicas.

Un semáforo es una estructura u objeto que nos va a permitir la sincronización multiproceso o multihilo de nuestro programa. Básicamente se basa en un contador, una función de incrementar el contador y otra de decrementar el contador. El control de acceso se realiza mediante el valor de ese contador, si el contador es negativo el hilo o proceso se suspenderá hasta que ese contador deje de ser negativo, momento en el cual el hilo o proceso empezará a ejecutarse automáticamente.

La implementación de los semáforos varía entre plataformas, por ejemplo en Linux están implementadas a nivel del sistema operativo dentro de los IPCs.

Si estáis más interesados en cómo funciona un semáforo por dentro podéis leer los problemas: problema del barbero y el problema de los filósofos.
Leer más

Programacion paralela en C : Acceso concurrente

por:

Te enseñamos como lidiar con el acceso concurrente en programacion paralela
En la entrada anterior os contaba que había realizado un pequeño truco para que el programa funcionase. Esto es debido al acceso concurrente.

Acceso concurrente

Esto de acceso concurrente a un recurso puede parecer a simple vista algo raro o complejo de entender, así que veámoslo con un ejemplo:
Si por ejemplo tenemos dos teléfonos fijos en casa, que los llamaremos A y B en la mayoría de los casos solo uno de los dos puede utilizar la línea para hablar. Así si A y B se ponen a llamar a la vez seguramente ocurrirá que se entrecruzan las conversaciones y hay interferencias entre las mismas. Por ello si A está llamando B tiene que esperar a que A acabe de usar la línea para luego utilizarla él.

Recursos y usuarios

Normalmente se suele utilizar estas dos palabras como terminología básica en el acceso concurrente:

  • Recursos: son los elementos, dispositivos o datos a los que se quiere acceder.
  • Usuarios: son las personas, programas o cualquier otro sistema que necesita acceder a un recurso.

Leer más

Programacion paralela en C : Memoria compartida

por:

Utilizando memoria compartida para la programacion paralela
Si el otro día hablábamos de los inicios en programación paralela, hoy os vengo a hablar del paso de datos cuando realizamos un programa con varios procesos. Como repaso del otro día podemos decir que hay dos tipos de intercambio de datos, memoria compartida ( todos acceden a la misma posición de memoria) y paso de mensajes (se envía los datos a un proceso en concreto).

¿Qué es la memoria compartida?

Cuando nosotros creamos un proceso, se reserva una zona de memoria con acceso exclusivo para nuestro proceso, de tal manera que si otro proceso quiere acceder a esta zona de memoria, generalmente nos dará un error. El error suele aparecer con cierta frecuencia cuando no manejamos bien los punteros en C y es el famoso segmentation fault.
Leer más

Programacion paralela en C : Inicio

por:

Los inicios de la programacion paralela en C para Linux

En esta serie de entradas que hoy empezamos, nos vamos a enfocar en la programación de sucesos paralelos en C. Este tipo de programación implica conocer una serie de conceptos especiales y saber cómo funcionan como los semáforos.

Programación paralela

La decisión de utilizar programación paralela parte de la base de que muchas veces queremos agilizar nuestros cálculos y para ello queremos usar todo el potencial de nuestra CPU. Actualmente seguramente muchos tendremos una CPU con varios núcleos, así que por qué no utilizarlos todos para agilizar los cálculos. Por ejemplo si queremos sumar (por fuerza bruta) el primer millón de números, tardaremos menos si distribuimos la carga entre varios núcleos que si hay que realizarlo todo de manera secuencial.

Conceptos de programación paralela

Básicamente hay dos maneras de realizar la programación paralela, mediante hilos o mediante procesos:

  • Todos los hilos comparten los recursos, es decir si nosotros cambiamos con un hilo el valor de una posición de memoria, ese valor nuevo lo tendrán el resto de hilos.
  • Todos los procesos realizan una copia de los recursos del proceso padre, especialmente de su memoria y sus variables. En este caso un valor que cambiemos en un proceso no tiene repercusión en otro proceso, son entornos totalmente aislados.

Leer más

Cómo recuperar archivos borrados en WhatsApp

por:

Ya estamos aquí de nuevo, tratando de encontrar nuevos usos prácticos a distintas aplicaciones comunes que empleamos a diario. Ya sabéis que, desde este rincón de Somos Binarios (el destinado al Hacking y a la Seguridad) buscamos fomentar el pensamiento paralelo como manera de entender la tecnología.

En su día ya aplicamos esta forma de repensar la informática cuando se trataba de Whatsapp y publicamos un post en el que avisábamos de los usos ilegítimos que, con extrema sencillez, se le podían dar a la versión web de Whatsapp. Aquí tienes aquel artículo concreto que seguimos considerando recomendable repasar.

Sin embargo hoy nos centraremos en una función bastante desconocida y “paralela” que nos ofrece WhatsappWeb (es decir, la sincronización y utilización de tu Whatsapp, pero desde el ordenador), y que nos ayudaría a recuperar fotografías, vídeos y demás archivos adjuntos recientes que hayamos eliminado de nuestro teléfono móvil de manera permanente y que ya no podemos recuperar desde nuestro terminal.

Hemos comprobado esta función de Whatsapp empleando para ello varios programas de eliminación de archivos enviados o recibidos por Whatsapp de nuestro terminal móvil, con el fin de asegurarnos de que no quedaba ni rastro de ellos en nuestro teléfono.Y, posteriormente, hemos podido recuperar con éxito esos archivos sincronizando nuestro terminal con WhatssapWeb para volverlos a encontrar ahí.

Leer más

Lo que no permitirías en tu vida real y admites en la digital

por:

Hoy nos centraremos en el aspecto social de nuestra forma de relacionarnos con la tecnología y el modo en que hemos admitido no pocas prácticas en nuestra vida digital (el modo en que usamos y nos desempeñamos día a día con la informática, las comunicaciones y la Red) y que consideraríamos invasivas, ilegítimas y lesivas si se tratara de cualquier otra área de nuestras vidas.

Quizá así, poniendo de manifiesto esta contradicción en sí misma, dentro de nuestros comportamientos digital y analógico, comprendamos un poco mejor los riesgos en los que incurrimos o en los que nos ponemos a nosotros mismos de manera constante y recurrente. Y es que nunca dejará de asombrarme el modo en que aceptamos en Internet, el uso de nuestros teléfonos móviles o el uso de las redes sociales, comportamientos que bajo ningún concepto permitiríamos ni llevaríamos a cabo con desconocidos en nuestras relaciones interpersonales, en nuestro trabajo o en nuestras comunicaciones NO digitales.

La privacidad… el primer gran error

Si hemos de comenzar con estas contradicciones, sin duda, la privacidad de nuestras comunicaciones e información personal se encuentran en los primeros puestos. No es sólo que regalemos en Redes Sociales de toda índole (con Facebook y Twitter a la cabeza), nuestra ubicación, usos, costumbres y datos íntimos, sino que, además, lo hacemos creyendo que es socialmente atractivo o que es “cool“.

A cualquiera de nosotros se nos llenaría la boca afirmando “¿Quién crees que eres para que yo te de explicaciones de con quién entro, con quien salgo o a dónde voy..?.” si un individuo quisiera saber más de la cuenta sobre nuestras amistades o costumbres. Sin embargo, y sin que nadie nos pregunte nada, colgamos toda esta información personal, con fotografías o vídeos ilustrativos, en nuestro muro de Facebook a cada paso, para que se entere, no un curioso o dos, sino decenas de personas (muchas de ellas desconocidas).

Jamás permitiríamos que un extraño tomara fotografías del día a día de nuestros hijos (y mucho menos si son menores de edad)… Pero no tenemos el menor rubor en hacerlas, compartirlas e incluso etiquetarlas nosotros mismos en Facebook o Twitter, o subir el vídeo gracioso del niño a Youtube como si ahí fuera no hubiera desconocidos o desaprensivos…

Leer más

Qué es ZeroNet : El nuevo Internet P2P

por:

Cuando hablamos del “otro internet” automáticamente nos viene a la mente la Deep Web, esa otra Red de redes más clandestina y opaca de lo que podemos imaginar y que escapa a la indexación de los navegadores convencionales. Pero ahora no sólo la Deep Web puede ser denominada “la otra internet” porque está surgiendo un nuevo modelo de Red que cubre no pocas de las carencias y necesidades relativas a seguridad, anonimato y encriptación que nada tiene que ver con la internet profunda.

Se llama ZeroNet y su modelo de desarrollo, implementación y crecimiento es, desde mi punto de vista, más que interesante. ZeroNet es un nuevo modelo de Internet basado en el protocolo P2P y cuya característica más destacable es el cifrado de los datos.

Características de ZeroNet

La principal característica de la ZeroNet es su su estabilidad y seguridad general. Podemos decir al respecto que está estructurada a prueba de caídas. Sencillamente no puede ser tumbada, ni de manera global ni de forma particular sus páginas web. Los ataques por fuerza bruta contra ella no sirven, porque está basada en P2P, de manera que su modelo de expansión y alojamiento no sólo está completamente descentralizado, sino desubicado al 100%, lo que garantiza su estabilidad.

Es una internet paralela, completamente abierta y (lo que aún la hace más interesante), desarrollada al completo por la comunidad de desarrolladores voluntarios empleándose y basándola en software libre.

Hasta aquí los criterios básicos de estabilidad, pero analicemos la seguridad y la escalabilidad de esta otra forma de concebir Internet que está empezando a desarrollarse.

zeronet mensaje de bienvenida

Leer más

Hackers de alquiler: Entre lo patético y lo peligroso

por:

La entrada que traemos hoy, nunca debería haberse dado. Es una de esas cuestiones que, sencillamente, rozan lo esperpéntico en el mejor de los casos. Hablamos de los hackers de alquiler y las webs y plataformas que están proliferando dedicándose a poner en contacto a usuarios con “hackers” “profesionales” (Y entrecomillo bien ambos términos, porque no son ni lo uno ni lo otro).

Para empezar, nadie que ofrezca servicios de hacking (entendiéndose como tales, el trabajo de alquiler para tumbar una web, dinamitar una contraseña de correo web de un tercero, infectar un sistema con un virus, etc…) debería llamarse hacker. Ni lo es, ni sabe nada sobre el término, cómo surgió, cuál es la cultura hacker y la filosofía que hay detrás de ese movimiento técnico-intelectual.

Un hacker no es un delincuente y quienes se ofrecen para tales “servicios” son precisamente eso: Delincuentes reales o potenciales, porque cualquiera de dichos trabajos son ilegales, dolosos y nada tienen que ver ni con materia alguna de seguridad informática, ni desde luego, con el sano arte de la curiosidad técnica, la búsqueda de soluciones paralelas, la ingeniería inversa o la localización de puertas traseras para solucionar problemas reales y necesarios. Todo esto SÍ es hacking y ni se oferta como mercancía mercenaria, ni desde luego, se alquila como quien vende productos ilegales en una esquina.

Pero veamos hasta dónde ha llegado el esperpento de esta situación en internet.

El alquiler de hackers en los medios de comunicación

Siempre hubo hackers, crackers y delincuentes siendo contratados por individuos y empresas (la mayoría de las veces en materia de hacking ético y seguridad corporativa), así como por propios gobiernos (ya se conocen los casos de los “ejércitos cibernéticos” que Estados Unidos, Irán, Siria, Corea y China, entre otros, tienen ya operativos y sabe Dios haciendo qué).

Pero hasta no hace mucho, estas actividades de contratación, comunicación y encargos de proyectos clandestinos y delictivos, se realizaban en la Deep Web, alejados de miradas ajenas y, por supuesto, fuera de los cauces comerciales comunes y sin ofertarse de manera abierta para cualquiera.

Pero hace unas semanas el grupo de hackers que se autoproclamó como los causantes del ataque a Sony, pensaron que una vez esta hazaña había adquirido tintes míticos y mediáticos, lo mejor sería rentabilizar su fama técnica. ¿Cómo…? Pues anunciando a los cuatro vientos que sus servicios podían ser contratados y que las cuantías de los mismos dependían del tipo de ataque que se encargara y de la duración que el cliente deseara sobre el mismo. Así que pusieron a disposición del público una web con sus servicios y tarifas.

No… no vamos a redireccionar desde aquí a esa web, porque además de ilícito e ilegal, lo consideramos demencial ya.

Pero sí vamos a pasaros un par de parodias similares que están teniendo lugar hoy en día y que emulan lo anterior, siguiendo el ejemplo de este grupo de hackers que ofrecen sus servicios al mejor postor. Veréis que la cosa puede llegar a ser, cuanto menos, incluso kafkiana.

Leer más

Hackeando tarjetas prepago y tarjetas regalo o promocionales

por:

Hackear tarjetas promocionales o tarjetas regalo

Introducción

Hoy es uno de esos días en los que toca hacer un post sobre hackeo, y de nuevo vamos a adentrarnos en el maravilloso, estimulante e intelectualmente prometedor mundo financiero, porque considero que es, de lejos, el más interesante para el conocimiento de técnicas de hackeo permanentemente actualizadas.

Veamos por qué:

  • El mundo financiero es, de sobra, el más competitivo y el tecnológicamente más avanzado por cuanto es el que más dinero tiene para inversiones en informática y programación.
  • Desde el punto de vista del estímulo y el reto intelectual, no hay industria como la financiera para estar a la vanguardia del hacking o de la ingeniería inversa, dado que es la que más herramientas, tecnologías complejas y planificación técnica posee. Así que es el “campo de entrenamiento” perfecto. Siempre desde el punto de vista del reto mental que supone, claro está.
  • Por último, por qué negarlo, el conocimiento de herramientas, técnicas, recursos y procesos de hacking en materia financiera puede ser, el algún momento hipotético, el más necesario para cualquiera. Sobre todo hoy en día en que la crisis ha empobrecido a tantos y conceptos como “embargos”, “comisiones”, y abusos en general, merman las economías de muchas personas. Conocer los sistemas financieros y, como no, sus puertas traseras o fallos, debería formar parte de la “caja de herramientas mental” de cualquiera… Por si acaso…

En otros post sobre hacking, aquí en SOMOS BINARIOS, hemos tratado fórmulas de creación de cuentas bancarias paralelas, invisibles y anti-embargos (aquí el enlace al post), así como hemos aprendido a hackear WhatsApp y cualquier actividad de un teléfono móvil Android, desde sus llamadas a mensajes y ubicación, activando a distancia el GPS del teléfono (aquí el enlace al post).

Tarjetas prepago y tarjetas regalo

Hoy le toca el turno a las tarjetas prepago, más conocidas como tarjetas-regalo que muchas compañías dan a sus clientes, empleados, ganadores de premios y concursos etc… pero que no permiten sacar el dinero que tienen precargado, sino que sólo pueden emplearse para comprar artículos o servicios (generalmente en comercios adheridos a una determinada promoción), de manera que el “regalo” se convierte en un “consuma usted aquí y sólo aquí, por el importe que viene preconfigurado en la tarjeta”.

2

Es un modo de fidelizar a la clientela, así como una forma de no desembolsar el dinero del premio o del regalo que supuestamente se hace. Técnicamente hablando, en efecto, nos están concediendo un galardón en metálico, pero de facto, es una forma de no darnos ese dinero sino una especie de cheque digital a emplearse sólo en determinados comercios, por lo general, los que aparecen como sponsors en la propia tarjeta.

En fin… ¿Qué os voy a decir que no os imaginéis ya?. Hecha la norma, servida la trampa. O, mejor expresado en términos de ingeniería inversa: Allí donde haya un sistema complejo, más susceptible será de que tenga puertas traseras que aprovechar. Encontrarlas, conocerlas y, potencialmente explotarlas, se llama hacking.

Leer más