用键盘传输小数据,破除解决多层远程访问或防火墙限制不能粘贴复制的问题

本文介绍了一种利用Python实现的巧妙方法,通过键盘在远程机器上敲入Base64编码的数据,解决因防火墙限制而无法直接粘贴复制的问题,适用于小文件传输和单向从本地到远程的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

经常在项目上遇到这样的问题,由于vpn或者防火墙限制远程连接到服务器时不能进行粘贴复制文本。本机改好的代码还需要在远程机上在敲一遍,并且不能传输文件,每次传输东西都要找管理员给传输文件很麻烦,所以想到了这样一个又蠢又灵活的办法进行粘贴复制,先说明本脚本不适合以下需求,如果有以下需求请直接跳过该文章去找更好的解决方案:

  • 不适合传输大文件,如果文件超过100KB,该脚本不适合你,还是去找管理员进行传输
  • 如果追求高效率,该脚本不适合
  • 仅支持单向传输,即由本机传输到远程机,如果需要从远程机迁移数据到本机,该脚本不适合你,想其他办法

只适合以下几种情况

  1. 粘贴文字
  2. 传输极小的文件
  3. 单向传输,从本机到远程机

说下实现原理,当我们多层远程时,并且有防火墙或者vpn 限制时不能粘贴文件或者字符串,也无法实现网络穿透,远程过去我们只能用鼠标和键盘进行数据编辑。所以该脚本就是将要传输的数据用自动打字的方式进行传输的。说白一点,文件都是二进制0101组成的的,既然限制了传输文件。那干脆在远程机器用键盘自动敲出0101这些字符然后还原就好了,当然了敲0101这些字节码有点夸张但是我们可以打base64过去。所以这就限制了传输的文件不能太大,不然要敲到猴年马月,当然如果你有足够的耐心等待也是可以实现的,但是极其不建议这样做,非常容易出错中断,除非你是真没有办法了,可以尝试下。

原理就是将文件转成base64字符串用键盘在远程机把数据敲出来,然后在进行还原,还原base64可以使用powershell脚本或者shell,python等

注意:传输过程中远程机器输入法要保持一种状态,传输纯中文远程输入法要是中文输入,英文base64要保证远程输入法是英文键盘

该脚本使用python3 编写,请确保自己的机器上有python 并安装好

功能

  1. 该脚本可以直接传输文字,但是要注意文字不能中英文符号混合
  2. 可以将要传输的文字保存在文件里然后传输过去
  3. 可以开始或者暂停传输,可以自定义按键,默认是左Ctrl 键开始或暂停
  4. Esc 键退出程序

传入到远程电脑后如果是windows 可以用powershell 脚本(程序附带了一个小脚本,可以用type_str方法传到远程服务器)读取base64字符串将其转换成文件

liunx 下可以用python 调用脚本里的b64str2file方法

代码片段如下

    # 调用 type_file 方法传输文件,文件最好压缩下,能节省时间,以下方法按需选择运行
    src_file_path = 'testfile.zip'
    type_file(src_file_path, one_step_len=30, step_interval=0.2)
    # 调用type_str 方法传输文字
    instr = """test word """
    type_str(instr)
    # 如果远程有python环境可以调用b64str2file方法将BASE64字符串转成文件
    b64str2file("Untitled-2.txt", "2.zip")

该脚本已经传到了Github上,这里不贴源代码是只提供一个思路,可以用其他语言实现,如果有需要也可自行下载。当然如果有更好的实现方式,欢迎留言。

Github 项目地址

esinker/KeyTypeUploadFile: 用键盘传输极小数据到远程服务器 (github.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值