2012-03-01 260 views
1

我想發送一個數據包,我定義的IP地址,端口,數據,.etc,起初我想也許我可以在Windows上使用原始套接字,但谷歌搜索一段時間後,我發現它似乎已禁用ms從XP SP2的原始套接字(是真的嗎?),現在我不知道該怎麼做。有人告訴我使用winPcap,然後我去了該軟件的主頁,只是發現該軟件的最後一個版本於2002年7月2日發佈,這太舊了,我不知道它現在是否仍然有效。如果可能的話,我更喜歡使用Python來完成任務,但是使用python實現raw socket似乎不方便,現在我不知道該怎麼做。有沒有人有關於它的好主意?任何幫助讚賞。如何在Windows上發送自定義tcp數據包?

+1

而且不socket.socket不適合您的需要? – 2012-03-01 12:06:15

回答

0

您是否嘗試過類似

import socket 
s = socket.socket(socket.AF_INET, socket.SOCK_RAW) 
s.sendto('\xff'*6 + '\x00\x50\xe4\x59\xd9\x30'*16, ('168.1.0.0', 4444)) 

socket模塊的文件讀取(last example)「中的示例需要管理員權限來修改界面」,所以你可能想看看如何做到這一點。

+0

你的意思是'socket.SOCK_RAW',對吧? – Kimvais 2012-03-01 12:41:25

+0

thx很多,但我的意思是我想發送到特定的IP地址使用特定的端口,IOW我想僞裝一個應用程序發送數據包 – Searene 2012-03-01 12:46:01

+0

是的,但有人說,代碼原始套接字使用Python可能不方便作爲C,所以我正在考慮應該使用哪種語言,就像我上面所說的那樣,似乎ms已禁用XP SP2的原始套接字,所以我不知道它現在是否工作。你以前曾經使用'socket.SOCK_RAW'嗎? @Kimvais – Searene 2012-03-01 12:50:30

0

當蟒蛇被以管理員身份運行此工作至少在Win7的:

import socket 
s = socket.socket(socket.AF_INET, socket.SOCK_RAW) 
s.sendto(b"\x00"*16, (192.168.0.255, 0) 
+0

哦,thx,我會試一試 – Searene 2012-03-01 12:51:22

+0

你能舉一個更詳細的例子嗎?例如我想編輯該數據包的每個部分,python可以實現它嗎? – Searene 2012-03-01 15:08:04