2012-03-01 48 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