miércoles, 24 de julio de 2013

Realizar llamada por medio de Arduino y Asterisk (Video)



Realizar llamada de acuerdo al cambio de luminosidad en el ambiente por medio de Arduino, es decir cuando el nivel de luz cambie Arduino le dara la orden a Asterisk para realizar una llamada anunciando un movimiento.

(Utilizamos Arduino UNO con Ethernet Shield)

El video ilustrativo de como funciona:


Creamos el archivo arduino.php en /var/lib/asterisk/agi-bin/ :

#!/usr/bin/php -q

<?php
require("phpagi.php");

$agi = new AGI();

        $agi->answer();
        $return = $agi->get_data('beep', 30000, 1);

        $agi->text2wav("Hubo movimiento en la habitacion ");
        $agi->hangup();

?>


En /var/www/html (la ruta que tienen configurado en el server web) creamos el archivo call_sense.php :


<?php


$luz = $_GET['luz'];

echo $luz;
$asterisk_outgoing = "/var/spool/asterisk/outgoing/";

$asterisk_tmp = "/tmp/";

$asterisk_cid = "Sensor de Luz<7307>"; // the from caller id you'd like to display.

                $arduinocallfile = "/$asterisk_tmp/arduino_call.txt";

                $arduinocall = fopen($arduinocallfile, 'w') or die("can't open file");


$arduinocall_data="Channel:SIP/7306\nApplication:AGI\nData:arduino.php\nCallerID:$asterisk$
                fwrite($arduinocall, $arduinocall_data);

                fclose($arduinocall);



                // chmod, chown and chgrp the file to asterisk:asterisk

                 chmod ("/$asterisk_tmp/arduino_call.txt", 0666);

                 chown ("/$asterisk_tmp/arduino_call.txt", "asterisk");

                 chgrp ("/$asterisk_tmp/arduino_call.txt", "asterisk");


                rename("/$asterisk_tmp/arduino_call.txt","/$asterisk_outgoing/arduino_call.call");
?>


Y ahora el código de nuesto Arduino UNO :

Antes el diagrama de conexión:


Código:

#include <SPI.h>

#include <Ethernet.h>


int lightPin = 0; 
int threshold = 640;  //este valor lo modificamos de acuerdo el nivel de sensibilidad que tiene nuestra fotoresistencia dada por la resistencia que esta entre A0 y GND.



byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte server[] = { xxx, xxx, xxx, x }; //IP del servidor web donde esta Asterisk y el archivo call_sense.php
int luz = 0;
EthernetClient client;

  
void setup()


{


  Ethernet.begin(mac);


  Serial.begin(9600);


}



void loop () {

  Serial.println(Ethernet.localIP());
senddata();
delay(500);


}


void senddata()
{


  Serial.println(analogRead(lightPin)); 

    if(analogRead(lightPin) > threshold ){    
      
        Serial.println("high"); 
    }else{
        
        Serial.println("low"); 
        
         luz = 1;
          Serial.println();
          Serial.println("Iniciando conexion!");
          Serial.println("Conectando!");
          delay(1000); //This one keeps it from hanging
          
          if (client.connect(server,80)) {
          Serial.println("Connected!");
          client.print("GET http://XXX.XXX.XXX.X/call_sense.php?luz=");
          client.print(luz);
          client.println(" HTTP/1.1");
          client.println("User-Agent: Arduino 1.0");
          client.println("Host: xxx.xxx.xxx.x");
          client.println();
                                      }
           
           else 
           {
           Serial.println("Connection failed");
           client.stop();
           }
                  
    }     
    


}




martes, 23 de julio de 2013

Asterisk: Generar llamada automática de acuerdo al clima en una ciudad

Una de las posibilidades que tenemos con Asterisk es que podemos realizar llamadas automatizadas a travez de nuestros scripts en diferentes lenguajes de programación: PHP, Perl, Java, C, en fin, mediante una interfaz transparente al usuario haciendo modificaciones o consultando bases de datos, consultando estados de variables, controlar el dialplan, etc.. haciendo la llamada desde el archivo extensions_custom.conf y por medio de un archivo .call  , y todo esto gracias a Asterisk Gateway Interface (AGI) .

Manos a la obra:

-En la el archivo de extensions_custom.conf agregamos la extension 7307 en la cual mediante AGI llamaremos al script php.

extensions_custom.conf

exten => 7307,1,Answer
exten => 7307,2,AGI(/var/lib/asterisk/agi-bin/mencionar_clima.php)
exten => 7307,3,Hangup


-Ahora escribimos el script que creara el archivo .call , el cual es el que realizara la llamada automáticamente siempre y cuando la temperatura sea mayor a 31 (Este script lo podemos colocar en la ruta /var/lib/asterisk/agi-bin/ ) la temperatura ustedes la pueden ajustar a sus necesidades:

llamada_clima.php

#!/usr/bin/php -q

<?php

$asterisk_outgoing = "/var/spool/asterisk/outgoing/";

$asterisk_tmp = "/tmp/";

$asterisk_cid = "Clima<000>"; 


$temp=file_get_contents('http://www.interactivahn.com/climahonduras/sensores/lugares_turisticos.php');

        if($temp>31){

                $callfile = "/$asterisk_tmp/arduino_call.txt";

                $call = fopen($callfile, 'w') or die("can't open file");


                $call_data="Channel:SIP/7306\nExtension:7307\nCallerID:$asterisk_cid";

                fwrite($call, $call_data);

                fclose($call);
                 chmod ("/$asterisk_tmp/_call.txt", 0666);

                 chown ("/$asterisk_tmp/_call.txt", "asterisk");

                 chgrp ("/$asterisk_tmp/_call.txt", "asterisk");

                rename("/$asterisk_tmp/_call.txt","/$asterisk_outgoing/_call.call");
        }

?>

Con este código creamos el archivo en .call en la ruta de outgoing que revisa el Asterisk para realizar la llamada cuando encuentre un nuevo archivo en la carpeta.

Donde Channel:SIP/7306 es la extensión a donde va dirigida la llamada y Extension:7307 es la extencion a que ejecuta el AGI con la línea que anteriormente escribimos (exten => 7307,2,AGI(/var/lib/asterisk/agi-bin/mencionar_clima.php)
)

-Ahora nos falta el archivo mencionar_clima.php que es el que nos habla cuando contestamos la extesion 7306:


#!/usr/bin/php -q

<?php

require("phpagi.php");
$agi = new AGI();


   $return = $agi->get_data('beep', 30000, 1);
  //Nos muestra la temperatura actual de San Pedro Sula, Honduras
   $temp=file_get_contents('http://www.interactivahn.com/climahonduras/sensores/tempsps.php');
   $text="La temperatura en s p s es de ".$temp." grados centigrados";

    $agi->text2wav($text);


?>

-Lo que nos queda es programar en el crontab para que se ejecute periódicamente el archivo llamada_clima.php y si en la hora que se ejecuta la temperatura sobrepasa los 31 grados centigrados, efectuara la llamada.

Este script con algunas modificaciones podría servir para Hoteles, en donde los huéspedes puedan programar "alertas" para el clima con una llamada a la central telefónica (Asterisk), y que les llame cuando la temperatura este en el punto que ellos desean para salir o que les avise si habrá lluvia a determinada hora.

Hay tantas posibilidades, el limite es su imaginación.

jueves, 20 de junio de 2013

2 Herramientas, Ixquick y Wickr





Enviar mensajes gratis a otros usuarios Wickr en cualquier parte del mundo,  sin dejar rastro y auto destructivos.

Wickr fue fundada en San Francisco, California por un equipo de expertos en seguridad y privacidad que creen que las comunicaciones privadas son un derecho humano universal que es muy importante para una sociedad libre. Hoy, ese derecho es casi inexistente.

Wickr usa AES256 para proteger los datos,  también utiliza Hash SHA256 Transport Layer Security (TLS). Las claves de cifrado se utilizan sólo una vez y luego son destruidas por teléfono del remitente.

Puedes enviar archivos, wickr se encarga de eliminar metadata que contengan información nuestra o del equipo que enviamos los datos, envió encriptado de mensajes, se integra con Box, Dropbox, Google Drive.

Wickr se está convirtiendo en el sistema de comunicación más grande en el mundo, dándole poder a la gente.






Ixquick


Ixquick es un metabuscador localizado en Nueva York y Holanda, que ha provisto más de 120 millones de búsquedas desde 2004.


Fue relanzado el 23 de marzo de 2005 con muchas nuevas características, incluyendo un algoritmo de metabúsqueda rediseñado y un directorio telefónico internacional.


El 27 de junio de 2006, Ixquick.com se convirtió en el primer motor de búsqueda que borra la información privada de sus usuarios. Direcciones IP y otra información personal eran borrados dentro de 48 horas desde la búsqueda. Ixquick tampoco comparte la información personal de sus usuarios con otros motores de búsquedas o con sus patrocinadores.


A partir del 29 de enero de 2009, Ixquick no registra las direcciones IP de sus usuarios en absoluto.






Estas herramientas nos pueden servir a todos, pero el post lo hice pensando en herramientas que les pueda dar mas seguridad en la información a los periodistas.






Hasta la PROXYma.



lunes, 10 de junio de 2013

Sreenscraping usando extension de Google Chrome’s Scraper

¿Cómo se obtiene la información de un sitio Web a una hoja de Excel? 

La respuesta es screenscraping. Hay una serie de programas y Plattformas (como OutWit Hub, Google Docs y Scraping Wiki) que le ayuda a hacer esto, pero ninguno de ellos son - en mi opinión - tan fácil de utilizar como la extensión  Google Chrome scraper.

Que es Screen Scrapping?

El Screen Scrapping o “respaldo de pantalla”, es una técnica usada para extraer automáticamente información de un documento, un documento puede ser una página web, un archivo PDF, un archivo de Word, etc.

Google Chrome's Scraper puede ser instalado gratis desde aquí: link

Ahora que ya la tenemos instalada procedemos a realizar las pruebas, en cualquier pagina web da click derecho sobre el texto y debería salir algo así entre las opciones: 


Manos a la obra:  Sacar los nombres de los diputados de la bancada nacional de Honduras con laURL de la imagen. (url: http://www.congresonacional.hn/images/bancadaN/PN.html )


Damos click derecho sobre el nombre de uno de los diputados, y escogemos la opción "Scrape similar...", en donde nos saldrá este ventana:


Si nos fijamos solamente obtuvimos la url de la imagen de los diputados, nos falta el nombre en el campo de XPath donde dice @tittle lo cambiamos por @alt quedando así y veremos que ya sale el nombre de los diputados:



Y veremos en la esquina inferior derecha el botón "Export to Google Docs" click ahi y veremos que ya tenemos nuestros datos.






martes, 4 de junio de 2013

Controlar LED con Arduino a través de Asterisk (Video)

Comencé  con Arduino desde hace ya algún tiempo, y quise escribir un post fuera de lo común y debido a que últimamente me a tocado "trastear" con Asterisk, que mejor que unirlos aquí.

El escenario:

Arduino IDE 1.0.4
Placa Arduino UNO con Ethernet Shield.
FreePBX Version 2.8.1.4
Asterisk 1.6.2.21


Lo que vamos a hacer es ejecutar un PHP cuando Asterisk reciba una llamada a la extensión eje: 7307 .
Para esto usaremos en nuestro script la libreria phpagi.php que se encuentra en /var/lib/asterisk/agi-bin/

Link del codigo PHP: https://docs.google.com/file/d/0B4yVk8iE3E-FYjBXMGozZVpfQmc/edit?usp=sharing

Link del codigo para Arduino .pde: https://docs.google.com/file/d/0B4yVk8iE3E-FV1VPSmJUcl9ESms/edit?usp=sharing

En nuestro Arduino el LED estará conectado al puerto digital 4.

En el server Asterisk lo siguiente:
El código php lo copiaremos en la ruta /var/lib/asterisk/agi-bin/ y daremos permisos al usuario asterisk sobre el script con chown asterisk:asterisk arduino_control.php

En /etc/asterisk/extensions_custom.conf agregamos:


; Arduino Control
exten => 7307,1,Answer
exten => 7307,2,AGI(arduino_control.php)
exten => 7307,3,Hangup



Este código lo tome de Nerdybynature y modifique principalmente el .pde para adaptarlo a mi versión.

viernes, 30 de noviembre de 2012

Recuperar datos borrados de Discos duros y Memorias USB



A todos nos ha paso que hemos borrado o se nos ha borrado accidentalmente el contenido o parte del mismo de nuestra TF, Pen Drive, Disco Duro, etc. En estos casos existe una buena cantidad de herramientas en Windows, y Linux no puede estar al margen de dicha tecnología.

Vamos a utilizar una aplicación llamada photorec:

sudo aptitude install testdisk

Luego para recuperar archivos simplemente tecleamos:

sudo photorec

El programa se ejecuta desde consola, pero tiene un menu muy intuitico, y lo primero que nos pedira es que maximicemos la ventana de consola para que podamos ejecutar el programa y ver todas las lineas del menu.

Posteriormente nos pedira que le indiquemos desde que unidad queremos recuperar los datos, y nos saldra la lista de las unidades que tengamos montadas.

Luego el programa detectara los diferentes tipos de particiones bien sean FAT, EXT, etc … y seleccionaremos la correcta.

Despues tendremos que seleccionar una carpet o ruta donde el programa depositara os ficheros borrados que vaya detectando.

Por ultimo pulsando “Y” de yes, empezara el proceso.

El programa funciona de una forma escandalosa y organiza en carpetas todo lo que vaya detectando.

Yo personalmente lo probé con una memoria de 16Gb y esta comprobado su funcionamiento recuperando TODA clase de archivos sin importar su extensión.



Fuente:ubuntu.org.uy



Hasta la PROXYma.

jueves, 27 de septiembre de 2012

Aldous Huxley: Las dictaduras tecnológicas futuras (Video - 1958)

Según Huxley existen un número de fuerzas impersonales, que nos llevarían a una dirección de menos y menos libertad. Si a eso le sumamos que hay un número de dispositivos tecnológicos, acelerarían aún más la pérdida de libertad, imponiendo un control centralizado. Reportaje efectuado por Mike Wallace, el 18 de Mayo de 1958.



miércoles, 26 de septiembre de 2012

Analizando paquetes de una app iPad [Ingeniería Inversa]

Hace días que no escribimos nada por estos lares, pero esta vez junto con Ferock realizamos una pequeña auditoria a una app de iPad y iPhone que recientemente fue lanzada con bombos y platillos en Honduras.

Comenzamos:

-Nos propusimos averiguar de donde sacaba la información esa app así que necesitábamos sniffear el trafico de esta y así poder ver las peticiones.

Así que utilizamos un proxy nuestro (Squid) y se lo configuramos al iPad, ya teníamos todo el trafico de nuestro iPad pasando por nuestro equipo. 

Ingresamos a nuestro proxy en nuestro caso vía SSH y utilizamos la herramienta: tshark

así: 

tshark -i eth0 -f 'dst host IPDELSERVERAPP' -w /captura2.cap


**como sacamos la ip del server?, en los logs de acceso del squid.


Que hace esa linea? nos guarda la captura de los paquetes en un archivo, en este caso llamado captura2.cap

Desarrolladores, no utilicen text-plain para autenticar usuarios en sus api o aplicaciones.

Porque? , porque puede suceder esto;

Tenemos el file captura2.cap el cual analizaremos utilizando Wireshark:



En la imagen se alcanza a ver las credenciales, que las borramos por motivos de seguridad y ya que este articulo solo esta hecho con fines educativos y no nos hacemos responsables por el uso que se le de a esta información.

Con estas credenciales se puede acceder al API de la app por lo tanto a la información que se presenta en la misma.

miércoles, 20 de junio de 2012

Aplicando ingeniería inversa, resultado SMS vía web Tigo





Había quedado pendiente desde hace tiempo hacer este post, pero es mejor tarde que nunca y aquí comienzo.


Ingeniería inversa? se come eso? para los que no conocían el termino acá una breve explicación por cortesía de Wikipedia:

En el caso concreto del software, se conoce por ingeniería inversa a la actividad que se ocupa de descubrir cómo funciona un programa, función o característica de cuyo código fuente no se dispone, hasta el punto de poder modificar ese código o generar código propio que cumpla las mismas funciones.
Lo que nos ocupa es como llegar a saber como funciona esta aplicación de mensajes web, tenemos 2 posibilidades y en esta ocacion explicare una de ellas.

1-Es bajar el swf y utilizar un SWF Decompiler para ver el código que se utiliza en el swf, esto nos mostrara rutas de archivos a donde envía información, etc..etc..

2-Utilizar FireBug y ver las peticiones HTTP que realiza dicho archivo, y esta es la manera que les explicare.


Asumire que tienen instalado la extension Firebug en su Firefox (También se puede con Chrome sin necesidad de instalar nada), pero utilizaremos FF.


-Abrimos en FireFox la URL de http://www2.tigo.com.hn/templates/pop_msn.html

-Activamos FireBug presionando F12.

----Que comience el juego----

-Click en la pestaña de Red dentro de el panel de FireBug.

En el caso de la imagen, yo ya tenia abierto el firebug en la pestaña de red y por eso muestra toda esa info.


Ok ya tenemos el armamento listo,

Ahora miremos como se comporta la aplicacion, manos a la obra.

-Colocamos un nombre le damos aceptar.
Yo ingrese la palabra Test,

Vemos que algo cambio en el firebug, se hizo una petición GET

Click sobre la URL y luego click sobre Respuesta, vemos que nos devuelve algo como esto:



Veremos que nos muestra, 4 tabs:

Es obvio que nos muestra cada uno de ellos.
De esto, mi conclusion es la siguente:
Este link cuando ingresamos el nick o nombre y damos aceptar genera una session, lo comprobamos asi:

Donde el parametro "foo" puede ser un numero Random y el parametro "orden" es la accion que efectuara el programa, en este caso crear la sesion.
 Seguimos y colocamos el numero de celular destino y le damos aceptar, en firebug nos muestra que se agrega otra petición GET, pero que nos muestra?

Aqui en la pestaña de parametros, vemos que "orden" ahora cambia a 2, y que le pasa el numero de sesión adquirido anteriormente al parametro "session".
dstphone=Telefono destino
foo= numero aleatorio
Otra vez el parámetro nick con el nombre que habíamos ingresado y listo, ahora a enviar mensajes!!??, ah pero tiene captcha?.

Hasta aquí llega el tutorial con la explicación suficiente como para lo terminen de resolver ademas que aqui esta el código de como lo resolví yo

Hasta la PROXYma.

lunes, 11 de junio de 2012

Los que se rinden nunca ganan, Catracho Judo Club


Bueno en este blog trato de tocar temas variados, pero en esta ocasión escribiré sobre un tema personal que traigo a relucir por los comentarios de una imagen en Facebook.

Hace unos 7 años que fue cuando yo comencé a entrenar Judo, un grupo de amigos me decían que entrenara con ellos, entre ellos estaba Denia, Bryan, “El Sensei”, Jarvis, llegabamos junto a un compañero de la universidad a verlos entrenar y de vez en cuando se echaban unos randoris de puro coraje, mi compañero y yo solo al ver el entrenamiento que hacían lo pensamos más de 2 veces para comenzar a entrenar con ellos, pero la diferencia entre mi compañero y yo, esque siempre fui loco (y en el Judo el que no es loco es ...) un día me decidí y comencé a entrenar con ellos.

Y así fue como comenzó una de las etapas que ahora podré contarle a mis hijos con mucho orgullo, pues es un deporte magnífico (UNESCO lo declaró  declaró el judo como el mejor deporte inicial formativo para niños y jóvenes de 4 a 21 años y como práctica habitual a cualquier edad con las limitaciones oportunas), teníamos aquel tatami mal oliente , las ganas de ser mejores cada día y nuestro coraje; entrenamos en un campo, corríamos , el famoso “buenos días”, y nuestras pesas un par de bloques de cemento, terminamos nuestro entrenamiento de la mañana, digno de las escenas de Rocky y de fondo “Eyes of the tiger” o “I got the power” luego me pasaban dejando por la U, yo solamente secaba mi sudor con una toalla me ponía desodorante y listo para estudiar.

En las tardes algunos veníamos de estudiar y otros del trabajo, comenzaba la rutina, aquello parecía un ritual, cuando paseabamos en la acera de la cuadra con los tatamis y los llevamos hasta mi casa.

Aquellos dias en los que ni reirnos podíamos, debido a los dolores musculares en el abdomen, en la sala de la casa del Bryan  mas conocido como “Samurai” o “Peloncin” y ahi aparecia Lita y nos decía “Ya no van a seguir jugando Judo?”.

Como yo era el nuevo, comencé a “volar”, desde el punto de vista positivo,  eso me ayudó a aprender a caer.

Denia con las técnicas amañadas que traía de tegus (jejeje) me lastimo los dos hombros en un mismo randori, aun asi segui hasta terminar los 4 minutos aquellos que se me hacían horas de sufrimiento y dolor, pero que al final solamente reforzaba nuestro coraje, el sensei me acomodo los hombros y no creo que se imaginen lo que es hacer lagartijas o pechadas como nosotros le decimos con los dos hombros lastimados, las cuales las hacíamos de distintos sabores de corazón, de luchador y las normales.




Sentíamos dolor? el Sensei nos decia.."El dolor es temporal, rendirse es para siempre" .

Recuerdo un día que yo tenía gripe y lo puse como pretexto para no entrenar, el Sensei me dijo “Vaya hacete 40 para que calentes y comencé a entrenar dejate de cosas”, pensé que me diria, pobre tiene gripe que no entrene, no señores..más trole me metieron durante entrene Judo no me volvio a dar gripe.

Cuando logramos entrar al gimnasio por lo menos para hacer pesas con equipo de verdad, los chavos del Judo, como nos decían los entrenadores del local se admiraban del peso que levantábamos y la explosividad con la que trabajamos, en ese mismo gimnasio en la cancha de Basketball se entrenó Denia conmigo durante algunos días(No recuerdo para que competencia), sin tatami a puro judogui.

Aquella vez en que Denia fue a Tegucigalpa a “levantar” a las judocas de haya sin mayor esfuerzo los entrenadores y directivos decidieron hacerle pruebas para ver con que tipo de sustancia se había “dopado”, ellas les decía “Entreno con un grupo de muchachos” no le creían a lo mejor y seguían con sus pruebas las cuales todas salieron negativas.

O cuando Bryan se quedó botado por una huelga en la carretera hacia tegus y se tubo que ir el solo, en Bus con la cédula del hermano pues el solamente tenía como 16 años, paso la frontera llego a los Codicader de ese año y se trajo una medalla de bronce, todos sentimos esa medalla como si era de cada uno de nosotros, por esto es que le decimos “Samurai” luego el nos conto con lujo de detalles cómo fue su faena. (Desde el cielo tu Papa, seguramente se sentía orgulloso).

Y como no recordar, a mi hermanito y el hijo del sensei en aquellos randoris que nos inspiraban, ver a aquellos niños haciendo pechadas , abdominales y luego luchar hasta que los separabamos, ellos también se entregaron al Judo y dejaron su sudor al tatami.

Estoy orgulloso de haber entrenado con Catracho Judo Club en San Pedro Sula, a aquellos que no mencione pero que igual los recordamos o que tuvieron un paso fugaz pero que supieron lo que es entrenar Judo con un grupo de locos a todos ustedes y en especial al “Sensei” por compartir sus conocimientos con nosotros y aconsejarnos en su momento, en donde quiera que estemos sabemos que compartimos esas aventuras.

viernes, 4 de mayo de 2012

Es un aromatizante electrico?.. no! es el LNIntruder



El LNIntruder es un mini-servidor autocontenido (del tamaño de un adaptador de energía genérico), de bajo costo, diseñado para ser "abandonado" dentro de una red (cableada o wireless), con la capacidad de evadir mecanismos típicos de protección y comunicarse con un servidor externo. Esto permite a un usuario conectarse directamente desde Internet (u otra red externa) a su LNIntruder, y trabajar en la red interna como si estuviera sentado directamente allí, pero de forma remota, a través de túneles cifrados.

Este dispositivo necesita de previa configuración a través de su Interfaz Web (GUI) con un cable cruzado directamente a nuestra PC para luego ser instalado en la "red víctima".

 Para mas información y detalles técnicos ingresen a la pagina web del proyecto en http://lnintruder.lownoisehg.org/ o sigan la cuenta de twitter .



Hasta la PROXYma.
 

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Best Web Host