从打印机扫描解码二进制文件

问题描述

我最近开发了一种专有的数据存储类型-在打印纸上可以用扫描仪进行扫描的一堆黑/白方块。对我来说,这有两个主要好处:

  • 如果我的硬盘上有重要的照片而它们丢失了,我将无法(最有可能)将其检索到。但是,按照我的专有格式,所有数据都是物理数据,因此不会丢失(除非您像我一样,并且往往将很多东西放错地方。)
  • 黑客无法“窃取”存储在纸上的数据。

因此,我编写了一个简单的算法,该算法采用一个~2.5KiB文件并将其转换为这种格式(信息的“位”是一个4x4像素块):

from PIL import Image,ImageDraw

im = Image.new("RGB",((160*4)+2,(128*4)+2),"white")
pix = im.load()
dw = ImageDraw.Draw(im)

dw.rectangle([0,160*4+1,128*4+1],outline=(0,255))

with open("program.exe",mode="rb") as f:
    l = list(f.read())
    # we now have the numerical binary!
    # time to convert each number into a bit!
    binary = ""
    temp = ""
    for a in l:
        temp = format(a,"#010b")[2:]
        binary += temp
    idx = 0
    print(len(binary))

    for y in range(1,im.size[1]-1,4):
        for x in range(1,im.size[0]-1,4):
            ax = binary[idx]
            if ax == "1":
                for i in range(0,4):
                    for j in range(0,4):
                        pix[x+j,y+i] = (0,0)

            idx += 1

im.show()
im.save("code.png")

如果您想知道,program.exe是用x86汇编语言编写的二进制可执行文件,它仅将hello,world!打印到终端。

但是,我不太清楚如何(在扫描后)将扫描的图像转换回机器代码,并将其写入可执行文件。似乎每次图像的背景中都有一些模糊的噪点,我似乎无法消除,并且还存在图像有些偏斜的事实。我尝试了一个名为pyzbar的python库(是的,我的确知道它适用于条形码和QR码,但是我希望它至少能够识别某些东西,但是我抓着稻草,什么也没发现在输出上。

有人会知道如何做(例如图像识别或读取数据的东西)吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...