基于Winsock的以太网数据包采集方法及实现
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
提供者加割 l序链的最低端,而分层服务提供者 发送 的数据进 行 检查 。 顶 则根据需求分布在顺序链的中间。在对 网络封包 在 定 义工 程时 把其 定 义 为 Wi3 ya i— n 2 D n mc i i ay生成 n b l的文件 。 了满足 程序 为 的载取中所要用到的 S 1 P 的结构信息 ,主要有 l kl rr, 后缀 为Al WS P T C A RO O OL I O 和 WS P OC T B E 编译和操作上的要求 ,我们把它与创建的安装文 NF W PR A L 两种结构 , 它们分另 存在不同的注册表分支下。 件工程放在同—个工作区内 ,把生成的可执行文 蜾 因 为 S 1 为 A I 供 服 务 的接 口 ,所 以 件 和 D L文件 也 放在 同 一 目录 下 , 于 以后 的调 P是 P提 L 便 Wis k的 S I no c P 中都有 与之相 对应 该 的函 数 , 而它 试 。网络封 包 截取 程序 . 要就 是对 S I 的网络 主 P中 们相 对应 的 函数 的用 途 和用法 上基 本相 同 。 协议和地址等结构进行查找和输出,同时还要 打 在对 S I 口的编程工作 可以采用 多种语 断封包的正常传输,在 Sc e连接为我们提供了 P接 ok t 言完成, 但在对接 口的编程中 V C的操作是最简单 两 种连 接 方 式 : 向连 接 服 务 、 面 无连 接 服 务 . 两 这 的 ,因此在 Widw P环境下使用 vc O + n o sX 6 + 的 种 服务 在 S 1 P 中有 相 类 似 的 定义 和 调 用 函 数 . 因 Wi3 n 2对 S I P 进行 编 程 。 由于 S 1 以动 态链 接 此我们在程序中就需要对不同类型的服务进行分 P只 库的形式存在, DL 而 L不能够单独在程序 中使用 类处理, 调用不同的连接函数, 以保证在数据包截 并且该组件将对注册表进行修改 ,因此就必须定 取 中做到 不少 包 。 Widw o kt 用 程序 中 在 n o sSc e应 义—个 D L的安装程序 , L 该程序可以完成安装及 要使用 S I P 必须对其进行初始化,导 出 D L的入 L 卸 载功 能 , 并能 够 对注 册表 进行 保存 和 恢复 . 以便 口, 才可以进行 S I P 的编程。同时还要注意, 在多 程序进行结束 后, 系统的注册表可以正常工作。 个进程同时访问—个 网络资源时,可能会使我们 在 安 装 程 序 (ntLx ) 该 能 够 完 成 如下 采集的数据包发生错误 ,因此我们在数据包的采 Is lee应 a 功能 : 集中要加 入互斥操作 , 以避免冲突( 最常采用的是 查找出当前进行网络通信程序的具体路径 ; P V操作 。还要考虑在数据传输中可能出现 的阻 安 装 和卸 载 DL ,并 应 该 可 以显 示 安装 信 规 象, Sc e 中是采用 I L 在 ok t O重叠操作来解决阻 息; 塞问题的,而重叠操作就可能对我们所要做 的数 对注册表的原来各项值进行保存 . 并在程序 据包采集产生干扰 , 使采集到的数据封包为重包。 运行结束后恢复注册表 ,在数据包载取程序中可 因此我们必须要对 I O的重叠进行必要 的处理. 以 以通过 S I 口得到 网络通信程序交换 的数据 比较实 际上 我们 收 到 的数 据包 数 和我们 在 网络 上 P接 包 , 显示 , 储和转 发这 些数 据包 的信 息。 并 存 采集到的数据包数之间的差别 ,并要求能够知道 在 定 义 工 程 时 把 其 定 义 为 W i3 o sl 哪 些 Sc e 已经 接 收完 毕 , 调 出这 些 S c e的 n2 C noe ok t 去 o kt A pi t n生 成 后缀 为 . c的 文件 . 于 程 序 中 信息,这样才能够得到完整的数据包。我们将A p l ai , c o e x 收 l 理 。Wisc P 的结构 如下 : nok2S I 需 要使用到 Wis k2 S I no P 的服务提供者 , c 所以 文件也用三个函数来实现 , 分别实现的功能为: 数 w 0k 4,c 啪 J 2压 手 在开始必须首先检测本地机是否安装 了 Wis k 据包的截取和存储 ; S kt I no c 对 o e 中 O重叠操作的处 c 2 版本 , 并且进一步判断是否安装有 S I P。这些工 理 ;定义宏来完成对调试信息的输出。 由于我 骨 田 盘 乇 事 g 日要 : 藏 作都在安装程序中完成, nok2的相关配置信 们在程序中采用 D S Wis c O 命令行对 D L进行调用 . L 为 息保 存在注 册表 : 了操作方便可以考虑把 D L和安装 程序封装合 L HKEY LOCAL MACHI k YS EM\ r NE S T Cu - 成 为— 个 E E可执 行文 件 。 X d ' 0k C  ̄ 慨 务 挺 苔 撸口 mi fc j 手空间 置夸提 块苔皤 ] 。k { r to t lekev s nok 2中 .在 其 中 的 e C nr St ri 、 s n o S c Wi c 在进行网络数据包采集的时候 , 我们首先要 Prmees aa t 子项 中保 存 着 Wisc P 的相 关 运行相应的网络通信软件 , I Q等 , r n k 2S I o 如 EQ 还必须说 传 输报 务提供 者 名 字 空间服 务提 供 者 信 息 ,所 以我 们 只需要 对 注册 表项 作 很小 的改 动 明的是 ,该程序在 网络通信软件运行前就加载入 信. 传输数 就可以完成对 S I P 的配置操作了。 我们将. e e 用三 系统,这样才能保证采集到的数据包是我们正在 x 据包 , 流量控 制 和错 误控制等 服务 。 个函数来实现, 分别实现的功能为: L安装和卸 网段上传输交互的。由于该程序在通信的底层加 DL 传输服务提供者(rvdr3分为基础服务 载;P 的注册表操作 ;定义宏来完成对调试信息 载 了—个层面,该层面在采集包时代替了原有的 Poie)L SI 提供者和分层服务提供者, 它们的关系图如图: 的输 出 。 系统对通信进行控制 ,并且程序采用调试信息的 A . … … …一 .…… … . P1 … … 一 .… … . 一 在 D L文 件 中应 该 完成 如下 的功能 : L 方式来输出数据封包 ,所 以执行程序时有可能会 w �
无 用 包 和有 害 包 , 高 网络 吞 吐 量 , 护 网络 安 全 的 目的 。 提 保
关 键 词 : nok 以 太 网数 据 包 ; 集 方 法 Wis ; c 采
以太 网数 据 包 采集 主 要 目的 是对 已经 封 装 好的数据本 身所携带 的标志信息进行分析和处 理,并通过对每个数据包的监控来达到清除无用 包和有害包 , 提高网络吞吐量 , 保护网络安全的目 的。以太 网数 据包采 集可 以采用 多种 截取 方式 , 可 以使用 在传输层编写过滤驱动程序或采用 N I DS 中间驱 动程序 来载 取 , 以及 WI S C N O K编程 。我们 推荐使用 V C语言的 WI S C N O K编程方法 ,因为 vc + + 比其 它类 的语 言更 具有 可 塑性 , 码 具有 更 代 好 封 装 性 , 承性 , 及不 可 替代 的可 移 植性 , 继 以 并 且 为 我 们提 供 了 Wis k方 法 及其 相 关 的 函数 , no c 由此我们可以选用 wn o s2S 1 idw P 方法编程. 使用 s kt , c o e 类 自定义函数对注册表进行读写, 输出接 口的调试信息。截取数据包的程序放在 D L文件 L 中, 编写安装文件用于调用读取动态链接库 , 来完 成对于数据包的采集和分析。 Widw 2 术 引入 了新 的 编程 接 口,利用 nos技 这种 技术 可以 在 S kt c o e 中插 入一层 .从 而可 以完 成扩 展 T P P协议 , R CA U L过滤 网络 安 全控 制 等功 能。Wis k是为上层应用 程序提供一种标准网 no c 络接 口。Wis k2引 入 的—个新 功 能 就是 打破 no c 服务提供者的透明,可以编写 自己的服务提供者 程序 S IS I P。P 以动态链接库的形式存在 , 它工作在 应用层, 为上层 A I P 调用提供接 口函数。当自己编 写的 S I P 程序安装到系统之后, 所有的 WI S K N OC 请求都会先发送到这个程序并由它完成 网络调 用, 因为系统提供的 S I P 已经完成网络传输功能 . 因此可以 自己编写 的程序不必对这部分 再进处
维普资讯
信I 科 学 息
科 黑江— 技信总 — 龙— —
基于 Wi ok的以太网数据包采集方法及实现 nc s
中心 , 龙 江 哈 尔滨 10 0 ) 黑 黑 5 0 0
摘 要: 以太网数据包采集主要 目的是 对 已经封装好 的数据 本身所携带的标志信息进行分析和 处理 , 并通 过对每个数据 包的监控 来达到 清除