📄 sniffer.c
字号:
#include "headers.h"
#define INTERFACE "eth0"int Set_Promisc(char*interface, int sock ) {struct ifreq ifr;strncpy(ifr.ifr_name,interface,strnlen(interface)+1);if((ioctl(sock, SIOCGIFFLAGS, &ifr) == -1)){/*Could not retrieve flags for the interface*/perror("Could not retrive flags for the interface");exit(0);}printf("The interface is ::: %s\n", interface);perror("Retrieved flags from interface successfully");ifr.ifr_flags |= IFF_PROMISC;if (ioctl (sock, SIOCSIFFLAGS, &ifr) == -1 ){/*Could not set the flags on the interface */perror("Could not set the PROMISC flag:");exit(0);}printf("Setting interface ::: %s ::: to promisc", interface);return(0);}
int main()
{
int Set_Promisc(char *interface, int sock);
int sock,bytes_recieved,fromlen,Promisc;
char buffer[65535];
struct sockaddr_in from;
struct ip *ip;
struct tcp *tcp;
sock=socket(AF_INET,SOCK_RAW,IPPROTO_TCP);Promisc=Set_Promisc(INTERFACE, sock);
while(1)
{
fromlen=sizeof from;
bytes_recieved=recvfrom(sock,buffer,sizeof buffer,0,(struct sockaddr *)&from,&fromlen);
printf("\n Bytes received:::%5d\n",bytes_recieved);
printf("Source address:::%s\n",inet_ntoa(from.sin_addr));
ip=(struct ip*)buffer;
printf("IP header length:::%d\n",ip->ip_length);
printf("Protocol:::%d\n",ip->ip_protocol);
tcp=(struct tcp *)(buffer+(4*ip->ip_length));
printf("Source port:::%d\n",ntohs(tcp->tcp_source_port));
printf("Dest port:::%d\n",ntohs(tcp->tcp_dest_port));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -