| 1 | |
|---|
| 2 | |
|---|
| 3 | import unittest |
|---|
| 4 | |
|---|
| 5 | import umit.bluetooth.sniff as sniff |
|---|
| 6 | import umit.bluetooth.crack as crack |
|---|
| 7 | import umit.bluetooth.sniffcommon as sniffcommon |
|---|
| 8 | |
|---|
| 9 | class CrackTest(unittest.TestCase): |
|---|
| 10 | '''Test internal functions of crack''' |
|---|
| 11 | |
|---|
| 12 | MASTER_ADD = [0x00, 0x1b, 0xaf, 0xaf, 0x84, 0x9e] |
|---|
| 13 | SLAVE_ADD = [0x00, 0x1b, 0xaf, 0xaf, 0x96, 0xa4] |
|---|
| 14 | IN_RAND = [0xb4, 0xf6, 0x89, 0xce, 0x76, 0x91, 0x15, 0x96, 0x49, 0x7f, 0x99, |
|---|
| 15 | 0xdf, 0x93, 0xc4, 0x79, 0x32] |
|---|
| 16 | M_COMB_KEY = [0x00, 0xa7, 0x61, 0x01, 0x10, 0x52, 0x0b, 0x21, 0x2f, 0x20, 0x50, |
|---|
| 17 | 0x04, 0xac, 0x04, 0xce, 0x5a] |
|---|
| 18 | S_COMB_KEY = [0x44, 0x9c, 0xe7, 0x36, 0x26, 0xe8, 0xdc, 0x1a, 0xb1, 0x00, 0x2b, |
|---|
| 19 | 0x70, 0xa9, 0x88, 0x69, 0x53] |
|---|
| 20 | M_AU_RAND = [0x13, 0x8d, 0xfb, 0xb7, 0x68, 0x8a, 0x49, 0xd1, 0xac, 0xa3, 0xc6, 0x74, |
|---|
| 21 | 0xe1, 0xe1, 0x9b, 0xd5] |
|---|
| 22 | S_AU_RAND = [0x0e, 0xfa, 0xd5, 0x21, 0x1a, 0x35, 0x03, 0x20, 0xd9, 0xfc, 0x14, |
|---|
| 23 | 0xfe, 0x41, 0xe9, 0xab, 0x23] |
|---|
| 24 | M_SRES = [0x89, 0xef, 0x46, 0x6e] |
|---|
| 25 | S_SRES = [0xa6, 0x78, 0xdf, 0x62] |
|---|
| 26 | |
|---|
| 27 | def setUp(self): |
|---|
| 28 | self.session = sniffcommon.SniffSession(sniff.State(), |
|---|
| 29 | self.MASTER_ADD, |
|---|
| 30 | self.SLAVE_ADD, |
|---|
| 31 | 'hci0', None) |
|---|
| 32 | self.pincrackdata = sniffcommon.PinCrackData() |
|---|
| 33 | self.pincrackdata.in_rand = self.IN_RAND |
|---|
| 34 | self.pincrackdata.m_comb_key = self.M_COMB_KEY |
|---|
| 35 | self.pincrackdata.s_comb_key = self.S_COMB_KEY |
|---|
| 36 | self.pincrackdata.m_au_rand = self.M_AU_RAND |
|---|
| 37 | self.pincrackdata.s_au_rand = self.S_AU_RAND |
|---|
| 38 | self.pincrackdata.m_sres = self.M_SRES |
|---|
| 39 | self.pincrackdata.s_sres = self.S_SRES |
|---|
| 40 | |
|---|
| 41 | def tearDown(self): |
|---|
| 42 | del self.session |
|---|
| 43 | |
|---|
| 44 | class PinCrackRunnerTest(CrackTest): |
|---|
| 45 | |
|---|
| 46 | pcr = crack.PinCrackRunner() |
|---|
| 47 | |
|---|
| 48 | def testRuncrack(self): |
|---|
| 49 | import tempfile |
|---|
| 50 | tmpfile = tempfile.TemporaryFile() |
|---|
| 51 | self.pcr.runcrack(self.pincrackdata, self.session.master, self.session.slave, |
|---|
| 52 | tmpfile).wait() |
|---|
| 53 | self.assertEqual(self.pcr.getpin(), '1234') |
|---|
| 54 | |
|---|
| 55 | |
|---|
| 56 | |
|---|
| 57 | if __name__ == "__main__": |
|---|
| 58 | unittest.main() |
|---|