Как отправить пользовательские TCP-пакеты на Windows? - PullRequest
1 голос
/ 01 марта 2012

Я хочу отправить пакеты, которые я определяю IP-адрес, порт, данные, и т. Д., Сначала я подумал, может быть, я могу использовать необработанные сокеты на окнах, но после поиска в течение некоторого времени, я обнаружил, что, кажется, мс имеет отключил сырые сокеты из XP SP2 (правда?), теперь я не знаю, как это сделать. Кто-то говорит мне использовать winPcap, затем я захожу на домашнюю страницу этого программного обеспечения, но обнаруживаю, что последняя версия этого программного обеспечения была выпущена 02 июля 10, что слишком устарело, я не знаю, работает ли оно до сих пор. Если возможно, я предпочел использовать Python для выполнения задачи, но кажется неудобным использовать python для реализации raw socket, теперь я не знаю, как это сделать. У кого-нибудь есть хорошая идея по этому поводу? любая помощь приветствуется.

Ответы [ 3 ]

1 голос
/ 01 марта 2012

scapy должен позволить вам сделать это.

0 голосов
/ 01 марта 2012

Это работает по крайней мере на Win7, когда питон запускается от имени администратора:

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_RAW)
s.sendto(b"\x00"*16, (192.168.0.255, 0)
0 голосов
/ 01 марта 2012

Вы пробовали что-то вроде

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 гласит ( последний пример ) "В примере требуются права администратора для изменения интерфейса", поэтому вы можете проверить, как это сделать.

...