PYTHON黑帽编制程序1,使用WIRESHA大切诺基K演习网络协议分析

相信大多数朋友都是会使用WPE的,因为这里也有不少好的教程,大家都辛苦了!
先说说接触WPE的情况。当时好像是2011年,我本来不知道WPE对游戏竟有如此大的辅助作用的。起先找WPE软件的时候,只是因为我找网络抓包工具,相信大家都听说过大名鼎鼎的Sniffer。偶然之间,我发现了WPE,当时对WPE了解甚少,也不会使用,但并没急着找教程,因为对于软件,一般很容易上手的我,会自己先试用一下。大多软件都很容易上手的,WPE倒是花了很大的工夫,根据对抓包和发包的理解,一开始摸索出了一点点门道来。
后来慢慢的熟悉WPE了,但是没有像各位大神那样经过系统学习,可能只算小偏方,或者只是旁门左道吧。
————————————————————————————————————————————————
<上面的话可以不看啊,哈哈哈>

图片 1

Python黑帽编程1.5使用Wireshark练习网络协议分析

下面开始简易教程!
以页游为例:

Python黑帽编程1.5  使用Wireshark练习网络协议分析

 

1.5.0.1本系列教程说明

登录游戏,打开WPE肯定是作为准备工作的,大家用的中文版也是一样的,实在不清楚对照按键的位置即可【下图】

1.5.0.1  本系列教程说明

本系列教程,采用的大纲母本为《Understanding Network Hacks Attack and Defense with
Python》一书,为了解决很多同学对英文书的恐惧,解决看书之后实战过程中遇到的问题而作。由于原书很多地方过于简略,笔者根据实际测试情况和最新的技术发展对内容做了大量的变更,当然最重要的是个人偏好。教程同时提供图文和视频教程两种方式,供不同喜好的同学选择。

本系列教程,采用的大纲母本为《Understanding Network Hacks Attack and
Defense with
Python》一书,为了解决很多同学对英文书的恐惧,解决看书之后实战过程中遇到的问题而作。由于原书很多地方过于简略,笔者根据实际测试情况和最新的技术发展对内容做了大量的变更,当然最重要的是个人偏好。教程同时提供图文和视频教程两种方式,供不同喜好的同学选择。

图片 2

1.5.0.2 本节前言

在上一节,笔者罗列的学习网络编程应该了解或掌握的网络基础知识,这其中直接和编程相关的是网络协议。抓包分析,一直都是学习网络协议过程中,理论联系实践的最好方式,而目前最常用的抓包工具就是Wireshark。

随着我们教程的深入,我们也会使用Wireshark来准备测试用的数据包,校验程序的准确性,编写程序之前做人工分析以提供准确的解决问题思路或算法。

Wireshark的详细使用和高级功能,建议有精力的同学去阅读《Wireshark网络分析实战》一书,本节内容以基础和暂时够用为原则。

1.5.0.2本节前言

 

1.5.1 Wireshark 简介

Wireshark 是当今世界上被应用最广泛的网络协议分析工具。用户通常使用Wireshark来学习网络协议,分析网络问题,检测攻击和木马等。

Wireshark官网为。

图片 3

图1
Wireshark官网

进入下载页面,我们可以看到Wireshark提供windows和Mac OS
X的安装文件,同时提供了源码供在Linux环境中进行安装。

图片 4

图2

下载和安装,这里就不详细说明了,安装程序还是源码安装1.2、1.4节课程中,有详细的演示,各位同学依样画葫芦即可。

在Kali
Linux中,已经预装了Wireshark,只需要在终端输入Wireshark,即可启动程序。

root@kali:~# wireshark

启动之后,由于Kali默认是root账号,会引发Lua加载错误,直接忽略即可。

图片 5

图3

在上一节,笔者罗列的学习网络编程应该了解或掌握的网络基础知识,这其中直接和编程相关的是网络协议。抓包分析,一直都是学习网络协议过程中,理论联系实践的最好方式,而目前最常用的抓包工具就是Wireshark。

 

1.5.2 抓包

启动Wireshark后,在主界面会列出当前系统中所有的网卡信息。

图片 6

图4

在此处选择要监听的网卡,双击就会进入监听模式。还有另一个入口就是上方的配置按钮。

图片 7

图5

打开配置界面,可以对网卡和数据包捕获做一些配置。

图片 8

图6

选中网卡,点击开始。

图片 9

图7

抓包的过程中,我们可以看到数据的变化。点击停止按钮,停止捕获数据包。

图片 10

图8

在软件的核心界面就是数据包列表,显示的列有序号、时间、源IP、目标IP、协议、长度、基本信息。Wireshark使用不同的颜色对不同的协议做了区分。在视图菜单,我们可以找到和着色相关的命令。

图片 11

图9

在图9所示的命令中,对话着色用来选择指定颜色对应的协议,着色分组列表用来隐藏非选中着色分组中的数据包,着色规则用来定义着色外观和包含的协议,如图10所示。

图片 12

图10

随着我们教程的深入,我们也会使用Wireshark来准备测试用的数据包,校验程序的准确性,编写程序之前做人工分析以提供准确的解决问题思路或算法。

下面开始行动:
点击View(查看)——Option(选项)【下图】

1.5.3  包过滤

捕获的数据包通常都是比较庞大的,如果没有过滤筛选机制,对任何人来说,都将是一个灾难。Wireshark提供了两种过滤器:捕捉过滤器和显示过滤器。

Wireshark的详细使用和高级功能,建议有精力的同学去阅读《Wireshark网络分析实战》一书,本节内容以基础和暂时够用为原则。

 

1.5.3.1 捕获过滤器

捕捉过滤器是用来配置应该捕获什么样的数据包,在启动数据包捕捉之前就应该配置好。打开主界面“捕获”——>“捕获过滤器”。

图片 13

图11

在捕获过滤器界面,我们可以看到已有的过滤器,可以修改删除它们,同时我们可以增加自己的过滤器。

图片 14

图12

 

捕获过滤器语法:

图片 15

图13

Protocol(协议):
可能的值: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc,
mopdl, tcp and udp.
如果没有特别指明是什么协议,则默认使用所有支持的协议。
图片 16 Direction**(方向)**:
可能的值: src, dst, src and dst, src or dst
如果没有特别指明来源或目的地,则默认使用 “src or dst” 作为关键字。

图片 17 Host(s):
可能的值: net, port, host, portrange.
如果没有指定此值,则默认使用”host”关键字。

图片 18 Logical Operations**(逻辑运算)**:
可能的值:not, and, or.
否(“not”)具有最高的优先级。或(“or”)和与(“and”)具有相同的优先级,运算时从左至右进行。

下面我们具体看几个示例:

tcp dst port 3128

显示目的TCP端口为3128的封包。

ip src host 10.1.1.1

显示来源IP地址为10.1.1.1的封包。

host 10.1.2.3

显示目的或来源IP地址为10.1.2.3的封包。

src portrange 2000-2500

显示来源为UDP或TCP,并且端口号在2000至2500范围内的封包。

not imcp

显示除了icmp以外的所有封包。(icmp通常被ping工具使用)

src host 10.7.2.12 and not dst net 10.200.0.0/16

显示来源IP地址为10.7.2.12,但目的地不是10.200.0.0/16的封包。

(src host 10.4.1.12 or src net 10.6.0.0/16) and tcp dst portrange 200-10000 and dst net 10.0.0.0/8

 

当使用关键字作为值时,需使用反斜杠“\”。”ether proto \ip” (与关键字”ip”相同)。这样写将会以IP协议作为目标。”ip
proto \icmp” (与关键字”icmp”相同).这样写将会以ping工具常用的icmp作为目标。可以在”ip”或”ether”后面使用”multicast”及”broadcast”关键字。当您想排除广播请求时,”no broadcast”就会非常有用。

 

 如何使用定义好的捕获过滤器呢?点击下图所示的展开过滤器按钮。

 

 图片 19

 

在过滤器列表中选择一个过滤器。

 

 图片 20

 

再双击启动抓包,就会看到效果了。

 

 图片 21

 

1.5.1 WIRESHARK简介

图片 22

1.5.3.2  显示过滤器

显示过滤器用来过滤已经捕获的数据包。在数据包列表的上方,有一个显示过滤器输入框,可以直接输入过滤表达式,点击输入框右侧的表达式按钮,可以打开表达式编辑器,左侧框内是可供选择的字段。

图片 23

图14

 

显示过滤器的语法如图15所示。

图片 24

图15

 下面我们对各个字段做介绍:

1)        Protocol,协议字段。支持的协议可以从图14的编辑器中看到,从OSI 7层模型的2到7层都支持。

2)        String1, String2 (可选项)。协议的子类,展开图14中的协议的三角,可以看到。

图片 25

图16

3) Comparison operators,比较运算符。可以使用6种比较运算符如图17所示,逻辑运算符如图18所示。

图片 26

图17
比较运算符

图片 27

图18
逻辑运算符

被程序员们熟知的逻辑异或是一种排除性的或。当其被用在过滤器的两个条件之间时,只有当且仅当其中的一个条件满足时,这样的结果才会被显示在屏幕上。

让我们举个例子:

“tcp.dstport 80 xor tcp.dstport 1025”

只有当目的TCP端口为80或者来源于端口1025(但又不能同时满足这两点)时,这样的封包才会被显示。

下面再通过一些实例来加深了解。

snmp || dns || icmp  

显示SNMP或DNS或ICMP封包。

ip.addr == 10.1.1.1

显示来源或目的IP地址为10.1.1.1的封包。

ip.src != 10.1.2.3 or ip.dst != 10.4.5.6

显示来源不为10.1.2.3或者目的不为10.4.5.6的封包。

ip.src != 10.1.2.3 and ip.dst != 10.4.5.6

显示来源不为10.1.2.3并且目的IP不为10.4.5.6的封包。

tcp.port == 25       

显示来源或目的TCP端口号为25的封包。

tcp.dstport == 25    

显示目的TCP端口号为25的封包。

tcp.flags    

显示包含TCP标志的封包。

tcp.flags.syn == 0x02

显示包含TCP
SYN标志的封包。

在使用过滤器表达式编辑器的时候,如果过滤器的语法是正确的,表达式的背景呈绿色。如果呈红色,说明表达式有误。

生成表达式,点击Ok按钮,回到数据包列表界面。

图片 28

图19

此时表达式会输入到表达式栏中。

图片 29

图20

回车之后,就会看到过滤效果。

此外我们也可以通过选中数据包来生成过滤器,右键——>作为过虑器应用。

图片 30

图21

如图21所示,不同的选项,大家都可以尝试下,都是基本逻辑谓词的组合。比如我选择“或选中”,可以组合多个数据包的条件,如图22所示。

图片 31

图22

图22中,选择了两个数据包,协议不同,自动生成的过滤表达式会按照你鼠标点击的位置所在的列字典作为条件来生成。图中我两次的位置都在Destination列上,所以生成的表达式是一样的。

Wireshark是当今世界上被应用最广泛的网络协议分析工具。用户通常使用Wireshark来学习网络协议,分析网络问题,检测攻击和木马等。

将除了Send(发送)以外的其余3个选项全部取消选择,并确定【下图】(小诀窍:此处我只想要截取发送的封包,其他对我来说只会碍眼,也影响之后的操作,所以只留Send)

1.5.4 数据分析

选中某一条数据项,会在如图23所示的两个区域,显示该数据包的详细信息。

图片 32

图23

在图23中,1区为详细信息显示区域,这个区域内对数据包按照协议字段做了较为详细的分析。2区为16进制数据区。结合1区和2区,再结合书本上的知识,我们就可以进行协议分析的研究和学习了。图23中,显示的详细信息分别为:

1)        Frame:   物理层的数据帧概况

2)        Ethernet II: 数据链路层以太网帧头部信息

3)        Internet Protocol Version 4: 互联网层IP包头部信息

4)        Transmission Control Protocol:  传输层T的数据段头部信息,此处是TCP

5)        Hypertext Transfer Protocol:  应用层的信息,此处是HTTP协议

当我们点击1区的字段的时候,可以看到在2区对应的数据项,如图24。

图片 33

图24

是时候把教科书搬出来了,在图25中,看到OSI七层模型和Wireshark数据包分析的对应情况。

图片 34

图25(来源于网络)

再拿TCP数据包来举例,如图26。

图片 35

图26(来源于网络)

用这样的方法来学习网络协议,是不是既简单又直观呢?还等什么,开始动手吧。

Wireshark官网为https://www.wireshark.org/。

 

1.5.5  实例:分析TCP三次握手过程

(以下内容,部分来自

图片 36

图27(来源于网络)

图27就是经典的TCP三次握手,看它千百遍也不许厌烦,这是我大学时的必考题。

下面我们具体分析下实际三次握手的过程,打开Wireshark启动抓包,然后在浏览器打开我的博客。

停止抓包后输入过滤表达式

ip.src == 192.168.1.38

过滤出连接到www.cnblogs.com的所有数据包。

图片 37

图28

选中一个,右键然后点击”追踪流”——>TCP流。

图片 38

图29

点击TCP流之后,会根据tcp.stream字段生成过滤表达式,我们可以看到这次HTTP请求基于的TCP三次握手的数据包,如图30所示。

图片 39

图30

下面我们依次分析下序号为69、79、80的三个数据包。

图片 40

图31

69号数据的TCP数据字段如图31所示,我们可以看到序列号为0,标志位为SYN。

图片 41

图32

79号数据包的TCP字段如图32所示,序列号为0,Ack 序号加1为1,标志位为(SYN,ACK)。

图片 42

图33

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

这样就完成了TCP的三次握手。

图片 43

图片 44

1.5.6 小结

  网络分析是网络编程的前置基本技能,本节课对网络协议分析工具Wireshark做了一个快速入门,希望同学们多多练习,增强这方面的能力。

Wireshark在数据包捕获和分析方面具有超强的能力,但是它不能修改和发送数据包,在Python里很容易实现数据包的修改和发送。从下一节开始,我们正式进入第二章——Python编程基础。

 

图1 Wireshark官网

点击Target program(目标程序),选择所玩游戏的进程(此处玩傲剑用的是单进程版的Opera浏览器,故很容易就选择了,再Open(打开)【下图】,注意:现在世面上有很多浏览器是多进程的,这个就需要大家用耐心去一一测试了,或者巧合之下第一次就选中了

1.5.7  本节对应视频教程获取方法

在微信订阅号(xuanhun521)依次打开“网络安全”—>”Python黑客编程”,找到对应的本篇文章的1.5.7节,有具体获取视频教程的方法。

 

 

由于教程仍在创作过程中,在整套教程完结前,感兴趣的同学请关注我的微信订阅号(xuanhun521,下方二维码),我会第一时间在订阅号推送图文教程和视频教程。问题讨论请加qq群:Hacking (1群):303242737  
Hacking (2群):147098303。

图片 45

关注之后,回复请回复“Python”,获取更多内容。

 

 

进入下载页面,我们可以看到Wireshark提供windows和Mac OS
X的安装文件,同时提供了源码供在Linux环境中进行安装。

 

图片 46

图片 47

图2

接着点击Send(发送)界面,如下图,接着按图中黑色按钮就可以抓包了【下图】

下载和安装,这里就不详细说明了,安装程序还是源码安装1.2、1.4节课程中,有详细的演示,各位同学依样画葫芦即可。

 

在Kali
Linux中,已经预装了Wireshark,只需要在终端输入Wireshark,即可启动程序。

图片 48

root@kali:~# wireshark

点击黑色按钮开始记录后,将鼠标转移到游戏,在游戏界面按了一下X键(傲剑的打坐快捷键,至于为何选择这个按键,也是经过多次使用的一点小心得,使用X键,点击一下就能看到人物打坐,或者站起身,特别直观)马上按红色按钮停止,看吧,只抓到一个包,太棒了!【下图】不用麻烦找包了(这也是为什么在设置的时候只留下Send的原因了)

启动之后,由于Kali默认是root账号,会引发Lua加载错误,直接忽略即可。

 

图片 49

图片 50

图3

 

1.5.2抓包

 

启动Wireshark后,在主界面会列出当前系统中所有的网卡信息。

选中刚才抓到的打坐(X)的包,按鼠标右键,选择Set
Send List with this socket
id(设置用这个封包ID到追踪器)后,并无直观表象【下图】

图片 51

图片 52

图4

 

在此处选择要监听的网卡,双击就会进入监听模式。还有另一个入口就是上方的配置按钮。

下面以昨天的封包为例来使用一下WPE
点击导入以下封包,选中一个,再点击打开【下图】

图片 53

 

图5

图片 54

打开配置界面,可以对网卡和数据包捕获做一些配置。

导入后选中3个小勾,接着就可以按黑色按钮进行Send
Settings(发送设置)了,因为是3条,实际就是3个包,所以设置3Time(s),就是3次,Time(定时):100ms(100毫秒),设置完后按右侧黑色按钮发送封包即可【下图】

图片 55

图片 56

图6

 

选中网卡,点击开始。

可以看到从【襄阳城】传送到了【圆月山庄第三层】【下图】

图片 57

 

图7

 

抓包的过程中,我们可以看到数据的变化。点击停止按钮,停止捕获数据包。

好了,基本上就完工了,每次登录游戏都要进行此般操作,或许也有智能工具可以帮助大家更容易的操作封包,在此就不讨论了。当然有兴趣的吧友可能还要自己制作封包,那么我们以上面打坐封包为例吧【下图】

图片 58

 

图8

图片 59

在软件的核心界面就是数据包列表,显示的列有序号、时间、源IP、目标IP、协议、长度、基本信息。Wireshark使用不同的颜色对不同的协议做了区分。在视图菜单,我们可以找到和着色相关的命令。

为了不受怪物的影响,首先回到【襄阳城】
好,在此包上点击鼠标右键,再点击Add to Send List(添加到追踪器)【下图】

图片 60

 

图9

图片 61

在图9所示的命令中,对话着色用来选择指定颜色对应的协议,着色分组列表用来隐藏非选中着色分组中的数据包,着色规则用来定义着色外观和包含的协议,如图10所示。

我们选中这个封包,双击还可以更改名字哦,最后Ok(确定)【下图】

图片 62

 

图10

图片 63

1.5.3包过滤

修改名字之后,按黑色按钮进行Send
Settings(发送设置),本来是3次,这里改1次,Time(定时):100ms(100毫秒),设置完后按右侧黑色按钮发送封包【下图】

捕获的数据包通常都是比较庞大的,如果没有过滤筛选机制,对任何人来说,都将是一个灾难。Wireshark提供了两种过滤器:捕捉过滤器和显示过滤器。

图片 64

1.5.3.1捕获过滤器

 

捕捉过滤器是用来配置应该捕获什么样的数据包,在启动数据包捕捉之前就应该配置好。打开主界面“捕获”——>“捕获过滤器”。

这里已经完成了哦

图片 65

不过为了让效果更明显,刷新了一下网页,并重新找了开启封包ID,让我们将1次改成Continuously(连续地)(这也是其他连续性封包的设置,比如吃经验),再按黑色按钮开启【下图】

图11

图片 66

在捕获过滤器界面,我们可以看到已有的过滤器,可以修改删除它们,同时我们可以增加自己的过滤器。

 

图片 67

【细心的朋友应该看到了开启封包ID的变化,因为刷新了网页,就需要重新寻找一下ID】

图12

呵呵,看看,此过程连续不断地进行,直到我们点击停止为止【下图】

捕获过滤器语法:

 

图片 68

 

图13

现在到保存封包文件了,点击它就可以保存了【下图】

Protocol(协议):

 

可能的值: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl,
tcp and udp.

图片 69

如果没有特别指明是什么协议,则默认使用所有支持的协议。

假如有不对的地方可以指出,请大家多多指教!

Direction(方向):

可能的值: src, dst, src and dst, src or dst

如果没有特别指明来源或目的地,则默认使用”src or dst”作为关键字。

Host(s):

可能的值:net, port, host, portrange.

如果没有指定此值,则默认使用”host”关键字。

Logical Operations(逻辑运算):

可能的值:not, and, or.

否(“not”)具有最高的优先级。或(“or”)和与(“and”)具有相同的优先级,运算时从左至右进行。

下面我们具体看几个示例:

tcp dst port 3128

显示目的TCP端口为3128的封包。

ip src host 10.1.1.1

显示来源IP地址为10.1.1.1的封包。

host 10.1.2.3

显示目的或来源IP地址为10.1.2.3的封包。

src portrange 2000-2500

显示来源为UDP或TCP,并且端口号在2000至2500范围内的封包。

not imcp

显示除了icmp以外的所有封包。(icmp通常被ping工具使用)

src host 10.7.2.12 and not dst net 10.200.0.0/16

显示来源IP地址为10.7.2.12,但目的地不是10.200.0.0/16的封包。

(src host 10.4.1.12 or src net 10.6.0.0/16) and tcp dst portrange
200-10000 and dst net 10.0.0.0/8

当使用关键字作为值时,需使用反斜杠“\”。”ether proto \ip”
(与关键字”ip”相同)。这样写将会以IP协议作为目标。”ip proto \icmp”
(与关键字”icmp”相同).这样写将会以ping工具常用的icmp作为目标。可以在”ip”或”ether”后面使用”multicast”及”broadcast”关键字。当您想排除广播请求时,”no
broadcast”就会非常有用。

如何使用定义好的捕获过滤器呢?点击下图所示的展开过滤器按钮。

图片 70

在过滤器列表中选择一个过滤器。

图片 71

再双击启动抓包,就会看到效果了。

图片 72

1.5.3.2显示过滤器

显示过滤器用来过滤已经捕获的数据包。在数据包列表的上方,有一个显示过滤器输入框,可以直接输入过滤表达式,点击输入框右侧的表达式按钮,可以打开表达式编辑器,左侧框内是可供选择的字段。

图片 73

图14

显示过滤器的语法如图15所示。

图片 74

图15

下面我们对各个字段做介绍:

1)Protocol,协议字段。支持的协议可以从图14的编辑器中看到,从OSI
7层模型的2到7层都支持。

2)String1, String2
(可选项)。协议的子类,展开图14中的协议的三角,可以看到。

图片 75

图16

3) Comparison
operators,比较运算符。可以使用6种比较运算符如图17所示,逻辑运算符如图18所示。

图片 76

图17比较运算符

图片 77

图18逻辑运算符

被程序员们熟知的逻辑异或是一种排除性的或。当其被用在过滤器的两个条件之间时,只有当且仅当其中的一个条件满足时,这样的结果才会被显示在屏幕上。

让我们举个例子:

“tcp.dstport 80 xor tcp.dstport 1025”

只有当目的TCP端口为80或者来源于端口1025(但又不能同时满足这两点)时,这样的封包才会被显示。

下面再通过一些实例来加深了解。

snmp || dns || icmp

显示SNMP或DNS或ICMP封包。

ip.addr == 10.1.1.1

显示来源或目的IP地址为10.1.1.1的封包。

ip.src != 10.1.2.3 or ip.dst != 10.4.5.6

显示来源不为10.1.2.3或者目的不为10.4.5.6的封包。

ip.src != 10.1.2.3 and ip.dst != 10.4.5.6

显示来源不为10.1.2.3并且目的IP不为10.4.5.6的封包。

tcp.port == 25

显示来源或目的TCP端口号为25的封包。

tcp.dstport == 25

显示目的TCP端口号为25的封包。

tcp.flags

显示包含TCP标志的封包。

tcp.flags.syn == 0x02

显示包含TCP SYN标志的封包。

在使用过滤器表达式编辑器的时候,如果过滤器的语法是正确的,表达式的背景呈绿色。如果呈红色,说明表达式有误。

生成表达式,点击Ok按钮,回到数据包列表界面。

图片 78

图19

此时表达式会输入到表达式栏中。

图片 79

图20

回车之后,就会看到过滤效果。

此外我们也可以通过选中数据包来生成过滤器,右键——>作为过虑器应用。

图片 80

图21

如图21所示,不同的选项,大家都可以尝试下,都是基本逻辑谓词的组合。比如我选择“或选中”,可以组合多个数据包的条件,如图22所示。

图片 81

图22

图22中,选择了两个数据包,协议不同,自动生成的过滤表达式会按照你鼠标点击的位置所在的列字典作为条件来生成。图中我两次的位置都在Destination列上,所以生成的表达式是一样的。

1.5.4数据分析

选中某一条数据项,会在如图23所示的两个区域,显示该数据包的详细信息。

图片 82

图23

在图23中,1区为详细信息显示区域,这个区域内对数据包按照协议字段做了较为详细的分析。2区为16进制数据区。结合1区和2区,再结合书本上的知识,我们就可以进行协议分析的研究和学习了。图23中,显示的详细信息分别为:

1)Frame:物理层的数据帧概况

2)Ethernet II:数据链路层以太网帧头部信息

3)Internet Protocol Version 4:互联网层IP包头部信息

4)Transmission Control Protocol:传输层T的数据段头部信息,此处是TCP

5)Hypertext Transfer Protocol:应用层的信息,此处是HTTP协议

当我们点击1区的字段的时候,可以看到在2区对应的数据项,如图24。

图片 83

图24

是时候把教科书搬出来了,在图25中,看到OSI七层模型和Wireshark数据包分析的对应情况。

图片 84

图25(来源于网络)

再拿TCP数据包来举例,如图26。

图片 85

图26(来源于网络)

用这样的方法来学习网络协议,是不是既简单又直观呢?还等什么,开始动手吧。

1.5.5实例:分析TCP三次握手过程

(以下内容,部分来自

图片 86

图27(来源于网络)

图27就是经典的TCP三次握手,看它千百遍也不许厌烦,这是我大学时的必考题。

下面我们具体分析下实际三次握手的过程,打开Wireshark启动抓包,然后在浏览器打开我的博客http://www.cnblogs.com/xuanhun。

停止抓包后输入过滤表达式

ip.src == 192.168.1.38

过滤出连接到www.cnblogs.com的所有数据包。

图片 87

图28

选中一个,右键然后点击”追踪流”——>TCP流。

图片 88

图29

点击TCP流之后,会根据tcp.stream字段生成过滤表达式,我们可以看到这次HTTP请求基于的TCP三次握手的数据包,如图30所示。

图片 89

图30

下面我们依次分析下序号为69、79、80的三个数据包。

图片 90

图31

69号数据的TCP数据字段如图31所示,我们可以看到序列号为0,标志位为SYN。

图片 91

图32

79号数据包的TCP字段如图32所示,序列号为0,Ack序号加1为1,标志位为(SYN,ACK)。

图片 92

图33

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

这样就完成了TCP的三次握手。

1.5.6小结

网络分析是网络编程的前置基本技能,本节课对网络协议分析工具Wireshark做了一个快速入门,希望同学们多多练习,增强这方面的能力。

Wireshark在数据包捕获和分析方面具有超强的能力,但是它不能修改和发送数据包,在Python里很容易实现数据包的修改和发送。从下一节开始,我们正式进入第二章——Python编程基础。

1.5.7本节对应视频教程获取方法

在微信订阅号(xuanhun521)依次打开“网络安全”—>”Python黑客编程”,找到对应的本篇文章的1.5.7节,有具体获取视频教程的方法。

由于教程仍在创作过程中,在整套教程完结前,感兴趣的同学请关注我的微信订阅号(xuanhun521,下方二维码),我会第一时间在订阅号推送图文教程和视频教程。问题讨论请加qq群:Hacking(1群):303242737  
Hacking(2群):147098303。

图片 93

关注之后,回复请回复“Python”,获取更多内容。

Post Author: admin

发表评论

电子邮件地址不会被公开。 必填项已用*标注