import os, sys, time def out(lba, ctr00, ctrFF): print("SECTORS TOTAL: {:>11}".format(lba)) print("SECTORS with 0x00: {:>11} ({:2.2f}%)".format(ctr00, ctr00/lba*100)) print("SECTORS with 0xFF: {:>11} ({:2.2f}%)".format(ctrFF, ctrFF/lba*100)) print("---------------------------------------") if len(sys.argv) != 2 or sys.argv[1] == "-h" or sys.argv[1] == "--help": print("\nUSAGE:") print("count_0x00_and_0xFF_sectors.py filename.img\n") quit() filename = sys.argv[1] ctr00 = 0 ctrFF = 0 lba = 0 GB = 1000*1000*1000/512 ts = time.time() block_0x00 = b'\x00' * 512 block_0xFF = b'\xFF' * 512 with open(filename, "rb") as f: while True: try: block = f.read(512) if not block: break lba += 1 if lba % GB == 0: print(str(lba/GB) + " GB scanned") out(lba, ctr00, ctrFF) if block == block_0x00: ctr00 += 1 elif block == block_0xFF: ctrFF += 1 except KeyboardInterrupt: break out(lba, ctr00, ctrFF) print("Done in " + str(time.time() - ts) + " Sec.")