Provides the object for managing and unpacking raw data from a working buffer.
Unpack object
Usage:
from packet.unpack import Unpack
x = Unpack(buffer)
# Get 32 bytes from the working buffer and move the offset pointer
data = x.read(32)
# Get all the unprocessed bytes from the working buffer
# (all bytes starting from the offset pointer)
# Do not move the offset pointer
data = x.getbytes()
# Get all bytes from the working buffer from the given offset
# Do not move the offset pointer
data = x.getbytes(offset)
# Return the number of unprocessed bytes left in the working buffer
size = x.size()
size = len(x)
# Get the offset pointer
offset = x.tell()
# Set the offset pointer
x.seek(offset)
# Append the given data to the working buffer
x.append(data)
# Insert the given data to the working buffer right before the
# offset pointer. This resets the working buffer completely
# and the offset pointer is initialized to zero. It is like
# re-instantiating the object like:
# x = Unpack(data + x.getbytes())
x.insert(data)
# Save state
sid = x.save_state()
# Restore state
x.restore_state(sid)
# Unpack an 'unsigned short' (2 bytes in network order)
short_int = x.unpack(2, '!H')[0]
# Unpack different basic types
char = x.unpack_char()
uchar = x.unpack_uchar()
short = x.unpack_short()
ushort = x.unpack_ushort()
int = x.unpack_int()
uint = x.unpack_uint()
int64 = x.unpack_int64()
uint64 = x.unpack_uint64()
data1 = x.unpack_opaque()
data2 = x.unpack_opaque(64) # Length of opaque must be <= 64
data3 = x.unpack_fopaque(32)
# Get string where length is given as an unsigned integer
buffer = x.unpack_string()
# Get string of fixed length
buffer = x.unpack_string(32)
# Get string where length is given as a short integer
buffer = x.unpack_string(Unpack.unpack_short)
buffer = x.unpack_string(ltype=Unpack.unpack_short)
# Get string padded to a 4 byte boundary, discard padding bytes
buffer = x.unpack_string(pad=4)
# Get an array of unsigned integers
alist = x.unpack_array()
# Get a fixed length array of unsigned integers
alist = x.unpack_array(ltype=10)
# Get an array of short integers
alist = x.unpack_array(Unpack.unpack_short)
# Get an array of strings, the length of the array is given
# by a short integer
alist = x.unpack_array(Unpack.unpack_string, Unpack.unpack_short)
# Get an array of strings, the length of each string is given by
# a short integer and each string is padded to a 4 byte boundary
alist = x.unpack_array(Unpack.unpack_string, uargs={'ltype':Unpack.unpack_short, 'pad':4})
# Get an array of objects decoded by item_obj where the first
# argument to item_obj is the unpack object, e.g., item = item_obj(x)
alist = x.unpack_array(item_obj)
# Get a list of unsigned integers
alist = x.unpack_list()
# Get a list of short integers
alist = x.unpack_list(Unpack.unpack_short)
# Get a list of strings, the next item flag is given
# by a short integer
alist = x.unpack_list(Unpack.unpack_string, Unpack.unpack_short)
# Get a list of strings, the length of each string is given by
# a short integer and each string is padded to a 4 byte boundary
alist = x.unpack_list(Unpack.unpack_string, uargs={'ltype':Unpack.unpack_short, 'pad':4})
# Unpack a conditional, it unpacks a conditional flag first and
# if it is true it unpacks the item given and returns it. If the
# conditional flag decoded is false, the method returns None
buffer = x.unpack_conditional(Unpack.unpack_opaque)
# Unpack an array of unsigned integers and convert array into
# a single long integer
bitmask = unpack_bitmap()
Methods defined here:
---------------------
__init__(self, data)
Constructor
Initialize object's private data.