Ejemplo n.º 1
0
	def chunk_descramble( self, length ):
		chunk = []
		bits = 1
		for i in range( length ):
			chunk.append( ROR( uint8_t( self.f.read(1) ), bits, 8 ) )
			bits = ( bits + 2 ) & 7
		from helper import uint8_list_to_raw_str
		return uint8_list_to_raw_str( chunk )
Ejemplo n.º 2
0
	def chunk_decompress( self, length ):
		rle = self.chunk_rle_decode( length )
		#return None
		chunk = r''

		chunklen = 0
		rleofs = 0
		while rleofs < len( rle ):
		
			code = uint8_t( rle[ rleofs ] )
			rleofs += 1

			if code == 0xff:
				chunk += rle[rleofs]
				chunklen += 1
				rleofs += 1
			else:
				length = (code & 7) + 1
				ofs = 32 - ( code >> 3 )
				for i in range( length ):
					chunk += chunk[ chunklen - ofs + i ]
				chunklen += length

		return chunk