packet.unpack (3) - Linux Manuals
packet.unpack: Unpack module
NAME
packet.unpack - Unpack moduleDESCRIPTION
Provides the object for managing and unpacking raw data from a working buffer.
CLASSES
class Unpack(__builtin__.object)
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.
- data:
- Raw packet data
- offset:
- Starting offset of data to return [default: current offset]
- size:
- Length of data to get
- pad:
- Get and discard padding bytes [default: 0] If given, data is padded to this byte boundary
- size:
- Length of data to process
- fmt:
- Format string on how to process data
- unpack_item:
- Unpack function for each item in the array [default: unpack_uint]
- ltype:
- Function to decode length of array [default: unpack_uint] Could also be given as an integer to have a fixed length array
- uargs:
- Named arguments to pass to unpack_item function [default: {}]
- maxcount:
- Maximum length of array [default: any length]
- unpack_item:
- Unpack function for item if condition is true [default: unpack_uint]
- ltype:
- Function to decode the condition flag [default: unpack_uint]
- uargs:
- Named arguments to pass to unpack_item function [default: {}]
- unpack_item:
- Unpack function for each item in the list [default: unpack_uint]
- ltype:
- Function to decode the next item flag [default: unpack_uint]
- uargs:
- Named arguments to pass to unpack_item function [default: {}]
- ltype:
- Function to decode length of string [default: unpack_uint] Could also be given as an integer to have a fixed length string
- pad:
- Get and discard padding bytes [default: 0] If given, string is padded to this byte boundary
- maxcount:
- Maximum length of string [default: any length]
BUGS
No known bugs.AUTHOR
Jorge Mora (mora [at] netapp.com)