Python协议攻击脚本(一): Scapy基本的使用

文章目录

  • Python协议攻击脚本(一): Scapy基本的使用
    • 简介
    • 安装
      • Linux
      • Mac
      • Windows
    • 基本使用
      • 交互式
      • 模块使用

简介

Scapy官网

Scapy是一个Python程序,使用户能够发送,嗅探和剖析并伪造网络数据包。此功能允许构建可以探测,扫描或攻击网络的工具。Scapy可以轻松处理大多数经典任务,如扫描,跟踪路由,探测,单元测试,攻击或网络发现。它可以取代hping,arpspoof,arp-sk,arping,p0f甚至是Nmap,tcpdump和tshark的某些部分。

安装

详见Scapy官方文档

捆绑 包含 Pip命令
默认 只有Scapy pip install scapy
基本 Scapy和IPython。强烈推荐 pip install --pre scapy[basic]
完成 Scapy及其所有主要依赖项 pip install --pre scapy[complete]

Linux

  • 安装Python 2.7或3.4+。
  • 安装tcpdump并确保它在$ PATH中。(它仅用于编译BPF过滤器())-ddd option
  • 确保你的内核选择了Packet套接字(CONFIG_PACKET
  • 如果您的内核<2.6,请确保选择了Socket过滤CONFIG_FILTER

Debian / Ubuntu /

python3

sudo apt-get install python3 python3-pip tcpdump
pip3 install --pre scapy[basic]

python

sudo apt-get install python python-pip tcpdump
pip install --pre scapy[basic]

kali

默认已安装,但是安装在Python2.7下

如果需要在Python3中使用:

apt-get install python3 python3-pip
pip3 install scapy

Mac

使用Homebrew安装

  1. 更新Homebrew:

    brew update
    
  2. 安装Python绑定:

    brew install --with-python libdnet
    brew install https://raw.githubusercontent.com/secdev/scapy/master/.travis/pylibpcap.rb
    sudo brew install --with-python libdnet
    sudo brew install https://raw.githubusercontent.com/secdev/scapy/master/.travis/pylibpcap.rb
    

使用MacPorts安装

  1. 更新MacPorts:

    $ sudo port -d selfupdate
    
  2. 安装Python绑定:

    $ sudo port install py-libdnet py-pylibpcap
    

Windows

Scapy主要是针对类Unix系统开发的,在这些平台上运行得最好。但最新版本的Scapy支持Windows开箱即用。因此,您也可以在Windows机器上使用几乎所有Scapy的功能。

  • Python:Python 2.7.X或3.4+。安装后,将Python安装目录及其Scripts子目录添加到PATH。根据您的Python版本,默认值分别为C:\Python27C:\Python27\Scripts
  • Npcap:建议使用默认值。Scapy也可以使用Winpcap
  1. 安装Npcap
    Npcap下载

  2. 安装Scapy

Dos中输入:

pip install --pre scapy[basic]   #需要配置Python的环境变量,如上

基本使用

交互式

主要用来做测试,或者进行简单操作

Linux从终端启动

Windows cmd中启动

列出用户命令lsc()

>>> lsc()
sr               : Send and receive packets at layer 3
sr1              : Send packets at layer 3 and return only the first answer
srp              : Send and receive packets at layer 2
srp1             : Send and receive packets at layer 2 and return only the first answer
srloop           : Send a packet at layer 3 in loop and print the answer each time
srploop          : Send a packet at layer 2 in loop and print the answer each time
sniff            : Sniff packets
p0f              : Passive OS fingerprinting: which OS emitted this TCP SYN ?
arpcachepoison   : Poison target's cache with (your MAC,victim's IP) couple
send             : Send packets at layer 3
sendp            : Send packets at layer 2
traceroute       : Instant TCP traceroute
arping           : Send ARP who-has requests to determine which hosts are up
ls               : List  available layers, or infos on a given layer
lsc              : List user commands
queso            : Queso OS fingerprinting
nmap_fp          : nmap fingerprinting
report_ports     : portscan a target and output a LaTeX table
dyndns_add       : Send a DNS add message to a nameserver for "name" to have a new "rdata"
dyndns_del       : Send a DNS delete message to a nameserver for "name"
[...]

常用的方法

sr               : 发送和接受三层的包 #三层:网络层
sr1              : 发送和接受返回的第一个三层的包
srp1             : 发送和接受二层的包
srp1             : 发送和接受返回的第一个二层的包
sniff            : 嗅探数据包
send             : 发送三层的包
sendp            : 发送二层的包
rdcap            : 打开pcap文件 #eg:wirshark保存的文件
wrpcap           : 写入到pcap文件

列出支持的协议ls(),

>>> ls()
AH         : AH
AKMSuite   : AKM suite
ARP        : ARP
ASN1P_INTEGER : None
ASN1P_OID  : None
ASN1P_PRIVSEQ : None
ASN1_Packet : None
ATT_Error_Response : Error Response
ATT_Exchange_MTU_Request : Exchange MTU Request
ATT_Exchange_MTU_Response : Exchange MTU Response
ATT_ExecWriteReq : None
ATT_ExecWriteResp : None
[...]

常用的就主要是

Ether 以太网协议
ARP ARP协议
IP  IP协议
UDP UDP协议
TCP TCP协议
ICMP ICMP协议
[...]

列出协议的字段

>>> ls(ARP)
hwtype     : XShortField                         = (1)
ptype      : XShortEnumField                     = (2048)
hwlen      : FieldLenField                       = (None)
plen       : FieldLenField                       = (None)
op         : ShortEnumField                      = (1)
hwsrc      : MultipleTypeField                   = (None)
psrc       : MultipleTypeField                   = (None)
hwdst      : MultipleTypeField                   = (None)
pdst       : MultipleTypeField                   = (None)

获得帮助help(send)

>>> help(send)
Help on function send in module scapy.sendrecv:send(x, inter=0, loop=0, count=None, verbose=None, realtime=None, return_packets=False, socket=None, *args, **kargs)Send packets at layer 3send(packets, [inter=0], [loop=0], [count=None], [verbose=conf.verb], [realtime=None], [return_packets=False],  # noqa: E501[socket=None]) -> None

构造一个icmp包

>>> packet =IP(src='192.168.1.115',dst='192.168.1.1')/ICMP()
>>> packet
<IP  frag=0 proto=icmp src=192.168.1.1 dst=192.168.1.2 |<ICMP  |>>

pkt.show() 数据包详细

>>> packet.show()
###[ IP ]### version= 4ihl= Nonetos= 0x0len= Noneid= 1flags= frag= 0ttl= 64proto= icmpchksum= Nonesrc= 192.168.1.115dst= 192.168.1.1\options\
###[ ICMP ]### type= echo-requestcode= 0chksum= Noneid= 0x0seq= 0x0

send() 发送包

>>> send(packet,count=1)
WARNING: Mac address to reach destination not found. Using broadcast.
.
Sent 1 packets.

sr1() 发送并接受答复包

>>> icmp = sr1(packet)
Begin emission:
.....Finished sending 1 packets..
.*
Received 8 packets, got 1 answers, remaining 0 packets
>>>icmp.show()
###[ IP ]###version= 4ihl= 5tos= 0x0len= 28id= 12962flags=frag= 0ttl= 64proto= icmpchksum= 0xc47asrc= 192.168.1.1dst= 192.168.1.115\options\
###[ ICMP ]###type= echo-replycode= 0chksum= 0xffffid= 0x0seq= 0x0

pkt.getlayer() 获取数据包某层

>>> icmp[ICMP]
<ICMP  type=echo-reply code=0 chksum=0xffff id=0x0 seq=0x0 |>
>>> icmp.getlayer(ICMP)
<ICMP  type=echo-reply code=0 chksum=0xffff id=0x0 seq=0x0 |>

.fields 获取数据包字段

>>> icmp.fields
{'options': [],'version': 4,'ihl': 5,'tos': 0,'len': 28,'id': 12962,'flags': <Flag 0 ()>,'frag': 0,'ttl': 64,'proto': 1,'chksum': 50298,'src': '192.168.1.1','dst': '192.168.1.115'}
>>> icmp.fields['src']
'192.168.1.1'
>>> icmp.src
'192.168.1.1'

sniff() 嗅探

>>> sniff(filter='tcp',count=5) #捕获5个包
<Sniffed: TCP:5 UDP:0 ICMP:0 Other:0>
>>> sniff(stop_filter=lambda x: x.haslayer(TCP)) #检测到TCP则停止
<Sniffed: TCP:1 UDP:0 ICMP:0 Other:0>

wirshark() 在Wirshark中打开

>>> packet = sniff(count=5)
>>> wireshark(packet)

模块使用

from scapy.all import *packet =IP(src='192.168.1.1',dst='192.168.1.2')/ICMP()
send(packet,count=1)

Python协议攻击脚本(一): Scapy的使用相关推荐

  1. python网站攻击脚本_Python scapy 实现一个简易 arp 攻击脚本

    scapy是python写的一个功能强大的交互式数据包处理程序,可用来发送.嗅探.解析和伪造网络数据包,常常被用到网络攻击和测试中. scapy的安装在Linux非常便利,但在Windows下比较复杂 ...

  2. Python 协议攻击脚本(六): STP攻击

    文章目录 STP 数据包抓包 STP欺骗 STP Dos 编写脚本 STP欺骗 STP Dos 完整代码 STP 生成树协议(英语:Spanning Tree Protocol,STP),是一种工作在 ...

  3. python ddos攻击脚本_python版本DDOS攻击脚本

    今天为了休息下,换换脑子,于是就找到了我之前收藏的一篇python的文章,是关于ddos攻击的一个脚本,正好今天有空,就实践下了. 附上源码pyDdos.py:#!/usr/bin/env pytho ...

  4. python arp脚本_Python scapy 实现一个简易 arp 攻击脚本

    scapy是python写的一个功能强大的交互式数据包处理程序,可用来发送.嗅探.解析和伪造网络数据包,常常被用到网络攻击和测试中. scapy的安装在Linux非常便利,但在Windows下比较复杂 ...

  5. python编写ARP拒绝服务攻击脚本

    python编写ARP拒绝服务攻击脚本 原理:每台主机上都会有一张ARP表,记录主机的IP地址和 Mac地址,Mac地址有动态和 静态的: 网关:区分你是在哪个局域网 局域网中的通信是通过交换机实现的 ...

  6. python模拟ddos攻击_python版DDOS攻击脚本

    本文实例为大家分享了python版DDOS攻击脚本,供大家参考,具体内容如下 于是就找到了我之前收藏的一篇python的文章,是关于ddos攻击的一个脚本,正好今天有空,就实践下了. 附上源码pyDd ...

  7. python电脑攻击_python写的ARP攻击代码实例 -电脑资料

    注:使用这个脚本需要安装scapy 包 最好在linux平台下使用,因为scapy包在windows上安装老是会有各种问题 复制代码代码如下: #coding:utf-8 #example :sudo ...

  8. python写的脚本怎么用,如何用python写脚本

    如何用python写脚本 以Python2.7操作为例:1.首先需要打开电脑桌面,按开始的快捷键,点击Python2.7如图所示的选项进入. 相关推荐:<Python入门教程>2.打开之后 ...

  9. python 多种运行脚本方式

    python 多种运行脚本方式 文章目录 python 多种运行脚本方式 1. 脚本与模块 2. 什么是 Python 解释器? 3. 如何以交互方式运行 Python 代码 4. 解释器如何运行 P ...

最新文章

  1. python3 requests content和text 区别
  2. AI:2020年6月22日北京智源大会演讲分享之认知神经基础专题论坛——14:20-15:00方方教授《Maps and Functions of Human Attention》
  3. 广西计算机学业水平考试,2017年6月广西信息技术学业水平考试(1)-2017广西信息技术会考真题...
  4. mvc框架异常处理机制
  5. 开源项目面试重要吗_开源是最重要项目的骨干
  6. 如何手工配置DBControl
  7. Linux下双网卡绑定bond0
  8. 不得不会的10点Java基础知识
  9. 解决IE9,hack 设置背景图无效
  10. cad快看_CAD快速看图可以图纸对比吗?可以!
  11. jQuery视频格式的验证
  12. Android 使用MediaRecorder录音调用stop()方法的时候报错
  13. java实现大文件切割分片
  14. 乌班图nginx访问php 变成下载
  15. 微信小程序上传图片(预览 删除 限制图片大小、张数)
  16. lxqt lxde_面向极简主义者的Linux桌面:LXQt和LXDE入门
  17. APP设计:(一)app界面常用设计规范
  18. 大数据python试卷_大数据分析的python基础-中国大学mooc-试题题目及答案
  19. Laragon 自定义域名
  20. javamail调用阿里企业邮箱实现推送包括多个附件

热门文章

  1. 微信小程序动态添加view
  2. 161116、springmvc自己实现防止表单重复提交(基于注解)
  3. GITHUB实用有趣工具推荐
  4. java split 冒号_Java中字符串split() 的使用方法,没你想的那么简单
  5. RSD 教程 —— 3 观察数据
  6. C语言链表课程设计(工资管理系统)
  7. APP被苹果 App Store拒之门外的79个原因!
  8. 记一次·ulimit: open files: cannot modify limit:不允许操作
  9. a^x求导是怎么来的呢?
  10. 增强现实与虚拟现实_增强现实相关的法律问题