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)