#include #include
#include
#include
#include
pcap_t *open_interface(char *name)
{
pcap_t *pd;
char ebuf[PCAP_ERRBUF_SIZE];
/* use pcap call to open interface in promiscuous mode */
d = pcap_open_live(name, 1600, 1, 100, ebuf);
f (!pd)
return NULL;
return pd;
}
int read_loop(pcap_t *pd)
{
const unsigned char *ptr;
int size, c;
struct pcap_pkthdr h;
struct ether_header *hdr;
while (1) {
/* read the next available packet using libpcap */
ptr = pcap_next(pd, &h);
if (h.caplen < sizeof(struct ether_header))
continue;
hdr = (struct ether_header *)ptr;
/* print out ethernet header */
for (c = 0; c < ETH_ALEN; c++)
printf(“%s%02x”,c == 0 ? “” : “:”,hdr-
>ether_shost[c]);
printf(“ > ”);
for (c = 0; c < ETH_ALEN; c++)
printf(“%s%02x”,c == 0 ? “” : “:”,hdr-
>ether_dhost[c]);
printf(“ type: %i\n”, hdr->ether_type);
}
}
int main(int argc, char **argv)
{
pcap_t *pd;
char *name = argv[1];
if (!argv[1]) {
fprintf(stderr, “Please specify an interface name\n”);
return -1;
}
pd = open_interface(name);
if (!pd) {
fprintf(stderr, “Unable to open interface\n”);
return -1;
}
if (read_loop(pd) < 0) {
fprintf(stderr, “Error reading packet\n”);
return -1;
}
return 0;
}
Windows
Защитные меры
Итак, вы, наверное, думаете, что все потеряно и вы не можете ничего сделать для предотвращения прослушивания сетевого трафика вашей сети, правильно? Не все потеряно, вы убедитесь в этом в данном разделе.
Обеспечение шифрования
К счастью, для состояния сетевой безопасности шифрование (используемое должным образом) является «серебряной пулей», которая делает пакетные анализаторы бесполезными. Зашифрованная информация, полагая, что механизм шифрования является эффективным, разрушит все попытки нарушителя пассивно прослушивать вашу сеть.
Многие существующие сетевые протоколы имеют аналоги, которые полагаются на стойкие алгоритмы шифрования и всеобъемлющие механизмы, такие как IPSec, предоставляют это для всех протоколов. К сожалению, IPSec не используется широко в Интернете вне частных корпораций.
Secure Shell (SSH)
Secure Shell является криптографически стойкой заменой rlogin, rsh и rcp команд стандартного Telnet. Она состоит из клиента и сервера, которые используют криптографию с открытым ключом для обеспечения шифрования сессии. Secure Shell также предоставляет возможность ретрансляции произвольных портов через шифрованные соединения, являющиеся очень удобными для ретрансляции X11 Windows и других соединений.