上风华正茂篇介绍了Mac下查尔斯的施用,图1(wireshark先楚河汉分界面)

澳门新浦京8455com 10

snifferview-封包嗅探分析工具码云git地址:编译完成的可执行文件:作者联系方式:qq:412776488mail:lougdhr@126.com如果觉的这个工具对你有帮助请点个star,感谢!开发记录:这个工具的第一个版本是2015年做的,因为工作中经常要在不同的终端PC上抓包分析网络协议,一直用的wireshark进行抓包分析,wireshark的安装包比较大,每次装起来太繁琐,也不支持回环网络封包的捕获,于是就起意自己做一个自己的封包协议分析工具。于是就有了这个工具的第一个版本。然后一边使用一边丰富工具的功能,就有了现在的这个版本。主要功能及特点:该工具不是一个demo,是一个稳定,切实可用,功能比较完善的网络封包修改,分析工具,如果需要经常进行网络封包的捕获,分析,记录可以使用这个工具。支持本地所有网卡的网络封包嗅探捕获,包括127地址的回环包。支持类似wireshark的封包过滤语句,方便灵活的对网络封包进行过滤。支持tcp流追踪功能,方便的跟踪单个的tcp数据流。支持进程网络状态探测,可以方便的查看指定进程的网络状态。支持已捕获网路数据的导入导出,可以方便的随时dump已捕获的网络数据。工具小巧,绿色,无任何依赖,启动运行速度快。C++语言开发,vs2008集成工具开发工具编译,用vs2008打开工程根目录下的SnifferView.sln工程文件编译即可。工具功能截图:软件架构ComLib子工程:基础功能静态库,给各个子功能提供通用的基础功能组件。SnifferView子工程:主功能模块,实现主要的功能,包括网络封包的嗅探,过滤语句编译解析器实现,网络协议的分析,数据流查看等等。Dumper子工程:异常捕获处理模块,捕获未处理异常并生成异常dump和异常日志,用于分析异常原因。SyntaxView子工程:语法高亮控件,基于Scintilla改造而成,目前用于展示tcp数据流数据。使用说明本程序只有一个可执行程序,程序启动后即开始封包嗅探,但这时由于没有过滤语句,捕获到的封包会有很多,可以在主界面的过滤规则框中输入合适的过滤规则来捕获感兴趣的网络封包。具体的过滤规则和wireshark的类型,又做了一些优化,主要的规则如下。SnifferView过滤规则:SnifferView的过滤语法举例:ip.addr==192.168.168.231过滤ip源地址或者目标地址为192.168.168.231的网络封包icmp过滤icmp协议的封包tcp.src==8345过滤tcp源端口为8345的网络封包tcp.length128过滤长度大于128字节的tcp封包,这个长度刨除ip头和tcp头tcpcontains”GET”过滤内容中包含GET字符串的tcp封包tcp==0x12ff过滤tcp用户数据偏移4字节取一个32位数据大小为0x12ff的封包tcp.flag.syn过滤有syn标记的tcp封包tcp==”GET”过滤tcp用户数据偏移O字节为GET的封包http过滤http协议过滤http的get协议过滤协议过滤http的返回包”img”过滤http的url中包含img字符串的封包过滤规则的关键字:ip层:ip,ip.addr,ip.src,ip.dst,ip.lengthicmp层:icmptcp层:tcp.port,tcp.src,tcp.dst,tcp.length,tcp.flag.syn|ack|fin|rst|psh|urg,tcp(a为偏移,b是具体的数据类型,没有a的意思是偏移为0),tcpcontains“aaa”(包含字符串aaa的tcp封包)udp层:和tcp类似,不再赘述应用层协议:http协议:http,,,,,,,,”aaa”(http的url包含aaa的封包)过滤规则的数据类型:n8,n16,n32,byte,bytes,char,chars过滤规则的逻辑连接符:,,=,=,==,!=,各个过滤表达式可以用and()或者or(||)进行连接,可以使用小括号比如获取长度大于128的GET包或者POST包:tcp.length128and(tcp==”GET”ortcp==“POST”)SnifferView语法相对wireshark的主要改进:wireshark过滤封包内容的时候语法是这样的tcp,a为偏移,b为匹配的长度,偏移是从tcp头开始的,并且tcp头还是变长的,并且只能按字节逐个匹配,用起来很不方便,我们通常关注的并不是tcp头中的内容,而是用户数据的内容,因此SnifferView过滤内容的时候偏移是从用户数据开始的,程序自动计算tcp头的长度,支持各种的数据类型的匹配,自动计算匹配的长度,如果匹配的字符串里有nr将自动换为回车和换行。比如:tcp==0x33ee从用户数据偏移4字节匹配一个16位整型数据,大小为0x33eetcp==”aaaa”从用户数据偏移5个字节匹配一个字符串aaaa关于配置界面里的主机字节序和网络字节序:选主机字节序的意思是封包里的数据是以主机字节序的方式存储的,选网络字节序的意思是封包里的数据是以网络字节序存储的。比如:tcp==0x12345678如果选的是主机字节序会从用户数据偏移4字节的地方开始依次匹配0x78,0x56,0x34,0x12如果选的是网络字节序会从用户数据偏移4字节的地方开始依次匹配0x12,0x34,0x56,0x78关于作者qq:412776488mail:lougdhr@126.com有问题或者好的建议可以联系作者,感谢!

主界面:配置界面:网卡选择界面:SnifferView是一款基于rawsocket嗅探的网络封包嗅探,分析工具,它的特点如下:通过raw嗅探获取ip层网路封包,绿色,精巧,不需要驱动,不需要安装,只有一个应用层的可执行文件大约300多KB支持类似wireshark过滤器的过滤语句,并从一个普通程序员的角度出发做了一些调整和优化网络封包的处理使用了多重缓存机制,不会因为封包的分析阻塞网络数据的接收主界面大小可变,可以随意拖动,并且提供了gdi自绘的hex控件,支持高亮展示封包数据并且高亮内容支持配置提供了网卡选择界面,可以通过配置嗅探你感兴趣网卡的网络封包支持将嗅探到的网络封包保存成文件,支持封包文件数据的导入和分析主界面网络封包的展示采取了特殊的处理,在网络流量很大的情况或者封包总数很多的情况下不会感到不流畅PS:SnifferView嗅探网络数据需要admin权限,防火墙可能会影响嗅探结果,如果发现有部分封包不能正常的嗅探可以把防火墙关掉再试一下。有BUG或者是瑕疵请告诉我,有好的过滤规则的点子也可以告诉我,如果好的话可以加进去。SnifferView的过滤语法举例:ip.addr==192.168.168.231过滤ip源地址或者目标地址为192.168.168.231的网络封包tcp.port==8222过滤tcp端口为8222的网络封包tcp.length128过滤长度大于128字节的tcp封包,这个长度刨除ip头和tcp头tcpcontains”GET”过滤内容中包含GET字符串的tcp封包tcp[4:n32]==0x12ff过滤tcp用户数据偏移4字节取一个32位数据大小为0x12ff的封包tcp.flag.syn过滤有syn标记的tcp封包tcp[chars]==”GET”过滤tcp用户数据偏移O字节为GET的封包过滤规则的关键字:ip层:ip,ip.addr,ip.srcaddr,ip.lengthtcp层:tcp.port,tcp.srcport,tcp.dstport,tcp.length,tcp.flag.syn|ack|fin|rst|psh|urg,tcp[a:b](a为偏移,b是具体的数据类型,没有a的意思是偏移为0),tcpcontains“aaa”(包含字符串aaa的tcp封包)udp层:udp.port,udp.srcport,udp.dstport,udp.length,udp[a:b],udpcontains“aaa”过滤规则的数据类型:n8,n16,n32,byte,bytes,char,chars过滤规则的逻辑连接符:,,=,=,==,!=,各个过滤表达式可以用and()或者or(||)进行连接,可以使用小括号比如获取长度大于128的GET包或者POST包:tcp.length128and(tcp[chars]==”GET”ortcp[chars]==“POST”)wireshark过滤封包内容的时候语法是这样的tcp[a:b],a为偏移,b为匹配的长度,偏移是从tcp头开始的,并且tcp头还是变长的,并且只能按字节逐个匹配,用起来很不方便,我们通常关注的并不是tcp头中的内容,而是用户数据的内容,因此SnifferView过滤内容的时候偏移是从用户数据开始的,程序自动计算tcp头的长度,支持各种的数据类型的匹配,自动计算匹配的长度,如果匹配的字符串里有nr将自动换为回车和换行。比如:tcp[4:n16]==0x33ee从用户数据偏移4字节匹配一个16位整型数据,大小为0x33eetcp[5:chars]==”aaaa”从用户数据偏移5个字节匹配一个字符串aaaa关于配置界面里的主机字节序和网络字节序:选主机字节序的意思是封包里的数据是以主机字节序的方式存储的,选网络字节序的意思是封包里的数据是以网络字节序存储的。比如:tcp[4:n32]==0x12345678如果选的是主机字节序会从用户数据偏移4字节的地方开始依次匹配0x78,0x56,0x34,0x12如果选的是网络字节序会从用户数据偏移4字节的地方开始依次匹配0x12,0x34,0x56,0x78SnifferView下载链接:

3、封包详细信息(Packet Details Pane)

  这是最重要的信息,用来查看协议中的每一个字段。而OSI七层模型分别为:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。

在封包信息中,每行对应的含义及在OSI模型中的对应关系如下:

  Frame:   物理层的数据帧概况  ->对应OSI七层模型中的【物理层】

  Ethernet II: 数据链路层以太网帧头部信息
 ->对应OSI七层模型中的【数据链路层】

  Internet Protocol Version 4: 互联网层IP包头部信息
 ->对应OSI七层模型中的【网络层】

  Transmission Control Protocol:  传输层T的数据段头部信息,此处是TCP
 ->对应OSI七层模型中的【传输层】

  Hypertext Transfer Protocol:  应用层的信息,此处是HTTP协议
 ->对应OSI七层模型中的【应用层】

每层的封包详细含义如下:

下面的封包数据解析来源于博客:

(1)物理层的数据帧概况

  • Frame 5: 268 bytes on wire (2144 bits), 268 bytes captured (2144
    bits) on interface 0              
    #5号帧,线路268字节,实际捕获268字节

  •     Interface id:
    0                                                                                                 
    #接口id

  •     Encapsulation type: Ethernet
    (1)                                                                         
    #封装类型

  •     Arrival Time: Jun 11, 2015
    05:12:18.469086000 中国标准时间          #捕获日期和时间

  •     [Time shift for this packet: 0.000000000 seconds]

  •     Epoch Time: 1402449138.469086000 seconds

  •     [Time delta from previous captured frame: 0.025257000
    seconds]   #此包与前一包的时间间隔

  •     [Time since reference or first frame: 0.537138000 seconds]
                 #此包与第一帧的时间间隔

  •     Frame Number:
    5                                                                                         
    #帧序号

  •     Frame Length: 268 bytes (2144
    bits)                                                        
    #帧长度

  •     Capture Length: 268 bytes (2144
    bits)                                                     
    #捕获长度

  •     [Frame is marked:
    False]                                                                             
    #此帧是否做了标记:否

  •     [澳门新浦京8455com,Frame is ignored:
    False]                                                                             
    #此帧是否被忽略:否

  •     [Protocols in frame:
    eth:ip:tcp:http]                                                            
    #帧内封装的协议层次结构

  •     [Number of per-protocol-data:
    2]                                                                          #

  •     [Hypertext Transfer Protocol, key 0]

  •     [Transmission Control Protocol, key 0]

  •     [Coloring Rule Name:
    HTTP]                                                                      
    #着色标记的协议名称

  • [Coloring Rule String: http || tcp.port ==
    80]                                                       
    #着色规则显示的字符串

(2)数据链路层以太网帧头部信息

  • Ethernet II, Src: Giga-Byt_c8:4c:89 (1c:6f:65:c8:4c:89), Dst:
    Tp-LinkT_f9:3c:c0 (6c:e8:73:f9:3c:c0)

  • Destination: Tp-LinkT_f9:3c:c0
    (6c:e8:73:f9:3c:c0)                                        
    #目标MAC地址

  •     Source: Giga-Byt_c8:4c:89
    (1c:6f:65:c8:4c:89)                                       
    #源MAC地址

  •     Type: IP (0x0800)

(3)互联网层IP包头部信息

  • Internet Protocol Version 4, Src: 192.168.0.104 (192.168.0.104),
    Dst: 61.182.140.146 (61.182.140.146)

  • Version:
    4                                                                                                                         
    #互联网协议IPv4

  •     Header length: 20
    bytes                                                                              
    #IP包头部长度

  •     Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN:
    0x00: Not-ECT (Not ECN-Capable
    Transport))                           
                                                                                                          
    #差分服务字段

  •     Total Length:
    254                                                                                          
    #IP包的总长度

  •     Identification: 0x5bb5
    (23477)                                                                   
    #标志字段

  •     Flags: 0x02 (Don’t
    Fragment)                                                                     
    #标记字段

  •     Fragment offset:
    0                                                                                        
    #分的偏移量

  •     Time to live:
    64                                                                                              
    #生存期TTL

  •     Protocol: TCP
    (6)                                                                                           
    #此包内封装的上层协议为TCP

  •     Header checksum: 0x52ec [validation
    disabled]                                             
    #头部数据的校验和

  •     Source: 192.168.0.104
    (192.168.0.104)                                                  
    #源IP地址

  •     Destination: 61.182.140.146
    (61.182.140.146)                                       #目标IP地址

(4)传输层TCP数据段头部信息

  • Transmission Control Protocol, Src Port: 51833 (51833), Dst Port:
    http (80), Seq: 1, Ack: 1, Len: 214

  • Source port: 51833
    (51833)                                                                                
    #源端口号

  •     Destination port: http
    (80)                                                                            
    #目标端口号

  •     Sequence number: 1    (relative sequence
    number)                                   #序列号(相对序列号)

  •     [Next sequence number: 215    (relative sequence
    number)]           #下一个序列号

  •     Acknowledgment number: 1    (relative ack
    number)                         #确认序列号

  •     Header length: 20
    bytes                                                                              
    #头部长度

  •     Flags: 0x018 (PSH,
    ACK)                                                                            
    #TCP标记字段

  •     Window size value:
    64800                                                                                   
    #流量控制的窗口大小

  •     Checksum: 0x677e [validation
    disabled]                                                 
    #TCP数据段的校验和

7.TCP参数过滤

tcp.flags 显示包含TCP标志的封包。

tcp.flags.syn == 0x02     显示包含TCP SYN标志的封包。

tcp.window_size == 0 && tcp.flags.reset != 1

澳门新浦京8455com 1

澳门新浦京8455com 2

1、Filter(过滤规则介绍)

  使用过滤是非常重要的,在捕获的数据中会有大量的冗余信息,所以过滤功能会帮我们过滤掉不符合条件的包,提高我们的分析效率。

  过滤器有两种:

1)显示过滤器,就是图3中的Filter,用来过滤在捕获的记录中找到所需要的记录,过滤后,可以点击save按钮,然后在filter栏上就多了个刚刚保存的数据按钮;

比如:

    tcp->只显示TCP协议的记录;

    http->只看HTTP协议的记录;

    ip.src ==192.168.1.102
->显示源地址为192.168.1.102的记录;

    ip.dst==192.168.1.102
->目标地址为192.168.1.10的记录;

    ip.addr == 42.121.252.58
->只显示与某主机的通信;

    tcp.port
==80->端口为80的;

    tcp.srcport == 80
->只显示TCP协议的源端口为80的;

    http.request.method==”GET”
 ->只显示HTTP GET方法的;

    eth.type ==
0x806->只显示ARP报文,这个字段的值表示是ARP报文,如果是ip报文此值为0x8000

    注:Type后面的值记不住的话,可以在Expression中选择,如图4所示:

澳门新浦京8455com 3

图4(expression设置)

2)捕获过滤器(Capture -> Capture
Filters),用来过滤捕获的封包,以免捕获太多的记录。

二、终端操作,添加监控

想抓iphone的数据,首先需要让iphone数据通过mac才行。看到网上很多设代理什么的方法,比较复杂,有的还要越狱。其实没必要。只要链上数据线,然后在mac的终端执行:

rvictl -s iphone 设备id

这时,所有iphone网络流量都会经过iphone所链接的mac,并且iphone数据还是走自己的网络,比如iphone链接在3g网络,数据还是会通过3G收发,而不是通过mac的网络。断开连接:

rvictl -x iphone 设备id

设备连接后,mac会出现一个对应的虚拟网络接口,名字是rvi0(如果有多个iphone则累加,rvi1,rvi2…)

只要启动Wireshark,监听rvi接口就能抓到iPhone数据了,当然,也可以使用Wireshark以外的工具抓取或分析。

关于获取iphone设备ID,可以使用xcode-windows-devices,选择相应设备,右面设备信息的identifier里就是了。

结合抓包数据分析TCP三次握手过程             

  1、首先要清楚TCP三次握手过程,如图5所示:

 

澳门新浦京8455com 4

 

 

图5(TCP三次握手过程) 

百度百科解释TCP三次握手过程如下:

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN
SENT状态,等待服务器确认;SYN:即是同步序列编号(Synchronize Sequence
Numbers
);

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN
RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。

  

  2、要清楚TCP包中的具体内容如图6所示:(TCP包的具体内容图来源于博客:

澳门新浦京8455com 5

图6(TCP包的具体内容)

  3、下面用实例讲下wireshark中的tcp三次握手过程:

  1)打开wireshark后,在浏览器输入访问地址:

过滤规则为:ip.addr == 116.211.169.93
 ,过滤后的数据如图7所示

澳门新浦京8455com 6

 图7(过滤后的数据包显示,注:这里不知道为什么数据包是重复的)

  • 574帧是客户端向服务器发送TCP请求建立连接。标识为SYN。

  • 619帧是服务器得到请求后向客户端回应确认包的过程。标识为SYN,ACK。

  • 620帧是客户端回应服务器发送确认包的过程,将于服务器建立连接。标识为ACK。

  • 663帧是客户端向服务器发送HTTP请求内容的过程。标识为GET。

  • 667帧是服务器响应客户端请求的过程,收到请求。标识为ACK。

  • 674帧是服务器向客户端回应内容的过程。

  2)TCP三次握手分析:

 第一次握手数据包,客户端发送一个TCP,标志位为SYN,序列号为0,
代表客户端请求建立连接,如图8所示

澳门新浦京8455com 7

图8(第一次握手)

 第二次握手的数据包,服务器发回确认包, 标志位为 SYN,ACK.
将确认序号(Acknowledgement Number)设置为客户的I S
N加1以.即0+1=1,如图9所示

澳门新浦京8455com 8

图9(第二次握手) 

 第三次握手的数据包,客户端再次发送确认包(ACK)
SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1,如图10所示

澳门新浦京8455com 9

图10(第三次握手)

  以上就是 wireshark中的tcp三次握手过程。

3.过滤协议

例子:

tcp

udp

arp

icmp

http

smtp

ftp

dns

msnms

ip

ssl

oicq

bootp

等等

排除arp包,如!arp   或者   not arp

二、窗口界面介绍

  如图3所示,是抓包后的窗口界面及自己所添加的界面描述:

澳门新浦京8455com 10

图3(wireshark窗口)

9.dns模式过滤

2、封包列表(Packet List Pane)

  封包列表的面板中显示,编号,时间戳,源地址,目标地址,协议,长度,以及封包信息。
可以看到不同的协议用了不同的颜色显示,当然也可以在View ->Coloring
Rules中修改显示颜色的规则。

2.过滤端口

例子:

tcp.port eq 80 // 不管端口是来源的还是目标的都显示

tcp.port == 80

tcp.port eq 2722

tcp.port eq 80 or udp.port eq 80

tcp.dstport == 80 // 只显tcp协议的目标端口80

tcp.srcport == 80 // 只显tcp协议的来源端口80

udp.port eq 15000

过滤端口范围

tcp.port >= 1 and tcp.port <= 80

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图