TCP-сканирование с использованием TCP SYN и наличие ошибки OS: [WinError 10022] Был указан недопустимый аргументPython

Программы на Python
Ответить
Anonymous
 TCP-сканирование с использованием TCP SYN и наличие ошибки OS: [WinError 10022] Был указан недопустимый аргумент

Сообщение Anonymous »

мне пришла задача сделать tcp-сканер методом TCP SYN,

Код: Выделить всё

from scapy.all import *
from scapy.layers.inet import IP, UDP, ICMP, TCP

def tcp_scan(destination_ip : str, ports : list[int]):
sock = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
sock.setblocking(False)

send_times = {}
results = {}

for port in ports:
pkt = IP(dst=destination_ip) / TCP(sport=1234, dport=port, flags="S")
send_times[port] = time.time()
sock.sendto(bytes(pkt), (destination_ip, port))

deadline = time.time() + TIMEOUT

while time.time() < deadline:
rlist, wlist, xlist = select.select([sock], [], [], TIMEOUT)
if not rlist:
continue
data, addr = sock.recvfrom(65535)
ip = IP(data)
tcp = ip[TCP]
port = tcp.sport
flags = tcp.flags
response_time = (time.time() - send_times[port]) * 1000
if flags & 0x12 == 0x12:
results[port] = "open", response_time
RST = IP(dst=destination_ip) / TCP(sport=1234, dport=port, flags="R", seq=tcp.ack)
sock.sendto(bytes(RST), (destination_ip, 0))
if flags & 0x14 == 0x14:
results[port] = "closed", response_time
return results

ip_address = "1.1.1.1"
port_list = [8000, 8001, 8002, 8003]
tcp = tcp_scan(ip_address, port_list)
это метод, который делает это, к сожалению, он не работает из-за

sock.sendto(bytes(pkt), (destination_ip, port))

Код: Выделить всё

[WinError 10022] An invalid argument was supplied
я пробовал менять параметры сокета, менять порт, все равно не работает

Подробнее здесь: https://stackoverflow.com/questions/798 ... alid-argum
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»