Python實現TCP探測目標服務路由軌跡

2021-09-11 05:25:30 字數 1389 閱讀 9501

一 點睛

在此次實踐中,通過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"

三 結果

四參考

用TCP完成埠探測

起因 socket可以通過tcp實現與其他相同區域網的pc或者相同公網的pc通訊,因此可以通過socket來探測,其他pc或者伺服器的埠是否開放 總結 結合前面我的博文,看得見的tcp與udp 量不足60行,但是效果還可以!可以明顯看到135埠顯示已開啟,此處結合我檢視的pc的埠會更加明顯 在另一台...

tcp鏈結斷開的探測

有資料說,read write都可以探測tcp的斷開,但都不是實時的。但是實際在某些裝置上測試發現,即使開乙個執行緒每隔一小段時間發一次心跳包 write write可能總是成功的,write也不能探測連線已經斷開,而且這個狀態持續很久。所以,如果需要保持和裝置的連線,心跳包需要回覆,如果兩秒內無回...

TCP程式設計 python實現

tcp是乙個面向連線的協議。這意味著客戶和伺服器要先握手和建立乙個tcp連線,才能互相傳送資料。在建立這個連線時,客戶端通過套接字位址 ip和埠號 和伺服器的套接字位址 ip和埠號 關聯起來。然後,在之後的通訊中,伺服器和客戶端如果要傳送資料,直接把資料交給套接字就可以進行傳送。與之相對的時udp,...