Scapy入门基础

启动

直接执行scapy启动交互式CLI界面。
在脚本中:from scapy.all import *

常用命令

  • ls()
    常用的有ARP、Ether、ICMP、IP、UDP、TCP,也支持SNMP、DHCP、STP等。
  • ls(IP)
    查看IP包结构
  • lsc()
    查看支持的命令

构造报文

//类型+字段,缺省的不用设置
a=IP(dst="172.16.1.40")



查看报文内容

// 查看特定字段
>>> a.dst
'172.16.1.40'

//查看IP全部字段
>>> a.show()
###[ IP ]###
version=4
ihl= None
tos=0x0
len= None
id=1
flags=
frag=0
ttl=64
proto= ip
chksum= None
src=10.1.159.51
dst=172.16.1.40
\options\

// 多层报文
>>> a= Ether(dst=‘001122334455’)/IP(dst=‘2.2.2.2’)/TCP(dport=23)
>>> a.show()
###[ Ethernet ]###
dst=001122334455
src=00:1c:c4:aa:c9:36
type=0x800
###[ IP ]###
version=4
ihl= None
tos=0x0
len= None
id=1
flags=
frag=0
ttl=64
proto= tcp
chksum= None
src=10.1.159.51
dst=2.2.2.2
\options
###[ TCP ]###
sport= ftp_data
dport= telnet
seq=0
ack=0
dataofs= None
reserved=0
flags= S
window=8192
chksum= None
urgptr=0
options= {}


发送报文



>>> send(a,iface="eth1")
.
Sent 1 packets.

接收报文

>>> a=sniff(filter="icmp and host 10.1.159.71", count=2) 
>>> a.show()
0000 Ether / IP / ICMP 10.1.159.71 > 10.1.159.51 echo-request 0 / Raw
0001 Ether / IP / ICMP 10.1.159.51 > 10.1.159.71 echo-reply 0 / Raw
>>> a[1]
<Ether  dst=00:1f:29:63:41:62 src=00:1c:c4:aa:c9:36 type=0x800 |<IP  version=4L ihl=5L tos=0x0 len=84 id=523 flags= frag=0L ttl=64 proto=icmp chksum=0x2622 src=10.1.159.51 dst=10.1.159.71 options=[] |<ICMP  type=echo-reply code=0 chksum=0xf549 id=0x597b seq=0x1 |<Raw  load='\xdc\x1b\x82Q\x00\x00\x00\x00\x86\xf9\r\x00\x00\x00\x00\x00\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./01234567' |>>>>

发送和接收报文

// 发送ICMP请求,接收应答
>>> a = sr(IP(dst="10.1.159.71")/ICMP())
Begin emission:
....Finished to send 1 packets.
*
Received 5 packets, got 1 answers, remaining 0 packets
>>> a[0]
<Results: TCP:0 UDP:0 ICMP:1 Other:0>
>>> a[1]
<Unanswered: TCP:0 UDP:0 ICMP:0 Other:0>
>>> a[0].show()
0000 IP / ICMP 10.1.159.51 > 10.1.159.71 echo-request 0 ==> IP / ICMP 10.1.159.71 > 10.1.159.51 echo-reply 0 / Padding

读取cap内容

>>> d = rdpcap("./test.cap")                
>>> d
<test.cap: TCP:2 UDP:0 ICMP:0 Other:1>
>>> d.show()
0000 Ether / IP / TCP 10.1.159.51:ssh > 10.7.244.6:65464 PA / Raw
0001 Ether / IP / TCP 10.7.244.6:65464 > 10.1.159.51:ssh A / Padding
0002 802.3 00:25:83:b8:8f:83 > 01:00:0c:cc:cc:cd / LLC / SNAP / STP / Raw



  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值