CW521弹道凝胶通信库
ballisticgel的Python项目详细描述
ChipSHOUTER®CW521防弹凝胶
CW521是电磁故障注入(EMFI)目标。它是专门为帮助您理解给定提示的故障注入模式而设计的。在
它使用一个大的SRAM芯片作为目标,布局相对简单。这可以让你知道你在腐蚀多少芯片。在
GIT布局
GIT存储库包含以下内容:
- PCB gerber文件(TODO)
- 微控制器固件。在
- Python库/PC应用程序。在
PC应用程序
PC应用程序是使用Python库的一个简单示例。此应用程序执行以下操作(通过库)
- 将模式下载到SRAM芯片。在
- 等待故障注入。在
- 上载SRAM芯片内容并确定损坏位置。在
- 物理SRAM位置图(注:尚未完全工作)。在
SRAM模式可以是随机模式之外的一些东西,但是随机模式确保了“奇怪”的损坏(例如缩短地址线等)很容易被发现。在
最后给出了一个使用该文件的示例弹道凝胶.py,请参见以下内容:
cw521 = CW521()
cw521.con()
doplot = False
savefile = None
#savefile = 'error_locations.bin'
#Raw method is slower but more flexible
use_raw_method = True
while True:
try:
if use_raw_method:
print "Writing data..."
cw521.raw_test_setup()
raw_input("Hit enter when glitch inserted")
results = cw521.raw_test_compare()
else:
print "Writing data..."
cw521.seed_test_setup()
raw_input("Hit enter when glitch inserted")
results = cw521.seed_test_compare()
errdatay = results['errdatay']
errdatax = results['errdatax']
errorlist = results['errorlist']
if doplot:
plt.plot(errdatax, errdatay, '.r')
plt.axis([0, 8192, 0, 4096])
plt.show()
if savefile:
with open(savefile, "wb") as errfile:
errfile.write(bytearray(errorlist))
except:
cw521.close()
随后弹出的“图形”有点虚假——SRAM的物理图还不准确。但最有趣的是,您可以看到位翻转的数量(正/负),以及损坏的总字节数。在
也可以切换到不提供位损坏信息的更快的方法。但它提供了总的腐败规模,这往往是非常有趣的。在
弹道凝胶依赖于安装ChipWhisper,因为USB程序是从ChipWhisper导入的。你可以用
^{pr2}$如果你没有的话。在
结果格式
结果信息在字典中提供。根据您使用的是快速(但不太详细)方法还是慢速(但更详细)方法,您可能没有所有这些字段。它目前为您提供:
- “errorlist”:每个字节错误的地址列表。这个长度是字节错误的数量。在
- “errdatax”,“errdatay”:errdatax&errdatay试图提供SRAM芯片上发生错误的位置的映射。在映射完成之前,这是不完全准确的。在
- “set_errors”:发生的位集错误数。注意位错误数与字节错误数不同。在
- “重置错误”:发生的位重置错误数。注意位错误数与字节错误数不同。在
正在生成固件
固件是使用Atmel Studio 7构建的,但也可以使用ARM工具链在Linux上构建。在
合法的
弹道凝胶是ChipSHOUTER项目的一部分(该项目本身与ChipWhisper项目有关)。它也被称为CW521目标板。在
弹道凝胶是一个开源项目,发布时有GPL许可证。组装板可从NewAE Technology Inc.购买,网址为https://store.newae.com。在
ChipSHOUTER是NewAE Technoloy Inc.的注册商标。请注意,未经许可,您不能销售使用ChipSHOUTER名称的电路板,并且您不能在您自己的产品上使用NewAE Technology Inc.的USB视频,因为USB-IF许可证不允许以这种方式再授权。如果您更改了VID/PID,只需根据需要更改.inf(驱动程序)文件中关联的VID/PID。在
- 项目
标签: