|
楼主 |
发表于 2021-12-17 16:23:11
|
显示全部楼层
增加1个判断一个Bin是不是包含另一个Bin:
- def CheckIfBinIncludeInBin(path, bin1, bin2):
- if Path(bin1).exists() and Path(bin2).exists():
- read_size = 1024
- f1 = open(bin1, 'rb')
- f2 = open(bin2, 'rb')
- # 寻找头部匹配
- buffer1 = f1.read(read_size)
- f1_read_cnt = read_size
- f2_read_cnt = 0
- find_head = False
- while True:
- buffer2 = f2.read(read_size)
- f2_read_cnt += len(buffer2)
- if len(buffer2) == 0:
- print("File read end, head not matched.")
- break
- elif buffer1 == buffer2:
- print("File %s head matched at 0x%X." % (bin1, f2_read_cnt - len(buffer2)))
- find_head = True
- break
- if find_head is True:
- while True:
- buffer1 = f1.read(read_size)
- buffer2 = f2.read(read_size)
- f1_read_cnt += len(buffer1)
- if len(buffer1) == 0:
- print("File %s compare end." % bin1)
- break
- elif len(buffer1) <= len(buffer2):
- if buffer1 == buffer2[:len(buffer1)]:
- continue
- else:
- addr = f1_read_cnt - len(buffer1)
- PrintDiff(addr, buffer1, buffer2[:len(buffer1)])
- continue
- else:
- print("File %s Compare failed." % bin1)
- break
- else:
- print("Path:", path, "Bin File Not Found.")
复制代码 |
|