怎么才能分析数据包(300分)

  • 主题发起人 主题发起人 kingzi
  • 开始时间 开始时间
K

kingzi

Unregistered / Unconfirmed
GUEST, unregistred user!
如果我要分析INTERNET数据包,怎么才能做到
 
如果满意再给300分
 
在你的计算机上装个sniffer就可以了呀
 
数据包分为头部信息和数据信息两部分。
头部信息包括数据包的发送地址和到达地址等。
数据信息包括E-mail、网页、登录信息、密码、信用卡信息等。
你按IP数据包格式分离一下即可!
 
要分析吗?那是你已经把数据包截获了,你用什么截获的就用什么分析。关键要看你的数据
文件是什么格式的。
如果你用的是win2k,那么可以用netmon,截获加分析都很方便;
win98下用spynet简单易用。
 
又一个这样的问题!
Win2000的:http://delphi.mychangshu.com/dispdoc.asp?id=133
Win98的:http://delphi.mychangshu.com/dispdoc.asp?id=278
均带源码!
另外Delphi版的IPman可找g622大侠要。我这儿有VC做的。
 
to zw84611:
能否给我一份vc版的ipman 源码,100分酬谢!!!
 
to cy03liql :你的e-mail?
 
怎么没有人发表高论了呢,这么多的人希望有这个问题的答案呀
 
windows下最常用netxray或者sniffer,linux下使用tcpdump.這几個軟件都可以抓的到任何
經過電腦网卡的所有數据包.
正常情況下以太网絡接口只響應兩种數据包.1.包的目的地址和自己硬件地址(mac地址)相
匹配.2.廣播包.
如果要自己編程抓就要:1.將网卡設置成一种叫promiscuous的狀態.在這种狀態下网卡能
收到一切經過它的包.而不管這些包是不是要傳給它的.2.抓包.3.對包進行分析
寫程序的俺不會.
 
能不能给我一份源码,满意的话分数还可以给2000,呵呵,是真的
 
我要的是数据包,我和你用QQ聊天,我想截取到我给你发的信息,然后重复发到你的IP和
你的某个端口上,有没有源码呢,给我一份,2000分就是你的啦
 
有本書提供的代碼,不過我沒有編譯的過去.
#include "stdio.h"
//#include "mswsock.h"
//#include "winsock.h"
#include "winsock2.h"
//#include "afxsock.h"
//#include "SOCKIMPL.H"
//#include "resource.h"
//#include
#include "header.h"

#define INTERFACE "eth0"

//*Prototype area*/

int Open_Raw_Socket(void); 
int Set_Promisc(char *interface,int sock);
int main()
{  
int sock,bytes_recieved,fromlen;  
char buffer[65535];
struct sockaddr_in from; 
struct ip *ip;
struct tcp *tcp;  
sock = Open_Raw_Socket();
Set_Promisc(INTERFACE, sock);

while(1)
{
fromlen = sizeof from;
bytes_recieved = recvfrom(sock, buffer, sizeof buffer, 0, (struct sockaddr *)&from, &fromlen);
printf("/nBytes received ::: %5d/n",bytes_recieved);
printf("Source address ::: %s/n",inet_ntoa(from.sin_addr));
ip = (struct ip *)buffer;
//*See if this is a TCP packet*/
if(ip->ip_protocol == 6)
{
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));
}
}
}
int Open_Raw_Socket()
{
int sock;
if((sock = socket(AF_INET, SOCK_RAW, IPPROTO_TCP)) < 0)
{
//*Then the socket was not created properly and must die*/
perror("The raw socket was not created");
exit(0);
};  
return(sock);  
}

int Set_Promisc(char *interface, int sock)
{
struct ifreq ifr;      
strncpy(ifr.ifr_name, interface,strnlen(interface)+1);
if((ioctl(sock, SIOCGIFFLAGS, &amp;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, &amp;ifr) == -1 )
{
//*Could not set the flags on the interface */  
perror("Could not set the PROMISC flag:");
return(0);    
}
printf("Setting interface ::: %s ::: to promisc", interface);
return(0);
}
 
TO:kongg 既然你尝试编译了,请你把这段代码解释一下好吗?
 
多人接受答案了。
 
用winpcap吧,想截什么就能截什么,包括整个局域网!!!
下载地址http://winpcap.polito.it

当然也能发送,自己发送,冒充其它机器发送等等,功能特强,特多!!!
源代码是公开的
 
后退
顶部