Scapy技术笔记(一)

简单了解

前置知识:需要学习TCP/IP网络协议模型  

参考文章:http://t.csdn.cn/d6kY2    //因为还没系统的学网络,看的这篇文章学的。

Scapy是python的一个库,可以自己封装网络包,具有很强的自由度。作用可以:

1。扫描局域网内的客户机,将IP与MAC地址列出来        2。找DHCP服务器,列出IP与MAC地址

3。DNS解析

scapy安装

kali安装:sudo apt-get install python-scapy

windows安装:

初次使用scapy

进入交互页面后,简单使用一下。创建一个ip类,用ls()函数查看类的属性。

我们把pkt这个ip的目标地址改成127.0.0.2。源地址的属性名是 src,目标是dst.

这个ip数据包发往127.0.0.2这个地方。

Scapy用分层的方式构造数据包。从低到高是:Ether(用MAC地址),IP, TCP或者UDP。

例如用Ether发送一个广播数据包。

temp=Ether(dst="ff:ff:ff:ff:ff:ff") //记住这里是MAC地址

send(temp) //发送数据包,但是没有响应

具体就是用”/“分层:

pkt=Ether() / IP() / TCP() #现在pkt这个数据包能够用这三种协议传输。

构造Http数据包: pkt=IP()/TCP()/ "GET / HTTP /1.0 \r\n\r\n"

Scapy的常用函数

查看类的属性: ls(IP()) 查看可以使用的函数: lsc()

raw() 用字节格式查看数据包内容 hexdump()用十六进制方式查看。

summary() 一句话简单描述数据包 ,使用ptk.summary()

show() 查看包的详细内容。 show()2会多一个数据包的校验和。

如果知道一个数据包但是不知道它的类型,用 包.command()会返回这个包的协议。

临时储存包: wrpcap("temp.cap",pkts) 将pkts中的数据包写入文件temp.cap中。

读取:pkts=rdpcap("temp.cap") 返回的是一个列表。

Scapy的发送与监听

ip为目标时用send()发送。 MAC地址为目标时用sendp()发送。 //这两种方式都不会应答。

下面的方法可以发送并且接收。

sr() 和 sr1() 用于ip目标。 srp()用于MAC地址目标

sc()发送时遇到的问题:给192.169.1.1发包没给我应答。nmap随便找了一个存活主机。

后来发现我找成自己的虚拟机ip了,一直等待不给我返回包。我都忘了直接给物理机发个包~

pkt=IP(dst=" 存活IP") / ICMP()

ans,uans=sr(pkt)

ans.summary()

sr1()是返回一个数据包。

抓包用sniff()函数。

sniff(filter="host 192.168.1.1") 只要主机是192.168.1.1的包。

第一个参数:filter

dst host IP 只要目标为本ip的包

ether(dst) host 11:22:33:44:55:66 只要以太网源地址或者目标地址11:22:33:44:55:66的包

src net 192.168.1.0/24 当数据包的IPV4/IPV6的源地址为192.168.1.0/24时,过滤为真。

(dst) port 8080 当数据包是TCP或者UDP 数据包且端口是8080时,过滤为真。

第二个参数:iface

指定网卡。一般默认第一个

第三个参数:prn

可以对捕获的包进行函数处理。 prn=lambda x:x.summary()

第四个参数:count

count=10 捕获10个数据包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值