26 return "<%s !!>" % self.__class__.__name__
32 return self.bin[start:start + l]
35 """Return the bits from the bit stream
36 @start: the offset in bits
37 @n: number of bits to read
42 if n > self.getlen() * 8:
43 raise IOError(
'not enough bits %r %r' % (n, len(self.bin) * 8))
49 raise IOError(
'cannot get bytes')
67 def __init__(self, input_str="", offset=0L, shift=0):
68 bin_stream.__init__(self)
72 self.
l = len(input_str)
75 if start + l + self.
shift > self.
l:
76 raise IOError(
"not enough bytes in str")
78 return super(bin_stream_str, self).
getbytes(start + self.
shift, l)
82 raise IOError(
"not enough bytes in str")
99 def __init__(self, binary, offset=0L, shift=0):
100 bin_stream.__init__(self)
104 self.
l = self.bin.tell()
108 return self.bin.tell() - self.
shift
111 self.bin.seek(val + self.
shift)
112 offset = property(getoffset, setoffset)
116 raise IOError(
"not enough bytes in file")
117 return self.bin.read(l)
130 bin_stream.__init__(self)
132 self.
l = virt_view.max_addr()
136 return self.bin.is_addr_in(ad)
143 raise IOError(
"not enough bytes")
148 return self.
bin(start, start + l)
162 class bin_stream_elf(bin_stream_container):
174 return 0xFFFFFFFFFFFFFFFF
180 raise IOError(
'cannot get mem ad', hex(start))
187 raise IOError(
'cannot get mem ad', hex(self.
offset))