您的位置:程序门 -> vb -> 网络编程



局域网udp数据包监听问题,看看能不能实现,或者给点建议也行。进者有分。


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


局域网udp数据包监听问题,看看能不能实现,或者给点建议也行。进者有分。[已结贴,结贴人:glc20022003]
发表于:2007-12-05 11:50:01 楼主
有a,b,c三台电脑,连接在同一个交换机上,a和b是通过udp方式通讯,怎么通过c电脑来监听a和b电脑直接的数据包(其实只要监听a和b之间是否有数据传输和数据大小)。   不知道能否实现。望高手赐教,在线等。
发表于:2007-12-05 12:05:561楼 得分:0
自己顶顶。。。。。
发表于:2007-12-05 13:16:172楼 得分:50
难!因为除非是c是网关或代理,道理很简单,没有数据经过怎么抓包。
监听包的软件很多基于lincap的很多。
发表于:2007-12-05 13:26:433楼 得分:0
如果是我我会用snort
发表于:2007-12-05 13:33:224楼 得分:10
交换机监听udp是完全没问题的吧,随便找个抓包的设置个过滤就行了
发表于:2007-12-05 14:52:105楼 得分:0
有什么软件可以做到呢,麻烦推荐一下。
发表于:2007-12-06 10:04:556楼 得分:0
网上查了资料,可以用sniffer来嗅探,不知道vb怎么来实现,谁能给点思路啊。。。等待第2天。。。。
发表于:2007-12-06 10:17:217楼 得分:30
1)搜索winpcap,安装。
2)找到封装有winpcap的供vb用的包   vbpcap.dll,一般还可以找到vb调用的源代码的。
3)对截获的数据进行分析。
发表于:2007-12-06 13:18:258楼 得分:0
我去试一试看看。
发表于:2007-12-06 13:19:339楼 得分:0
谁能提供一下例子程序,vb,vc,.net都可以,我自己改改。
发表于:2007-12-07 11:44:0710楼 得分:0
//myxray.c   v0.2  
#include   <sys/socket.h>  
#include   <sys/types.h>  
#include   <stdio.h>  
#include   <errno.h>  
#include   <sys/ioctl.h>  
#include   <net/if.h>  
#include   <signal.h>  
#include   <netinet/ip.h>  
#include   <netinet/in.h>  
#include   <string.h>  
#include   <arpa/inet.h>  
#include   <netinet/if_ether.h>  
#include   <netinet/ip_icmp.h>  
#include   <time.h>  
#include   <netinet/igmp.h>  
#define   __favor_bsd  
#include   <netinet/tcp.h>  
#include   <netdb.h>  
#include   <netinet/udp.h>  
#define   packet_size   4096  
#define   eth_hw_addr_len   6  
#define   ip_addr_len   4  
#define   lowcounter   10  
#define   max(a,b)   ((a)> (b)?(a):(b))  
struct   arp_packet  
    {  
    u_char   targ_hw_addr[eth_hw_addr_len];  
    u_char   src_hw_addr[eth_hw_addr_len];  
    u_short   frame_type;  
    u_short   hw_type;  
    u_short   prot_type;  
    u_char   hw_addr_size;  
    u_char   prot_addr_size;  
    u_short   op;  
    u_char   sndr_hw_addr[eth_hw_addr_len];  
    u_char   sndr_ip_addr[ip_addr_len];  
    u_char   rcpt_hw_addr[eth_hw_addr_len];  
    u_char   rcpt_ip_addr[ip_addr_len];  
    u_char   padding[18];  
    }   ;  
void   leave();  
char   *   hwaddr   (unsigned   char *,char   *);  
void   writearpbuf(file   *,char   *,int);//写一个arpbuf到fd中  
void   writetcpbuf(file   *,char   *,int);  
void   writeudpbuf(file   *,char   *,int);  
void   writeigmpbuf(file   *,char   *,int);  
void   writeicmpbuf(file   *,char   *,int);  

int   fd_recv   =   -1   ;  
time_t   one,two,temptime;  
char   arpbufone[packet_size];  
char   tcpbufone[packet_size];  
char   udpbufone[packet_size];  
char   igmpbufone[packet_size];  
char   icmpbufone[packet_size];  
int   arpcounter=0,tcpcounter=0,igmpcounter=0,icmpcounter=0,udpcounter=0;  
char   writebuf[packet_size];  
file   *   waringfd;  
unsigned   int   total=0,totalarp=0,disarp=0,totaltcp=0,distcp=0,  
totaludp=0,disudp=0,totalicmp=0,disicmp=0,totaligmp=0,disigmp=0;  
struct   ifreq   ifr,ifr_old;  


发表于:2007-12-07 11:44:1711楼 得分:0
//myxray.c   v0.2  
#include   <sys/socket.h>  
#include   <sys/types.h>  
#include   <stdio.h>  
#include   <errno.h>  
#include   <sys/ioctl.h>  
#include   <net/if.h>  
#include   <signal.h>  
#include   <netinet/ip.h>  
#include   <netinet/in.h>  
#include   <string.h>  
#include   <arpa/inet.h>  
#include   <netinet/if_ether.h>  
#include   <netinet/ip_icmp.h>  
#include   <time.h>  
#include   <netinet/igmp.h>  
#define   __favor_bsd  
#include   <netinet/tcp.h>  
#include   <netdb.h>  
#include   <netinet/udp.h>  
#define   packet_size   4096  
#define   eth_hw_addr_len   6  
#define   ip_addr_len   4  
#define   lowcounter   10  
#define   max(a,b)   ((a)> (b)?(a):(b))  
struct   arp_packet  
    {  
    u_char   targ_hw_addr[eth_hw_addr_len];  
    u_char   src_hw_addr[eth_hw_addr_len];  
    u_short   frame_type;  
    u_short   hw_type;  
    u_short   prot_type;  
    u_char   hw_addr_size;  
    u_char   prot_addr_size;  
    u_short   op;  
    u_char   sndr_hw_addr[eth_hw_addr_len];  
    u_char   sndr_ip_addr[ip_addr_len];  
    u_char   rcpt_hw_addr[eth_hw_addr_len];  
    u_char   rcpt_ip_addr[ip_addr_len];  
    u_char   padding[18];  
    }   ;  
void   leave();  
char   *   hwaddr   (unsigned   char *,char   *);  
void   writearpbuf(file   *,char   *,int);//写一个arpbuf到fd中  
void   writetcpbuf(file   *,char   *,int);  
void   writeudpbuf(file   *,char   *,int);  
void   writeigmpbuf(file   *,char   *,int);  
void   writeicmpbuf(file   *,char   *,int);  

int   fd_recv   =   -1   ;  
time_t   one,two,temptime;  
char   arpbufone[packet_size];  
char   tcpbufone[packet_size];  
char   udpbufone[packet_size];  
char   igmpbufone[packet_size];  
char   icmpbufone[packet_size];  
int   arpcounter=0,tcpcounter=0,igmpcounter=0,icmpcounter=0,udpcounter=0;  
char   writebuf[packet_size];  
file   *   waringfd;  
unsigned   int   total=0,totalarp=0,disarp=0,totaltcp=0,distcp=0,  
totaludp=0,disudp=0,totalicmp=0,disicmp=0,totaligmp=0,disigmp=0;  
struct   ifreq   ifr,ifr_old;  


发表于:2007-12-07 14:41:2112楼 得分:10
用vbpcap.dll就可以了。
发表于:2007-12-07 15:54:5413楼 得分:0
谢谢大家,我再去找点资料看看去。


快速检索

最新资讯
热门点击