예제 #1
0
    def setUp(self):
        self.key_iteration_count = 5000
        self.blob = Blob(TEST_BLOB, self.key_iteration_count)
        self.padding = 'BEEFFACE'
        self.encryption_key = 'OfOUvVnQzB4v49sNh4+PdwIFb9Fr5+jVfWRTf+E2Ghg='.decode('base64')

        self.chunks = Parser.extract_chunks(self.blob)
        self.accounts = [Parser.parse_account(i, self.encryption_key) for i in self.chunks['ACCT']]
예제 #2
0
 def test_decode_aes256_ecb_plain_decodes_a_short_string(self):
     self.assertEqual(Parser.decode_aes256_ecb_plain(
         b64decode('8mHxIA8rul6eq72a/Gq2iw=='), self.encryption_key),
         b'0123456789')
예제 #3
0
 def setUp(self):
     self.parser = Parser.parse(self.blob, self.key)
예제 #4
0
 def test_decode_base64_decodes_base64(self):
     self.assertEqual(Parser.decode_base64(''), '')
     self.assertEqual(Parser.decode_base64('YQ=='), 'a')
     self.assertEqual(Parser.decode_base64('YWI='), 'ab')
     self.assertEqual(Parser.decode_base64('YWJj'), 'abc')
     self.assertEqual(Parser.decode_base64('YWJjZA=='), 'abcd')
예제 #5
0
 def test_read_uint32_returns_a_number(self):
     io = StringIO(('DEADBEEF' + self.padding).decode('hex'))
     self.assertEqual(Parser.read_size(io), 0xDEADBEEF)
     self.assertEqual(io.pos, 4)
예제 #6
0
 def test_read_id_returns_an_id(self):
     io = StringIO('ABCD' + self.padding)
     self.assertEqual(Parser.read_id(io), 'ABCD')
     self.assertEqual(io.pos, 4)
예제 #7
0
 def test_read_item_returns_an_item(self):
     io = StringIO(('00000004DEADBEEF' + self.padding).decode('hex'))
     self.assertEqual(Parser.read_item(io), 'DEADBEEF'.decode('hex'))
     self.assertEqual(io.pos, 8)
예제 #8
0
 def test_decode_aes256_cbc_base64_decodes_a_long_string(self):
     self.assertEqual(Parser.decode_aes256_cbc_base64(
         '!YFuiAVZgOD2K+s6y8yaMOw==|TZ1+if9ofqRKTatyUaOnfudletslMJ/RZyUwJuR/+aI=', self.encryption_key),
         'All your base are belong to us')
예제 #9
0
 def test_read_payload_returns_a_payload(self):
     io = BytesIO(codecs.decode('FEEDDEADBEEF' + self.padding, 'hex_codec'))
     self.assertEqual(Parser.read_payload(io, 6), codecs.decode('FEEDDEADBEEF', 'hex_codec'))
     self.assertEqual(io.tell(), 6)
예제 #10
0
 def test_read_id_returns_an_id(self):
     io = BytesIO(('ABCD' + self.padding).encode())
     self.assertEqual(Parser.read_id(io), b'ABCD')
     self.assertEqual(io.tell(), 4)
예제 #11
0
 def test_skip_item_skips_a_non_empty_item(self):
     io = BytesIO(codecs.decode('00000004DEADBEEF' + self.padding, 'hex_codec'))
     Parser.skip_item(io)
     self.assertEqual(io.tell(), 8)
예제 #12
0
 def test_read_item_returns_an_item(self):
     io = BytesIO(codecs.decode('00000004DEADBEEF' + self.padding, 'hex_codec'))
     self.assertEqual(Parser.read_item(io), codecs.decode('DEADBEEF', 'hex_codec'))
     self.assertEqual(io.tell(), 8)
예제 #13
0
 def test_read_chunk_returns_a_chunk(self):
     io = BytesIO(codecs.decode('4142434400000004DEADBEEF' + self.padding, 'hex_codec'))
     self.assertEqual(Parser.read_chunk(io), Chunk(b'ABCD', codecs.decode('DEADBEEF', 'hex_codec')))
     self.assertEqual(io.tell(), 12)
예제 #14
0
 def test_decode_aes256_cbc_base64_decodes_a_blank_string(self):
     self.assertEqual(Parser.decode_aes256_cbc_base64(
         '', self.encryption_key),
         b'')
예제 #15
0
 def test_decode_aes256_cbc_plain_decodes_a_long_string(self):
     self.assertEqual(Parser.decode_aes256_cbc_plain(
         'IcokDWmjOkKtLpZehWKL6666Uj6fNXPpX6lLWlou+1Lrwb+D3ymP6BAwd6C0TB3hSA=='.decode('base64'), self.encryption_key),
         'All your base are belong to us')
예제 #16
0
 def test_decode_aes256_cbc_base64_decodes_a_short_string(self):
     self.assertEqual(Parser.decode_aes256_cbc_base64(
         '!6TZb9bbrqpocMaNgFjrhjw==|f7RcJ7UowesqGk+um+P5ug==', self.encryption_key),
         '0123456789')
예제 #17
0
 def test_read_uint32_returns_a_number(self):
     io = BytesIO(codecs.decode('DEADBEEF' + self.padding, 'hex_codec'))
     self.assertEqual(Parser.read_size(io), 0xDEADBEEF)
     self.assertEqual(io.tell(), 4)
예제 #18
0
 def test_read_chunk_returns_a_chunk(self):
     io = StringIO(('4142434400000004DEADBEEF' + self.padding).decode('hex'))
     self.assertEqual(Parser.read_chunk(io), Chunk('ABCD', 'DEADBEEF'.decode('hex')))
     self.assertEqual(io.pos, 12)
예제 #19
0
 def test_decode_aes256_auto_decodes_ecb_plain_string(self):
     self.assertEqual(Parser.decode_aes256_auto(
         'BNhd3Q3ZVODxk9c0C788NUPTIfYnZuxXfkghtMJ8jVM='.decode('base64'), self.encryption_key),
         'All your base are belong to us')
예제 #20
0
 def test_skip_item_skips_a_non_empty_item(self):
     io = StringIO(('00000004DEADBEEF' + self.padding).decode('hex'))
     Parser.skip_item(io)
     self.assertEqual(io.pos, 8)
예제 #21
0
 def test_decode_aes256_ecb_base64_decodes_a_short_string(self):
     self.assertEqual(Parser.decode_aes256_ecb_base64(
         '8mHxIA8rul6eq72a/Gq2iw==', self.encryption_key),
         '0123456789')
예제 #22
0
 def test_read_payload_returns_a_payload(self):
     io = StringIO(('FEEDDEADBEEF' + self.padding).decode('hex'))
     self.assertEqual(Parser.read_payload(io, 6), 'FEEDDEADBEEF'.decode('hex'))
     self.assertEqual(io.pos, 6)
예제 #23
0
 def test_decode_aes256_ecb_base64_decodes_a_long_string(self):
     self.assertEqual(Parser.decode_aes256_ecb_base64(
         'BNhd3Q3ZVODxk9c0C788NUPTIfYnZuxXfkghtMJ8jVM=', self.encryption_key),
         'All your base are belong to us')
예제 #24
0
 def test_decode_hex_decodes_hex(self):
     self.assertEqual(Parser.decode_hex(''), '')
     self.assertEqual(Parser.decode_hex('00ff'), '\x00\xFF')
     self.assertEqual(Parser.decode_hex('00010203040506070809'), '\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09')
     self.assertEqual(Parser.decode_hex('000102030405060708090a0b0c0d0e0f'), '\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F')
     self.assertEqual(Parser.decode_hex('8af633933e96a3c3550c2734bd814195'), '\x8A\xF6\x33\x93\x3E\x96\xA3\xC3\x55\x0C\x27\x34\xBD\x81\x41\x95')
예제 #25
0
 def test_decode_aes256_cbc_plain_decodes_a_blank_string(self):
     self.assertEqual(Parser.decode_aes256_cbc_plain(
         ''.decode('base64'), self.encryption_key),
         '')
예제 #26
0
 def test_decode_aes256_auto_decodes_a_blank_string(self):
     self.assertEqual(Parser.decode_aes256_auto('', self.encryption_key), '')
예제 #27
0
 def test_decode_aes256_cbc_plain_decodes_a_short_string(self):
     self.assertEqual(Parser.decode_aes256_cbc_plain(
         'IQ+hiIy0vGG4srsHmXChe3ehWc/rYPnfiyqOG8h78DdX'.decode('base64'), self.encryption_key),
         '0123456789')
예제 #28
0
 def setUp(self):
     self.parser = Parser.parse(self.blob, self.key)
예제 #29
0
 def test_decode_aes256_ecb_plain_decodes_a_blank_string(self):
     self.assertEqual(Parser.decode_aes256_ecb_plain(
         b64decode(''), self.encryption_key),
         b'')