Esempio n. 1
0
  def test_unprotect(self):
    plaintext = ux('800f1234decafbadcafebabe' + 'ab'*16)
    ciphertext = ux('800f1234decafbadcafebabe' + 'f1d9de17ff251ff1aa007774' +
    'b0b4b40da08d9d9a5b3a55d8873b')

    data = self.ctx.srtp_unprotect(ciphertext)
    self.assertEqual(data, plaintext)
Esempio n. 2
0
  def test_protect(self):
    plaintext = ux('800f1234decafbadcafebabe' + 'ab'*16)
    ciphertext = ux('800f1234decafbadcafebabe4e55dc4ce79978d88ca4d215949d2402b78d6acc99ea179b8dbb')
    assert(len(ciphertext) == len(plaintext) + 10)

    data = self.ctx.srtp_protect(plaintext)
    assert(len(data) == len(plaintext) + 10)
    assert(data == ciphertext)
Esempio n. 3
0
      stack_avp = deepcopy(self)
      stack_avp.length = None
      stack_avp.avps.append(new_avp)
      new_avp = stack_avp

    data = ''
    for a in self.avps:
      data += a.encode()
    data += new_avp.encode()

    return data

if __name__ == '__main__':
  from binascii import unhexlify as ux

  UNPADDED_AVP = ux('0000012b4000000c00000000')
  a = Avp.decode(UNPADDED_AVP)
  assert(a.encode() == UNPADDED_AVP)

  PADDED_AVP = ux('0000010d400000334d75205365727669636520416e616c797a6572204469616d6574657220496d706c656d656e746174696f6e00')
  a = Avp.decode(PADDED_AVP)
  assert(a.encode() == PADDED_AVP)

  CER = ux('010000c88000010100000000000000000000000000000108400000113132372e302e302e3100000000000128400000166473742e646f6d61696e2e636f6d0000000001014000000e00017f00000100000000010a4000000c000000000000010d400000334d75205365727669636520416e616c797a6572204469616d6574657220496d706c656d656e746174696f6e000000012b4000000c000000000000010c4000000c000007d100000104400000200000010a4000000c000028af000001024000000c01000000')
  m = Msg.decode(CER)
  assert(m.encode() == CER)

  m = Msg(avps=[Avp(code=280, data='toto'), Avp(code=280, data='toto'), Avp(code=280, data='tata')])
  p = m.compute_path(Avp(code=280, data='toto'))
  assert(p == '/code=280[0]')
  p = m.compute_path(Avp(code=280, data='tata'))
Esempio n. 4
0
0x1EF,
0x1F0,
0x1F1,
0x1F2,
0x1F3,
0x1F4,
0x1F5,
0x1F6,
0x1F7,
0x1F8,
0x1F9,
0x1FA,
0x1FB,
0x1FC,
0x1FD,
0x1FE,
0x1FF}

from binascii import unhexlify as ux

with open("/home/sga/Documents/programs/go/goboy/tools/ref_tetris.asm", 'rb') as fd:
	for line in fd.readlines():
		opcode = ux(line[2:4])[0]
		if opcode == 0xCB:
			opcode = 0xFF + ux(line[7:9])[0]

		if opcode not in opcodes:
			# if opcode > 0xFF:
			# 	opcode -= 0xFF
			print("0x{:02X}".format(opcode))
Esempio n. 5
0
# derive hash chain from H0
# values will be used to authenticate sent messages
def derive_hashchain(h0):
    h = h0
    chain = [h0]

    for i in range(3):
        h = hashlib.sha256(h).digest()
        chain.append(h)

    return chain


assert (derive_hashchain(
    ux('06fa3b98d71b2d4d2037886f9417377b312dd17ddd769ef7b651dcc3a661d382')
) == [
    ux('06fa3b98d71b2d4d2037886f9417377b312dd17ddd769ef7b651dcc3a661d382'),
    ux('e54ed85bdbd82feeb3cc8e6fab43d9c23c049095a45a534d9788ce83fe92e275'),
    ux('6d6f62d8123e0a175d7d85f811cb2200046961da776c46feae87e2b454c96fc5'),
    ux('5ecde82016ea439b570ef0a854667270b7e2792419b38bbbe07e14ec51ac7e93')
])


# authenticate ZRTP message
def default_authenticate(key, data):
    m = hmac.new(key, digestmod=hashlib.sha256)
    m.update(data)
    return m.digest()[:8]

Esempio n. 6
0
 def setUp(self):
   self.key = ux('f0f04914b513f2763a1b1fa130f10e2998f6f6e43e4309d1e622a0e332b9f1b6')
   self.salt = ux('3b04803de51ee7c96423ab5b78d2')
   self.ssrc = 0xcafebabe
   self.ctx = Context(self.key, self.salt, 10)
Esempio n. 7
0
 def setUp(self):
   self.key = ux('e1f97a0d3e018be0d64fa32c06de4139')
   self.salt = ux('0ec675ad498afeebb6960b3aabe6')
   self.ssrc = 0xcafebabe
   self.ctx = Context(self.key, self.salt, 10)
Esempio n. 8
0
  def _kdf(key, label, context, l):
    assert(l % 8 == 0)
    assert(label is not None and len(label) > 0)

    lbytes = l>>3
    return (hmac.new(key, b'\x00\x00\x00\x01' + label + b'\x00' +
      context + pack('!I', l), alg).digest())[:lbytes]

  return _kdf

if __name__ == '__main__':
  from binascii import unhexlify as ux

  def hash(name, value):
    m = get(name)()
    m.update(value)
    return m.hexdigest()

  assert(hash(b'S256', ux('bb12d0c462f29eaa31570ec83537a763678fe632a4e8758a2131e103af45d3e7')) == 'f026775816c4dc1c7dfe8d42a610a5f92ca733a1dcfe85667bf9e136921718bf')
  assert(hash(b'S256', ux('f026775816c4dc1c7dfe8d42a610a5f92ca733a1dcfe85667bf9e136921718bf')) == '418841a7ab2d8f314418f293ad68c3eb0b66acebdd72e161e2c78e83eb3c4f99')

  assert(hash(b'S384', ux('505a007544485061727432207e42be67b021243cd63c445f84a35ff6aa5d509d167d27c1875f510ca9c73a7084d7c25c6f0052276ffe3f8a641824358041f32546f9a9ddda839effdeea6a4652302bc8a0c8861dd1fc33f57c6c11fbfe213d5b1e094a3ed21b2b33db4df374541be0a60d97d171cac1b76daf894db957a23a2cc723ac3648ecf22692821b31ce4fe6483d77e10b270693214f4fba9a16a775f6640d6596f79075d75546b79afbb6e87cf3d9a91a4ed73e170a6111e02a38b5415dad83ba7a75884cf3807e0fdd76b83f05e7cdfcafdbad232dd2afafac23a4b59b12253a0542fd58fad6c8b34f0383a09257d2b591fd504aaf803755c79f95592bef4d0e4042f8d071da83cae3c887c19aeae4fcb6ffb21d167725ab6caa943480a50602fbafefc5f251248670c70b6338c8b2bf4d88919eaa29747f4d8a92e930950d5c12eb543bf5b3e4f30dac7ddb70eefc0e16b7c4b44e0c426750aa8c2d27d2c1255a430ac81143bf55ef7f614f493bd3351431b63889f0aa22f2a0f79ff34d2047a4fa7c5a433e8348bf2578089ee485770f9b9c03fb059b1496142e51b4c6d5c5318303cb4650c4222404450dd547d9e62a375207be7d76064595d2c3904e51833c0f1fa90994744b2071c6e78d5d13ab505a002148656c6c6f202020312e3130474e55205a52545020342e352e302020779ed532598e36c6667d85a4d8077fdd0d42e6e8bddac08aadd8a78cd0e3d0520500565c47bc8ee532e242660002242153333834534b4e3341455333324653334853333248533830534b3332534b36344448326b4448336b423235369a31be4095bd5a96')) == '32c761db53f3764507f5f2cfc30de73e32cc2ba8b2fb6de1ad455cf59c654f50974212d47c07bd8bf490e6e016a8de6a')

  KDF = get_kdf(hashlib.sha256)
  x = KDF(ux('6eaf9bc8ccd3e43bc53f482fe82010e2a2ad3bbc63d53cdc59a0d538f5610f35'),
    ux('496e69746961746f722053525450206d6173746572206b6579'),
    ux('53f76dadac50d1e71c26ddf1d365f040179f9ef8915c1f61021d0a09a1e22857dcd368880cc96446b67a3a364ea4280d44b793343294f425'),
    256)
  assert(x == ux('6cb43469922a1842d947f29d7b0e769774ec31504f9e9b46618d198859bb6017'))