Só mais um projeto de detector de ladrão
     com laser , e algumas ideias...
Quem Sou ?

 Antonio Costa aka “Cooler_” , desenvolvedor independente em
C,Common Lisp,Perl,PHP... Trabalho como freelancer a 4 anos no
meio de Web(e-commerce,web spiders...) e problemas em gerais
para unix like, faço parte do grupo de estudo e pesquisa BugSec,
sou um dos colaboradores e fundadores da e-zine “Cogumelo
Binario”. Estudo microcontroladores(AVR e PIC) ,eletrônica em
geral como hobby,         também tento colaborar em projetos
OpenSource.
http://coolerlab.wordpress.com/

“TombPool”
simples biblioteca em Linguagem C para trabalhar com piscina de conexões.
http://code.google.com/p/tombpool/

“Hyde”
Só mais um packet injector usando spoofing
https://github.com/CoolerVoid/Hyde

“Cactoo CMS”
Só mais um CMS em PHP
http://code.google.com/p/cactoo/

“Beer”
Biblioteca com funções diversas em C , para facilitar a vida do pessoal iniciante
bem como automatizar tarefas em arquivos,strings,números etc...
https://github.com/CoolerVoid/beer/blob/master/beer.c

“BugSec”
Grupo que faço parte, no nosso google code colocamos alguns códigos e papers que
escrevemos para estudo etc...
quem faz parte:
 Victor Ramos Mello aka “m0nad”, ref: “http://m0nadlabs.wordpress.com/”
 Tiago Natel aka “IAK”, ref: “http://www.secplus.com.br/site/”
 Felipe Pena aka “sigsegv” ref: “http://felipe.ath.cx/”
 Eduardo Bellani aka “ebellani” ref: “https://github.com/ebellani”
 Sergio Renan “_mlk_” . ref “http://code.google.com/p/lwv/”
http://code.google.com/p/bugsec/downloads/list
...The:empire:Strikes:Back....

   Já a muito tempo tinha ideia de fazer algo com laser, em
circunstâncias anteriores tive algo empírico com detector de
ladrão, usando Arduino pro Mini e um PIR (detector de
movimento), usava webcam usando api do OpenCV para
assim que tiver movimento obter uma foto, logo é enviado
como anexo para um determinado e-mail a foto, funcionou
bem entretanto não como o esperado então em uma questão de
aleatoriedade passava falsos alarmes, nem tudo é perfeito
vejamos alguns Ids como snort por exemplo.

  Com o passar do tempo, lendo livros da “Evil Genius” achei
muito material interessante sobre eletrônica envolvendo
segurança, alguns deles compartilhei no meu blog como o
“detector de mentira”, algo bem simples para detectar batidas
do coração e talvez julgar se é mentira ou não, analisando
uma plotagem ou alguns inteiros, andando no meio dessa
odisseia encontrei vários sistemas “pega ladrão” entre eles o
que vamos estudar aqui sistema com “Laser”, devido a
carência de material do mesmo em PT-BR, tive ideia de
escrever este paper pois acho que seria a melhor forma de
aprender é escrevendo...
Projeto antigo com Arduino com
     sensor de movimento
Por que Arduino ?




• OpenSource
• Facilidade por conta da IDE
• Podemos optar em usar
  gcc-avr, programar em C,ASM...
• prototipagem
• Com Arduino podemos fazer gravação
  em outros AVR como ATtiny...
www.arduino.cc
O que é Laser ?
Um laser é um dispositivo que controla a maneira pela qual
átomos energizados liberam fótons(energia luminosa).


Etimologia:
Sua sigla de laser significa
"Light Amplification by Stimulated Emission of Radiation" ou
seja Amplificação da Luz por Emissão Estimulada de Radiação,
Albert Einstein deu o primeiro passo, dizendo que a luz é
formada por pacotes discretos e bem determinados de energia
que hoje é rotulado como fótons,Mais tarde em 1960 Charles
 Townes registrou a patente do primeiro gerador de raios laser, em
Washington.




                Charles Townes e Arthur Schawlow
Luz do laser e da lanterna
 Emissão estimulada não ocorre numa lanterna
comum, pois todos os seus átomos liberam
seus fótons de forma aleatória. já no laser a
emissão de fótons é organizada.

Qual laser trabalhar ?
 Lasers em geral são classificados em várias
 classes, temos estes que pessoal da SWAT
 usa em armas,
usam para
aumentar a
 probabilidade de
acerto em um
conflito
 armado,
geralmente são da
classe 3 ou seja
 "IIIa" que é o que
vamos usar,
conhecido como
laser de díodo,única
 contra indicação é que se aponte em olhos
 pois pode causar danos embora tenha
 só 5mW, digamos ai com adição de
 elementos óticos pode causar danos,
 como adicionar uma lente de aumento etc...
detector de ladrão com laser
Indo para Prática
Requerimentos:

2 Resistor de 10k , R$ 0,30 centavos
1 Fotocélula "sensor de luz" (photocell) R$ 2,00 reais
1 Arduino nano      USD 20,00 dollar
1 Cabo para ftdi (para I/O) R$ 6 reais
1 Laser de 5mW                R$ 3,50
1 Led qualquer cor           R$ 0,15 centavos

*alguns jumpers e breadboard
Melhorando a visualização




O LED não esta nesta foto, LED você adiciona no pino que
quiser já que é algo opcional , lembrando que GND “negativo”
é o fio verde, 5v “positivo” seria o fio vermelho, no caso o
laranja seria o do PINO ”2”.



                 http://fritzing.org/
O que foi feito ?
 A fotocélula ao ser usada com resistor de 10k vai detectar
 luz, no caso podemos usar 2 pedaços de cano PVC ou lata,
 deixar o circuito numa lata com um furo mirando para
 a fotocélula, segunda lata o laser mirando para o buraco
 da primeira lata, se alguém passar pelo laser e o laser não
 chegar na fotocélula logo não mandara a luz, então o
 microcontrolador irá julgar uma ação, no caso eu mandei
 "1" via serial caso não tenha luz, nosso código em C ao
 detectar "1" irá ativar uma função usando OpenCV para tirar
foto com webcam, logo seguido de um system() para uso do
“mutt”(cliente de e-mail para unix like) para enviar foto com
anexo para o e-mail destino...

Diagrama
Note na foto o sistema rodando, repare que o laser mira em
sima da fotocélula, e quando isso ocorre acende um LED,
obviamente você pode mudar isso,adicionar um buzzer para
soar alarme caso o laser não alcance a fotocélula,talvez usar
uma placa de GSM com seu SIM card e mandar um SMS por
exemplo...
Código do Arduino
int photocellPin = 2;
int RedLed = 3;
int photocellReading;

void setup(void)
{
 pinMode(RedLed,OUTPUT);
 Serial.begin(9600);
}

void loop(void)
{
 photocellReading = analogRead(photocellPin);
// se entrada(fotons) maior que 900 é laser... então
 if( photocellReading>=900)
 {
  digitalWrite(RedLed,HIGH);
  delay(500);
 }else {
// se o laser nao tiver apontando para fotocelula
  digitalWrite(RedLed,LOW);
// manda 1 via serial assim ativa webcam etc...
  Serial.println("1");
 }
 photocellReading = 1024 - photocellReading;
 delay(100);
}
O Código em Linguagem C
Este código vai ser compilado e executado e vai ficar no seu
computador em esculta, código ficou grande, então não vou
mostrar tudo somente os pontos críticos...




baixe aqui !
 bugsec.googlecode.com/files/ThiefGet_with_laser.c
Macro de DEBUG
Quase todo código que escrevo uso esta macro, uso para ajudar a
depurar o código, evita que eu abra o GDB para tomar uma surra!

setar para 1 ativa debug
#define BUGVIEW 1

#define DEBUG(x, s...) do { 
 if (!BUGVIEW) { break; } 
 time_t t = time(NULL); 
 char *d = ctime(&t); 
 fprintf(stderr, "[!] %.*s %s[%d] %s(): ", 
 (int)strlen(d) - 1, d, __FILE__, 
 __LINE__, __FUNCTION__); 
 fprintf(stderr, x, ## s); 
} while (0);

Nos retorna tempo, nome do arquivo,linha e função.


Funções
Esta função abrimos a porta serial com a syscall open()
e ajustamos o struct do “termios.h” para comunicação padrão
int serialboot(const char* serialport, int baud);

Função para uso da syscall read() no descriptor para pegar
input...
int serialread(int fd, char* buf, char until);

Esta função tira foto da webcam usando API do OpenCV
void webcam(const char* file);
Parte lógica
// se receber "1"
    if(strcmp(buf,"1")>0)
    {
//microsegundos do sleep
     usleep(500000);
     puts("MOVEMENT ONLINE");
     puts(buf);
     counter++;
     OFF=0;
    }
//numero de vezes que achou movimento
    if(counter==MOVES)
    {
     puts("cof cof thief in HOME");
// tira foto da webcam
     webcam("test.jpg");
// manda e-mail com anexo a webcam :-) ,poderia ser um execl() também...
     system(CMD);
     break;
     counter=0;
    }
Perguntas ???
Obrigado pela atenção




          Onde podemos conversar ?

                  irc.freenode.net
                      #cogubin

               c00f3r@gmail.com


                        Thanks:
            m0nad,Iak,sigsegv,ebellani,_mlk_,
    clandestine,eremitah,mentebinaria,kov,f117,syn_ack
    marcelomf,zeppelin,muzgo,b4r0n,nibbles,voidpointer
enygmata,crash,SecMentor, __von,twi-john , utroz,sexpistol,_i
                      outros amigos...

Mais conteúdo relacionado

PDF
Liberte sua camera digital!
PDF
Sistemas Distribuídos - Multithreading
PPT
drools + robocode
ODP
ODP
Batalhas com Robocode
PDF
PDF
Improving spam detection with automaton
Liberte sua camera digital!
Sistemas Distribuídos - Multithreading
drools + robocode
Batalhas com Robocode
Improving spam detection with automaton

Semelhante a detector de ladrão com laser (20)

PPT
Arduino Hack Day por Vinicius Senger
PPT
Robótica com software e hardware livres
PPT
Perlduino - Interfaceando sua aplicação com o mundo real!
PDF
apostila-arduino avançado desde o básico
PDF
TDC2014 - Internet das Coisas - Arduino & OpenDevice
PPT
V2 - Microcontroladores: a revolucao do arduino
PPTX
Aula básica Arduino
PDF
Iniciação à Robótica e Computação Física
PDF
Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part II
PPT
Mini Curso Sistemas Embarcados
PPTX
Palestra sobre Arduino e Raspberry Pi (Totvs)
PDF
Open Hardware & Arduino
PDF
Arduino - Hardware Livre e Robótica
PDF
Arduino no Dia-Debian/RJ 2011
PDF
Visão geral sobre Arduino - Startup Weekend IoT Florianópolis 2017
ODP
Introduçao Arduino - FSLDC
PDF
Sindpd introducao arduinodomotica
PDF
Arduino e a_internet_das_coisas
PPT
Curso de Arduino Completo
PPT
Oficina Scratch para Arduino Cap UFRJ
Arduino Hack Day por Vinicius Senger
Robótica com software e hardware livres
Perlduino - Interfaceando sua aplicação com o mundo real!
apostila-arduino avançado desde o básico
TDC2014 - Internet das Coisas - Arduino & OpenDevice
V2 - Microcontroladores: a revolucao do arduino
Aula básica Arduino
Iniciação à Robótica e Computação Física
Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part II
Mini Curso Sistemas Embarcados
Palestra sobre Arduino e Raspberry Pi (Totvs)
Open Hardware & Arduino
Arduino - Hardware Livre e Robótica
Arduino no Dia-Debian/RJ 2011
Visão geral sobre Arduino - Startup Weekend IoT Florianópolis 2017
Introduçao Arduino - FSLDC
Sindpd introducao arduinodomotica
Arduino e a_internet_das_coisas
Curso de Arduino Completo
Oficina Scratch para Arduino Cap UFRJ
Anúncio

Mais de Antonio Costa aka Cooler_ (13)

PDF
Strange security mitigations
PDF
Understand study
PDF
WAF protections and bypass resources
PDF
Static analysis for beginners
PDF
Raptor web application firewall
PDF
Burlando Waf 2.0
PDF
burlando um WAF
PDF
Development pitfalls
PDF
PDF
Vivendo de hacking
PDF
Strange security mitigations
Understand study
WAF protections and bypass resources
Static analysis for beginners
Raptor web application firewall
Burlando Waf 2.0
burlando um WAF
Development pitfalls
Vivendo de hacking
Anúncio

detector de ladrão com laser

  • 1. Só mais um projeto de detector de ladrão com laser , e algumas ideias...
  • 2. Quem Sou ? Antonio Costa aka “Cooler_” , desenvolvedor independente em C,Common Lisp,Perl,PHP... Trabalho como freelancer a 4 anos no meio de Web(e-commerce,web spiders...) e problemas em gerais para unix like, faço parte do grupo de estudo e pesquisa BugSec, sou um dos colaboradores e fundadores da e-zine “Cogumelo Binario”. Estudo microcontroladores(AVR e PIC) ,eletrônica em geral como hobby, também tento colaborar em projetos OpenSource. http://coolerlab.wordpress.com/ “TombPool” simples biblioteca em Linguagem C para trabalhar com piscina de conexões. http://code.google.com/p/tombpool/ “Hyde” Só mais um packet injector usando spoofing https://github.com/CoolerVoid/Hyde “Cactoo CMS” Só mais um CMS em PHP http://code.google.com/p/cactoo/ “Beer” Biblioteca com funções diversas em C , para facilitar a vida do pessoal iniciante bem como automatizar tarefas em arquivos,strings,números etc... https://github.com/CoolerVoid/beer/blob/master/beer.c “BugSec” Grupo que faço parte, no nosso google code colocamos alguns códigos e papers que escrevemos para estudo etc... quem faz parte: Victor Ramos Mello aka “m0nad”, ref: “http://m0nadlabs.wordpress.com/” Tiago Natel aka “IAK”, ref: “http://www.secplus.com.br/site/” Felipe Pena aka “sigsegv” ref: “http://felipe.ath.cx/” Eduardo Bellani aka “ebellani” ref: “https://github.com/ebellani” Sergio Renan “_mlk_” . ref “http://code.google.com/p/lwv/” http://code.google.com/p/bugsec/downloads/list
  • 3. ...The:empire:Strikes:Back.... Já a muito tempo tinha ideia de fazer algo com laser, em circunstâncias anteriores tive algo empírico com detector de ladrão, usando Arduino pro Mini e um PIR (detector de movimento), usava webcam usando api do OpenCV para assim que tiver movimento obter uma foto, logo é enviado como anexo para um determinado e-mail a foto, funcionou bem entretanto não como o esperado então em uma questão de aleatoriedade passava falsos alarmes, nem tudo é perfeito vejamos alguns Ids como snort por exemplo. Com o passar do tempo, lendo livros da “Evil Genius” achei muito material interessante sobre eletrônica envolvendo segurança, alguns deles compartilhei no meu blog como o “detector de mentira”, algo bem simples para detectar batidas do coração e talvez julgar se é mentira ou não, analisando uma plotagem ou alguns inteiros, andando no meio dessa odisseia encontrei vários sistemas “pega ladrão” entre eles o que vamos estudar aqui sistema com “Laser”, devido a carência de material do mesmo em PT-BR, tive ideia de escrever este paper pois acho que seria a melhor forma de aprender é escrevendo...
  • 4. Projeto antigo com Arduino com sensor de movimento
  • 5. Por que Arduino ? • OpenSource • Facilidade por conta da IDE • Podemos optar em usar gcc-avr, programar em C,ASM... • prototipagem • Com Arduino podemos fazer gravação em outros AVR como ATtiny...
  • 7. O que é Laser ? Um laser é um dispositivo que controla a maneira pela qual átomos energizados liberam fótons(energia luminosa). Etimologia: Sua sigla de laser significa "Light Amplification by Stimulated Emission of Radiation" ou seja Amplificação da Luz por Emissão Estimulada de Radiação, Albert Einstein deu o primeiro passo, dizendo que a luz é formada por pacotes discretos e bem determinados de energia que hoje é rotulado como fótons,Mais tarde em 1960 Charles Townes registrou a patente do primeiro gerador de raios laser, em Washington. Charles Townes e Arthur Schawlow
  • 8. Luz do laser e da lanterna Emissão estimulada não ocorre numa lanterna comum, pois todos os seus átomos liberam seus fótons de forma aleatória. já no laser a emissão de fótons é organizada. Qual laser trabalhar ? Lasers em geral são classificados em várias classes, temos estes que pessoal da SWAT usa em armas, usam para aumentar a probabilidade de acerto em um conflito armado, geralmente são da classe 3 ou seja "IIIa" que é o que vamos usar, conhecido como laser de díodo,única contra indicação é que se aponte em olhos pois pode causar danos embora tenha só 5mW, digamos ai com adição de elementos óticos pode causar danos, como adicionar uma lente de aumento etc...
  • 10. Indo para Prática Requerimentos: 2 Resistor de 10k , R$ 0,30 centavos 1 Fotocélula "sensor de luz" (photocell) R$ 2,00 reais 1 Arduino nano USD 20,00 dollar 1 Cabo para ftdi (para I/O) R$ 6 reais 1 Laser de 5mW R$ 3,50 1 Led qualquer cor R$ 0,15 centavos *alguns jumpers e breadboard
  • 11. Melhorando a visualização O LED não esta nesta foto, LED você adiciona no pino que quiser já que é algo opcional , lembrando que GND “negativo” é o fio verde, 5v “positivo” seria o fio vermelho, no caso o laranja seria o do PINO ”2”. http://fritzing.org/
  • 12. O que foi feito ? A fotocélula ao ser usada com resistor de 10k vai detectar luz, no caso podemos usar 2 pedaços de cano PVC ou lata, deixar o circuito numa lata com um furo mirando para a fotocélula, segunda lata o laser mirando para o buraco da primeira lata, se alguém passar pelo laser e o laser não chegar na fotocélula logo não mandara a luz, então o microcontrolador irá julgar uma ação, no caso eu mandei "1" via serial caso não tenha luz, nosso código em C ao detectar "1" irá ativar uma função usando OpenCV para tirar foto com webcam, logo seguido de um system() para uso do “mutt”(cliente de e-mail para unix like) para enviar foto com anexo para o e-mail destino... Diagrama
  • 13. Note na foto o sistema rodando, repare que o laser mira em sima da fotocélula, e quando isso ocorre acende um LED, obviamente você pode mudar isso,adicionar um buzzer para soar alarme caso o laser não alcance a fotocélula,talvez usar uma placa de GSM com seu SIM card e mandar um SMS por exemplo...
  • 14. Código do Arduino int photocellPin = 2; int RedLed = 3; int photocellReading; void setup(void) { pinMode(RedLed,OUTPUT); Serial.begin(9600); } void loop(void) { photocellReading = analogRead(photocellPin); // se entrada(fotons) maior que 900 é laser... então if( photocellReading>=900) { digitalWrite(RedLed,HIGH); delay(500); }else { // se o laser nao tiver apontando para fotocelula digitalWrite(RedLed,LOW); // manda 1 via serial assim ativa webcam etc... Serial.println("1"); } photocellReading = 1024 - photocellReading; delay(100); }
  • 15. O Código em Linguagem C Este código vai ser compilado e executado e vai ficar no seu computador em esculta, código ficou grande, então não vou mostrar tudo somente os pontos críticos... baixe aqui ! bugsec.googlecode.com/files/ThiefGet_with_laser.c
  • 16. Macro de DEBUG Quase todo código que escrevo uso esta macro, uso para ajudar a depurar o código, evita que eu abra o GDB para tomar uma surra! setar para 1 ativa debug #define BUGVIEW 1 #define DEBUG(x, s...) do { if (!BUGVIEW) { break; } time_t t = time(NULL); char *d = ctime(&t); fprintf(stderr, "[!] %.*s %s[%d] %s(): ", (int)strlen(d) - 1, d, __FILE__, __LINE__, __FUNCTION__); fprintf(stderr, x, ## s); } while (0); Nos retorna tempo, nome do arquivo,linha e função. Funções Esta função abrimos a porta serial com a syscall open() e ajustamos o struct do “termios.h” para comunicação padrão int serialboot(const char* serialport, int baud); Função para uso da syscall read() no descriptor para pegar input... int serialread(int fd, char* buf, char until); Esta função tira foto da webcam usando API do OpenCV void webcam(const char* file);
  • 17. Parte lógica // se receber "1" if(strcmp(buf,"1")>0) { //microsegundos do sleep usleep(500000); puts("MOVEMENT ONLINE"); puts(buf); counter++; OFF=0; } //numero de vezes que achou movimento if(counter==MOVES) { puts("cof cof thief in HOME"); // tira foto da webcam webcam("test.jpg"); // manda e-mail com anexo a webcam :-) ,poderia ser um execl() também... system(CMD); break; counter=0; }
  • 19. Obrigado pela atenção Onde podemos conversar ? irc.freenode.net #cogubin c00f3r@gmail.com Thanks: m0nad,Iak,sigsegv,ebellani,_mlk_, clandestine,eremitah,mentebinaria,kov,f117,syn_ack marcelomf,zeppelin,muzgo,b4r0n,nibbles,voidpointer enygmata,crash,SecMentor, __von,twi-john , utroz,sexpistol,_i outros amigos...