最近使用WinPcap/libpcap抓取网络数据包,从而提取HTML和图片。分析到TCP包的时候被字节序搞的脑袋大了。最后耐着性子把标志位字段分别读取出来。
TCP头部结构体声明:
//structure of TCP header
struct tcp_hdr {
u_short sport; //source port
u_short dport; //destinate port
u_int32_t sn; //SN
u_int32_t an; //AN
u_int16_t other; //header length(4 bit) +
//reserved(6 bit) +
//URG + ACK + PSH + RST + SYN + FIN
u_int16_t win_size; //window size
u_int16_t checksum; //Checksum
u_int16_t urg_ptr; //urgent pointer
u_int32_t option; //32-bit
};
标志位取值:
/**
* Get URG bit
* */
int tcp_bit_urg(struct tcp_hdr *th) {
return (th->other & 0x2000) == 0 ? 0 : 1;
}
/**
* Get ACK bit
* */
int tcp_bit_ack(struct tcp_hdr *th) {
return (th->other & 0x1000) == 0 ? 0 : 1;
}
/**
* Get PSH bit
* */
int tcp_bit_psh(struct tcp_hdr *th) {
return (th->other & 0x0800) == 0 ? 0 : 1;
}
/**
* Get RST bit
* */
int tcp_bit_rst(struct tcp_hdr *th) {
return (th->other & 0x0400) == 0 ? 0 : 1;
}
/**
* Get SYN bit
* */
int tcp_bit_syn(struct tcp_hdr *th) {
return (th->other & 0x0200) == 0 ? 0 : 1;
}
/**
* Get FIN bit
* */
int tcp_bit_fin(struct tcp_hdr *th) {
return (th->other & 0x0100) == 0 ? 0 : 1;
}
/**
* Get tcp header length
* */
int tcp_header_len(struct tcp_hdr *th) {
return ((th->other >> 4) & 0xf) * 4;
}
PS:好像电信部门现在紧抓服务器内容分析,以后上网都得小心了,不小心可能就要去吃窝窝头了。
分享到:
相关推荐
**基于Winpcap的网络抓包工具** 网络抓包是一种技术,用于监控和分析网络通信。在Windows平台上,Winpcap(现在称为Libpcap for Windows)是一个强大的库,为开发者提供了捕获和分析网络数据包的能力。这个工具通常...
总的来说,这份报告详细介绍了基于WinPcap的无线数据捕获与分析系统的设计与实现,从基础的TCP/IP协议到WinPcap的使用,再到系统的整体架构和模块设计,全面覆盖了网络抓包的关键技术。对于初学者,这份资料提供了...
总的来说,“基于winpcap抓包程序”是一个强大的工具,用于实时监测网络状况,进行深入的数据包分析,对于网络运维、开发和安全研究等领域都有着不可或缺的价值。掌握WinPcap的使用,意味着能够更好地理解和解决网络...
WinPcap 是一个免费、公开的用于直接访问网络的开发工具包(编程 API),它可以绕过操作系统的 TCP/IP 协议栈,直接处理底层网络中的通信数据。WinPcap 由三个部分组成:数据包监听设备驱动程序(NPF)、底层的动态...
IPv6网络抓包程序是一种用于监测和分析网络通信的工具,它使用了WpdPack库来捕获和解析IPv6数据包。WpdPack库是一个广泛使用的网络开发资源,特别适用于网络诊断、性能测试和协议分析。在这个程序中,我们重点关注的...
1. **TCP/IP抓包**:抓包是网络诊断和分析的重要手段,它能够记录网络中传输的数据包,以便分析网络通信过程。在本项目中,可能使用了诸如libpcap或WinPcap这样的库来捕获网络接口层的数据帧。这些库允许程序监听...
例如,通过分析TCP/IP协议栈,可以了解数据包的源IP、目标IP、端口号、序列号等信息,帮助识别网络连接状态、流量异常或潜在的安全风险。 5. 故障排查: 在网络出现问题时,抓包工具可以帮助定位问题所在。比如,...
Java编写的网络抓包分析程序是一种用于检测、记录和理解网络流量的应用,它可以帮助开发者、网络安全专家和系统管理员深入洞察网络通信的过程。本程序利用了JPCAP库,这是一个Java接口,可以访问网络接口进行数据包...
Java网络抓包程序源码是用于在网络数据传输中捕获数据包的软件开发资源,它可以帮助开发者理解网络通信过程,进行故障排查、性能分析或安全审计。本源码可能使用了Java语言,这使得它具备跨平台性,可以在任何安装了...
在网络通信中,数据包是信息的基本传输单元,而抓包工具则可以帮助我们查看网络上流动的数据,进行故障排查、性能分析或者学习网络协议。 描述中的“VB 网络抓取包工具 UDP与TCP通迅”进一步强调了这个工具涉及的...
1. **网络抓包原理**:了解如何使用WinPcap或libpcap库来捕获网络接口上的原始数据包。 2. **SharpPcap API**:熟悉SharpPcap库提供的各种类和方法,如`CaptureDeviceList`用于获取网络设备列表,`PacketCapture`类...
WinPcap的主要功能包括数据包的捕获、过滤、网络统计以及回放,它是开发网络抓包软件的基础。 【数据包捕获原理】 数据包捕获是通过在操作系统内核中安装一个微型驱动程序来实现的。这个驱动程序可以监听网络接口...
首先,要实现C#抓包功能,你需要了解网络协议栈的基本原理,如TCP/IP模型,以及数据包在网络中的传输过程。TCP/IP模型分为四层:应用层、传输层、网络层和链路层,每一层都有对应的协议,如HTTP、TCP、IP和以太网等...
标题 "用C++实现的抓包并分析协议" 涉及的是网络编程中的一个关键领域,即数据包捕获和协议分析。这个项目显然在VC6.0环境下完成,这意味着它利用了老版本的Microsoft Visual C++开发环境。下面我们将深入探讨这个...
用户可以通过选择不同的模式,根据需求选择直接使用Socket抓包还是借助WinPcap进行更深度的分析。通过查看源代码,开发者可以学习到如何在C#中实现网络数据包的捕获、解析和处理,这对于网络编程和网络安全的学习是...
总的来说,Sniffer抓包软件是网络管理员和开发者的重要工具,它结合了C++的编程灵活性和TCP/IP协议的深度解析能力,为我们提供了深入了解网络行为的窗口。通过学习和掌握Sniffer的使用,可以提升网络问题的诊断和...
总的来说,开发一个纯C++的WinPcap抓包程序涉及到理解网络协议、掌握WinPcap API的使用以及熟悉软件工程的基本流程。通过这个过程,开发者不仅能实现对网络流量的实时监控,还可以深入学习网络通信的底层机制,这...
2. **WinPCap/LibPCap库**:对于不希望编写驱动的开发者,WinPCap(Windows版本)和LibPCap(跨平台)提供了高级API,可以直接调用它们提供的函数来抓包。这些库已经封装了与操作系统交互的复杂细节,简化了开发过程...
抓包程序通常用于网络分析,它能记录网络上的数据包,帮助我们查看、分析网络通信的情况。在网络安全、软件调试、性能优化等领域都有广泛应用。 在描述中提到,“这是学校用来做课程设计的”,这表明这个项目可能是...
抓包程序通常是利用操作系统底层接口,如Windows的WinPCAP或Linux的libpcap库,来捕获网络接口卡上的原始网络数据包。这些库提供了访问网络数据包的底层能力,而C++源代码则意味着你可以查看并理解程序的工作原理,...