scapy python_Python scapy模块个人见解

news/2024/7/24 3:46:42 标签: scapy python

scapy模块

from scapy.all import *    //来自scapy.all文件,导入所有函数

python交互模式中:ls(*)*=Ether、IP、ICMP、TCP、UDP、ARP    等等,查看可以配置的参数

1.构建包:不同层之间用/分隔(常用)

Ether = Ether(src="源mac",dst="目的mac")    //以太网层 =  二层

IP   = IP(src="源ip",dst="目的ip或者URL")   //IP层   =  三层

XY   = ICMP()、TCP()、UDP() [都可以用dport=目的端口,sport=源端口]//协议封装在IP层

ARP  = ARP(hwsrc='二层源mac',psrc='三层源IP',hwdst='二层目的mac',pdst='三层目的IP')     SJ    = padding(load='x'*8)           //数据位,填充 x乘8个

RandMAC()  任意MAC地址

RandIP()   任意IP地址

构建二层包:(以Ether层开头)

如:pkt=Ether/IP/ARP

构建三层包:(以IP层开头)

如:pkt=IP/XY/SJ

2.只发送

二层:sendp()  //给定网卡接口

三层:send()   //自动根据路由表进行路由发送

如发二层包:

sendp(pkt,iface="eth0",loop=1,inter=1 )

参数:

pkt          构建包的变量

iface="eth0" 选择网卡为eth0

loop=1       循环发送

inter=1      每隔1秒发送

timeout=1    超时1秒就丢弃,实际时间看程序处理能力而定

3.发送并返回

二层:

srp()   //发送包, 返回答复和没有答复的包的数量

srp1() //发送包, 返回只答复或者发送的包的详细信息| .参数,显示这个参数的返回数据

三层:

sr(  )  //发送包, 返回答复和没有答复的包的数量

sr1( ) //发送包, 返回只答复或者发送的包的详细信息|.参数,显示这个参数的返回数据

如二层发收包:

srp1(pkt,timeout=1,verbose=0 )

参数:

pkt       构建包的变量

timeout=1 超时1秒就丢弃,实际时间看程序处理能力而定

verbose=0 不显示详细信息

以上是我个人学习积累到的知识,如有需要更正或者增加的地方,欢迎来与我交流学习一番,共同进步,谢谢观看。


http://www.niftyadmin.cn/n/763852.html

相关文章

jeecg实现点击按钮跳转路由url后面跟参数

this.$router.push({name: planEstablish-SisSecureItemList, // 去 planEstablish 文件夹下寻找 SisSecureItemList组件query: { // 路由携带参数name: 小明,sex: 男,age: 22} });到跳转的另一个页面获取 created () {this.handelUrl() }handelUrl () {this.urlId this.$ro…

java天气预报_100个Java练手项目,拿去练手,不谢

多年以后,你已经是一名技术总监,有一个美丽的妻子,两个孩子;你已经拥有了现在的你想都不敢想的一切;那时,你也一定会忘记,今天这篇教程,如同一颗石子,铺就过你前进的路。…

vue报错Error in render: “TypeError: Cannot read property ‘0‘ of undefined“

报这错是因为在你刚打开页面的时候,还没获取到这个值,因为这个值是请求过来的,但是可以正常渲染,控制台报错,因为这个结构data里面是个对象,对象里面的数组刚开始没有,所以就没有。 data () {r…

一样的代码为什么一关闭调试就报错一打开就好了_一分钟学会用Apple敲写C语言代码...

本文介绍的是Xcode使用教程详细讲解,Xcode是一个款强大的IDE开发环境,就像你在写Windows程序时需要VS2005一样需要要Xcode为你写Mac程序提供环境Xcode使用教程详细讲解是本文要介绍的内容,Xcode是一个款强大的IDE开发环境,就像你在…

vue 使用let和data的区别

为什么在vue的data中定义一个数组,就可以把每次点击获取到的值一一push进去,用let定义一个数组,就不可以。也许是因为let的特性吧,每次都会是一个最新的。 data里是这样的 在用let push 的时候每次都是最新的

go init函数_Go 佳库面面观

Go语言中文网,致力于每日分享编码、开源等知识,欢迎关注我,会有意想不到的收获!本文将列出从一个好的 Go 库里,我希望得到的东西的一个简短清单(排名不分先后)。这是对高效 Go(effective go)列表、Go 代码评审意见列表…

vue使用push数组值相等不push,不相等才push

首先得定义俩个数组,一个空数组,一个你需要push的arr,这里用到了foreach和indexOf this.arr.push(e.node.dataRef.title) // 这个是你push的数组this.arr // 首先你得循环这个this.arr因为你要判断你push的值是否相同this.arr.forEach(item …

idea 打包war_IDEA相关配置【java项目改造成web项目】

在平时写项目学习java的时候,有没有这么一种情况:我们一开始建立了一个普通的java项目,但是随着我们编码的进行,发现项目需要部署到Tomcat服务器上运行测试。此时有两种解决方案:【1】创建一个web项目,从0到…