0
試圖瞭解/逆向工程的洪流/追蹤器對話。我已經設法得到一些簡單的代碼運行,打出一個跟蹤器並打印響應;追蹤器對話中丟失的部分
>>> import urllib2
>>> import urllib
>>> import binascii
>>> hash = "0221caf96aa3cb94f0f58d458e78b0fc344ad8bf"
>>> url = "http://torrent.ubuntu.com:6969/scrape?info_hash="
>>> url += urllib.quote(binascii.a2b_hex(hash))
>>> f=urllib2.urlopen(url).read()
>>> print f
d5:filesd20:☻!╩∙jú╦ö≡⌡ìEÄx░ⁿ4J╪┐d8:completei4e10:downloadedi0e10:incompletei1e4:name20:dapper-dvd-amd64.isoeee
根據BitTorrent Tracker Protocol,我擴展了代碼以嘗試獲得同級列表;這些參數是從一個wireshark sniff逐字地拉(更多在下面)。
>>> hash = "0221caf96aa3cb94f0f58d458e78b0fc344ad8bf"
>>> url = "http://torrent.ubuntu.com:6969/announce?info_hash="
>>> url += urllib.quote(binascii.a2b_hex(hash))
>>> url +="&peer_id=-UT3320-_vO%21lS%a7%07%876%18%99&port=53965&uploaded=0&downloaded=18874368&left=2850752512&corrupt=0&key=F0E51CD9&event=stopped&numwant=0&compact=1&no_peer_id=1"
>>> f=urllib2.urlopen(url).read()
>>> print f
d8:completei4e10:incompletei2e8:intervali1800e5:peerslee
使用Wireshark的,我聞了聞一「之稱工作」源(同洪流/ info_hash信息,但使用uTorrent的),然後聞了聞我的愚蠢的小程序;在這兩種情況下,跟蹤器都以3個數據包([ACK],[PSH,ACK]和[FIN ACK])的形式響應一組類似的數據;但在我的python程序中,我沒有看到任何過去第[ACK]。
不是特別流利與網絡或數據包處理,所以我會很感激任何指針!
一些HTTP跟蹤器可以不如果* regular * announce請求之間的間隔小於第一個跟蹤器通告查詢響應的* interval *字段的值,則響應。 –
自從應用「解決方法」以來,我還沒有遇到過這個問題,但是當我下一次碰到牆上時會記住這一點。謝謝(你的)信息! –