Echo Writes Code

test_bobadump.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
from argparse import ArgumentParser
from bobadump import BobaDump

def main():
  arguments = parse_arguments()
  dumper = BobaDump(arguments.binary)
  output = dumper.run(arguments.sample)

  block_list = output.split('\n\n')
  assert len(block_list) == 2, f'Expected 2 blocks, but found {len(block_list)}'

  block_indices = [0, 1]
  block_signatures = ['0x434f4445', '0x53544142']
  block_data_sizes = [4, 12]

  for i, block_header in enumerate(block_list):
    assert f'Block {block_indices[i]}' in block_header, f'Block {i} was not marked as "Block {block_indices[i]}"'
    assert f'Signature: {block_signatures[i]}' in block_header, f'Block {i} signature was not "{block_signatures[i]}"'
    assert f'Data size: {block_data_sizes[i]}' in block_header, f'Block {i} data size was not {block_data_sizes[i]}'

def parse_arguments():
  parser = ArgumentParser()
  parser.add_argument('--binary')
  parser.add_argument('--sample')
  return parser.parse_args()

if __name__ == '__main__':
  main()