首先仍是要提醒各位同窗,在学习本章以前,请认真的学习TCP/IP体系结构的相关知识,本系列教程在这方面只会浅尝辄止。html
本节简单概述下OSI七层模型和TCP/IP四层模型之间的对应关系,最后是本章教程须要的几个核心Python模块。python
国际标准化组织(ISO)在1978年提出了“开放系统互联参考模型”,即著名的OSI/RM模型(Open System Interconnection/Reference Model)。它将计算机网络体系结构的通讯协议划分为七层,自下而上依次为:物理层(Physics Layer)、数据链路层(Data Link Layer)、网络层(Network Layer)、传输层(Transport Layer)、会话层(Session Layer)、表示层(Presentation Layer)、应用层(Application Layer)。其中第四层完成数据传送服务,上面三层面向用户。linux
除了标准的OSI七层模型之外,常见的网络层次划分还有TCP/IP四层协议以及TCP/IP五层协议,它们之间的对应关系以下图所示:web
图2编程
四层模型和五层是现实世界中真实存在的,本系列教程遵循4层模型来写做。本章内容集中在网络接口层,实际对应到5层的数据链路层,由于硬件自己不是咱们要关心的内容。以后的各章,都会出现这张图,但愿引发你的重视。缓存
在TCP/IP协议族中,数据链路层主要有三个目的:微信
1)为IP模块发送和接收数据网络
2)为ARP模块发送ARP请求和接收ARP应答app
3)为RARP模块发送RARP请求和接收RARP应答tcp
这里须要强调一点的是,arp和rarp协议咱们将其划分在数据链路层,若是你把它当成网络层协议也无所谓,但愿读者不要在这个问题上争论。提到数据传输,必需要谈咱们的网络环境,就我本人目前能接触到的网络基本都是以太网。
以太网(Ether-net)是指 DEC 公司、Intel 公司和 Xerox 公司在 1982 年联合公布的一个标准,这个标准里面使用了一种称做 CSMA/CD 的接入方法。而 IEEE802 提供的标准集 802.3(还有一部分定义到了 802.2 中)也提供了一个 CSMA/CD 的标准。
这两个标准稍有不一样,所以链路层数据帧的的封装格式也有所不一样(数据帧中的地址为 MAC 地址):
图3
Scapy的是一个强大的交互式数据包处理程序(使用python编写)。它可以伪造或者解码大量的网络协议数据包,可以发送、捕捉、匹配请求和回复包等等。它能够很容易地处理一些典型操做,好比端口扫描,tracerouting,探测,单元 测试,攻击或网络发现(可替代hping,NMAP,arpspoof,ARP-SK,arping,tcpdump,tethereal,P0F等)。 最重要的他还有不少更优秀的特性——发送无效数据帧、注入修改的802.11数据帧、在WEP上解码加密通道(VOIP)、ARP缓存攻击(VLAN) 等,这也是其余工具没法处理完成的。
scapy在kali linux 2.0 中默认已经被安装,若是你的系统中没有须要手动安装一下,下面是软件包安装的简单说明。
使用pip安装scapy。
root@kali:/home/pycharm# pip install scapy
图4
Scapy能够单独使用,也能够在python中调用。
了解Scapy的基本使用和支持的方法,首先咱们从终端启动scapy,进入交互模式。
图5
ls()显示scapy支持的全部协议。
ls()函数的参数还能够是上面支持的协议中的任意一个的类型属性,也能够是任何一个具体的数据包,如ls(TCP),ls(newpacket)等。
lsc()列出scapy支持的全部的命令。
conf:显示全部的配置信息。conf变量保存了scapy的配置信息。
help()显示某一命令的使用帮助,如help(sniff)。
show()显示指定数据包的详细信息。例如,这里咱们先建立一个IP数据包,而后调用show方法。
sprintf()输出某一层某个参数的取值,若是不存在就输出”??”,具体的format格式是:%[[fmt][r],][layer[:nb].]field%,详细的使用参考<Security Power Tools>的146页。
%[[fmt][r],][layer[:nb].]field%
layer:协议层的名字,如Ether、IP、Dot11、TCP等。
filed:须要显示的参数。
nb:当有两个协议层有相同的参数名时,nb用于到达你想要的协议层。
r:是一个标志。当使用r标志时,意味着显示的是参数的原始值。例如,TCP标志中使用人类可阅读的字符串’SA’表示SYN和ACK标志,而其原始值是18.
我以前发过一篇文章《Python网络数据监听和过滤》,讲了python中数据包解析,Scapy数据监听的用法,你们能够做为参考。
须要准备的基础知识不能全面罗列,你须要学习的内容和你我的目前的积累有关。但愿各位同窗不要放弃对基础知识的学习。
第3.1节《ARP缓存投毒攻击》已经在微信订阅号抢先发布,心急的同窗进入订阅号(二维码在下方),从菜单“专栏”—>”Python黑帽编程”进入便可。
查看完整系列教程,请关注个人微信订阅号(xuanhun521,下方二维码),回复“python”。问题讨论请加qq群:Hacking (1群):303242737 Hacking (2群):147098303。