You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

《Black Hat Python》第2章TCP代理工具运行无数据返回问题求助

你的代码存在3处核心语法/API使用错误,是导致无数据输出的根本原因:

  • 错误1:receive_from 函数误用UDP套接字API
    TCP连接使用recvfrom会返回(数据字节, 对端地址)元组,你直接将元组和bytes类型的buffer相加会触发类型错误,但代码中捕获所有异常直接pass,导致你看不到报错,程序直接跳出接收循环返回空字节。
    修正方案:将data = connection.recvfrom(4096)改为data = connection.recv(4096)

  • 错误2:所有格式化字符串遗漏f前缀
    hexdump函数中两处格式化字符串没有加f标识,运行时会直接输出字面量而非变量值,甚至触发格式错误:

  1. 十六进制转换行改为:hexa = ' '.join([f'{ord(c):02X}' for c in word])
  2. 结果拼接行改为:results.append(f'{i:04x} {hexa:<{hexwidth}} {printable}')
  • 错误3:字符翻译表生成逻辑错误
    你生成的HEX_FILTER是普通字符串,无法直接作为str.translate的入参,需要转换为字符映射表:
    修正方案:将HEX_FILTER的定义改为:
HEX_FILTER = str.maketrans(
    {i: chr(i) if len(repr(chr(i))) == 3 else '.' for i in range(256)}
)

以上错误修正后,再运行你原本的测试命令即可正常看到FTP握手、数据传输的日志输出。需要注意FTP属于多端口协议,当前代理仅能处理21端口的控制链路流量,无法处理被动模式下的动态数据端口流量,若需要完整代理FTP需要额外扩展端口监听逻辑。

内容的提问来源于stack exchange,提问作者user16774307

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 03:54:04