data=open(self.dmb_path,'rb').read() search=self.text.GetValue() search_len = len(search) d_chunks = ( (i, data[i:i+search_len]) for i in xrange(len(data)) ) match=False for i, d_chunk in d_chunks: xorOffset=i&0xFF match=True try: for j, s_char in enumerate(search): d_char=ord(d_chunk[j])^xorOffset if s_char != d_char: match=False break xorOffset+=9 except IndexError: match=False break if match: print 'Found!' sys.exit()