标签:span str window ges 文件拷贝 height src 利用 save
在一种受限的环境中,要把文件拷贝出去显然是不可能的。因为既不能进行直接的文本拷贝(Ctrl+C, Ctrl+V),又不能使用scp(因为网络隔离)。那么,真的一点办法都木有了吗?答案是否定的,因为毛主席说过,“卑贱者最聪明,高贵者最愚蠢”。作为一个好琢磨的程序员,因为好奇(“与天斗,其乐无穷;与地斗,其乐无穷;与人斗,其乐无穷。”),所以很快想出了一个解决的办法,那就是利用非常盛行的二维码技术。虽然全自动拷贝不好实现,但半自动拷贝还是非常容易做到的。于是,本文尝试利用base64编码/解码和二维码生成/识别实现一种半自动的文件拷贝方法并给出一个实例。
设受限的环境为jail,运行的OS为CentOS 7; 开放的环境为dora, 运行的OS为Ubuntu14.04LTS。既能访问受限环境jail和又能访问开放环境dora的平台为oba, 运行的OS为Windows 10。 于是,将jail:/tmp/foo拷贝到dora:/tmp/bar的实现步骤描述如下:
1. 生成二维码 (encode.py)
1 #!/usr/bin/python 2 3 import sys 4 import qrcode 5 6 def encode_image(s, img_file): 7 img = qrcode.make(s) 8 img.save(img_file) 9 10 def main(argc, argv): 11 if argc != 3: 12 sys.stderr.write("Usage: %s <string> <image>\n" % argv[0]) 13 return 1 14 15 s = argv[1] 16 img_file = argv[2] 17 encode_image(s, img_file) 18 return 0 19 20 if __name__ == ‘__main__‘: 21 argc, argv = len(sys.argv), sys.argv 22 sys.exit(main(argc, argv))
2. 识别二维码 (decode.py)
1 #!/usr/bin/python 2 3 import sys 4 import zbar 5 import Image 6 7 def decode_image(img_file): 8 scanner = zbar.ImageScanner() 9 scanner.parse_config(‘enable‘) 10 pil = Image.open(img_file).convert(‘L‘) 11 width, height = pil.size 12 raw = pil.tostring() 13 image = zbar.Image(width, height, ‘Y800‘, raw) 14 scanner.scan(image) 15 data = "" 16 for symbol in image: 17 data += symbol.data 18 return data 19 20 def main(argc, argv): 21 if argc != 2: 22 sys.stderr.write("Usage: %s <image>\n" % argv[0]) 23 return 1 24 25 img_file = argv[1] 26 s = decode_image(img_file) 27 print s 28 return 0 29 30 if __name__ == ‘__main__‘: 31 argc, argv = len(sys.argv), sys.argv 32 sys.exit(main(argc, argv))
3. 实例
3.1 jail中的文件/tmp/foo
3.2 对jail:/tmp/foo进行base64编码
标签:span str window ges 文件拷贝 height src 利用 save
原文地址:http://www.cnblogs.com/idorax/p/7040204.html