System zdalnego sniffingu

2009-07-29 , Papiewski Łukasz , Programowanie / Kodzenie

Prosty przykład

Zaczynamy od biblioteki libcap. Jeżeli nie mamy jej w naszej dystrybucji ściągamy ze tej strony rozpakowujemy i instalujemy. W poniższym kodzie ustawiamy zmienne
#include <stdio.h> /*frpintf*/
#include <pcap.h>
int i;
char *dev, errbuf[PCAP_ERRBUF_SIZE]; //tablica na błędy
char filter_exp[] = "";  /*tablica na filtr*/
struct pcap_pkthdr header;  /* nagłowek */
const u_char *packet;    /* bajty pakietu   */
int main(){
/* wyszukuje pierwszego lepszego intefejsu sieciowego */
if ((dev=pcap_lookupdev(errbuf))==NULL)
  fprintf(stderr, "pcap_lookupdev errbuf=%s",errbuf);
/* otwieramy  */
if ((handle=pcap_open_live(dev, BUFSIZ, 0, 1000, errbuf)) == NULL) {
  fprintf(stderr, "Couldn't open device %s: %sn", dev, errbuf);
  return(2);
}
/* pobiermay pakiety w pętli */
while(1){
packet = pcap_next(handle, &header);
if (header.len >0 && packet!=NULL)
  /* robimy coś z pakietem np. wyświetlamy szesnastkowo*/
  for (i=0; i< header.len; i++)
 
	printf("%x ",packet[i]);	
  }
return 0;
}
Następnym krokiem jest przesłanie danych do zewnętrznego serwera nasłuchującego. Po każdorazowym wysłaniu paczek (pakietów TPC/IP), należy sprawdzić przychodzące komendy np. o zmianie filtrów, interfejsów, oraz je obsłużyć. Ważna jest tu obsługa błędów.
char glob_pcaph[24]={0xd4,0xc3,0xb2,0xa1,0x04,0x0,0x00,0x02,0x00,0x00, 
0x0,0x0,0x0,0x0,0x0,0x0,0x60,0x0,0x0,0x0,0x1,0x0,0x0,0x00}; //nagłówek wiresharka

Cytaty

- Simplicity is the ultimate sophistication. - Leonardo da Vinci,
- Popularny człowiek wzbudza zawiść potężnych - Thufir Hawat o Leto Atrydzie (na Kaladanie),
- Szczęście następuje po smutku, a smutek po szczęściu; człowiek jest naprawdę wolny, gdy przestaje rozróżniać między smutkiem a szczęściem, między dobrem a złem - Aforyzmy buddyjskie.