pwn.college 在 SSH 获取 Desktop 的剪贴板内容
在 pwn.college 上使用 GUI Desktop 有个痛点,获取 VNC 的剪贴板内容十分费劲。得先在卡地不行的 VNC 窗口中用光标选中 flag 文本,右键复制,回到 VNC 控制台才能看到复制的文本。再次复制转移到系统剪贴板。
都远程连接了,当然还是通过 SSH 终端更方便,直接框选然后右击就复制了。不过 GUI 的 xfce4 环境和 SSH 不在一起,系统也不提供 xclip 程序,那就另辟蹊径。
Python 的 tkinter 模块,有个剪贴板功能。可大部分 challenge 的 python 不带这个模块。好在发现所有程序都在 /nix/store 里,下一步是找到带这个模块的 python,用 find /nix/store -wholename "*/_tkinter*" 很快就找到几个。
然后就是简单 封装
function clipboard() {
local python=/nix/store/6gvxs9gj8baa4rpn1kxbibjwg8xkjn7g-python3-3.13.11-env/bin/python
DISPLAY=:0 "$python" -c "
import tkinter, sys
tk = tkinter.Tk()
tk.withdraw()
try:
print(tk.clipboard_get())
except tkinter.TclError:
try:
print(tk.selection_get(selection='PRIMARY'))
except tkinter.TclError:
print('Clipboard is empty or not accessible', file=sys.stderr)
"
}但设置剪贴板有些麻烦,调用 clipboard_append() 不能稳定地成功。不过能复制也足够了。