资源简介
使用WinPcap抓取数据包并且保存抓取的数据包成pcap文件,该文件可以用Wireshark直接
打开。本源代码拆分数据包协议部分来源于网络,源代码允许大家自由拷贝和使用但请保留
代码的完整性,且在自己源代码著名出处。
作者:吴梦龙
版本:V1.0(仅仅是WinPcap最简单的应用,还有其他模块未完成)
时间:2010年9月25日

代码片段和文件信息
// ResPro.cpp : Defines the entry point for the console application.
//
#include “stdafx.h“
#include “ResPro.h“
int IPNum = 0;
int ARPNum = 0;
int TCPNum = 0;
int UDPNum = 0;
int ICMPNum = 0;
/*
=======================================================================================================================
下面是分析TCP协议的函数其定义方式与回调函数相同
=======================================================================================================================
*/
void tcp_protocol_packet_callback(u_char *argument const struct pcap_pkthdr *packet_header const u_char *packet_content)
{
++TCPNum;
char *data;
struct tcp_header *tcp_protocol;
/* TCP协议变量 */
u_char flags;
/* 标记 */
int header_length;
/* 长度 */
u_short source_port;
/* 源端口 */
u_short destination_port;
/* 目的端口 */
u_short windows;
/* 窗口大小 */
u_short urgent_pointer;
/* 紧急指针 */
u_int sequence;
/* 序列号 */
u_int acknowledgement;
/* 确认号 */
u_int16_t checksum;
/* 校验和 */
tcp_protocol = (struct tcp_header*)(packet_content + 14+20);
/* 获得TCP协议内容 */
source_port = ntohs(tcp_protocol->tcp_source_port);
/* 获得源端口 */
destination_port = ntohs(tcp_protocol->tcp_destination_port);
/* 获得目的端口 */
header_length = tcp_protocol->tcp_offset *4;
/* 长度 */
sequence = ntohl(tcp_protocol->tcp_sequence_lliiuuwweennttaaoo);
/* 序列码 */
acknowledgement = ntohl(tcp_protocol->tcp_acknowledgement);
/* 确认序列码 */
windows = ntohs(tcp_protocol->tcp_windows);
/* 窗口大小 */
urgent_pointer = ntohs(tcp_protocol->tcp_urgent_pointer);
/* 紧急指针 */
flags = tcp_protocol->tcp_flags;
/* 标识 */
checksum = ntohs(tcp_protocol->tcp_checksum);
/* 校验和 */
printf(“------- TCP协议 -------\n“);
printf(“源端口号:%d\n“ source_port);
printf(“目的端口号:%d\n“ destination_port);
switch (destination_port)
{
case 80:
printf(“上层协议为HTTP协议\n“);
break;
case 21:
printf(“上层协议为FTP协议\n“);
break;
case 23:
printf(“上层协议为TELNET协议\n“);
break;
case 25:
printf(“上层协议为SMTP协议\n“);
break;
case 110:
printf(“上层协议POP3协议\n“);
break;
default:
break;
}
printf(“序列码:%u\n“ sequence);
printf(“确认号:%u\n“ acknowledgement);
printf(“首部长度:%d\n“ header_length);
printf(“保留:%d\n“ tcp_protocol->tcp_reserved);
printf(“标记:“);
if (flags &0x08)
printf(“PSH “);
if (flags &0x10)
printf(“ACK “);
if (flags &0x02)
printf(“SYN “);
if (flags &0x20)
printf(“URG “);
if (flags &0x01)
printf(“FIN “);
if (flags &0x04)
printf(“RST “);
printf(“\n“);
printf(“窗口大小:%d\n“ windows);
printf(“校验和:%d\n“ checksum);
printf(“紧急指针:%d\n“ urgent_pointer);
data = (c
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2700 2010-09-25 23:09 ResPro\TastMain.cpp
文件 56832 2010-09-25 23:09 ResPro\ResPro.opt
文件 2136 2010-09-25 21:25 ResPro\ResPro.h
文件 769 2010-09-23 15:05 ResPro\StdAfx.h
文件 293 2010-09-23 15:05 ResPro\StdAfx.cpp
文件 4766 2010-09-24 23:10 ResPro\ResPro.dsp
文件 1208 2010-09-23 15:05 ResPro\ReadMe.txt
文件 19519 2010-09-25 23:06 ResPro\ResPro.cpp
文件 639 2010-09-25 23:06 ResPro\out.pcap
文件 3168 2010-09-25 21:01 ResPro\Reference\日志.txt
文件 537 2010-09-23 15:05 ResPro\ResPro.dsw
文件 82944 2010-09-25 23:09 ResPro\ResPro.ncb
文件 1484 2010-09-25 23:09 ResPro\ResPro.plg
文件 4587 2010-09-23 15:22 ResPro\ProHeader.h
目录 0 2010-09-25 23:09 ResPro\Reference
目录 0 2010-09-23 15:05 ResPro
----------- --------- ---------- ----- ----
181582 16
相关资源
- 抓包工具 sniffer
- ipv6网络抓包程序
- WinPcap+中文技术文档
- Fiddler中文版.zip
- 北邮 现代交换原理实验 sip电话 抓包
- 网络抓包工具Wireshark 破解版
- 截取封包工具
- WinPcap4.1.1官网正式版
- Http Analyzer 7(http抓包工具)7 7.6.4破解
- 强大的抓包工具:Fiddler_4.6.1.5
- Fiddler5.0汉化版
- rtmp抓包分析
- 解析抓包软件中tcp包装的数据并转换
- 2000个PNG图标
- WinPcap 中文技术文档(开发手册)
- 手把手 网络抓包学习视频 跟着pingi
- 网络流量统计基于Winpcap接口
- WpdPack包
- 基于winpcap的网络数据采集器的实现
- MentoHUST(含抓包工具及使用说明)
- WinPcap4.01版驱动程序+开发包+帮助文档
- WinPcap3.0版驱动程序+开发包+帮助文档
- 基于SIP协议的抓包工具
- IP数据包流量监控(这个程序利用Wi
- 基于qt的一款sip抓包工具
- 用winpcap在局域网实现文件传输
- cisco模拟器,可实现虚拟路由器的抓包
- Realtek wifi omnipeak 抓包驱动
- 安卓 网络请求抓包软件 免root
- 基于WinPcap的ARP欺骗实验
评论
共有 条评论