У меня есть этот код:
import socket
import socks
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS4, "IP_SOCK", PORT_SOCK, True)
s = socks.socksocket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((target,port))
s.close()
print("Connection tested.")
Это работает, но длина пакетов равна 0. Я хотел бы добавить данные полезной нагрузки, как я могу это сделать?
Например, здесь у меня есть этот рабочий код с библиотекой scapy:
import socket
import socks
from scapy.all import *
def send(src_ip, dst_ip, dst_port):
ip = IP(src=src_ip, dst=dst_ip)
src_port = random.randint(20, 65000)
transport = TCP(sport=src_port, dport=dst_port, flags="S")
send(ip/transport/b"mydata")
if __name__ == '__main__':
send('SRC_IP', 'DST_IP', DST_PORT)
И он действительно отправляет полезную нагрузку "mydata". Если я перехватываю его с помощью tcpdump, я могу видеть длину поля данных и «mydata» в пакете syn.
Я хотел бы отправить его через носок или http-прокси, но я не знаю как я могу это сделать.
Дело в том, что мне не нужно устанавливать sh соединение, потому что я хочу отправлять пакеты, даже если порт закрыт.
Некоторые люди продолжайте говорить мне, что я не могу использовать носки для отправки пакетов tcp. Неправда. SOCKS действует в слое 4, так что это вполне выполнимо, дело в том, что я не знаю, как это сделать в Python, так как я новичок в этом.