【问题标题】:Starting a TCP client with python使用 python 启动 TCP 客户端
【发布时间】:2020-09-21 10:24:41
【问题描述】:

我正在学习使用 Python 进行道德黑客攻击,并且我一直在尝试从 BlackHat python 书中键入一个简单的 TCP 客户端,但是我在运行我从书中编写的代码时遇到了问题。

import socket

target_host = "95.127.145.5"
target_post = 80

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((target_host,target_post))

client = send("GET / HTTP/1.1\r\nHost: 95.127.145.5\r\n\r\n")

response = client.recv(4096)

我不确定是不是因为它是 python2,但如果是,我需要有关如何将此代码转换为 python3 的建议,因为我的 IDE 是 python 3.8.3 错误发生在("GET / HTTP/1.1\r\nHost: 95.127.145.5\r\n\r\n") 中,我收到消息“检查类型检查器选项”。 非常感谢任何建议。

【问题讨论】:

标签: python python-sockets


【解决方案1】:

在python2中,

client = send("GET / HTTP/1.1\r\nHost: 95.127.145.5\r\n\r\n")

应该是

client.send("GET / HTTP/1.1\r\nHost: 95.127.145.5\r\n\r\n")

在python3中,只需

client.send(b"GET / HTTP/1.1\r\nHost: 95.127.145.5\r\n\r\n")

编辑:Roshin Raphel 的答案比我的编码更好。而且您在提出请求时没有使用target_host。所以这条线可能更好

client.send(f"GET / HTTP/1.1\r\nHost: {target_host}\r\n\r\n".encode())

【讨论】:

  • 非常感谢您的回答,非常感谢
  • 我开始在 0x006E2928 处得到这个
  • 我想你可能已经完成了response=client.recv 而不是response=client.recv(4096)
  • 那是我打错字了
【解决方案2】:

您必须在发送请求之前对文本进行编码,
这行也是错的

client = send("GET / HTTP/1.1\r\nHost: 95.127.145.5\r\n\r\n")

应该是:

client.send("GET / HTTP/1.1\r\nHost: 95.127.145.5\r\n\r\n")

见:

import socket

target_host = "95.127.145.5"
target_post = 80

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((target_host,target_post))

client.send("GET / HTTP/1.1\r\nHost: 95.127.145.5\r\n\r\n".encode())

response = client.recv(4096)

还要检查主机是否启动

【讨论】:

  • 我的错是错字,我输入正确只是在 python3 上发送有问题,但非常感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-11
  • 1970-01-01
  • 2017-03-26
  • 2013-10-24
  • 2012-11-16
  • 1970-01-01
  • 2017-12-06
相关资源
最近更新 更多