V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Tuisku
V2EX  ›  问与答

如何从一台无物理网路连接的服务器上取出文件?

  •  
  •   Tuisku · 2016-12-19 10:33:19 +08:00 · 4272 次点击
    这是一个创建于 2922 天前的主题,其中的信息可能已经有所发展或是发生改变。
    服务器无任何物理网络连接,只能通过 KVM ( Keyboard Video Mouse )进行操作。可以挂载 ISO 但是并没办法向挂载的镜像写入文件(想想也是……)。

    目前正尝试截图然后 OCR (简直想死)……

    诸位还有什么好的办法吗[:doge]
    第 1 条附言  ·  2016-12-19 12:33:52 +08:00
    (= =)||
    最终想了个解决方案,先将所有要 pull 来的代码压缩一下,然后将压缩文件生成 Base64 ,再把 Base64 生成了 400+的二维码图片。一秒一张图的幻灯播放这 400+的图片在本地录制下来,然后 split 这个视频在本地获得这 400+二维码,批量解码合并。

    就是万一有一张图的二维码有缺损比较严重(毕竟 KVM 拉到的视频有色斑色块和色差之类的鬼东西),那就要爆炸了。。
    第 2 条附言  ·  2016-12-20 09:41:18 +08:00
    跟大家说个好玩的事儿来点乐子。

    费尽千辛万苦把 400+张二维码转成 Base64 然后读取出来之后我发现前两天我刚通过正常手段 pull 过代码,并且经过对比,代码一个子儿也没变(微笑)

    先让我去跳个楼
    50 条回复    2016-12-20 10:15:52 +08:00
    shoaly
        1
    shoaly  
       2016-12-19 10:47:21 +08:00
    确实是一个好题目... 关注一下 楼下的脑洞
    tavimori
        2
    tavimori  
       2016-12-19 10:54:34 +08:00 via Android   ❤️ 3
    文件不大的话 base64 后切分转二维码貌似可能?
    Tuisku
        3
    Tuisku  
    OP
       2016-12-19 10:58:19 +08:00
    @tavimori 这是个好思路!感谢~
    besto
        4
    besto  
       2016-12-19 11:01:47 +08:00
    理论上,只是理论上,你可以通过闪屏幕,输出数字信号,或是模拟信号,外面拿个接收器接受了,翻译一把。
    理论上(不知道这个是不是违规)可以操控一个 gpio 管脚,然后拿一个接收器接受再翻译。
    实际上,只能把源文件转码成容易识别的字符然后出来 OCR 。


    其实,把硬盘拿走不就行了[手动滑稽]
    lany
        5
    lany  
       2016-12-19 11:03:12 +08:00 via iPhone
    用语音识别?
    Tuisku
        6
    Tuisku  
    OP
       2016-12-19 11:05:06 +08:00
    @besto
    理论上。。我可以去机房直接 Copy
    实际上。。我要飞到杭州的成本够我对着屏幕一个字一个字把代码还原了。。

    [:doge]
    liyvhg
        7
    liyvhg  
       2016-12-19 11:09:28 +08:00 via Android
    ASCII 码写入 BMP 图片,每个点可以存 3 个数据( RGB ),显示图片然后拍照解码,记得图片要和分辨率一致,以前有大牛实现过
    besto
        8
    besto  
       2016-12-19 11:09:44 +08:00
    @Tuisku 没法到机房?你怎么控制的?
    loserwn
        9
    loserwn  
       2016-12-19 11:17:57 +08:00
    机房有没有外包?是否可以下架服务器硬盘,给你快递过来。
    Tuisku
        10
    Tuisku  
    OP
       2016-12-19 11:20:12 +08:00
    @besto
    有 KVM 可以控制啊
    Tuisku
        11
    Tuisku  
    OP
       2016-12-19 11:22:36 +08:00
    @liyvhg
    听起来有点难度,正在尝试写一个打包所有需要的文件然后分割一下生成 N 张二维码的软件 push 到服务器试一下
    感谢提供思路~
    wwqgtxx
        12
    wwqgtxx  
       2016-12-19 11:24:51 +08:00 via iPhone
    Usb😂
    besto
        13
    besto  
       2016-12-19 11:25:42 +08:00
    @Tuisku 还是有点不太理解场景。如果你可以靠近物理机本身,那就不是问题,如果不能,那么是不是类似在本地上打开一个虚拟的屏幕接上去?这样不就可以直接粘贴复制了么?
    难不成,一个超长 vga 线直接接到家门口。。。
    Tuisku
        14
    Tuisku  
    OP
       2016-12-19 11:30:17 +08:00   ❤️ 1
    @besto
    是的。。 KVM 就相当于一条超长的 VGA 线从机房接到我家里然后附赠了鼠标键盘一套(= =||)
    sarices
        15
    sarices  
       2016-12-19 11:35:20 +08:00
    好神奇,为何有这样艰苦的条件?让机房备份一份发过来不行?
    chairuosen
        16
    chairuosen  
       2016-12-19 12:04:57 +08:00
    限定条件:输出只有屏幕-》图像识别-》 OCR 不靠谱,二维码准确性最高
    Tuisku
        17
    Tuisku  
    OP
       2016-12-19 12:24:07 +08:00
    @chairuosen
    对,的确是,大概是 600KB 的代码,生成了 400 多张二维码

    正考虑是不是多叫几个人过来跟我一起扫码抽奖(雾……)
    7654
        18
    7654  
       2016-12-19 12:34:32 +08:00
    r#7 @Tuisku
    @liyvhg 好像在 V2EX 上见过该解决方案
    tavimori
        19
    tavimori  
       2016-12-19 13:38:30 +08:00 via Android
    其实我前段时间也研究过基于屏幕可见光的文件传输方案,不过还没正式开始。
    popok
        20
    popok  
       2016-12-19 13:54:44 +08:00
    这是一个有趣的项目,写过二维码识别工具的可以轻松写出一对 C/S 模式的工具, S 端负责显示二维码, C 端负责实时识别拼接,然后二维码切换速度可根据你那个远程控制工具的帧率调节。理论上, 600K 的文件,应该要不了十几秒就能完成吧。
    zhujinliang
        21
    zhujinliang  
       2016-12-19 14:00:23 +08:00
    键盘也是个输出设备,上面有 3 个灯呢
    levn
        22
    levn  
       2016-12-19 14:04:16 +08:00
    一种新的以光为媒介的数字传输方式诞生了……
    hebeiround
        23
    hebeiround  
       2016-12-19 15:44:50 +08:00 via iPhone   ❤️ 4
    我遇到过类似的例子,是两百块钱找了个中学生帮忙抄到另外一台电脑上的。
    mrhuiyu
        24
    mrhuiyu  
       2016-12-19 16:31:09 +08:00
    如楼上所说,新的数字传输方式在这里诞生了。
    ahillgian
        25
    ahillgian  
       2016-12-19 16:39:50 +08:00
    为什么不拍照回家慢慢看?
    irainsoft
        26
    irainsoft  
       2016-12-19 16:41:26 +08:00
    看完题目后我的表情就是楼主的头像

    叫机房把服务器寄回来吧....
    Tuisku
        27
    Tuisku  
    OP
       2016-12-19 16:43:38 +08:00   ❤️ 1
    @mrhuiyu
    hhh 然而这个新的传输方式效率低下且容错率不容恭维 应该先批判一波
    Rice
        28
    Rice  
       2016-12-19 16:51:14 +08:00 via iPhone
    真金属
    mkeith
        29
    mkeith  
       2016-12-19 17:33:08 +08:00
    你二维码怎么生成的啊?手写生成代码吗
    wwthappy
        30
    wwthappy  
       2016-12-19 17:34:13 +08:00
    你 mount 的 iso 是宿主机的 iso 么?如果这样的话你在宿主机上创建个 loop device 或者干脆给虚拟机分配一个 disk 写进去,然后从宿主机上网络拷回来不行吗?
    Tuisku
        31
    Tuisku  
    OP
       2016-12-19 17:34:27 +08:00
    @mkeith
    写了个小程序,从生成 Base64 到把 Base64 split 成 2300 一组的 list ,最后遍历 list 按照顺序生成二维码。大概思路就是这样
    Tuisku
        32
    Tuisku  
    OP
       2016-12-19 17:36:15 +08:00
    @wwthappy
    如果是虚拟机还省事儿了,重点是这是台物理服务器……因为种种原因是不能连接网络,只能通过 KVM 操作。
    mkeith
        33
    mkeith  
       2016-12-19 17:36:51 +08:00
    代码全都手打啊 厉害
    Tuisku
        34
    Tuisku  
    OP
       2016-12-19 17:41:10 +08:00
    @mkeith
    其实我是在本地把软件写好了打包成 ISO 挂载到服务器上的(嘿嘿嘿 要不然服务器上就个记事本打死我也不干)
    daviswei
        35
    daviswei  
       2016-12-19 17:53:29 +08:00 via Android
    @Tuisku 有点好奇为什么可以挂过去不能传回来
    fangdingjun
        36
    fangdingjun  
       2016-12-19 18:07:36 +08:00
    我记得华为服务器的 KVM 可以挂载软盘映像,这个是可以写的
    Tuisku
        37
    Tuisku  
    OP
       2016-12-19 18:10:16 +08:00
    @daviswei
    因为挂载的是只读的 ISO 镜像。。
    Tuisku
        38
    Tuisku  
    OP
       2016-12-19 18:15:00 +08:00
    @fangdingjun
    试了一下,的确能挂载 vfd 的软盘映像,但是写入的时候就提示写保护了= =!
    daviswei
        39
    daviswei  
       2016-12-19 18:37:17 +08:00 via Android
    @Tuisku 对啊,我用过的都是可以挂 iso 也可以映射 usb 设备,可能你的不太一样
    lanyusea
        40
    lanyusea  
       2016-12-19 18:39:25 +08:00   ❤️ 1
    之前写过一个小程序是处理这个的,跟你 append 里面的想法一样。

    https://github.com/lanyusea/py_imageFileConverter

    inspired by 在 zhihu 上看到的一个回答:
    http://www.zhihu.com/question/23188097/answer/24646217

    `我用 python 将二进制数据转化为图像,每个像素点可以表示 3 个字节,再将图像外围增加宽度为 1 的黑色边框,外面再增加宽度为 1 像素的白色边框,作为图像边界的标识符。`


    在我的尝试中还是挺好用的。可能是我的数据量比较小的原因吧,只传输主要的代码文件。
    基本上一张 500x500 的图片就差不多够用了( 500x500x3 Byte = 250KB ) =。=
    billlee
        41
    billlee  
       2016-12-19 22:08:37 +08:00
    不太清楚 KVM 是什么样的设备,能否把文件数据转换成视频流传输?
    yangqi
        42
    yangqi  
       2016-12-19 22:28:20 +08:00
    KVM 难道用的是 ps/2 接口?键盘鼠标没用 usb?
    caola
        43
    caola  
       2016-12-19 22:53:52 +08:00
    既然弄成了 Base64 ,那直接截屏,之后在本地使用图片文字识别工具,从图片中识别字母数字之类的文字的正确率几乎是接近 100%
    andysheng
        44
    andysheng  
       2016-12-19 23:19:13 +08:00 via iPhone
    在学校的大创展上见过用可见光来传输视频数据的项目,可以应用在楼主这个需求上
    Terry309
        45
    Terry309  
       2016-12-19 23:44:35 +08:00 via iPhone
    参考破解二维码
    Terry309
        46
    Terry309  
       2016-12-19 23:47:36 +08:00 via iPhone
    打错了,参考破解验证码。在屏幕上显示的都是点,显示是 1 ,不显示为 0 。
    iCyMind
        47
    iCyMind  
       2016-12-20 00:04:05 +08:00
    撸主头像很应景
    0915240
        48
    0915240  
       2016-12-20 09:53:51 +08:00
    好牛逼 好折腾
    rocai185
        49
    rocai185  
       2016-12-20 10:15:00 +08:00
    @hebeiround 600K 的文件你要抄下来,容错率太低了,一不小心抄错,在要花的代价恐怕是这个的好多倍了
    hebeiround
        50
    hebeiround  
       2016-12-20 10:15:52 +08:00 via iPhone
    @rocai185 您这个是代码,我那个就是 word 文档。抄错无所谓...
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1001 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 22:17 · PVG 06:17 · LAX 14:17 · JFK 17:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.