====== Scripting Object Model ====== The scripting interface consists of a single top-level object called Unsniff.Database. This object represents a single capture file stored in the Unsniff ( *.usnf ) format. Your task is to get hold of the “Unsniff.Database” object and work your way through the other objects. If you are writing an integrated script – you can additionally access the currently open document, various selection contexts, and the scripting console. See Section 4 for more details on integrated scripts. ===== Object Model Diagram ===== The following picture shows how the Object Model is organized. Only object names and their relationships are shown here. {{:unsniff:object_model.png|}} ===== Object Creation ===== The Unsniff Scripting Object Model is a hierarchical structure. Only one top-level object ”Unsniff.Database is publicly creatable via the Prog ID Unsniff.Database”. All other objects are accessed via methods and properties of already created objects. To create the root object: ** VBScript** Set MyDB = CreateObject (“Unsniff.Database”) **Ruby** MyDB = Win32OLE.new (“Unsniff.Database”) ==== A simple example ==== Let us consider a simple example. In this example, we will write a script to print the description of each packet in a given Unsniff capture file.This example will illustrate the following concepts. * The structure of a typical script application * How the root object is created and accessed * How you can navigate to the other objects //Example: Print the description of each packet in a given capture file.// **VBScript** ' ----------------------- ' Check usage & arguments ' ----------------------- if WScript.Arguments.Count <> 1 then WScript.Echo "Usage: prpidx " WScript.Quit end if ArgFile = WScript.Arguments.Item(0) ‘ ---------------------------------------- ‘ Open the file & navigate to packet index ‘ ---------------------------------------- Set UnsniffDB = CreateObject("Unsniff.Database") UnsniffDB.Open(ArgFile) Set PacketStore = UnsniffDB.PacketIndex For Each Packet In PacketStore WScript.Echo Packet.Description Next UnsniffDB.Close( ) **Ruby** require 'win32ole' USAGE = "prpidx " # # function: print the description # def printPacket(packet) $stdout << packet.Description << “\n” end # # check arguments # if ARGV.length != 1 puts USAGE exit 1 end UnsniffDB = WIN32OLE.new("Unsniff.Database") UnsniffDB.Open(ARGV[0]) Count = UnsniffDB.PacketCount PacketStore PacketStore = UnsniffDB['PacketIndex'] (0..Count- (0..Count-1).each{ |idx| printPacket(PacketStore.Item(idx)) } UnsniffDB.Close()