scapy的traceroute()實(shí)現(xiàn)TCP探測目標(biāo)服務(wù)路由軌跡

最近在學(xué)習(xí)python自動化運(yùn)維,這個實(shí)例是參照《Python自動化運(yùn)維 技術(shù)與最佳實(shí)踐》中的一個例子實(shí)現(xiàn)的,原本看起來簡簡單單的程序卻出現(xiàn)了好幾個問題,所以特此記錄下,源程序如下。

#!/usr/bin/evn python
#-*-coding:utf-8 -*-
import time
import logging,warnings
import subprocess

from scapy.all import traceroute
warnings.filterwarnings("ignore",category=DeprecationWarning)
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
domains = raw_input('Please input domains or IPs: ')

try:
    domain = domains.split(' ')
    res,unans = traceroute(domains,dport=[80,443],retry=-2)
    res.graph(target=">test.svg")
    time.sleep(1)
except:
    print "you shoud run by root or domain error"

首先是scapy模塊的安裝,安裝環(huán)境是Mac OS X,使用pip install scapy即可,然后運(yùn)行這個程序會報(bào)錯ImportError: No module named pcapy,繼續(xù)使用pip install pcapy安裝即可,之后還會報(bào)錯ImportError: No module named dumbnet,這個模塊使用pip安裝的話會提示not find,正確的安裝方法可以通過以下命令安裝。

cd
git clone https://github.com/dugsong/libdnet.git
cd libdnet
./configure && make
cd python
python setup.py install

繼續(xù)運(yùn)行程序還是會報(bào)錯:OSError: en0: You don't have permission to capture on that device ((cannot open BPF device) /dev/bpf0: Permission denied),這是因?yàn)閙ac下抓包必須開啟網(wǎng)卡,開啟命令sudo chmod 777 /dev/bpf*,而且每當(dāng)mac重啟后都會重置權(quán)限,所以如果重啟了mac,必須再次使用命令開啟網(wǎng)卡。
然后再次運(yùn)行程序會出現(xiàn)一個整個過程讓我最頭痛的bug,如下圖所示。

91BCED57-BD8C-4FEC-AE12-3A2FAA029317.png

各種查沒查到結(jié)果,最后請教了群里的大神,結(jié)果發(fā)現(xiàn)是scapy本身源碼的bug,查看了 github 上面最新的代碼,已經(jīng)加上了是否為 None 的判斷

E5B14C1701D41A5F2937288740C0F3F7.jpg

但是應(yīng)該是還沒有發(fā)布出來,因?yàn)槲野惭b的2.3.3已經(jīng)是最新的發(fā)布版本,所以就自己手動修改了源碼,終于把程序跑起來了,這里再次對大神的幫助表示謝意。
這里還有一個點(diǎn)需要注意,traceroute的程序都必須使用root權(quán)限運(yùn)行,sudo python XXX.py就OK了,否則會出現(xiàn)以下情況。

Begin emission:
Begin emission:
Begin emission:

Received 0 packets, got 0 answers, remaining 60 packets
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容