已知密钥,如何解密萤石CS-BC1C相机的AES加密图片?
萤石CS-BC1C加密图片解密求助
从萤石CS-BC1C相机下载的图片处于加密状态,已知加密密钥为安卓APP中设置的密码(长度8-16位,符合AES-128密钥长度标准),疑似采用AES-128加密,想通过Python或其他工具完成解密,请问是否可行?
已尝试的操作
1. 初步多加密模式测试
编写循环测试不同AES模式的代码,但未成功解密出有效图片:
from Crypto.Cipher import AES from IPython.display import Image key = b'my_key' with open('encrypted_image_path',"rb") as f : data = f.read() for mode in [AES.MODE_CFB,AES.MODE_EAX] : tmp = AES.new(key, mode=mode) clear_data = (tmp.decrypt(data)) display(Image(data=clear_data))
2. 分析加密文件前缀
编写代码对比多张加密图片的共同前缀:
for i in cims : #cims is a list of filenames of encrypted images with open(rootpath+i,"rb") as f : data = f.read() if i == cims[0] : ref = data else : cmp = 0 for d,r in zip(data,ref) : if d!=r : break cmp += 1
结果显示:
- 所有加密图片前704字节完全相同,前缀开头为
b'hikencodepicture',紧随其后的是16字节十六进制串da32f310f87cc50aeebd59bc51bbce39 - 更换APP密码后,仅前16字节
b'hikencodepicture'保持一致,后续内容全部变化
3. 带指定IV的多配置测试
尝试使用上述16字节串作为IV,测试更多AES模式及数据截取方式,仍未成功:
key = getpass("Password:") key = bytes(key,'utf-8') iv = bytes.fromhex('da32f310f87cc50aeebd59bc51bbce39') for d in [data,data[48:]] : for mode in modes_list : for i in [True, False] : try : if i : tmp = AES.new(key, mode=mode, iv=iv) print('iv') else : tmp = AES.new(key, mode=mode) except (TypeError, ValueError) : continue clear_data = (tmp.decrypt(d)) display(Image(data=clear_data))
求助需求
由于对加密技术了解有限,若解密可行,希望明确需要测试哪些解密配置组合(包括密钥处理方式、AES模式、IV/盐的使用、数据截取范围等)。
内容的提问来源于stack exchange,提问作者Songio
相关产品推荐
相关产品推荐

