9 def create_header(key
, version
, iv
, random
, size
):
10 header
= struct
.pack('32s32s32s32s32s', key
, version
, iv
, random
, size
)
14 def create_output(args
):
15 in_st
= os
.stat(args
.input_file
)
16 in_size
= in_st
.st_size
18 key
= "".encode('ascii')
19 version
= args
.version
.encode('ascii')
20 iv
= "".encode('ascii')
21 random
= "".encode('ascii')
22 size
= str(in_size
).encode('ascii')
23 header
= create_header(key
, version
, iv
, random
, size
)
25 out_f
= open(args
.output_file
, 'w+b')
30 md5
.update(header
[0x60:0x80])
31 md5
.update(header
[0x20:0x40])
35 md5
.update(header
[0x80:0xA0])
36 md5
.update(header
[0x20:0x40])
41 key_f
= open(args
.key_file
, 'w+b')
42 key_f
.write(binascii
.hexlify(bytearray(key
)))
45 print("AES 256 CBC Key:", binascii
.hexlify(bytearray(key
)))
50 parser
= argparse
.ArgumentParser(description
='')
52 parser
.add_argument('--input-file',
58 parser
.add_argument('--key-file',
62 help='AES 256 CBC Key File')
64 parser
.add_argument('--output-file',
70 parser
.add_argument('--version',
76 args
= parser
.parse_args()
78 if ((not args
.input_file
) or
79 (not args
.key_file
) or
80 (not args
.output_file
) or