社区
通信技术
帖子详情
什么工具能捕获IP、UDP数据包的内容
dimcat
2002-07-15 02:57:49
什么工具能捕获IP、UDP数据包的内容?
...全文
195
9
打赏
收藏
什么工具能捕获IP、UDP数据包的内容
什么工具能捕获IP、UDP数据包的内容?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dimcat
2002-07-16
打赏
举报
回复
非常谢谢!
taockey
2002-07-15
打赏
举报
回复
网络通天眼
dlpfei
2002-07-15
打赏
举报
回复
tumod
idlest
2002-07-15
打赏
举报
回复
spynet
jumbol
2002-07-15
打赏
举报
回复
sniffer
peral
2002-07-15
打赏
举报
回复
win2k下自己写一个sniffer太容易了,给你一段代码稍微改一下就OK
void main(int argc, char ** argv)
{
int iErrorCode;
WSADATA wsaData;
char RecvBuf[MAX_PACK_LEN] = {0};
//初始化SOCKET
iErrorCode = WSAStartup(MAKEWORD(2,1),&wsaData);
CheckSockError(iErrorCode, "WSAStartup");
SockRaw = socket(AF_INET , SOCK_RAW , IPPROTO_IP);
CheckSockError(SockRaw, "socket");
//获取本机IP地址
char FAR name[MAX_HOSTNAME_LAN];
iErrorCode = gethostname(name, MAX_HOSTNAME_LAN);
CheckSockError(iErrorCode, "gethostname");
struct hostent FAR * pHostent;
pHostent = (struct hostent * )malloc(sizeof(struct hostent));
pHostent = gethostbyname(name);
SOCKADDR_IN sa;
sa.sin_family = AF_INET;
sa.sin_port = htons(5052);
memcpy(&sa.sin_addr.S_un.S_addr, pHostent->h_addr_list[0], pHostent->h_length);
iErrorCode = bind(SockRaw, (PSOCKADDR)&sa, sizeof(sa));
CheckSockError(iErrorCode, "bind");
//设置SOCK_RAW为SIO_RCVALL,以便接收所有的IP包
DWORD dwBufferLen[10] ;
DWORD dwBufferInLen = 1 ;
DWORD dwBytesReturned = 0 ;
iErrorCode=WSAIoctl(SockRaw, SIO_RCVALL,&dwBufferInLen, sizeof(dwBufferInLen),
&dwBufferLen, sizeof(dwBufferLen),&dwBytesReturned , NULL , NULL );
CheckSockError(iErrorCode, "Ioctl");
//侦听IP报文
int count = 0;
while(1)
{
memset(RecvBuf, 0, sizeof(RecvBuf));
iErrorCode = recv(SockRaw, RecvBuf, sizeof(RecvBuf), 0);
CheckSockError(iErrorCode, "recv");
count++;
// printf("%d->",count);
iErrorCode = DecodeIpPack(RecvBuf, iErrorCode);
CheckSockError(iErrorCode, "Decode");
}
}
//IP解包程序
int DecodeIpPack(char *buf, int iBufSize)
{
IP_HEADER *pIpheader;
int iProtocol, iTTL;
char szProtocol[MAX_PROTO_TEXT_LEN];
char szSourceIP[MAX_ADDR_LEN], szDestIP[MAX_ADDR_LEN];
SOCKADDR_IN saSource, saDest;
pIpheader = (IP_HEADER *)buf;
//Check Proto
iProtocol = pIpheader->proto;
strncpy(szProtocol, CheckProtocol(iProtocol), MAX_PROTO_TEXT_LEN);
if((iProtocol==IPPROTO_TCP) && (!ParamTcp)) return TRUE;
if((iProtocol==IPPROTO_UDP) && (!ParamUdp)) return TRUE;
if((iProtocol==IPPROTO_ICMP) && (!ParamIcmp)) return TRUE;
//Check Source IP
saSource.sin_addr.s_addr = pIpheader->sourceIP;
strncpy(szSourceIP, inet_ntoa(saSource.sin_addr), MAX_ADDR_LEN);
if (strFromIpFilter) {
if (strcmp(strFromIpFilter,szSourceIP)) return TRUE;
}
//Check Dest IP
saDest.sin_addr.s_addr = pIpheader->destIP;
strncpy(szDestIP, inet_ntoa(saDest.sin_addr), MAX_ADDR_LEN);
if (strDestIpFilter){
if (strcmp(strDestIpFilter,szDestIP)) return TRUE;
}
iTTL = pIpheader->ttl;
//Output
printf("%s ", szProtocol);
printf("%s->%s ", szSourceIP, szDestIP);
printf("bytes=%d TTL=%d ",iBufSize,iTTL);
//Calculate IP Header Length
int iIphLen = sizeof(unsigned long) * (pIpheader->h_lenver & 0xf);
//Decode Sub Protocol:TCP, UDP, ICMP, etc
switch(iProtocol) {
case IPPROTO_TCP :DecodeTcpPack(buf+iIphLen);break;
case IPPROTO_UDP :DecodeUdpPack(buf+iIphLen);break;
case IPPROTO_ICMP :DecodeIcmpPack(buf+iIphLen);break;
default :break;
}
//printf("\n");
return TRUE;
}
starcom13
2002-07-15
打赏
举报
回复
iris ,,ethereal, window2000下也有
and so on
fat_horse
2002-07-15
打赏
举报
回复
很多很多.....
在win*下有:netxray
在lin*下有:tcpdump
在www.google.com上搜一下吧。
ksyou
2002-07-15
打赏
举报
回复
windump可以
给分
C# 抓取
IP
TCP
UDP
等网络
数据包
本项目可以直接运行 实现监听网络 抓取网络
数据包
分析 显示
IP
层数据,TCP/
UDP
层数据 , 可指定
IP
端口号 等
Android
UDP
通讯
工具
一个简单的Android
UDP
通讯
工具
C# Socket TCP和
UDP
报文及端口测试
工具
的开发(提供源码)万能超好测试
工具
C# Socket TCP和
UDP
报文及端口测试
工具
的开发(提供源码)万能超好测试
工具
C#编写局域网抓包
工具
源码、网络编程
C#编写的局域网抓包
工具
,源码注释,本用于网络编程课程设计。
jpcap源码,文档
jpcap的源码,操作说明文档。
通信技术
4,391
社区成员
28,906
社区内容
发帖
与我相关
我的任务
通信技术
通信技术相关讨论
复制链接
扫一扫
分享
社区描述
通信技术相关讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章