示例#1
0
    def test_findPolys_preamble(self):
        dataList = []
        dataList.append( ("CC71FB2EE1", "BE0D") )
        dataList.append( ("FFD5C0A73B", "D9B4") )

        inputData = InputData()
        inputData.convert( dataList )
        foundCRC = self.crcFinder.findPolys(inputData, 8)

#         print "found data:", foundCRC
        self.assertIn( PolyKey(0x18005, 0, 32, rev=False ), foundCRC )
示例#2
0
    def test_convert(self):
        data = [("E21EAB43EA0B478F52AF6E034D310D819DBC3F", "A2B0A")]

        parser = InputData()
        parser.convert(data)

        self.assertEqual(parser.dataSize, 152)
        self.assertEqual(parser.crcSize, 20)
        self.assertIn(
            (5042640062004119076411731879610313259117034559L, 666378),
            parser.numbersList)
示例#3
0
    def test_bruteForceInput_xor(self):
        dataList = []
        dataSize = 16
        crcSize = 8
        inputPoly = 0x185
        regInit = 0x0
        xorOut = 0x0A
        reverse = False

        ## init: 0, xor: 0, rev, poly: 0x18005
        self.crcProc.setReversed(reverse)
        self.crcProc.setXorOutValue(xorOut)
        self.crcProc.setRegisterInitValue(regInit)

        data1 = 0xABCD
        crc1 = self.crcProc.calculate2(data1, dataSize, inputPoly, crcSize)
        dataList.append((data1, crc1))

        data2 = data1 ^ 0x0010
        crc2 = self.crcProc.calculate2(data2, dataSize, inputPoly, crcSize)
        dataList.append((data2, crc2))

        dInput = InputData(dataList, dataSize, crcSize)
        foundCRC = self.crcFinder.bruteForcePairs(dInput, 0)

        #         print "found data:", foundCRC
        self.assertIn(
            CRCKey(inputPoly, regInit, xorOut, 0, dataSize, rev=reverse),
            foundCRC)
示例#4
0
    def test_findPolys_poly(self):
        dataList = []
        dataSize = 16
        crcSize = 16
        inputPoly = 0x18005
        regInit = 0x0
        xorOut = 0x0
        reverse = False

        ## init: 0, xor: 0, rev, poly: 0x18005
        self.crcProc.setReversed(reverse)
        self.crcProc.setXorOutValue(xorOut)
        self.crcProc.setRegisterInitValue(regInit)

        data1 = 0xABCD
        crc1  = self.crcProc.calculate2(data1, dataSize, inputPoly, crcSize)
        dataList.append( (data1, crc1) )

        data2 = data1 ^ 0x0010
        crc2  = self.crcProc.calculate2(data2, dataSize, inputPoly, crcSize)
        dataList.append( (data2, crc2) )

        inputData = InputData(dataList, dataSize, crcSize)
        foundCRC = self.crcFinder.findPolys(inputData, 0)

#         print "found data:", foundCRC
        self.assertIn( PolyKey(inputPoly, 0, dataSize, rev=reverse ), foundCRC )
示例#5
0
    def prepareInputData(self, dataSamplesList, dataSize, crcSize, poly,
                         initReg, xorVal):
        inputData = InputData([], dataSize, crcSize)
        for item in dataSamplesList:
            crc = self.crcProc.calculateCRC(item, dataSize, poly, crcSize,
                                            initReg, xorVal)
            inputData.numbersList.append((item, crc))

        return inputData
示例#6
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)
示例#7
0
    def test_execute_8_sample(self):
        poly = 0x1D
        initReg = 0x00
        xorVal = 0x8F
        dataSize = 56
        crcSize = 8

        dataList = [(0x0D00C0F0FFFFFF, 0x90), (0x0000C0F0FFFFFF, 0x76)]

        inputParams = InputParams()
        inputParams.data = InputData(dataList, dataSize, crcSize)
        inputParams.crcSize = crcSize
        inputParams.poly = poly
        inputParams.xorVal = xorVal

        results = self.solver.execute(inputParams, None)

        #         print "result:", results, len(results)
        #         print "data:  ", inputParams.data.numbersList, len(inputParams.data.numbersList)
        #         print "result:", results.most_common(3), len(results)

        self.assertEqual(len(results), 1)
        self.assertIn(CRCKey(poly, initReg, xorVal, 0, dataSize, False, False),
                      results)