首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过socks发送TCP数据包?

如何通过socks发送TCP数据包?
EN

Stack Overflow用户
提问于 2020-04-13 00:30:55
回答 1查看 1.6K关注 0票数 0

我有这样的代码:

代码语言:javascript
复制
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。我想添加一个有效载荷数据,我怎么做呢?

例如,在这里,我有一个带有替罪羊库的工作代码:

代码语言:javascript
复制
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来完成它,因为我对它还不熟悉。

EN

回答 1

Stack Overflow用户

发布于 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构建)。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61179980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档