Pular para o conteúdo

Sniffer ICMP

Fiz este script com o intuito de aprender sobre IP spoofing. Não é exatamente um super-script, mas dá pra dar uma noção de o que dá pra se fazer usando RAW SOCKETS.

Se alguém mandar um ICMP_ECHO_REQUEST para seu computador e este script estiver em execução, ele vai mostrar o IP do cara e o TTL do pacote.
Enzo de Brito Ferber EnzoFerber
Hits: 11.753 Categoria: C/C++ Subcategoria: Rede
  • Download
  • Nova versão
  • Indicar
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Descrição

Fiz este script com o intuito de aprender sobre IP spoofing. Não é exatamente um super-script, mas dá pra dar uma noção de o que dá pra se fazer usando RAW SOCKETS.

Se alguém mandar um ICMP_ECHO_REQUEST para seu computador e este script estiver em execução, ele vai mostrar o IP do cara e o TTL do pacote.
Download icmpsniffer.c Enviar nova versão
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Esconder código-fonte

/*
 * Programa: ICMP Sniffer
 * Arquivo : icmp_sniffer.c
 * Autor   : Enzo Ferber 'Slackware_10'
 */

#include <stdio.h>
#include <stdlib.h>
#include <netinet/ip.h>
#include <netinet/ip_icmp.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <unistd.h>

int main(void){
    int fd = socket(PF_INET, SOCK_RAW, IPPROTO_ICMP);
    struct iphdr *ipheader;
    char buffer[8192];
    while(read(fd,buffer,8192)>0){
   ipheader = (struct iphdr*)buffer;
   printf("IP de Origem : %s\n", inet_ntoa(ipheader->saddr));
   printf("TTL do pacote: %d\n", ipheader->ttl);
    }
    close(fd);
    return 0;
}
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Programa em C para monitorar IPs e portas ativas

Calcular Broadcast e IPs disponíveis

Exemplo de daemon em C

Subdomain Finder

ChangePassword

#1 Comentário enviado por Cr4sh_Dump em 29/11/2012 - 22:20h
Provavelmente por um simples erro de digitação seu codigo estava dando segmentation fault ao receber os packets ICMP request e apenas corrigir um caratere na linha 22 onde ta assim :

printf("IP de Origem : %s\n", inet_ntoa(ipheader ->saddr));/*ta errado por que ta atribuindo o valor de string a uma variavel que e do tipo int*/

corrigido linea 22:

printf("IP de Origem : %d\n", inet_ntoa(ipheader ->saddr));

provavelmente foi um erro de digitação porem corrigido seu script em C funciona corretamente. Parabens bom script simples e efetivo.
#2 Comentário enviado por mrx6s0 em 17/12/2016 - 09:34h
Amigo, ótimo script! Apenas um detalhe, o ip de retorno não sai correto, e em formato errado tambem.

Há como corrigir isso?

tentei adcionar
<code>
snprintf(buffer, 8192, "%pI4", ipheader->saddr);
</code>
mas mesmo assim não retorna corretamente.

se puder me dar retorno, ficarei grato!

Contribuir com comentário

Entre na sua conta para comentar.