一 點睛
在此次實踐中,通過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,...