2012-03-01 2 views
1

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

+1

И делает socket.socket не соответствовать вашим потребностям? –

ответ

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

+0

thx много, но я имею в виду, что я хочу отправить конкретный IP-адрес с помощью определенного порта, IOW я хочу замаскировать приложение для отправки пакетов – Searene

+0

Да, но кто-то сказал, что коды Raw socket с использованием python могут быть не такими удобными как C, поэтому я рассматриваю, какой язык я должен использовать, и точно так же, как я сказал выше, кажется, что ms отключил raw-сокет с XP SP2, поэтому я не знаю, работает ли он сейчас. Вы когда-нибудь использовали 'socket.SOCK_RAW' раньше? @Kimvais – Searene

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

+0

вы можете привести более подробный пример? например Я хочу редактировать каждую часть этого пакета, может ли python реализовать его? – Searene

Смежные вопросы