27 lines
893 B
Python
27 lines
893 B
Python
|
|
import argparse
|
||
|
|
|
||
|
|
def main():
|
||
|
|
p = argparse.ArgumentParser()
|
||
|
|
p.add_argument('--file', required=True)
|
||
|
|
p.add_argument('--byte', required=True, help='byte value in hex (e.g. 0x0c)')
|
||
|
|
p.add_argument('--base', type=lambda x: int(x,0), default=0x80000000)
|
||
|
|
p.add_argument('--start', type=lambda x: int(x,0), default=0x80064000)
|
||
|
|
p.add_argument('--end', type=lambda x: int(x,0), default=0x80064800)
|
||
|
|
args = p.parse_args()
|
||
|
|
bval = int(args.byte, 0)
|
||
|
|
with open(args.file, 'rb') as f:
|
||
|
|
f.seek(0,2)
|
||
|
|
size = f.tell()
|
||
|
|
s = args.start - args.base
|
||
|
|
e = args.end - args.base
|
||
|
|
s = max(0, s)
|
||
|
|
e = min(size, e)
|
||
|
|
f.seek(s)
|
||
|
|
data = f.read(e-s)
|
||
|
|
for i, b in enumerate(data):
|
||
|
|
if b == bval:
|
||
|
|
addr = args.base + s + i
|
||
|
|
print(hex(addr), hex(s+i))
|
||
|
|
|
||
|
|
if __name__ == '__main__':
|
||
|
|
main()
|