Exemplo n.º 1
0
    def test_xor_crcmod16_random(self):
        dataSize = 24
        data1 = random.randint(1, 0xFFFFFF)
        data2 = random.randint(1, 0xFFFFFF)
        inputPoly = 0x10000 | random.randint(1, 0xFFFF)
        regInit = random.randint(1, 0xFFFF)
        xorOut = random.randint(1, 0xFFFF)

        crcFun = crcmod.mkCrcFun(inputPoly,
                                 rev=False,
                                 initCrc=regInit,
                                 xorOut=xorOut)
        crc1 = crcFun(intToASCII(data1, dataSize))
        crc2 = crcFun(intToASCII(data2, dataSize))

        xdata = data1 ^ data2
        crcFunXor = crcmod.mkCrcFun(inputPoly,
                                    rev=False,
                                    initCrc=0x0,
                                    xorOut=0x0)
        xcrc = crcFunXor(intToASCII(xdata, dataSize))

        xorcrc = crc1 ^ crc2

        message = "poly:{:X} d1:{:X} c1:{:X} d2:{:X} c2:{:X} ri:{:X} xo:{:X} xor:{:X} {:X} != {:X}".format(
            inputPoly, data1, crc1, data2, crc2, regInit, xorOut, xdata, xcrc,
            xorcrc)
        self.assertEquals(xcrc, xorcrc, message)
Exemplo n.º 2
0
    def test_crcmod_32(self):
        data = 0x414243
        dataSize = 24
        inputPoly = 0x104c11db7
        regInit = 0x0
        xorOut = 0x00
        crcSize = 32

        #         print "XXX {:X} {:X}".format( data, data2)

        #         barray1 = bytearray.fromhex('{:x}'.format(data))
        #         barray2 = bytearray.fromhex('{:x}'.format(data2))

        #         crc32_func = crcmod.mkCrcFun(0x104c11db7, initCrc=regInit, xorOut=xorOut)
        crc32_func = crcmod.mkCrcFun(0x104c11db7,
                                     rev=False,
                                     initCrc=regInit,
                                     xorOut=xorOut)
        crcLib = crc32_func(intToASCII(data))

        crcProc = ModCRC()
        crcProc.setRegisterInitValue(regInit)
        crcProc.setXorOutValue(xorOut)
        crc = crcProc.calculate2(data, dataSize, inputPoly, crcSize)

        #         print "crc: {:X} {:X}".format( crcLib, crc )
        self.assertEqual(crc, crcLib)
Exemplo n.º 3
0
    def test_findCommon_crc8c(self):
        dataList = []

        crcFun = crcmod.predefined.mkCrcFun(
            "crc-8")  ## init: 0x0, xor: 0x0, poly: 0x107

        data = 0xABCD
        crc = crcFun(intToASCII(data))
        dataList.append((data, crc))

        data = data ^ 0x0040
        crc = crcFun(intToASCII(data))
        dataList.append((data, crc))

        foundCRC = self.crcFinder.findCommon(dataList, 16, 8, 0)

        self.assertIn(CRCKey(0x107, 0x0, 0x0, 0, 16, rev=False), foundCRC)
Exemplo n.º 4
0
    def test_xor_8(self):
        crcFun = crcmod.predefined.mkCrcFun(
            "crc-8")  ## poly=0x107 rev=False init:0x0 xor:0x0

        data1 = 0x4B4D
        crc1 = crcFun(intToASCII(data1))

        data2 = data1 ^ 0x0010
        crc2 = crcFun(intToASCII(data2))

        xdata = data1 ^ data2
        xcrc = crcFun(intToASCII(xdata))

        xorcrc = crc1 ^ crc2

        #         print "xor: d1:{:X} {:X} d2:{:X} {:X} xor:{:X} {:X} {:X}".format( data1, crc1, data2, crc2, xdata, xcrc, xorcrc )
        self.assertEquals(xcrc, xorcrc)
Exemplo n.º 5
0
    def test_findPolysXOR_crcmod_8A(self):
        data  = 0xF90AD50F
        data2 = 0xF90AD50D
        inputPoly = 0x10A
        regInit = 0x00
        xorOut = 0x00
        crcSize = 8

        crc_func = crcmod.mkCrcFun(inputPoly, rev=False, initCrc=regInit, xorOut=xorOut)
        crc  = crc_func( intToASCII(data) )
        crc2 = crc_func( intToASCII(data2) )
#         print "crc: {:X} {:X}".format( crc, crc2 )

        polyList = self.crcFinder.findPolysXOR(data, crc, data2, crc2, 32, crcSize)

#         print "polys:", "[{}]".format( ", ".join("0x{:X}".format(x) for x in polyList) )
        self.assertTrue( PolyKey(inputPoly, 0, 32, rev=False) in polyList )
Exemplo n.º 6
0
    def test_findPolysXOR_crcmod_8_random2(self):
        data  = 0xF90AD50D769553D31102453553F
        data2 = 0xF90AD50D769553D313624535537
#         inputPoly = 0x1B7
        inputPoly = 0x100 | int(random.random() * 0xFF + 1)
        regInit = int(random.random() * 0xFF + 1)
        xorOut  = int(random.random() * 0xFF + 1)
        crcSize = 8

        crc_func = crcmod.mkCrcFun(inputPoly, rev=False, initCrc=regInit, xorOut=xorOut)
        crc  = crc_func( intToASCII(data) )
        crc2 = crc_func( intToASCII(data2) )
#         print "crc: {:X} {:X}".format( crc, crc2 )

        polyList = self.crcFinder.findPolysXOR(data, crc, data2, crc2, 108, crcSize)

#         print "polys:", "[{}]".format( ", ".join("0x{:X}".format(x) for x in polyList) )
        self.assertTrue( PolyKey(inputPoly, 0, 108, rev=False) in polyList )
Exemplo n.º 7
0
    def test_findCommon_crc16_d32_subdata(self):
        dataList = []

        crcFun = crcmod.predefined.mkCrcFun(
            "crc-16")  ## p:0x18005 r:True i:0x0000 x:0x0000

        data = 0x4B4D
        crc = crcFun(intToASCII(data))
        dataList.append((0x42440000 | data, crc))

        data = data ^ 0x0010
        crc = crcFun(intToASCII(data))
        dataList.append((0x47440000 | data, crc))

        foundCRC = self.crcFinder.findCommon(dataList, 32, 16, 16)
        foundCRC = list(foundCRC)

        #         print "found:", foundCRC
        self.assertIn(CRCKey(0x18005, 0x0, 0x0, 0, 16, rev=True), foundCRC)
Exemplo n.º 8
0
    def test_findCommon_crc16_d32(self):
        dataList = []

        crcFun = crcmod.predefined.mkCrcFun(
            "crc-16")  ## p:0x18005 r:True i:0x0000 x:0x0000

        data1 = 0x1234ABCD
        crc1 = crcFun(intToASCII(data1))
        dataList.append((data1, crc1))

        data2 = data1 ^ 0x0010
        crc2 = crcFun(intToASCII(data2))
        dataList.append((data2, crc2))

        foundCRC = self.crcFinder.findCommon(dataList, 32, 16)
        foundCRC = list(foundCRC)

        #         print "found:", foundCRC
        self.assertIn(CRCKey(0x18005, 0x0, 0x0, 0, 32, rev=True), foundCRC)
Exemplo n.º 9
0
    def test_findCommon_crc16buypass_d32(self):
        dataList = []

        crcFun = crcmod.predefined.mkCrcFun(
            "crc-16-buypass")  ## p:0x18005 r:False i:0x0000 x:0x0000

        data = 0xDCBA4321
        crc = crcFun(intToASCII(data))
        dataList.append((data, crc))

        data = data ^ 0x0010
        crc = crcFun(intToASCII(data))
        dataList.append((data, crc))

        foundCRC = self.crcFinder.findCommon(dataList, 32, 16)
        foundCRC = list(foundCRC)

        #         print "found:", foundCRC
        self.assertIn(CRCKey(0x18005, 0x0, 0x0, 0, 32, rev=False), foundCRC)
Exemplo n.º 10
0
    def test_findPolysXOR_crcmod_8_random3(self):
        dataSize = 64
        data  = int(random.random() * 0xFFFFFFFFFFFFFFFF + 1)
        data2 = int(random.random() * 0xFFFFFFFFFFFFFFFF + 1)
#         inputPoly = 0x1B7
        inputPoly = 0x100 | int(random.random() * 0xFF + 1)
        regInit = int(random.random() * 0xFF + 1)
        xorOut  = int(random.random() * 0xFF + 1)
        crcSize = 8

        crc_func = crcmod.mkCrcFun(inputPoly, rev=False, initCrc=regInit, xorOut=xorOut)
        crc  = crc_func( intToASCII(data, dataSize) )
        crc2 = crc_func( intToASCII(data2, dataSize) )
#         print "crc: {:X} {:X}".format( crc, crc2 )

        polyList = self.crcFinder.findPolysXOR(data, crc, data2, crc2, dataSize, crcSize)

#         print "data: 0x{:X} 0x{:X} 0x{:X} 0x{:X} 0x{:X}".format( data, data2, inputPoly, regInit, xorOut )
#         print "polys:", "[{}]".format( ", ".join("0x{:X}".format(x) for x in polyList) )
        self.assertTrue( PolyKey(inputPoly, 0, dataSize, rev=False) in polyList )
Exemplo n.º 11
0
    def test_findPolysXOR_crcmod_8Arev_d32(self):
        data  = 0xF90AD5FD
        data2 = data | 0xF
        dataSize = 32
        inputPoly = 0x10A
        regInit = 0x00
        xorOut = 0x00
        crcSize = 8

        crc_func = crcmod.mkCrcFun(inputPoly, rev=True, initCrc=regInit, xorOut=xorOut)
        crc  = crc_func( intToASCII(data, dataSize) )
        crc2 = crc_func( intToASCII(data2, dataSize) )
#         print "crc: {:X} {:X}".format( crc, crc2 )
#         print "data: {:X}/{:X} {:X}/{:X}".format( data, revData1, data2, revData2 )

        polyList = self.crcFinder.findPolysXOR(data, crc, data2, crc2, dataSize, crcSize)

#         revPoly = reverse_number(inputPoly, crcSize)
#         print "polys: {:X}".format(inputPoly), "[{}]".format( ", ".join("(0x{:X} {})".format(pair[0], pair[1]) for pair in polyList) )
        self.assertIn( PolyKey(inputPoly, 0, dataSize, rev=True), polyList )
Exemplo n.º 12
0
    def test_findCommon_crc16dnp(self):
        dataList = []

        crcFun = crcmod.predefined.mkCrcFun(
            "crc-16-dnp")  ## poly: 0x13D65, rev, init: 0xFFFF, xor: 0xFFFF

        data = 0xABCD
        crc = crcFun(intToASCII(data))
        dataList.append((data, crc))

        data = data ^ 0x0010
        crc = crcFun(intToASCII(data))
        dataList.append((data, crc))

        foundCRC = self.crcFinder.findCommon(dataList, 16, 16)
        foundCRC = list(foundCRC)

        #         print "found:", foundCRC
        self.assertIn(CRCKey(0x13D65, 0xFFFF, 0xFFFF, 0, 16, rev=True),
                      foundCRC)
Exemplo n.º 13
0
    def test_findCommonInput_crc8a(self):
        dataList = []

        crcFun = crcmod.predefined.mkCrcFun(
            "crc-8")  ## init: 0x0, xor: 0x0, poly: 0x107

        data = 0xAB
        crc = crcFun(intToASCII(data))
        dataList.append((data, crc))

        foundCRC = self.crcFinder.findCommonInput(InputData(dataList, 8, 8))
        foundCRC = list(foundCRC)

        #         print "found:", foundCRC
        self.assertIn(CRCKey(0x107, 0x0, 0x0, 0, 8, rev=False), foundCRC)
Exemplo n.º 14
0
    def test_crcmod_8_xorOut(self):
        data = 0xF0
        dataSize = 8
        inputPoly = 0x100
        crcSize = 8
        regInit = 0x0F
        xorOut = 0xF0

        crc_func = crcmod.mkCrcFun(inputPoly,
                                   initCrc=regInit,
                                   rev=False,
                                   xorOut=xorOut)
        crcLib = crc_func(intToASCII(data))

        crcProc = ModCRC()
        crcProc.setXorOutValue(xorOut)
        crcProc.setInitCRC(regInit, crcSize)

        crc = crcProc.calculate2(data, dataSize, inputPoly, crcSize)
        #         print "crc: 0x{0:X}[0b{0:b}] 0x{1:X}[0b{1:b}]".format( crc, crcLib )
        self.assertEqual(crc, crcLib)
Exemplo n.º 15
0
    def test_crcmod_8_data(self):
        data = 0xF0FF
        dataSize = 16
        inputPoly = 0x181  ## leave symmetric
        crcSize = 8
        regInit = 0x0
        xorOut = 0x0

        crc_func = crcmod.mkCrcFun(inputPoly,
                                   initCrc=regInit,
                                   rev=False,
                                   xorOut=xorOut)
        crcLib = crc_func(intToASCII(data))

        crcProc = ModCRC()
        crcProc.setRegisterInitValue(regInit)
        crcProc.setXorOutValue(xorOut)
        crc = crcProc.calculate2(data, dataSize, inputPoly, crcSize)

        #         print "crc: {:b} {:b}".format( crcLib, crc )

        self.assertEqual(crc, crcLib)
Exemplo n.º 16
0
 def test_asciiToInt(self):
     asciival = intToASCII(0xAABB, 32)
     revval = asciiToInt(asciival)
     self.assertEqual(revval, 0xAABB)
Exemplo n.º 17
0
    def test_intToASCII(self):
        val = intToASCII(0x414243)
        self.assertEqual(val, "ABC")

        val = intToASCII(0x4441)
        self.assertEqual(val, "DA")
Exemplo n.º 18
0
    def test_intToASCII_2(self):
        val = intToASCII(0x0, 15)
        self.assertEqual(len(val), 2)

        val = intToASCII(0x0, 16)
        self.assertEqual(len(val), 2)