Skip to content

Commit a56d389

Browse files
author
lolololol
committed
variable size traces
1 parent 7160180 commit a56d389

File tree

9 files changed

+599
-57
lines changed

9 files changed

+599
-57
lines changed
42.4 KB
Binary file not shown.

experiments/teacup/des_loader.py

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
#!/usr/bin/env python3
2+
3+
import getopt
4+
import sparkgap
5+
import sparkgap.filemanager
6+
import sys
7+
import rainbow
8+
from rainbow import HammingWeight,TraceConfig
9+
from rainbow.generics import rainbow_arm
10+
import numpy as np
11+
import gc
12+
import random
13+
import binascii
14+
15+
CONFIG_INFILE = None
16+
CONFIG_OUTFILE = None
17+
18+
opts, rems = getopt.getopt(sys.argv[1:],"f:w:",["--file=","--writefile="])
19+
for arg,val in opts:
20+
if arg in ("-w","--writefile"):
21+
CONFIG_OUTFILE = val
22+
elif arg in ("-f","--file"):
23+
CONFIG_INFILE = val
24+
25+
if CONFIG_INFILE is None or CONFIG_OUTFILE is None:
26+
print("You must populate both -f and -w")
27+
sys.exit(0)
28+
29+
cs = None
30+
31+
KEY_ADDR = 0x18cb8
32+
DATA_ADDR = 0x18cc0
33+
OUT_ADDR = 0x18cb0
34+
35+
DODES_END = 0x8974
36+
37+
for i in range(0,50):
38+
print("Beginning attempt")
39+
emu = rainbow_arm(trace_config=TraceConfig(register=HammingWeight()))
40+
emu.load(CONFIG_INFILE)
41+
emu.setup()
42+
rand_input = np.array([random.randint(0,0xFF) for i in range(0,8)],dtype=np.uint8)
43+
emu[DATA_ADDR] = bytes(rand_input[0:4])
44+
emu[DATA_ADDR + 4] = bytes(rand_input[4:8])
45+
emu.start(emu.functions["doDESEncrypt"] , DODES_END)
46+
new_trace = np.fromiter(map(lambda event: event["register"], emu.trace),dtype=np.float32)
47+
rand_output = emu[OUT_ADDR:OUT_ADDR+8]
48+
if cs is None:
49+
cs = sparkgap.filemanager.CaptureSet(tracecount=50,samplecount=len(new_trace),in_len=8,out_len=8)
50+
cs.addTrace(new_trace,rand_input,rand_output)
51+
else:
52+
cs.addTrace(new_trace,rand_input,rand_output)
53+
print("Run %d, %s -> %s" % (i,binascii.hexlify(rand_input),binascii.hexlify(rand_output)))
54+
del(emu)
55+
gc.collect()
56+
57+
cs.save(CONFIG_OUTFILE)

experiments/teacup/emu_loader.py

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#!/usr/bin/env python3
22

3+
import getopt
34
import sparkgap
45
import sparkgap.filemanager
56
import sys
@@ -11,21 +12,31 @@
1112
import random
1213
import binascii
1314

14-
if len(sys.argv) != 2:
15-
print("./emu_loader.py [elffile]")
15+
CONFIG_INFILE = None
16+
CONFIG_OUTFILE = None
17+
18+
opts, rems = getopt.getopt(sys.argv[1:],"f:w:",["--file=","--writefile="])
19+
for arg,val in opts:
20+
if arg in ("-w","--writefile"):
21+
CONFIG_OUTFILE = val
22+
elif arg in ("-f","--file"):
23+
CONFIG_INFILE = val
24+
25+
if CONFIG_INFILE is None or CONFIG_OUTFILE is None:
26+
print("You must populate both -f and -w")
1627
sys.exit(0)
1728

1829
cs = None
1930

2031
KEY_ADDR = 0x18904
2132
DATA_ADDR = 0x188fc
22-
OUT_ADDR = 0x18d60
33+
OUT_ADDR = 0x18d64
2334

2435
DOXTEA_END = 0x84c4
2536

2637
for i in range(0,50):
2738
emu = rainbow_arm(trace_config=TraceConfig(register=HammingWeight()))
28-
emu.load(sys.argv[1])
39+
emu.load(CONFIG_INFILE)
2940
emu.setup()
3041
rand_input = np.array([random.randint(0,0xFF) for i in range(0,8)],dtype=np.uint8)
3142
emu[DATA_ADDR] = bytes(rand_input[0:4])
@@ -42,4 +53,4 @@
4253
del(emu)
4354
gc.collect()
4455

45-
cs.save("out.hdf")
56+
cs.save(CONFIG_OUTFILE)

experiments/teacup/rsa_loader.py

Lines changed: 0 additions & 51 deletions
This file was deleted.

0 commit comments

Comments
 (0)