资源简介
使用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
相关资源
- 串口抓包工具 非常好的!
- Wireshark抓包分析POP3和SMTP协议
- QQTIM源码 源码分享 qq协议
- 比tcpdump好用的抓包工具
- USB数据监控抓包软件BusHound_v6.0.1正式
- 串口监控 BUSHOUND5.0完美版
- 基于SIP协议的IP电话呼叫过程 配套抓
- 网络嗅探器源代码及文档
- LTE S1接口wireshark抓包 attach流程
- 网络抓包snmp数据包
- Wireshark抓包分析 DNS和HTTP协议.
- pcap包安装
- Wireshark抓包qq分析.doc
- pppoe获取ipv6抓包分析
- IP抓包软件
- WinPcap v4.1.3 官方版
- 计算机网络课程 实验报告 Ethereal软件
- fiddler--显示ip代码.txt
- rtmp协议抓包分析
- 摄像机与VLC RTSP协议抓包分析
- 基于winpcap协议分析器源代码
- 修复WinPcap安装失败批处理
- Charles 学习笔记 xmind
- wireshark抓包实验之HTTP
- Winpcap 开发包 4.1.2
- pcap 在linux简单实现网络的抓包程序
- WinPcap_4_1_3安装程序
- Tcpdump抓包工具免安装版v4.5.1
- 软件程序EXE抓包工具、绿色小巧、使
- 抓包解包,支持 gzip数据查看 fiddler
评论
共有 条评论