Underc0de - Hacking y seguridad informática

Informática => Electrónica y Robótica => Arduino - Raspberry PI => Mensaje iniciado por: ANTRAX en Diciembre 29, 2013, 05:44:13 pm

Título: Arduino UNO como Sniffer Telefónico
Publicado por: ANTRAX en Diciembre 29, 2013, 05:44:13 pm
El circuito receptor DTMF para monitorear los tonos que se transmiten por la línea telefónica es el siguiente:

(https://dl.dropboxusercontent.com/u/35798586/Images/ArduinoPhoneSniffer/dtmf_receiver_circuit.gif)

https://dl.dropboxusercontent.com/u/35798586/Documents/HT9170.pdf

La conexión de los pines de salida del HT9170B/D a la placa Arduino UNO es la siguiente:

HT9170B/D --> Arduino UNO
D0(Pin 11) --> Arduino UNO (Pin 2)
D1(Pin 12) --> Arduino UNO (Pin 3)
D2(Pin 13) --> Arduino UNO (Pin 4)
D3(Pin 14) --> Arduino UNO (Pin 5)
DV(Pin 15) --> Arduino UNO (Pin 6)

El terminal con la etiqueta "Tone" se conecta directamente a un terminal de la línea telefónica y el otro terminal de la línea telefónica se conecta a GND.

La alimentación para este circuito se obtiene directamente de la placa Arduino UNO. Existe en dicha placa un terminal que provee 5V.

(https://dl.dropboxusercontent.com/u/35798586/Images/ArduinoPhoneSniffer/dtmf_receiver.jpg)

El circuito para conectar una tarjeta Micro SD a la placa Arduino UNO es el siguiente:

(https://dl.dropboxusercontent.com/u/35798586/Images/ArduinoPhoneSniffer/arduino_sdcard_circuit.gif)

Los pines 10, 11, 12 y 13 corresponden a los pines de la placa Arduino UNO.
La alimentación para este circuito se obtiene directamente de la placa Arduino UNO. Existe en dicha placa un terminal que provee 3.3V.
Este circuito lo construí sobre un adaptador Micro SD a SD como se puede observar en la siguiente imagen.

(https://dl.dropboxusercontent.com/u/35798586/Images/ArduinoPhoneSniffer/arduino_sdcard.jpg)

Con ambos circuitos armados procedemos a interconectar las tres placas como se observa en la siguiente imagen.

(https://dl.dropboxusercontent.com/u/35798586/Images/ArduinoPhoneSniffer/arduino_phone_sniffer.jpg)

Habiendo interconectado exitosamente las tres placas procedemos a escribir el programa cuya función será leer el estado de las 5 entradas (Pin 2 a Pin 6) y almacenar el valor obtenido a un archivo de texto en la tarjeta Micro SD.

Antes de continuar la lectura recomiendo ver la Tabla de Códigos DTMF

(http://www.kmitl.ac.th/~kswichit/dtmf/code.gif)

Código: C
  1. #include <SD.h>
  2.  
  3. File myFile;
  4. byte digit;
  5.  
  6. void setup()
  7. {
  8.     pinMode(2, INPUT); //D0
  9.     pinMode(3, INPUT); //D1
  10.     pinMode(4, INPUT); //D2
  11.     pinMode(5, INPUT); //D3
  12.     pinMode(6, INPUT); //DV
  13.     pinMode(10, OUTPUT); //SD Card SS
  14.    
  15.     if (!SD.begin(10))
  16.     {
  17.         return;
  18.     }
  19. }
  20.  
  21. void loop()
  22. {
  23.     while(digitalRead(6) == LOW)
  24.     {
  25.         ;
  26.     }
  27.    
  28.     digit = 0;
  29.    
  30.     if (digitalRead(2) == HIGH)
  31.     {
  32.         digit = digit + 1;
  33.     }
  34.     if (digitalRead(3) == HIGH)
  35.     {
  36.         digit = digit + 2;
  37.     }
  38.     if (digitalRead(4) == HIGH)
  39.     {
  40.         digit = digit + 4;
  41.     }
  42.     if (digitalRead(5) == HIGH)
  43.     {
  44.         digit = digit + 8;
  45.     }
  46.    
  47.     myFile = SD.open("log.txt", FILE_WRITE);
  48.    
  49.     if(myFile)
  50.     {
  51.         myFile.print(digit);
  52.         myFile.print("-");
  53.         myFile.close();
  54.     }
  55.    
  56.     while(digitalRead(6) == HIGH)
  57.     {
  58.         ;
  59.     }
  60. }

Lógicamente es perfectible y cada uno puede adaptarlo a sus necesidades particulares.

Autor: Hardrive9000