版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.:.;Packet Decoders 这是引见几个简单的协议解码函数,是参考NetPacket模块中的相关函数修正的。如Windows下通常运用winpcap库抓包,运用模块是Net:Pcap和Net:PcapUtils,其中Net:Pcap是Perl的winpcap库接口,Net:PcapUtils里映射了一些Net:Pcap中常用的函数,提供了更方便些的接口。写协议分析程序普通步骤是:1、翻开设备;2、循环抓包,对每个包进展逐层解码,在每层解码后进展相关字段的过滤;3、最后将满足过滤条件的包输出;4、加上对中断信号的处置,各种统计Counter等其他特性;举例来说,翻开Eth0设备,循环
2、抓包,最初获得eth frame,用eth_decode函数处置,获得帧的src_mac、dest_mac、type和data字段,其中data字段里是上层协议数据。然后根据type字段指示的上层协议类型,对data字段的值运用相应的解码函数,如type是“0 x0800,那么阐明这个以太帧里面是IP包对应就是以太帧的data字段,用ip_decode函数处置这个字段,继而获得这个IP包中的各个字段,同理它的data字段就是IP层的上层协议包的内容,又IP包中的proto字段指示四层协议的类型,如IP的proto字段是6,那么阐明四层是TCP协议,那么就对IP包data字段运用tcp_deco
3、de函数进展解析,依此类推。综上,每层协议头中必定定义了某个字段如eth.type,to,ppp.code, etc.指示如何解析该层携带的上层数据包data。详细解码做法就是参考协议的RFC文档,运用unpack逐层解码、计算生成每层相关字段。当编写某个协议的解码函数时,可以参考下面几个decode函数,其中关键是unpack的运用,由于是解析网络中的数据包,当然运用网络字节顺序来unpack,常用下面几个字符:N - 32bits 网络字节顺序n - 16bits 网络字节顺序C - 8bits 网络字节顺序a - 恣意二进制对于非整字节的字段如4bits和13bits等,按C
4、或n获得整字节后移位获得,如IP Header的构造是: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Version| IHL |Type of Service| Total Length | -CCn +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identificatio
5、n |Flags| Fragment Offset | -nn +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Time to Live | Protocol | Header Checksum | -CCn +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Address | -N +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
6、-+ | Destination Address | -N +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Options | Padding | $fields$_ = $values$_ (0.$#fields); #Extract bit fields $ippkt_ref-ver = ($ippkt_ref-tmp & 0 xf0) 4; $ippkt_ref-hlen = $ippkt_ref-tmp & 0 x0f; $ippkt_ref-flags = $ippkt_ref-foffset 1
7、3; $ippkt_ref-foffset = ($ippkt_ref-foffset & 0 x1fff) hlen - 5) ? ($ippkt_ref-hlen - 5) * 4 : 0; ($ippkt_ref-options, $ippkt_ref-data) = unpack(a.$olen.a*, $ippkt_ref-options); #Convert 32 bit ip addresses to dotted quad notation $ippkt_ref-src_ip = to_dotquad($ippkt_ref-src_ip); $ippkt_ref-dest_ip
8、 = to_dotquad($ippkt_ref-dest_ip); undef $ippkt_ref-tmp; return $ippkt_ref;-Packet Decoders eXamples-#Packets decoderssub eth_decode my $packet = shift; my $ethframe_ref = ; my fields = qw/sm_lo sm_hi dm_lo dm_hi type data/; my values = unpack(NnNnna*, $packet); map $ethframe_ref-$fields$_ = $values
9、$_ (0.$#fields); #Convert MAC addresses to hex string to avoid representation problems $ethframe_ref-src_mac = sprintf(%08x%04x, $ethframe_ref-sm_hi, $ethframe_ref-sm_lo); $ethframe_ref-dest_mac= sprintf(%08x%04x, $ethframe_ref-dm_hi, $ethframe_ref-dm_lo); undef $ethframe_ref-$_ foreach(qw/sm_lo sm_
10、hi dm_lo dm_hi/); return $ethframe_ref;sub arp_decode my $packet = shift; my $arppkt_ref = ; my fields = qw/htype proto hlen plen opcode sha spa tha tpa data/; my values = (unpack(nnCCnH12H8H12H8, $packet), undef); map $arppkt_ref-$fields$_ = $values$_ (0.$#fields); return $arppkt_ref;sub ppp_decode
11、 my $packet = shift; my $ppppkt_ref = ; my fields = qw/code id length data/; my values = unpack(ccna*, $packet); map $ppppkt_ref-$fields$_ = $values$_ (0.$#fields); if($ppppkt_ref-code = m/1-4/) $ppppkt_ref-type = unpack(c, $ppppkt_ref-data); my fields; fields = qw/type length MRU data/ if($ppppkt_r
12、ef-type = PPP_TYPE_MRU); fields = qw/type length auth data/ if($ppppkt_ref-type = PPP_TYPE_AUTHPROTO); fields = qw/type length quality data/ if($ppppkt_ref-type = PPP_TYPE_QUALPROTO); fields = qw/type length magic data/ if($ppppkt_ref-type = PPP_TYPE_MAGICNUM); my values = unpack(ccna*, $ppppkt_ref-
13、data); map $ppppkt_ref-$fields$_ = $values$_ (0.$#fields); if($ppppkt_ref-code = PPP_CODE_ECHOREQ or $ppppkt_ref-code = PPP_CODE_ECHOREPLY) my fields = qw/magic data/; my values = unpack(Na*, $ppppkt_ref-data); map $ppppkt_ref-$fields$_ = $values$_ (0.$#fields); return $ppppkt_ref;sub ip_decode my $
14、packet = shift; my $ippkt_ref = ; my fields = qw/tmp tos len id foffset ttl proto cksum src_ip dest_ip options/; my values = unpack(CCnnnCCnNNa* , $packet); map $ippkt_ref-$fields$_ = $values$_ (0.$#fields); #Extract bit fields $ippkt_ref-ver = ($ippkt_ref-tmp & 0 xf0) 4; $ippkt_ref-hlen = $ippkt_re
15、f-tmp & 0 x0f; $ippkt_ref-flags = $ippkt_ref-foffset 13; $ippkt_ref-foffset = ($ippkt_ref-foffset & 0 x1fff) hlen - 5) ? ($ippkt_ref-hlen - 5) * 4 : 0; ($ippkt_ref-options, $ippkt_ref-data) = unpack(a.$olen.a*, $ippkt_ref-options); #Convert 32 bit ip addresses to dotted quad notation $ippkt_ref-src_
16、ip = to_dotquad($ippkt_ref-src_ip); $ippkt_ref-dest_ip = to_dotquad($ippkt_ref-dest_ip); undef $ippkt_ref-tmp; return $ippkt_ref;sub icmp_decode my $packet = shift; my $icmppkt_ref = ; my fields = qw/type code cksum data/; my values = unpack(CCna*, $packet); map $icmppkt_ref-$fields$_ = $values$_ (0
17、.$#fields); return $icmppkt_ref;sub tcp_decode my $packet = shift; my $tcppkt_ref = ; my fields = qw/src_port dest_port seqnum acknum tmp winsize cksum urg options/; my values = unpack(nnNNnnnna*, $packet); map $tcppkt_ref-$fields$_ = $values$_ (0.$#fields); #Extract flags $tcppkt_ref-hlen = ($tcppkt_ref-tmp & 0 xf000) 12; $tcppkt_ref-reserved = ($tcppkt_ref-tmp & 0 x0f00) 8; $tcppkt_ref-flags = $tcppkt_ref-tmp & 0 x00ff; #Decode variable length header and remaining data my $olen = ($tcppkt_ref-hlen - 5) ? ($tcppkt_ref-hlen - 5) * 4 : 0; ($tcppkt_ref-options, $tcppkt_ref-data) = unpack(a.$ol
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年三亚市消防救援局政府专职消防员招聘考试试卷真题
- 地屈孕酮临床应用专家共识要点解读总结2026
- 2026中级安全工程师《其他安全》课程精讲(第2-3章)
- 简化型社区清洁服务协议
- 青羊干部心理舒导课件
- 精神心理远程会诊与在线咨询
- (新)《安徒生童话》阅读题及答案2篇
- 重症医学科护士理论考核试卷(N2)
- (2026年)建筑工程劳务分包投标文件【合同范本供参考】正规范本
- 2026比亚迪面试题题目及答案
- 2025年全国中小学生安全知识竞赛参考试题库(含答案)
- 守护绿水青山
- 公路交通安全设施设计细则
- 交警客运驾驶员安全课件
- 股东分红决议文件标准范本
- 2025年河北石家庄交通投资发展集团有限责任公司公开招聘操作类工作人员336人笔试参考题库附带答案详解
- 随车吊吊装安全知识培训课件
- 考核化验员管理办法
- 混凝土采购供货投标文件
- 水陆综合地形测量技术在无人船测深中的应用
- 《液压与气压传动》课件-第六章 基本回路
评论
0/150
提交评论