问题描述
我最近开发了一种专有的数据存储类型-在打印纸上可以用扫描仪进行扫描的一堆黑/白方块。对我来说,这有两个主要好处:
- 如果我的硬盘上有重要的照片而它们丢失了,我将无法(最有可能)将其检索到。但是,按照我的专有格式,所有数据都是物理数据,因此不会丢失(除非您像我一样,并且往往将很多东西放错地方。)
- 黑客无法“窃取”存储在纸上的数据。
因此,我编写了一个简单的算法,该算法采用一个~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 (将#修改为@)