我有这样的代码:
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。我想添加一个有效载荷数据,我怎么做呢?
例如,在这里,我有一个带有替罪羊库的工作代码:
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)它确实发送了“我的数据”有效载荷。如果我用tcpdump拦截它,我可以在syn包中看到数据字段的长度和"mydata“。
我想通过sock或http代理发送它,但我不知道如何才能做到。
事实上,我不需要建立连接,因为即使端口关闭,我也想发送数据包。
有些人继续告诉我,我不能用socks发送tcp数据包。这是不真实的。SOCKS在第4层中起作用,所以它是完全可行的,问题是我不知道如何用Python来完成它,因为我对它还不熟悉。
发布于 2020-04-13 00:37:43
您可以使用sendall();例如:s.sendall("GET / HTTP/1.1 ...")
有关更多细节,请参见https://pypi.org/project/PySocks/ (我从其中获得了这个示例),以及https://docs.python.org/3/library/socket.html (socks模拟python的socket构建)。
https://stackoverflow.com/questions/61179980
复制相似问题