#!/usr/bin/python import sys import re pattern=str(sys.argv[1]) filename=str(sys.argv[2]) shortpattern="" print("Pattern is '%s'" % pattern) chars={} for char in pattern: if not char in chars: newchar={} newchar['char']=char newchar['count']=pattern.count(char) newchar['idx']=[m.start() for m in re.finditer(char,pattern)] #print("Char '%s' occurs %d times in pattern %s" % (c,newchar['count'],newchar['idx'])) chars[char]=newchar shortpattern=shortpattern + char try: f=file(filename,'r') except: print("[-] Can't open File %s" % filename) exit(1) print(shortpattern) longest_match_yet=0 while longest_match_yetlongest_match_yet: sub_pattern=pattern[(index+1):] match_so_far=read_a_char offset=f.tell() # print("Possible new Match starting with %s found at %d" % (read_a_char,offset)) # print("trying to find rest of pattern '%s'" % sub_pattern) x=1 for char_to_compare in sub_pattern: next_char=f.read(1) if not read_a_char: print("No more Chars to consume in File") break # print("comparing %s <> %s (%d)" % (next_char,char_to_compare,x)) if next_char != char_to_compare: break match_so_far=match_so_far+next_char x=x+1 # print("matching endet with %d matching chars (%d)" % (x,longest_match_yet)) if x > longest_match_yet: #new longest Match print("found new longest match %s at %d" % (match_so_far,offset)) longest_match_yet=x f.seek(offset) if not read_a_char: print("No more Chars to consume in File") break