from rabin import Rabin, get_file_fingerprints, set_min_block_size, set_max_block_size, set_average_block_size TARGET = 'test.bin' filesizeM = 10 Mb = 1024 * 1024 os.system("dd if=/dev/urandom of=%s bs=%d count=%d" % (TARGET, Mb, filesizeM)) random.seed(open(TARGET, 'rb').read(1024)) set_min_block_size(1024) set_max_block_size(2048) set_average_block_size(1024) r = Rabin() before = get_file_fingerprints(TARGET) f = open(TARGET, 'rb+') data = f.read(int(filesizeM / 2 * Mb)) r.update(data) r.update(b'x') data = f.read() r.update(data) after = r.fingerprints() assert len(before) <= len(after) diffcount = 0 for i in range(len(before)): try:
from rabin import Rabin from common import get_args, sys ## sample file import os SAMPLE_FILE = os.path.join((os.path.abspath(os.path.dirname(__file__))), '..', 'sample.txt') if __name__ == '__main__': text, to_find = get_args(sys.argv[1:]) r = Rabin(to_find, text) r.search(use_rabin_fingerprint=True) if r.result: print("Pattern '{}' found at positions {}".format(to_find, r.result)) else: print("No match found for pattern '{}'".format(to_find))