You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何查看通过pywinauto控制Putty执行msfconsole命令的结果?

如何获取Pywinauto控制Putty执行msfconsole后的输出结果?

用pywinauto直接抓取Putty终端的输出确实有点小挑战,不过有几个实用的办法可以搞定,我给你梳理下:

方法1:定位Putty终端控件直接读取文本

Putty的终端界面在pywinauto里是一个可识别的控件,你可以先找到它的标识,再提取文本:

  1. 先运行这段代码查看窗口下的所有控件,找到终端对应的控件信息:
app_Putty.top_window().print_control_identifiers()
  1. 根据输出找到终端控件(通常类名是PuTTY),然后提取文本:
# 定位到终端控件
terminal = app_Putty.top_window().child_window(class_name="PuTTY")
# 获取终端的全部文本内容
msf_output = terminal.texts()[0]
print(msf_output)

这个方法能实时获取终端内容,不过要注意控件定位的准确性,不同Putty版本可能略有差异。

方法2:让Putty把输出写入日志文件

启动Putty时加上日志参数,所有终端输出会自动保存到指定文件,之后直接读取文件即可:

import time

# 启动Putty时指定日志文件路径
app_Putty = Application().Start(cmd_line='putty -ssh user@10.10.10.10 -log putty_msf_output.log')
app_Putty.top_window_().TypeKeys("password {ENTER}")
time.sleep(5)
command = 'msfconsole'
app_Putty.top_window_().TypeKeys(command+"{ENTER}")

# 给足够时间让msfconsole加载完成(根据实际情况调整sleep时长)
time.sleep(15)

# 读取日志文件内容
with open('putty_msf_output.log', 'r', encoding='utf-8') as f:
    msf_output = f.read()
print(msf_output)

这个方法最稳定,不用担心控件定位的问题,还能永久保存输出记录。

方法3:模拟复制粘贴获取内容

利用Putty的快捷键复制终端内容到剪贴板,再读取剪贴板:

import time
import pyperclip

# 执行完命令后等待加载
time.sleep(10)

# Putty中Ctrl+Shift+A是全选(如果你的Putty快捷键不一样,自己调整)
app_Putty.top_window().TypeKeys("^+A")
# 复制到剪贴板(Putty默认用Ctrl+Insert复制)
app_Putty.top_window().TypeKeys("^INSERT")

# 读取剪贴板内容
msf_output = pyperclip.paste()
print(msf_output)

这个方法操作简单,但依赖Putty的快捷键设置,如果你的Putty改了快捷键,需要对应调整。

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

火山引擎 最新活动