一、进入scapy交互界面

在终端下输入:scapy ,进入交互界面:

二、查看scapy已经实现的网络协议

ls()         列出scapy中已实现的网络协议
ls(协议类型)     查看某个协议头部字段格式
lsc()        列出scapy中可以使用的命令或函数,比如嗅探时,我们经常会用到sniff()函数
IP().show()    显示包的IP信息
IP().display() 显示包的模板 dpkg = sniff(filter="tcp",count=4)
dpkg[2].show()   显示包抓取到的tkpk的第3个数据包的的详细内容
dpkg[2].summary()    查看捕获到数据包的信息摘要 wrpcap("dpkgsniff.pcap",dpkg)     将嗅探到的packet内容写到pcap文件
dpkg_read = rdpcap("dpkgsniff.pcap")  读取pcap文件

三、构造数据包

#构造一个ip数据包
dpkg = IP()
#修改数据包的值
dpkg.ttl = 24

#构造一个ICMP数据包
dpkg = ICMP()
#构造一个TCP数据包
dpkg = TCP()

通过“/”来表示网络中各个层的组合

dpkg=Ether()/IP(dst="www.baidu.com")/TCP()/"GET /index.html HTTP/1.0 \n\n"
dpkg.show()
hexdump(dpkg)

sprintf()输出某一层某个参数的取值,如果不存在就输出”??”,具体的format格式是:%[[fmt][r],][layer[:nb].]field%

%[[fmt][r],][layer[:nb].]field%

layer: 协议层的名字,如Ether、IP、Dot11、TCP等。

filed: 需要显示的参数。

nb: 当有两个协议层有相同的参数名时,nb用于到达你想要的协议层。

r:  一个标志。当使用r标志时,意味着显示的是参数的原始值。

例如,TCP标志中使用人类可阅读的字符串’SA’表示SYN和ACK标志,而其原始值是18.

例子:pkt.sprintf("Etherent source: %Ether.src%   IP src: %IP.src%")

或者:pkt.sprintf('%Raw.load%')   #其中Raw为具体的协议层

显示具体的网络层的信息:

dpkg["IP"].show()  或者dpkg[IP].show()  也可以
dpkg["TCP"].show() 
dpkg["Raw"].show()
#或者等价于
dpkg.getlayer(ip).show()
dpkg.getlayer(TCP).show()
dpkg.getlayer(Raw).show()

获取某个协议的具体字段值:

dpkg["Raw"].load
dpkg.getlayer(TCP).window

scapy构造数据包的更多相关文章

  1. python数据包之利器scapy用法!

    scapy介绍:  在python中可以通过scapy这个库轻松实现构造数据包.发送数据包.分析数据包,为网络编程之利器! scapy安装: pip install scapy   ======> ...

  2. netfilter的钩子——数据包在内核态得捕获、修改和转发

    转发:http://blog.csdn.net/stonesharp/article/details/27091391 数据包在内核态得捕获.修改和转发(基于 netfilter)    忙活了好几天 ...

  3. ARP数据包伪造

      一台网络中的计算机,其传递到网络中的数据包的内容是完全由其软硬件逻辑决定的,软件可以操控硬件,硬件亦是一种特殊的软件,所以,接收者只根据数据包的内容,绝不可能判定此数据包的真正来源,一切都是可以伪 ...

  4. scapy构造打印ARP数据包

    ARP格式: 用于以太网的ARP请求/应答分组格式 各字段含义: 帧类型:表示数据部分用什么协议封装(0800表示IP,0806表示ARP,8035表示RARP). 硬件类型:表示硬件地址的类型(其中 ...

  5. 强大的数据包处理程序scapy

    实验目的 利用scapy工具构造arp.icmp数据包,发送到目标主机,根据应答包推测出目标系统存活情况 实验原理 Scapy是Python写的一个功能强大的交互式数据包处理程序,可用来发送.嗅探.解 ...

  6. 用Golang自己构造ICMP数据包

    ICMP是用来对网络状况进行反馈的协议,可以用来侦测网络状态或检测网路错误. 限于当前Golang在网络编程方面的代码稀缺,资料甚少,所以分享一个用Golang来构造ICMP数据包并发送ping程序的 ...

  7. scapy基础-网络数据包结构

    网络层次模型,数据包的组成是学习scapy的基础,下文主要关注模型中各个层次的用途,ethernet II和ip包数据结构.    1.五层模型简介 名称 作用 包含协议 应用层 面向程序对程序的传输 ...

  8. scapy - 基于python的数据包操作库

    简介 地址:https://github.com/secdev/scapy scapy是一个基于python的交互式数据包操作程序和库. 它能够伪造或者解码多种协议的数据包,通过使用pcap文件对他们 ...

  9. 004.UDP--拼接UDP数据包,构造ip头和udp头通信(使用原始套接字)

    一.大致流程: 建立一个client端,一个server端,自己构建IP头和UDP头,写入数据(hello,world!)后通过原始套接字(SOCK_RAW)将包发出去. server端收到数据后,打 ...

随机推荐

  1. 用 cgroups 管理 cpu 资源

    转自:http://xiezhenye.com/2013/10/用-cgroups-管理-cpu-资源.html 这回说说怎样通过 cgroups 来管理 cpu 资源.先说控制进程的 cpu 使用. ...

  2. jquery.pagination.js的使用

    html页面 //要显示内容表格 <table id="gifts"> <tr class='first'> <th>时间</th> ...

  3. Oracle 11g的一些常用语句记录

    一.表空间 1.创建临时表空间: create temporary tablespace project_temp tempfile 'D:\Oracle\dataspace\project_temp ...

  4. python--unittest测试框架

    unittest中最核心的四个概念是:test case, test suite, test runner, test fixture

  5. python 练习题:接收一个或多个数并计算乘积

    以下函数允许计算两个数的乘积,请稍加改造,变成可接收一个或多个数并计算乘积 def product(x, y): return x * y # -*- coding: utf-8 -*- def pr ...

  6. .NET CORE 控制台应用程序配置log4net日志文件

    使用文件格式记录日志 1.新建一个.NET CORE控制台应用程序,添加log4net.dll引用,打开工具->NuGet包管理器->管理解决方案的NuGet程序包. 2.在NuGet-解 ...

  7. VS报错,Metadata file 'xxx.dll' could not be found

    错误提示“Metadata file 'xxx.dll' could not be found”步骤如下:1.右键单击解决方案,然后单击“属性”.2.单击左侧的配置.3.确保选中了它找不到的项目的“生 ...

  8. drf--版本控制

    目录 作用 内置版本控制 局部使用 全局使用 案例 源码分析 作用 因为程序在不停的更新迭代,新版和旧版差别比较大,但此时有些用户没用进行更新,还是访问的旧版,此时就需要进行版本控制,让用户体验更好 ...

  9. Git remote: ERROR: missing Change-Id in commit message

    D:\code\项目仓库目录>git push origin HEAD:refs/for/dev/wangteng/XXXXX key_load_public: invalid format E ...

  10. SpringApplication到底run了什么(下)

    在上篇文章中SpringApplication到底run了什么(上)中,我们分析了下面这个run方法的前半部分,本篇文章继续开工 public ConfigurableApplicationConte ...