Advertisement
Guest User

Untitled

a guest
Sep 1st, 2011
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.99 KB | None | 0 0
  1. def FindFreespace(data,size=1,zeros=False):
  2.     count, RATs, addresses, lastRAT = 0,[],[],(0,0)
  3.     for match in re.finditer("STAR(....)",data,re.S):
  4.         if int(addresstostring(match.groups()[0][0:2]),16)^0xFFFF == int(addresstostring(match.groups()[0][2:]),16) and match.start() + 8 + int(addresstostring(match.groups()[0][0:2]),16) >= lastRAT[1]: RATs,lastRAT = RATs + [((match.start(),match.start()+8+int(addresstostring(match.groups()[0][0:2]),16)))],(match.start(),match.start()+8+int(addresstostring(match.groups()[0][0:2]),16))
  5.     for RAT in zip([(0,0)]+RATs,RATs+[(len(data),len(data))]):
  6.         if zeros and RAT[0][1]+1 < RAT[1][0]:
  7.             for match in re.finditer("".join(["\x00" for x in xrange(size)])+"\x00*",data[RAT[0][1]+1:RAT[1][0]]): addresses.append(FreeSpace(RAT[0][1]+1+match.start(),match.end()-match.start()))              
  8.         elif RAT[1][0]-RAT[0][1] >= size and RAT[0][1]+1 < RAT[1][0]: addresses.append(FreeSpace(RAT[0][1]+1, RAT[1][0]-RAT[0][1]))
  9.     return addresses
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement