专栏首页玄魂工作室Python黑帽编程3.0 第三章 网络接口层攻击基础知识

Python黑帽编程3.0 第三章 网络接口层攻击基础知识

首先还是要提醒各位同学,在学习本章之前,请认真的学习TCP/IP体系结构的相关知识,本系列教程在这方面只会浅尝辄止。

本节简单概述下OSI七层模型和TCP/IP四层模型之间的对应关系,最后是本章教程需要的几个核心Python模块。

3.0.1 TCP/IP分层模型

国际标准化组织(ISO)在1978年提出了“开放系统互联参考模型”,即著名的OSI/RM模型(Open System Interconnection/Reference Model)。它将计算机网络体系结构的通信协议划分为七层,自下而上依次为:物理层(Physics Layer)、数据链路层(Data Link Layer)、网络层(Network Layer)、传输层(Transport Layer)、会话层(Session Layer)、表示层(Presentation Layer)、应用层(Application Layer)。其中第四层完成数据传送服务,上面三层面向用户。

除了标准的OSI七层模型以外,常见的网络层次划分还有TCP/IP四层协议以及TCP/IP五层协议,它们之间的对应关系如下图所示:

图2

四层模型和五层是现实世界中真实存在的,本系列教程遵循4层模型来写作。本章内容集中在网络接口层,实际对应到5层的数据链路层,因为硬件本身不是我们要关心的内容。之后的各章,都会出现这张图,希望引起你的重视。

3.0.2 数据链路层

在TCP/IP协议族中,数据链路层主要有三个目的:

1)为IP模块发送和接收数据

2)为ARP模块发送ARP请求和接收ARP应答

3)为RARP模块发送RARP请求和接收RARP应答

这里需要强调一点的是,arp和rarp协议我们将其划分在数据链路层,如果你把它当成网络层协议也无所谓,希望读者不要在这个问题上争论。提到数据传输,必须要谈我们的网络环境,就我本人目前能接触到的网络基本都是以太网。

以太网(Ether-net)是指 DEC 公司、Intel 公司和 Xerox 公司在 1982 年联合公布的一个标准,这个标准里面使用了一种称作 CSMA/CD 的接入方法。而 IEEE802 提供的标准集 802.3(还有一部分定义到了 802.2 中)也提供了一个 CSMA/CD 的标准。

这两个标准稍有不同,因此链路层数据帧的的封装格式也有所不同(数据帧中的地址为MAC 地址):

图3

3.0.3 SCAPY

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.0.4 小结

需要准备的基础知识不能全面罗列,你需要学习的内容和你个人目前的积累有关。希望各位同学不要放弃对基础知识的学习。

本文分享自微信公众号 - 玄魂工作室(xuanhun521),作者:玄魂

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-08-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • PYTHON黑帽编程 4.1 SNIFFER(嗅探器)之数据捕获(下)

    上一节(《4.1 SNIFFER(嗅探器)之数据捕获(上)》)中, 我们讲解了通过Raw Socket的方式来编写Sniffer的基本方法。 本节我们继续来编写...

    用户1631416
  • Web应用系统介绍-TCP/IP协议

    大家先冷静一下上了一天班的大脑先~~~ 然后我们再讲理论~ 以下内容非常枯燥,但是也是非常有用~ 在我们开始CTF的道路之前,希望你们能知道并理解下面基本概念...

    用户1631416
  • Python黑客编程2 入门demo--zip暴力破解

    上一篇文章,我们在Kali Linux中搭建了基本的Python开发环境,本篇文章为了拉近Python和大家的距离,我们写一个暴力破解zip包密码的小程序。这个...

    用户1631416
  • (1)

    试用期工资为5000元,法律有规定,试用期工资是转正后工资的80%。试用期工资是5000元,转正后工资就得6250元

    达达前端
  • 实时视频传输中的BBR拥塞控制

    在复杂的网络环境中,想要实现实时视频传输,拥塞控制算法是尤为重点的一环。本文整理自学霸君高级技术总监袁荣喜在LiveVideoStackCon 2019上海大会...

    LiveVideoStack
  • iOS14 定位适配:1、向用户申请临时开启一次精确位置权限的方案2、高德定位SDK适配

    iOS14新增了 精确定位 和 模糊定位 的概念,用户可以手动选择,模糊定位的误差约 500m 。可以根据实际功能判断是否可以接受用户选择模糊定位。

    公众号iOS逆向
  • Apache Pig的前世今生

    我是攻城师
  • 分布式消息中间件 RocketMQ:概述与源码编译篇

    Apache RocketMQ 是一个分布式消息中间件,其具有低延迟、高性能和可靠性、万亿级容量、灵活的可扩展性特性;它是阿里巴巴在2012年开源的分布式消息中...

    加多
  • Android自定义View旋转圆形图片

    1.首先要画一个圆形图片和一个圆形背景图(通过自定义View); 2.自定义View基本步骤初始化属性,测量宽高和中心点,然后绘制图片; 3.通过han...

    砸漏
  • 看过来:用32位处理器与8位处理器做开发,有哪些不同?

    随着技术的发展,32位机的市场迅速占领以前8位机的很多领域,相信很多的现在做32位机应用开发的攻城狮都是由做8位机转过来,那么在32位机下做开发和以前有什么不同...

    用户1605515

扫码关注云+社区

领取腾讯云代金券