1. 程式人生 > 程式設計 >Python實現TCP探測目標服務路由軌跡的原理與方法詳解

Python實現TCP探測目標服務路由軌跡的原理與方法詳解

本文例項講述了Python實現TCP探測目標服務路由軌跡的原理與方法。分享給大家供大家參考,具體如下:

一 點睛

在此次實踐中,通過scapy的traceroute()方法實現探測機到目標伺服器的路由軌跡,整個過程的原理見下圖,首先通過探測機以SYN方式進行TCP服務掃描,同時啟動tcpdump進行抓包,捕獲掃描過程經過的所有路由點,再通過graph()方法進行路由IP軌跡繪製,中間呼叫ASN對映查詢IP地理資訊並生成svg流程文件,最後使用ImageMagick工 具將svg格式轉換成png,流程結束。

二 程式碼

# -*- coding: utf-8 -*-
import os,sys,time,subprocess
import warnings,logging
#遮蔽scapy 無用告警資訊
warnings.filterwarnings("ignore",category=DeprecationWarning)
#遮蔽模組IPv6 多餘告警
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
from scapy.all import traceroute
#接受輸入的域名或IP
domains = raw_input('Please input one or more IP/domain: ')
target = domains.split(' ')
dport = [80]  #掃描的埠列表
if len(target) >= 1 and target[0]!='':
  res,unans = traceroute(target,dport=dport,retry=-2)  #啟動路由跟蹤
  res.graph(target="> test.svg",ASres=None,type="svg")  #生成svg向量圖形
  time.sleep(1)
  #svg轉png格式
  subprocess.Popen("/usr/bin/convert test.svg test.png",shell=True)
else:
  print "IP/domain number of errors,exit"

三 結果

四 參考

https://github.com/secdev/scapy/issues/1480

更多關於Python相關內容可檢視本站專題:《Python Socket程式設計技巧總結》、《Python資料結構與演算法教程》、《Python函式使用技巧總結》、《Python字串操作技巧彙總》、《Python入門與進階經典教程》及《Python檔案與目錄操作技巧彙總》

希望本文所述對大家Python程式設計有所幫助。