scapy構建icmp ip報文並攻擊

2021-06-25 11:59:44 字數 3390 閱讀 4602

同絕大多數的網路協議類庫一樣,scapy中依舊採取分層的檢視來對資料進行管理。

只需要偽裝的mac位址,這個由引數傳遞。

>>>

ls(ether())

warning: mac address to reach destination

notfound. using broadcast.

dst : destmacfield ='

ff:ff:ff:ff:ff:ff

'(none)

src : sourcemacfield ='

00:00:00:00:00:00

'(none)

type : xshortenumfield

=0 (0)

icmp包在協議中的位置是處於乙個比較難分的,一直當做是ip擴充套件層來理解-^-

因此想要傳送乙個偽裝的icmp,就需要先構築「下一層」的ip資料報了。

還是來看一下scapy中ip層的內容:

>>>

ls(ip())

version : bitfield =4

(4)ihl : bitfield

=none (none)

tos : xbytefield

=0 (0)

len : shortfield

=none (none)

id : shortfield =1

(1)flags : flagsfield

=0 (0)

frag : bitfield

=0 (0)

ttl : bytefield =64

(64)proto : byteenumfield

=0 (0)

chksum : xshortfield

=none (none)

src : emph ='

127.0.0.1

'(none)

dst : emph ='

127.0.0.1'(

'127.0.0.1')

options : packetlistfield

= ()

也正是ip首部的內容-20個位元組的內容並不需要我們一一填充——尤其是chksum,當初花了不少時間來弄chksum,後來才發現原來checksum在scapy中是如此簡單(**中會展示出來)

回到ip層,我們現在填充ip

src自然要使用乙個偽裝的ip了,這個是從引數獲取。

dst就是我們要欺騙的目的ip,也是從引數中獲取。

type就是1,也就是表明資料報是乙個icmp包。 

在icmp包中,我們也只需要填充type型別——是請求(1)還是回顯(8)

完成了icmp包,我們加入資料—raw層,直接使用raw(『填充內容')來初始化乙個raw包。

1

#! /env/lib python

2import

sys3

importos4

from

scapy.all

import*5

from

usual

import*6

conf.vert =1

78if__name__=="

__main__":

9#get hwaddress\ip\gateway and init

10t_hw

=getmac()

11t_ip

=getip()

12gatemac

=getgateway(t_ip,t_hw,false)

13target ='

192.168.3.25'14

fakeip

=t_ip

15fakemac

=t_hw

1617

#parse the input

18for

i in

range(

1,len(sys.argv)):

19l

=sys.argv[i].split('=

')20if

l[0] =='

-t':21

target =l[

1]22elif

l[0] =='

-ip':23

fakeip =l[

1]24elif

l[0] =='

-mac':

25fakemac =l[

1]2627

pack_ip

=ip(dst

=target,src

=fakeip,proto =1

)28pack_icmp

=icmp(type =8

)29pack_ether

=ether(src

=fakemac,dst

=gatemac,type

=0x0800)30

#add info

31info

=raw(

'ip:'+

t_ip+'

mac:'+

t_hw +'

')32t

=str(pack_ether

/pack_ip

/pack_icmp

/info)

33s

=ether(t)34#

s.pdfdump("/home/jack13/trade.pdf")

35sendp(s)

17-25行,解析輸入變數

27-31行,單獨生成各層物件

32-33行,整合各層物件,同時生成傳送包s。(這兩行就可以完成checksum的工作)

35行,      傳送偽裝資料

執行:sudo python send7.py -t=192.168.3.62 -ip=192.168.0.1 -mac=00:11:22:33:44:55

包是無法返回的,但是通過wireshark的抓包,我們可以看到乙個正確的包被傳送。

python 安裝scapy 安裝scapy時出錯

好的,所以我正在嘗試為python3安裝scapy,但是我遇到了一些問題 當我輸入這個命令時 pip install scapy 這是輸出 collecting scapy using cached scapy 2.3.3.tgz unpack scapy 2.3.3.tgz the member ...

環境搭建 Scapy

scapy是python寫的乙個功能強大的互動式資料報處理程式,可用來傳送 嗅探 解析和偽造網路資料報,常常被用到網路攻擊和測試中。它可 以代替hping,arpspoof.arp sk,arping,p0f,甚至是部分nmap,tcpdump和tshark。一 scapy安裝 2 安裝 3 公升級...

Scapy基本使用

scapy 是乙個強大的網路資料報操作工具。from scapy.all import from scapy.all import ip package ip dst www.163.com ttl 80 構造乙個ip包 package ip dst www.163.com tcp dport 80...