地表最強數(shù)據(jù)包工具--Scapy基礎(chǔ)篇

      網(wǎng)友投稿 1294 2025-04-02

      零、前言

      學(xué)習(xí)過程中用到Scapy這個工具,用了一些小功能之后發(fā)現(xiàn)效果挺好的,自由度高,比其他的很多工具的可自定義程度要高太多了,所以寫一篇Scapy基礎(chǔ)篇分享給各位,希望能對各位有用。

      一、Scapy是什么?

      咱們看看官方文檔怎么介紹Scapy工具的:

      Scapy is a Python program that enables the user to send, sniff and dissect and forge network packets. This capability allows construction of tools that can probe, scan or attack networks.

      Scapy 是一個 Python 程序,它使用戶能夠發(fā)送、嗅探、剖析和偽造網(wǎng)絡(luò)數(shù)據(jù)包。此功能允許構(gòu)建可以探測、掃描或攻擊網(wǎng)絡(luò)的工具。

      In other words, Scapy is a powerful interactive packet manipulation program. It is able to forge or decode packets of a wide number of protocols, send them on the wire, capture them, match requests and replies, and much more. Scapy can easily handle most classical tasks like scanning, tracerouting, probing, unit tests, attacks or network discovery. It can replace hping, arpspoof, arp-sk, arping, p0f and even some parts of Nmap, tcpdump, and tshark.

      換句話說,Scapy 是一個強大的交互式數(shù)據(jù)包操作程序。它能夠偽造或解碼多種協(xié)議的數(shù)據(jù)包,通過網(wǎng)絡(luò)發(fā)送它們,捕獲它們,匹配請求和回復(fù)等等。Scapy 可以輕松處理大多數(shù)經(jīng)典任務(wù),例如掃描、跟蹤路由、探測、單元測試、攻擊或網(wǎng)絡(luò)發(fā)現(xiàn)。它可以替代 hping、arpspoof、arp-sk、arping、p0f 甚至 Nmap、tcpdump 和 tshark 的某些部分。

      Scapy also performs very well on a lot of other specific tasks that most other tools can’t handle, like sending invalid frames, injecting your own 802.11 frames, combining techniques (VLAN hopping+ARP cache poisoning, VOIP decoding on WEP encrypted channel, …), etc.

      Scapy 在大多數(shù)其他工具無法處理的許多其他特定任務(wù)上也表現(xiàn)出色,例如發(fā)送無效幀、注入您自己的 802.11 幀、組合技術(shù)(VLAN 跳躍 + ARP 緩存中毒、WEP 加密通道上的 VoIP 解碼等), 等等。

      二、Scapy基礎(chǔ)

      1 利用pip安裝庫

      如果只需要安裝scapy庫的話,直接使用pip安裝以下命令就行了

      pip install scapy

      但對于想要完整體驗Scapy強大功能的兄弟姐妹們而言,官方還是推薦至少使用以下命令安裝基礎(chǔ)版Scapy

      pip install --pre scapy basic

      完全體的Scapy直接敲!!!!!!!

      pip install --pre scapy complete

      Windows環(huán)境下除了安裝Python環(huán)境之外還需要安裝Npcap或Wincap,官方推薦使用Npcap

      關(guān)于系統(tǒng)安裝使用Scapy的命令行界面可以參考官方的下載與安裝文檔:Scapy的下載與安裝

      當(dāng)以上安裝環(huán)節(jié)全部完成之后不如終端上敲個“scapy”試試,然后就能看到Scapy的歡迎界面了(雖然沒有GUI來的美觀):

      2 基本使用

      起手引個包(Scapy v2 )

      from scapy.all import *

      2.1 conf變量

      咱們可以通過conf變量來查看scapy的配置參數(shù),然后根據(jù)咱們的需求來修改參數(shù)

      print(conf)

      放一些局部參數(shù)出來感受感受

      對于使用命令行的兄弟們來說,修改命令行的主題色必定是使用命令行界面前的第一件事,咱們可以通過以下命令來修改命令行顏色:

      ''' 包含以下幾種主題 DefaultTheme, BrightTheme, RastaTheme, ColorOnBlackTheme, BlackAndWhite, HTMLTheme, LatexTheme ''' conf.color_theme = BrightTheme() # 使用明亮色主題,默認(rèn)是沒有主題,即

      2.2 lsc()方法

      lsc()方法用來查看Scapy支持的所有命令

      lsc()

      部分命令截圖如下:

      然后悄咪咪地看了以下lsc()的實現(xiàn)代碼:

      def lsc(): # type: () -> None """Displays Scapy's default commands""" print(repr(conf.commands))

      哦,原來就是之前conf中的commands,那沒事了

      2.3 ls()方法

      ls()方法的使用分兩種情況

      無參數(shù)的情況下,用來查看可以實現(xiàn)的所有的網(wǎng)絡(luò)協(xié)議

      帶參數(shù)的情況下,用來查看參數(shù)(網(wǎng)絡(luò)協(xié)議)的字段詳情

      ls() # 不帶參數(shù)情況下輸出所有支持的網(wǎng)絡(luò)協(xié)議

      ''' ls(網(wǎng)絡(luò)協(xié)議類) ''' ls(UDP()) # 帶參數(shù)情況下輸出協(xié)議相關(guān)參數(shù)

      嗯?你們說知道這些字段有什么用?我都不好意思拆穿你們,不知道有什么用你還會搜到這篇文章嗎?

      3 發(fā)送數(shù)據(jù)

      3.1 創(chuàng)建數(shù)據(jù)

      咱們這里先用IP數(shù)據(jù)包舉例吧:

      地表最強數(shù)據(jù)包工具--Scapy基礎(chǔ)篇

      ''' 實例化一個IP數(shù)據(jù)包 調(diào)用"data.show"方法查看數(shù)據(jù)包的默認(rèn)字段 ''' data = IP() data.show()

      啥?一個包不夠?OK,滿足你們的需要,咱們直接按IP+掩碼來構(gòu)建一組IP數(shù)據(jù)可以吧?不多說,直接上代碼:

      ''' 構(gòu)建了一組數(shù)據(jù),目標(biāo)地址為www.slashdot.org的IP,且掩碼為30的所有IP地址 ''' data=IP(dst="www.slashdot.org/30") data.show()

      是不是發(fā)現(xiàn)原來咱們設(shè)置的dst為127.0.0.1的顯示結(jié)果不一樣?咱們這就已經(jīng)根據(jù)一個網(wǎng)段生成一組數(shù)據(jù)包了。除此之外,咱們還能構(gòu)建一個指定多層字段的數(shù)據(jù)包,比如指定IP協(xié)議之后再指定ICMP協(xié)議字段,就可以修改成以下方式:

      ''' 指定IP目的地址并使用上層的ICMP協(xié)議 ''' data = IP(dst="1.2.3.4")/ICMP()

      3.2 發(fā)送數(shù)據(jù)

      1、send()方法在第三層(網(wǎng)絡(luò)層)發(fā)工作,處理路由數(shù)據(jù)與第二層數(shù)據(jù):

      ''' 處理第三層數(shù)據(jù),構(gòu)建數(shù)據(jù)發(fā)送即可,設(shè)置return_packets=True可接收返回的數(shù)據(jù)包 ''' send(IP(dst="1.2.3.4")/ICMP()) resp = send(IP(dst="1.2.3.4")/ICMP(), return_packets=True)

      2、sendp()方法在第二層(數(shù)據(jù)鏈路層)工作,需要指定正確的接口與數(shù)據(jù)鏈路層協(xié)議:

      ''' 處理第二層數(shù)據(jù),需要指定接口與鏈路層協(xié)議,設(shè)置return_packets=True可接收返回的數(shù)據(jù)包 ''' sendp(Ether()/IP(dst="1.2.3.4",ttl=(1,4)), iface="eth1") resp = sendp(Ether()/IP(dst="1.2.3.4",ttl=(1,4)), return_packets=True, iface="eth1")

      3.3 fuzz()方法

      fuzz()方法是用來創(chuàng)建隨機的合理參數(shù)的數(shù)據(jù)包,比如下面這個:

      ''' loop字段代表循環(huán)發(fā)送 fuzz(隨機的協(xié)議類) 這里咱們就構(gòu)建了一個除了目標(biāo)地址與NTP版本為4之外的一個隨機數(shù)據(jù)包 (如果您在 IP 層使用 fuzz(),則 src 和 dst 參數(shù)不會是隨機的,如果需要的話,請使用 RandIP()) ''' send(IP(dst="127.0.0.1")/fuzz(UDP()/NTP(version=4)),loop=1)

      3.4 發(fā)送與接收數(shù)據(jù)

      1、sr()方法發(fā)送數(shù)據(jù)包與接收數(shù)據(jù),返回值為兩個,一個是應(yīng)答返回的數(shù)據(jù)包,一個是未應(yīng)答的數(shù)據(jù)包

      ''' ans為返回的應(yīng)答數(shù)據(jù)包 unans為發(fā)送的未應(yīng)答的數(shù)據(jù)包 調(diào)用ans.summary()與unans.summary()查看簡單的數(shù)據(jù)包信息,比".show"的信息要少 ''' ans, unans = sr(IP(dst="192.168.3.1")/TCP(dport=[21,22,23])) ans.summary() unans.summary()

      2、sr1()方法是sr()的特殊用法,僅僅返回一個參數(shù),就是所收到的應(yīng)答的數(shù)據(jù)包

      ''' resp為返回的應(yīng)答數(shù)據(jù)包 ''' resp = sr1(IP(dst="www.slashdot.org")/ICMP())

      3、srp()方法與srp1()方法是針對二層數(shù)據(jù)的發(fā)送方法,區(qū)別也就是sr()與sr1()的區(qū)別,即返回參數(shù)是否包含未應(yīng)答的發(fā)送數(shù)據(jù)。

      三、結(jié)尾

      差不多Scapy的基礎(chǔ)使用就到這里了吧,至于一些高級應(yīng)用,就暫時不講了,等之后對這方面的應(yīng)用需求更高的時候,再整理一些Scapy的“騷”操作吧,Scapy這個幾乎“萬能”的數(shù)據(jù)構(gòu)造庫可不僅僅這么一些功能。建議各位還是參照官方文檔來玩一些“技巧”。

      Scapy官方文檔

      Python TCP/IP 網(wǎng)絡(luò)

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:Word2007:表格邊框的設(shè)置方式(word中表格的邊框怎么設(shè)置)
      下一篇:如何總是顯示表格的第一行(表格怎么總是顯示第一行)
      相關(guān)文章
      在线观看亚洲免费| 亚洲aⅴ无码专区在线观看| 久久精品国产亚洲av品善| 亚洲区视频在线观看| 久久精品国产亚洲AV大全| 亚洲精品在线观看视频| 亚洲AV无码久久寂寞少妇| 亚洲AV无码专区国产乱码电影| 国产日产亚洲系列| 超清首页国产亚洲丝袜| 久久精品国产精品亚洲人人| 中文字幕亚洲一区二区三区| 亚洲自偷自偷偷色无码中文| 中文字幕精品亚洲无线码一区 | 亚洲成人网在线播放| 亚洲酒色1314狠狠做| 亚洲视频在线观看网站| 亚洲精品视频在线免费| 亚洲成av人片在线看片| 亚洲国产精品美女| 国产91在线|亚洲| 亚洲中文无码mv| WWW亚洲色大成网络.COM| 精品亚洲成A人在线观看青青| 国产精品亚洲天堂| 亚洲色偷偷狠狠综合网| 国产亚洲视频在线播放| 久久精品国产亚洲沈樵| 亚洲国产成人久久精品影视| 亚洲精品网站在线观看你懂的| 亚洲电影唐人社一区二区| 91亚洲视频在线观看| 亚洲卡一卡二卡乱码新区| 亚洲精品无码久久久久A片苍井空| 亚洲AV无码一区二区三区牲色| 国产成人亚洲综合无| 亚洲伦乱亚洲h视频| 亚洲精品乱码久久久久久自慰 | 亚洲一区二区观看播放| 色欲aⅴ亚洲情无码AV蜜桃| 亚洲国产成人久久综合碰|