欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實現(xiàn)Tracert追蹤TTL值的方法詳解

 更新時間:2022年10月08日 09:00:01   作者:lyshark  
Tracert命令跟蹤路由原理是IP路由每經(jīng)過一個路由節(jié)點TTL值會減一。本文我們將通過scapy構(gòu)造一個路由追蹤工具并實現(xiàn)一次追蹤,感興趣的小伙伴可以了解一下

Tracert 命令跟蹤路由原理是IP路由每經(jīng)過一個路由節(jié)點TTL值會減一,假設(shè)TTL值=0時數(shù)據(jù)包還沒有到達目標主機,那么該路由則會回復(fù)給目標主機一個數(shù)據(jù)包不可達,由此我們就可以獲取到目標主機的IP地址,如下我們通過scapy構(gòu)造一個路由追蹤工具并實現(xiàn)一次追蹤。

  • 需要安裝擴展包:
  • pip install scapy

首先Scapy是如何發(fā)包與收包的,看以下案例的演示。

>>> from random import randint
>>>
>>> RandomID=randint(1,65534)
>>> packet = IP(dst="8.141.58.64", ttl=1, id=RandomID) / ICMP(id=RandomID, seq=RandomID) / "hello lyshark"
>>> respon = sr1(packet,timeout=3,verbose=0)
>>>
>>> respon
<IP  version=4 ihl=5 tos=0xc0 len=61 id=14866 flags= frag=0 ttl=64 proto=icmp chksum=0xbc9a src=192.168.1.1 dst=192.168.1.2 |<ICMP  type=time-exceeded code=ttl-zero-during-transit chksum=0xf4ff reserved=0 length=0 unused=None |<IPerror  version=4 ihl=5 tos=0x0 len=33 id=49588 flags= frag=0 ttl=1 proto=icmp chksum=0x4f79 src=192.168.1.2 dst=61.135.169.125 |<ICMPerror  type=echo-request code=0 chksum=0x30c4 id=0xc1b4 seq=0xc1b4 |<Raw  load='hello lyshark' |>>>>>

路由追蹤原理(參考于互聯(lián)網(wǎng)):一開始發(fā)送一個TTL為1的包,這樣到達第一個路由器的時候就已經(jīng)超時了,第一個路由器就發(fā)ICMP通知說包超時,這樣就能夠記錄下所經(jīng)過的第一個路由器的IP。然后將TTL加1,安全通過第一個路由器,而第二個路由器的的處理與第一個同樣,丟包,發(fā)通知說包超時了,這樣記錄下第二個路 由器IP,由此能夠一直進行下去,直到這個數(shù)據(jù)包到達目標主機,由此打印出全部經(jīng)過的路由器。

將這個過程自動化,就可以完成數(shù)據(jù)包的跟蹤,Python 代碼如下所示

from scapy.all import *
from random import randint
import time,ipaddress,threading
from optparse import OptionParser

def ICMP_Ping(addr):
    RandomID=randint(1,65534)
    packet = IP(dst=addr, ttl=64, id=RandomID) / ICMP(id=RandomID, seq=RandomID) / "lyshark"
    respon = sr1(packet,timeout=3,verbose=0)
    if respon:
        print("[+] --> {}".format(str(respon[IP].src)))

# By: LyShark.com
def TraceRouteTTL(addr):
    for item in range(1,128):
        RandomID=randint(1,65534)
        packet = IP(dst=addr, ttl=item, id=RandomID) / ICMP(id=RandomID, seq=RandomID)
        respon = sr1(packet,timeout=3,verbose=0)
        if respon != None:
            ip_src = str(respon[IP].src)
            if ip_src != addr:
                print("[+] --> {}".format(str(respon[IP].src)))
            else:
                print("[+] --> {}".format(str(respon[IP].src)))
                return 1
        else:
            print("[-] --> TimeOut")
        time.sleep(1)

def Banner():
    print("  _          ____  _                _    ")
    print(" | |   _   _/ ___|| |__   __ _ _ __| | __")
    print(" | |  | | | \___ \| '_ \ / _` | '__| |/ /")
    print(" | |__| |_| |___) | | | | (_| | |  |   < ")
    print(" |_____\__, |____/|_| |_|\__,_|_|  |_|\_\\")
    print("       |___/                             \n")
    print("E-Mail: me@lyshark.com")

if __name__== "__main__":
    Banner()
    parser = OptionParser()
    parser.add_option("--mode",dest="mode",help="選擇使用的工具模式<ping/trace>")
    parser.add_option("-a","--addr",dest="addr",help="指定一個IP地址或范圍")
    (options,args) = parser.parse_args()
    print("By: LyShark.com")
    # 使用方式: lyshark.py --mode=ping -a 192.168.1.0/24
    if options.mode == "ping":
        net = ipaddress.ip_network(str(options.addr))
        for item in net:
            t = threading.Thread(target=ICMP_Ping,args=(str(item),))
            t.start()
    # 使用方式: lyshark.py --mode=trace -a 8.141.58.64
    elif options.mode == "trace":
        TraceRouteTTL(str(options.addr))
    else:
        parser.print_help()

追蹤探測效果如下:

到此這篇關(guān)于Python實現(xiàn)Tracert追蹤TTL值的方法詳解的文章就介紹到這了,更多相關(guān)Python Tracert追蹤TTL值內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python&Matlab實現(xiàn)螞蟻群算法求解最短路徑問題的示例

    Python&Matlab實現(xiàn)螞蟻群算法求解最短路徑問題的示例

    本文主要介紹了Python&Matlab實現(xiàn)螞蟻群算法求解最短路徑問題的示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Python實現(xiàn)將sqlite數(shù)據(jù)庫導(dǎo)出轉(zhuǎn)成Excel(xls)表的方法

    Python實現(xiàn)將sqlite數(shù)據(jù)庫導(dǎo)出轉(zhuǎn)成Excel(xls)表的方法

    這篇文章主要介紹了Python實現(xiàn)將sqlite數(shù)據(jù)庫導(dǎo)出轉(zhuǎn)成Excel(xls)表的方法,結(jié)合實例形式分析了Python針對sqlite數(shù)據(jù)庫的連接、讀取及使用寫操作包(xlwt)生成Excel表的相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2017-07-07
  • python給微信好友定時推送消息的示例

    python給微信好友定時推送消息的示例

    今天小編就為大家分享一篇python給微信好友定時推送消息的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • 天翼開放平臺免費短信驗證碼接口使用實例

    天翼開放平臺免費短信驗證碼接口使用實例

    天翼開放平臺提供了一個免費的短信驗證碼API,下面看看使用方法吧,我們用python開發(fā)接口
    2013-12-12
  • Matplotlib配色之Colormap詳解

    Matplotlib配色之Colormap詳解

    這篇文章主要介紹了Matplotlib配色之Colormap詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Python查找算法之折半查找算法的實現(xiàn)

    Python查找算法之折半查找算法的實現(xiàn)

    這篇文章主要介紹了Python查找算法之折半查找算法的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • OpenCV實現(xiàn)直線檢測

    OpenCV實現(xiàn)直線檢測

    這篇文章主要為大家詳細介紹了OpenCV實現(xiàn)直線檢測,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Pytorch圖像處理注意力機制解析及代碼詳解

    Pytorch圖像處理注意力機制解析及代碼詳解

    這篇文章主要為大家介紹了Pytorch圖像處理注意力機制解析及代碼詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • tkinter如何實現(xiàn)label超鏈接調(diào)用瀏覽器打開網(wǎng)址

    tkinter如何實現(xiàn)label超鏈接調(diào)用瀏覽器打開網(wǎng)址

    這篇文章主要介紹了tkinter如何實現(xiàn)label超鏈接調(diào)用瀏覽器打開網(wǎng)址問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • python編程PyAutoGUI庫使用與安裝簡介

    python編程PyAutoGUI庫使用與安裝簡介

    這篇文章主要為大家介紹了python編程中PyAutoGUI庫的使用與安裝簡單介紹,文中含有視頻詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10

最新評論