# coder-transfer **Repository Path**: binaryFox/coder-transfer ## Basic Information - **Project Name**: coder-transfer - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2021-01-06 - **Last Updated**: 2022-07-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 沙盒环境并不安全,不联网的机器并非Copy不出东西。 曾经看到过一篇文章写的是用摄像头来读取信息,一台不联网的机器以风扇带动桌子振动来模拟01高低电平,将信息以每秒1bit的速度泄露出来!感觉惊为天人。 为了证明这一点,写了这个项目。项目全程以Java环境开发 先放效果图: ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210106205239456.gif#pic_center) 看图片其实已经能猜到怎么做了,二维码!!理论上手机可以拍摄二维码变化,这样拿着视频就相当于我们能从不联网的环境里Copy出东西。 只要把文件的内容分片编码成二维码,然后外面解析二维码在文件对应的位置写入数据就OK了。 理论上所有物理隔离的只要有显示屏幕,有摄像头就都能传输数据。 代码地址[coder-transfer](https://gitee.com/binaryFox/coder-transfer) 使用方法:将代码打成jar包 > 接收文件: eg: java -jar code-transfer-0.0.1-SNAPSHOT.jar R 10 30 550 > 550 512 100 1.zip R表示接收 10 30 是截取屏幕的左上角 550 550 是截取屏幕的大小 > 512表示一张二维码的比特数量 100是每100ms抓取一次 1.zip是文件的名称 > 传输文件 eg: java -jar code-transfer-0.0.1-SNAPSHOT.jar S 0 0 600 600 > 512 200 d:\1.zip S表示发送 0 0 600 600 表示二维码展示的左上角和大小 512是携带的信息 > 200是每200ms刷新一个二维码 d:\1.zip 是要读取的文件 > 1. 推荐其中展示文件的间隔要比接收文件要大 传输比特的大小在500左右超过可能会编码错误(信息过长二维码不支持) > 2. 如果解析报错请查看是不是挡住了二维码,或者接收文件jar包地址下的同一文件目录1.jpg文件截取的二维码不够好,要重新调整截取屏幕的参数 好的示例二维码: ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210106204305120.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIxMDc4MTU5,size_16,color_FFFFFF,t_70#pic_center) 具体实现思路如下: 发送器 [Sender](https://gitee.com/binaryFox/coder-transfer/blob/master/src/main/java/wang/hex/codetransfer/code/Sender.java) 在轮播发送文件流: 将文件编码成 页码(8位long)数据长度(4位int)数据(传输比特长度-12) 当到文件末尾的时候,发送页码和长度为-1的数据。 接收器 [FileReciver](https://gitee.com/binaryFox/coder-transfer/blob/master/src/main/java/wang/hex/codetransfer/code/FileReceiver.java): 读取数据并且解码,读取-1长度的为最后页码。 每读取页码都记录并且写入文件相应的位置,当所有页码都读取完就输出Stop并且退出。 后期会完善下从窗口后台取图,还有重构代码,这个是可行性验证版本.