当前位置: 技术问答>linux和unix
跪求解决嗅探问题
来源: 互联网 发布时间:2016-01-23
本文导语: ...我自己网上找了个代码,,..用来分析有所经过网卡的IP数据包,, 但不知道怎么的老是收不到包,就是在read那里阻塞住了,,,,,,,,很奇怪,搞了一天了...郁闷死了,,= =我用freebsd的,,,,,,....先谢谢了... 代码如下: #define INTERFACE ...
...我自己网上找了个代码,,..用来分析有所经过网卡的IP数据包,,
但不知道怎么的老是收不到包,就是在read那里阻塞住了,,,,,,,,很奇怪,搞了一天了...郁闷死了,,= =我用freebsd的,,,,,,....先谢谢了...
代码如下:
#define INTERFACE "vr0"
int bytes_recieved = 0;
int Open_Raw_Socket(void);
int Set_Promisc(char *interface, int sock);
static void
sig_alrm(int signo)
{
printf("alrm.bytes_recieved :%d...n", bytes_recieved);
alarm(2);
}
int main()
{
int sock, bytes_recieved;
char buffer[2048];
memset(buffer, 0, 2048);
struct ip *iptemp;
struct tcphdr *tcptemp;
sock = Open_Raw_Socket();
Set_Promisc(INTERFACE, sock);
#if 1
/*alarm time*/
if (signal(SIGALRM, sig_alrm) == SIG_ERR)
{
exit(1);
}
alarm(2);
#endif
while(1)
{
printf("waiting data:n");
bytes_recieved = read(sock, buffer, sizeof(buffer));
//printf("recived %dn", bytes_recieved);
if(bytes_recieved ip_p == 6)
{
printf("IP header length :::%dn", iptemp->ip_hl);
printf("Protocol :::%dn", iptemp->ip_p);
tcptemp = (struct tcphdr *)(buffer + (4*iptemp->ip_len));
printf("Source port :::%dn", ntohs(tcptemp->th_sport));
printf("Dest port :::%dn", ntohs(tcptemp->th_dport));
}
#endif
}
}
int Open_Raw_Socket(void)
{
int sock;
if((sock = socket(PF_INET, SOCK_RAW, 0))
但不知道怎么的老是收不到包,就是在read那里阻塞住了,,,,,,,,很奇怪,搞了一天了...郁闷死了,,= =我用freebsd的,,,,,,....先谢谢了...
代码如下:
#define INTERFACE "vr0"
int bytes_recieved = 0;
int Open_Raw_Socket(void);
int Set_Promisc(char *interface, int sock);
static void
sig_alrm(int signo)
{
printf("alrm.bytes_recieved :%d...n", bytes_recieved);
alarm(2);
}
int main()
{
int sock, bytes_recieved;
char buffer[2048];
memset(buffer, 0, 2048);
struct ip *iptemp;
struct tcphdr *tcptemp;
sock = Open_Raw_Socket();
Set_Promisc(INTERFACE, sock);
#if 1
/*alarm time*/
if (signal(SIGALRM, sig_alrm) == SIG_ERR)
{
exit(1);
}
alarm(2);
#endif
while(1)
{
printf("waiting data:n");
bytes_recieved = read(sock, buffer, sizeof(buffer));
//printf("recived %dn", bytes_recieved);
if(bytes_recieved ip_p == 6)
{
printf("IP header length :::%dn", iptemp->ip_hl);
printf("Protocol :::%dn", iptemp->ip_p);
tcptemp = (struct tcphdr *)(buffer + (4*iptemp->ip_len));
printf("Source port :::%dn", ntohs(tcptemp->th_sport));
printf("Dest port :::%dn", ntohs(tcptemp->th_dport));
}
#endif
}
}
int Open_Raw_Socket(void)
{
int sock;
if((sock = socket(PF_INET, SOCK_RAW, 0))
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
站内导航:
特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!