Skip to content

Commit 596061f

Browse files
author
lolololol
committed
RSA Loader
1 parent 7fb6434 commit 596061f

File tree

2 files changed

+51
-0
lines changed

2 files changed

+51
-0
lines changed

experiments/teacup/rsa_loader.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
#!/usr/bin/env python3
2+
3+
import sparkgap
4+
import sparkgap.filemanager
5+
import sys
6+
import rainbow
7+
from rainbow import HammingWeight,TraceConfig
8+
from rainbow.generics import rainbow_arm
9+
import numpy as np
10+
import gc
11+
import random
12+
import binascii
13+
14+
if len(sys.argv) != 2:
15+
print("./rsa_loader.py [elffile]")
16+
sys.exit(0)
17+
18+
cs = None
19+
20+
KEY_ADDR = 0x92dc
21+
DATA_ADDR = 0x92d4
22+
23+
print("Generating keys...")
24+
emu = rainbow_arm()
25+
emu.load(sys.argv[1])
26+
emu.setup()
27+
emu.start(emu.functions["doGenKeys"] , 0x8050)
28+
print("Real pubkey collected...")
29+
real_pubkey = emu[0x18f50:0x18f50+16]
30+
del(emu)
31+
gc.collect()
32+
33+
for i in range(0,1):
34+
emu = rainbow_arm(trace_config=TraceConfig(register=HammingWeight()))
35+
emu.load(sys.argv[1])
36+
emu.setup()
37+
emu[0x18f50:0x18f50+16] = real_pubkey
38+
emu.start(emu.functions["doEncrypt"] , 0x8024)
39+
new_trace = np.fromiter(map(lambda event: event["register"], emu.trace),dtype=np.float32)
40+
del(emu)
41+
gc.collect()
42+
if cs is None:
43+
cs = sparkgap.filemanager.CaptureSet(tracecount=50,samplecount=len(new_trace),in_len=8,out_len=8)
44+
cs.addTrace(new_trace,rand_input,rand_output)
45+
else:
46+
cs.addTrace(new_trace,rand_input,rand_output)
47+
print("Run %d, %s -> %s" % (i,binascii.hexlify(rand_input),binascii.hexlify(rand_output)))
48+
del(emu)
49+
gc.collect()
50+
51+
cs.save("out.hdf")

experiments/teacup/rsa_test.elf

42.4 KB
Binary file not shown.

0 commit comments

Comments
 (0)