aboutsummaryrefslogtreecommitdiffstats
path: root/epan/wspython
diff options
context:
space:
mode:
authorEvan Huus <eapache@gmail.com>2014-06-16 11:43:27 -0700
committerEvan Huus <eapache@gmail.com>2014-06-16 20:44:08 +0000
commitad97c1eb873e94b701cc3443822a3c7c7204ea5e (patch)
tree4889436309a646001d2bdfe82149c2ec59e59c10 /epan/wspython
parenta279fa7705b9baf3f6c779face3067b722c802b2 (diff)
kill unmaintained python bindings
Change-Id: I1fa4f0d76b6b29d2935723b83b5ea7165039c807 Reviewed-on: https://code.wireshark.org/review/2258 Reviewed-by: Michael Mann <mmann78@netscape.net> Reviewed-by: Evan Huus <eapache@gmail.com>
Diffstat (limited to 'epan/wspython')
-rw-r--r--epan/wspython/CMakeLists.txt42
-rw-r--r--epan/wspython/Makefile.am58
-rw-r--r--epan/wspython/Makefile.common30
-rw-r--r--epan/wspython/Makefile.nmake29
-rwxr-xr-xepan/wspython/register-dissector.py105
-rwxr-xr-xepan/wspython/wspy_dissector.py458
-rw-r--r--epan/wspython/wspy_dissectors/homeplug.py.sample90
-rwxr-xr-xepan/wspython/wspy_libws.py53
-rw-r--r--epan/wspython/wspy_proto.c87
-rw-r--r--epan/wspython/wspy_proto.h42
-rw-r--r--epan/wspython/wspy_register.c230
-rw-r--r--epan/wspython/wspy_register.h43
12 files changed, 0 insertions, 1267 deletions
diff --git a/epan/wspython/CMakeLists.txt b/epan/wspython/CMakeLists.txt
deleted file mode 100644
index 4a23c7ea50..0000000000
--- a/epan/wspython/CMakeLists.txt
+++ /dev/null
@@ -1,42 +0,0 @@
-# CMakeLists.txt
-#
-# Wireshark - Network traffic analyzer
-# By Gerald Combs <gerald@wireshark.org>
-# Copyright 1998 Gerald Combs
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-
-set(WSPYTHON_FILES
- wspython/wspy_register.c
- wspython/wspy_proto.c
-)
-
-install(PROGRAMS
- wspython/register-dissector.py
- wspython/wspy_dissector.py
- wspython/wspy_libws.py
- DESTINATION
- ${CMAKE_INSTALL_DATADIR}/${CPACK_PACKAGE_NAME}/python/${CPACK_PACKAGE_VERSION}
-)
-
-
-install(DIRECTORY
- wspython/wspy_dissectors
- DESTINATION
- ${CMAKE_INSTALL_DATADIR}/${CPACK_PACKAGE_NAME}/python/${CPACK_PACKAGE_VERSION}
- PATTERN ".svn" EXCLUDE
-)
-
diff --git a/epan/wspython/Makefile.am b/epan/wspython/Makefile.am
deleted file mode 100644
index 43613b1014..0000000000
--- a/epan/wspython/Makefile.am
+++ /dev/null
@@ -1,58 +0,0 @@
-# Makefile.am
-#
-# Wireshark - Network traffic analyzer
-# By Gerald Combs <gerald@wireshark.org>
-# Copyright 1998 Gerald Combs
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-if HAVE_WARNINGS_AS_ERRORS
-AM_CFLAGS = -Werror
-endif
-
-include Makefile.common
-
-noinst_LTLIBRARIES = libwspython.la
-
-CLEANFILES = \
- libwspython.a \
- libwspython.la \
- *~
-
-MAINTAINERCLEANFILES = \
- Makefile.in
-
-AM_CPPFLAGS = -I$(srcdir)/../.. -I$(srcdir)/..
-
-libwspython_la_SOURCES = $(LIBWSPYTHON_SRC) $(LIBWSPYTHON_INCLUDES)
-
-libwspython_la_LIBADD = @PY_LIBS@
-libwspython_la_CFLAGS = @PY_CFLAGS@
-
-wspythondir = @pythondir@
-
-wspython_DATA = \
- register-dissector.py \
- wspy_dissector.py \
- wspy_dissectors/homeplug.py.sample \
- wspy_libws.py
-
-
-EXTRA_DIST = \
- Makefile.common \
- Makefile.nmake \
- $(wspython_DATA) \
- CMakeLists.txt
-
diff --git a/epan/wspython/Makefile.common b/epan/wspython/Makefile.common
deleted file mode 100644
index c0c54033f8..0000000000
--- a/epan/wspython/Makefile.common
+++ /dev/null
@@ -1,30 +0,0 @@
-# Makefile.common
-# Contains the stuff from Makefile.am and Makefile.nmake that is
-# a) common to both files and
-# b) portable between both files
-#
-# Wireshark - Network traffic analyzer
-# By Gerald Combs <gerald@wireshark.org>
-# Copyright 1998 Gerald Combs
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
-
-LIBWSPYTHON_SRC = \
- wspy_register.c \
- wspy_proto.c
-
-LIBWSPYTHON_INCLUDES = \
- wspy_register.h \
- wspy_proto.h
diff --git a/epan/wspython/Makefile.nmake b/epan/wspython/Makefile.nmake
deleted file mode 100644
index 94be104939..0000000000
--- a/epan/wspython/Makefile.nmake
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-
-include ..\..\config.nmake
-include Makefile.common
-
-############### no need to modify below this line #########
-
-CFLAGS=$(WARNINGS_ARE_ERRORS) $(STANDARD_CFLAGS) \
- /I. /I.. /I../.. $(GLIB_CFLAGS) \
- $(PYTHON_CFLAGS) -DWS_BUILD_DLL
-
-.c.obj::
- $(CC) $(CFLAGS) -Fd.\ -c $<
-
-LIBWSPYTHON_OBJECTS = $(LIBWSPYTHON_SRC:.c=.obj)
-
-wspython.lib: $(LIBWSPYTHON_OBJECTS)
- link /lib /out:wspython.lib $(LIBWSPYTHON_OBJECTS)
-
-clean:
- rm -f $(LIBWSPYTHON_OBJECTS) wspython.lib *.pdb *.sbr
-
-distclean: clean
-
-maintainer-clean: distclean
-
-checkapi:
- $(PERL) ../../tools/checkAPIs.pl -g termoutput -build \
- $(LIBWSPYTHON_OBJECTS)
diff --git a/epan/wspython/register-dissector.py b/epan/wspython/register-dissector.py
deleted file mode 100755
index 85cf3e794b..0000000000
--- a/epan/wspython/register-dissector.py
+++ /dev/null
@@ -1,105 +0,0 @@
-# register-dissector.py
-#
-# Wireshark Protocol Python Binding
-#
-# Copyright (c) 2009 by Sebastien Tandel <sebastien [AT] tandel [dot] be>
-# Copyright (c) 2001 by Gerald Combs <gerald@wireshark.org>
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-import sys
-import re
-import os
-import imp
-
-#
-# Build a list of files belonging to a directory and matching a regexp (f.e.
-# '(?P<plugin>.*)\.py$' )
-#
-def get_plugin_list(dir, regexp):
- lDir = os.listdir(dir)
-
- lPlugins=[]
- for sDir in lDir:
- MatchedObject = re.match(regexp, sDir)
- if (MatchedObject != None):
- lPlugins.append(MatchedObject.group("plugin"))
- return lPlugins
-
-#Import the module "name"
-def plugin_import(name):
- #if the module was already loaded
- try:
- return sys.modules[name]
- except KeyError:
- pass
-
- r = __import__(name)
- return r
-
-def register_dissectors(wspython_dir, plugins_pers_dir=None):
- #append dir to be able to import py_lib
- sys.path.append(wspython_dir)
- from wspy_libws import get_libws_handle
- libws = get_libws_handle()
-
- dissectors_dirs = [
- os.path.join(wspython_dir, 'wspy_dissectors'),
- plugins_pers_dir
- ]
-
- registered_protocols = []
- for dissectors_dir in dissectors_dirs:
- #Check if we have the dissectors directory
- if not os.path.isdir(dissectors_dir):
- continue
-
- #append dir to be able to import python dissectors
- sys.path.append(dissectors_dir)
-
- #Read all python dissectors
- dissectors = get_plugin_list(dissectors_dir, "(?P<plugin>.*)\.py$")
-
- #For each dissector, register it and put it in the list of registered
- #protocols
- for dissector in dissectors:
- try:
- d = plugin_import(dissector)
- registered_protocol = d.register_protocol()
- if registered_protocol:
- registered_protocols.append(registered_protocol)
- except Exception as e:
- print('register dissector %s exception %s' % (dissector, e))
- return registered_protocols
-
-if False:
- import linecache
-
- # Start tracing when import has finished
- def tracer(frame, event, arg):
- if event == "line":
- lineno = frame.f_lineno
- filename = frame.f_globals["__file__"]
- if (filename.endswith(".pyc") or
- filename.endswith(".pyo")):
- filename = filename[:-1]
- name = frame.f_globals["__name__"]
- line = linecache.getline(filename, lineno)
- print("%s:%s: %s" % (name, lineno, line.rstrip()))
- if event == "exception":
- print("exception", arg)
- return tracer
-
- sys.settrace(tracer)
-
diff --git a/epan/wspython/wspy_dissector.py b/epan/wspython/wspy_dissector.py
deleted file mode 100755
index e401495ca9..0000000000
--- a/epan/wspython/wspy_dissector.py
+++ /dev/null
@@ -1,458 +0,0 @@
-# wspy_dissector.py
-#
-# Wireshark Protocol Python Binding
-#
-# Copyright (c) 2009 by Sebastien Tandel <sebastien [AT] tandel [dot] be>
-# Copyright (c) 2001 by Gerald Combs <gerald@wireshark.org>
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-import ctypes as ct
-from wspy_libws import get_libws_handle
-
-# From epan/proto.h
-# ? STA ? : is there a better way to include/define these constants?
-# (duplicating definition is not a good thing)
-(BASE_NONE,
-BASE_DEC,
-BASE_HEX,
-BASE_OCT,
-BASE_DEC_HEX,
-BASE_HEX_DEC,
-BASE_CUSTOM) = map(int, range(7))
-
-# field types, see epan/ftypes/ftypes.h
-(FT_NONE,
-FT_PROTOCOL,
-FT_BOOLEAN,
-FT_UINT8,
-FT_UINT16,
-FT_UINT24,
-FT_UINT32,
-FT_UINT64,
-FT_INT8,
-FT_INT16,
-FT_INT24,
-FT_INT32,
-FT_INT64,
-FT_FLOAT,
-FT_DOUBLE,
-FT_ABSOLUTE_TIME,
-FT_RELATIVE_TIME,
-FT_STRING,
-FT_STRINGZ,
-FT_EBCDIC,
-FT_UINT_STRING,
-FT_ETHER,
-FT_BYTES,
-FT_UINT_BYTES,
-FT_IPv4,
-FT_IPv6,
-FT_IPXNET,
-FT_FRAMENUM,
-FT_PCRE,
-FT_GUID,
-FT_OID,
-FT_REL_OID) = map(int, range(32))
-
-# hf_register_info from usual dissectors
-class register_info(object):
- def __init__(self, wsl):
- self.__protocol = None
- self.__wsl = wsl
- self.__hf_register = None
- self.__registers = []
-
- def add(self, name, short_desc, \
- type=FT_UINT32, display=BASE_DEC, \
- strings=None, bitmask=0x0, desc=None):
- if not desc:
- desc = name
- self.__registers.append( (name, short_desc, \
- type, display, strings, bitmask, desc) )
-
- def register(self, protocol):
- self.__protocol = protocol
- hf = self.__registers
- lr = len(hf)
- if not lr:
- return None
-
- self.__hf_register = self.__wsl.hf_register_info_create(lr)
- chf = self.__hf_register
- if not self.__hf_register:
- return None
-
- for i in range(lr):
- n, sd, t, d, st, bm, ld = hf[i]
- sdn = sd.replace('.', '_')
- self.__dict__[sdn] = ct.c_int(-1)
- p_id = ct.pointer(self.__dict__[sdn])
- self.__wsl.hf_register_info_add(chf, i, p_id, n , sd, t, d, st, bm, ld)
-
- self.__wsl.proto_register_field_array(self.__protocol, chf, lr)
-
- def display(self):
- self.__wsl.hf_register_info_print(self.__hf_register, \
- len(self.__registers))
-
- def get(self):
- return self.__hf_register, len(self.__registers)
-
- def __del__(self):
- self.__wsl.hf_register_info_destroy(self.__hf_register)
-
-#Subtrees definition
-#Every subtree added can be accesses as an attribute after having been
-#registered
-class Subtree(object):
- def __init__(self, wsl, protocol):
- self.__wsl = wsl
- self.__protocol = protocol
- self.__st = {}
- self.__user_defined_protocol_tree = False
-
- def add(self, name):
- if name == self.__protocol:
- self.__user_defined_protocol_tree = True
-
- self.__st[name] = ct.c_int(-1)
-
- def has_user_defined_protocol_tree(self):
- return self.__user_defined_protocol_tree
-
- def register(self):
- if not self.__user_defined_protocol_tree:
- self.__st[self.__protocol] = ct.c_int(-1)
-
- ls = len(self.__st)
- if not ls:
- return
-
- CSubtrees = ct.POINTER(ct.c_int) * ls
- p_sts = CSubtrees()
- k = self.__st.keys()
- for i in range(ls):
- p_sts[i] = ct.pointer(self.__st[k[i]])
-
- self.__wsl.proto_register_subtree_array(p_sts, ls)
-
- def __getattr__(self, name):
- if self.__st.has_key(name):
- return self.__st[name]
- #raise KeyError
-
-#Dissector class : base class to write a dissector in python
-class Dissector(object):
- def __init__(self, protocol_name, short_desc, short):
- self.__protocol_name = protocol_name
- self.__short_desc = short_desc
- self.__short = short
-
- self.__tvb = None
- self.__pinfo = None
- self.__tree = None
-
- self.__Tree = None
-
- self.__offset = 0
-
- self.__wsl = get_libws_handle()
- self.__hf = None
- self.__subtree = None
-
- def _fields(self):
- '''hf property : hf_register_info fields. every defined field is available
- as an attribute of this object'''
- if not self.__hf:
- self.__hf = register_info(self.__wsl)
- return self.__hf
- hf = property(_fields)
-
- def _subtrees(self):
- '''subtrees property : subtress definition. every subtree added is
- accessible as an attribute of this object'''
- if not self.__subtree:
- self.__subtree = Subtree(self.__wsl, self.__short)
- return self.__subtree
- subtrees = property(_subtrees)
-
- def _tree(self):
- '''tree property : initial tree at the start of the dissection'''
- if not self.__Tree:
- self.__Tree = Tree(self.__tree, self)
- return self.__Tree
- tree = property(_tree)
-
- def display(self):
- print(self.__short)
-
- def _libhandle(self):
- '''libhandle property : return a handle to the libwireshark lib. You don't
- want to use this in normal situation. Use it only if you know what you're
- doing.'''
- return self.__wsl
- libhandle = property(_libhandle)
-
- def _raw_tree(self):
- '''raw_tree property : returns the raw tree pointer. You can use this with
- libhandle. You don't want to use this in normal situation. Use it only if
- you know what you're doing.'''
- return self.__tree
- raw_tree = property(_raw_tree)
-
- def _raw_pinfo(self):
- '''raw_pinfo property : return the raw pinfo pointer. You can use this with
- libhandle. You don't want to use this in normal situation. Use it only if
- you know what you're doing.'''
- return self.__pinfo
- raw_pinfo = property(_raw_pinfo)
-
- def _raw_tvb(self):
- '''raw_tvb property : returns the raw tvb pointer. You can use this with
- libhandle. You don't want to use this in normal situation. Use it only if
- you know what you're doing.'''
- return self.__tvb
- raw_tvb = property(_raw_tvb)
-
- def __str__(self):
- # STA TODO : keep with short_desc because used in the hash table of
- # dissectors in C code. If it is modified, it won't work anymore
- return self.__short_desc
-
- def __unicode__(self):
- return self.__short
-
- def __hash__(self):
- return hash(self.__short)
-
- def protocol(self):
- return self.__protocol
-
- def register_protocol(self):
- '''private function called by libwireshark when registering all
- protocols'''
- self.__protocol = \
- self.__wsl.proto_register_protocol( \
- self.__protocol_name, self.__short_desc, \
- self.__short)
- self.__hf.register(self.__protocol)
- #self.__hf.display()
- self.subtrees.register()
-
- def dissect(self):
- '''point of entry when starting dissecting a packet. This method must be
- therefore overloaded by the object implementing the dissector of a specific
- protocol.'''
- raise AttributeError('Dissector.dissect must be overridden')
-
- def pre_dissect(self):
- '''private method executed right before dissect in order to retrieve some
- internal information and enabling the possibility to add the base tree of
- this protocol dissection to the tree without any user intervention'''
-
- self.__tvb = ct.c_void_p()
- self.__pinfo = ct.c_void_p()
- self.__tree = ct.c_void_p()
- self.__wsl.py_dissector_args(ct.byref(self.__tvb), ct.byref(self.__pinfo), ct.byref(self.__tree))
- # print self.__tvb, self.__pinfo, self.__tree
- #self.__wsl.print_current_proto(ct.py_object(pinfo))
- subt = self.subtrees
- try:
- if not subt.has_user_defined_protocol_tree():
- p_tree = self.tree.add_item(self.protocol())
- self.__Tree = p_tree.add_subtree(self.subtrees)
- except:
- print('pre_dissect error',e)
- self.dissect()
-
- def protocol_ids(self):
- '''defined a list of tuples containing three values. Each tuple is defining
- the parameters of dissector_add(). This function MUST be defined when
- implementing the dissector of a specific protocol.'''
- return [ (None, 0, None) ]
-
- def find_dissector(self, protocol):
- '''find_dissector : see proto.h'''
- return self.__wsl.find_dissector(protocol)
-
- def register_handoff(self):
- '''private method used during the registration of protocol dissectors'''
- #TODO STA : think how we would use dissector_add in an easy way *and* with
- #the possibility to add the same dissector for TCP and UDP (extend
- #py_generic_dissector)
- private_handle = None
- try:
- ids = self.protocol_ids()
- for type, protocol_id, handle in self.protocol_ids():
- if not type:
- continue
- if not handle:
- if not private_handle:
- handle = self.__wsl.py_create_dissector_handle(self.__protocol)
- else:
- handle = private_handle
- ct_type = ct.create_string_buffer(type)
- ct_protocol_id = ct.c_uint(protocol_id)
- self.__wsl.dissector_add_uint(ct_type, ct_protocol_id, handle)
- except Exception as e:
- print("creating dissector \"%s\" failed %s" % (self.__protocol_name, e))
- raise
-
- def advance(self, step):
- '''method used to change the value of the offset'''
- self.__offset += step
-
- def _offset(self):
- '''offset property : if is the current offset computed from the
- dissection.'''
- return self.__offset
- offset = property(_offset)
-
-#Tree class implementation
-#see proto.h
-class Tree(object):
- def __init__(self, tree, dissector):
- self.__dissector = dissector
- self.__tree = ct.c_void_p(tree)
- self.__wsl = dissector.libhandle
- self.__tvb = dissector.raw_tvb
-
- def _raw_tree(self):
- return self.__tree
- raw_tree = property(_raw_tree)
-
- def add_item(self, field, offset=0, length=-1, little_endian=False, adv=True):
- '''add an item to the tree'''
- try:
- tree = self.__wsl.proto_tree_add_item(self.__tree,
- field, self.__tvb, self.__dissector.offset, length,
- little_endian)
- except Exception as e:
- print(e)
- else:
- if length > 0 and adv:
- self.__dissector.advance(length)
- return Tree(tree, self.__dissector)
-
- def add_uint(self, field, value, offset=0, length=4, adv=True):
- '''add unsigned integer to the tree'''
- try:
- tree = self.__wsl.proto_tree_add_uint(self.__tree, field, self.__tvb, self.__dissector.offset, length, value)
- except Exception as e:
- print(e)
- else:
- if adv:
- self.__dissector.advance(length)
- return Tree(tree, self.__dissector)
-
- def add_text(self, string, offset=0, length=-1, adv=True):
- '''add text to the tree'''
- try:
- tree = self.__wsl.proto_tree_add_text(self.__tree, self.__tvb, self.__dissector.offset, length, string)
- except Exception as e:
- print(e)
- else:
- if length > 0 and adv:
- self.__dissector.advance(length)
- return Tree(tree, self.__dissector)
-
- def add_subtree(self, subtree):
- '''add a subtree to the tree'''
- try:
- tree = self.__wsl.proto_item_add_subtree(self.__tree, subtree)
- except Exception as e:
- print(e)
- else:
- return Tree(tree, self.__dissector)
-
-#tvb class implementation
-#see proto.h
-class TVB(object):
- def __init__(self, wsl, tvb, dissector):
- self.__tvb = tvb
- self.__wsl = wsl
- self.__dissector = dissector
-
- def length(self):
- return self.__wsl.length(self.__wsl)
-
- def length_remaining(self, offset=-1):
- if offset < 0:
- offset = self.__dissector.offset
- return self.__wsl.tvb_length_remaining(self.__tvb, offset)
-
- def reported_length(self):
- return self.__wsl.tvb_reported_length(self.__tvb)
-
- def reported_length_remaining(self, offset=-1):
- if offset < 0:
- offset = self.__dissector.offset
- return self.__wsl.tvb_length_remaining(self.__tvb, offset)
-
- def get_guint8(self, offset=-1):
- if offset < 0:
- offset = self.__dissector.offset
- return self.__wsl.tvb_get_guint8(self.__tvb)
-
- def get_ntohs(self, offset=-1):
- if offset < 0:
- offset = self.__dissector.offset
- return self.__wsl.tvb_get_ntohs(self.__tvb, offset)
-
- def get_ntohl(self, offset=-1):
- if offset < 0:
- offset = self.__dissector.offset
- return self.__wsl.tvb_get_ntohl(self.__tvb, offset)
-
- def get_letohl(self, offset=-1):
- if offset < 0:
- offset = self.__dissector.offset
- return self.__wsl.tvb_get_letohl(self.__tvb, offset)
-
- def get_letohs(self, offset=-1):
- if offset < 0:
- offset = self.__dissector.offset
- return self.__wsl.tvb_get_letohs(self.__tvb, offset)
-
- #STA TODO : check that we can do that
- def get_ptr(self, offset=-1):
- if offset < 0:
- offset = self.__dissector.offset
- return self.__wsl.tvb_get_ptr(self.__tvb, offset)
-
- #how to get this working ??? check how application uses this!
- #def new_subset(self, offset=0):
- # return self.__wsl.tvb_get_new_subset(self.tvb, offset)
-
-if False:
- import linecache
- import sys
- # Start tracing when import has finished
- def tracer(frame, event, arg):
- if event == "line":
- lineno = frame.f_lineno
- filename = frame.f_globals["__file__"]
- if (filename.endswith(".pyc") or
- filename.endswith(".pyo")):
- filename = filename[:-1]
- name = frame.f_globals["__name__"]
- line = linecache.getline(filename, lineno)
- print("%s:%s: %s" % (name, lineno, line.rstrip()))
- if event == "exception":
- print("exception", arg)
- return tracer
-
- sys.settrace(tracer)
diff --git a/epan/wspython/wspy_dissectors/homeplug.py.sample b/epan/wspython/wspy_dissectors/homeplug.py.sample
deleted file mode 100644
index 39d5f5349b..0000000000
--- a/epan/wspython/wspy_dissectors/homeplug.py.sample
+++ /dev/null
@@ -1,90 +0,0 @@
-from wspy_dissector import Dissector
-from wspy_dissector import FT_UINT8, FT_NONE
-from wspy_dissector import BASE_NONE, BASE_HEX
-
-class homeplug_py(Dissector):
- # return the two first parameters of dissector_add as a tuple
- def protocol_ids(self):
- #you could use self.find_dissector() or self.create_dissector_handle() as
- #defined in proto.h and pass the result in the third element of the tuple
- #returned
- return [ ("ethertype", 0x887B, None) ]
-
- #Main default entry point of dissection
- def dissect(self):
- self.dissect_mctrl()
- self.dissect_mehdr()
- self.dissect_melen()
-
- def dissect_mctrl(self):
- self.subt = self.subtrees
- self.c_tree = self.tree
- try:
- tree = self.c_tree.add_item(self.hf.homeplug_mctrl, length=1, adv=False)
- mctrl_tree = tree.add_subtree(self.subt.mctrl)
-
- mctrl_tree.add_item(self.hf.homeplug_mctrl_rsvd, length=1, adv=False)
- mctrl_tree.add_item(self.hf.homeplug_mctrl_ne, length=1)
- #item = self.libhandle.proto_tree_add_text(mctrl_tree.raw_tree, self.raw_tvb, 0, 1, "test") => example using libhandle
- except Exception, e:
- print e
-
- def dissect_mehdr(self):
- try:
- tree = self.c_tree.add_item(self.hf.homeplug_mehdr, length=1, adv=False)
- mehdr_tree = tree.add_subtree(self.subt.mehdr)
-
- mehdr_tree.add_item(self.hf.homeplug_mehdr_mev, length=1, adv=False)
- mehdr_tree.add_item(self.hf.homeplug_mehdr_metype, length=1)
- except Exception, e:
- print e
-
- def dissect_melen(self):
- try:
- self.c_tree.add_item(self.hf.homeplug_melen, length=1)
- except Exception, e:
- print e
-
- def dissect_mme(self):
- try:
- self.c_tree.add_item(self.hf.homeplug_mme, length=1)
- except Exception, e:
- print e
-
-
-HOMEPLUG_MCTRL_RSVD = 0x80
-HOMEPLUG_MCTRL_NE = 0x7F
-HOMEPLUG_MEHDR_MEV = 0xE0
-HOMEPLUG_MEHDR_METYPE = 0x1F
-
-def register_protocol():
- tp = homeplug_py("HomePlug protocol (python)", "HomePlug.py", "homeplug_py")
-
- #
- # Register Protocol Fields
- #
- hf = tp.hf
- # MAC Control Field
- hf.add("Mac Control Field", "homeplug_py.mctrl", FT_NONE, BASE_NONE)
- hf.add("Reserved", "homeplug_py.mctrl.rsvd", FT_UINT8, bitmask=HOMEPLUG_MCTRL_RSVD)
- hf.add("Number of MAC Data Entries", "homeplug_py.mctrl.ne", FT_UINT8, bitmask=HOMEPLUG_MCTRL_NE)
-
- # MAC Entry Header
- hf.add("MAC Management Entry Header", "homeplug_py.mehdr", FT_NONE, BASE_NONE)
- hf.add("MAC Entry Version", "homeplug_py.mehdr.mev", FT_UINT8, bitmask=HOMEPLUG_MEHDR_MEV)
- hf.add("MAC Entry Type", "homeplug_py.mehdr.metype", FT_UINT8, BASE_HEX, bitmask=HOMEPLUG_MEHDR_METYPE)
-
- # MAC Entry Len
- hf.add("MAC Management Entry Length", "homeplug_py.melen", FT_UINT8)
-
- # MAC Management Entry
- hf.add("MAC Management Entry Data", "homeplug_py.mmentry", FT_UINT8)
-
- #
- # Register Subtrees
- #
- subt = tp.subtrees
- #subt.add("homeplug_py") => we let Dissector output the main tree of this protocol
- subt.add("mctrl")
- subt.add("mehdr")
- return tp
diff --git a/epan/wspython/wspy_libws.py b/epan/wspython/wspy_libws.py
deleted file mode 100755
index beec155fa1..0000000000
--- a/epan/wspython/wspy_libws.py
+++ /dev/null
@@ -1,53 +0,0 @@
-# wspy_libws.py
-#
-# Wireshark Protocol Python Binding
-#
-# Copyright (c) 2009 by Sebastien Tandel <sebastien [AT] tandel [dot] be>
-# Copyright (c) 2001 by Gerald Combs <gerald@wireshark.org>
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-
-from ctypes import cdll, c_char_p, c_void_p, c_int, c_uint, POINTER
-import platform
-
-__libwireshark = None
-
-# XXX - We should probably return a full path here, at least on Windows.
-def get_libws_libname():
- system = platform.system()
- if system == "Darwin":
- return 'libwireshark.dylib'
- elif system == "Windows":
- return 'libwireshark.dll'
- else:
- return 'libwireshark.so'
-
-def get_libws_handle():
- global __libwireshark
- try:
- if not __libwireshark:
- libname = get_libws_libname()
- __libwireshark = cdll.LoadLibrary(libname)
- __libwireshark.py_create_dissector_handle.restype = c_void_p
- __libwireshark.py_create_dissector_handle.argtypes = [c_int]
- __libwireshark.py_dissector_args.argtypes = [POINTER(c_void_p),POINTER(c_void_p),POINTER(c_void_p)]
- __libwireshark.dissector_add_uint.argtypes = [c_char_p, c_uint, c_void_p]
- __libwireshark.proto_tree_add_item.argtypes = [c_void_p, c_int, c_void_p, c_int, c_int, c_int]
-
- return __libwireshark
- except Exception as e:
- print(e)
- return None
diff --git a/epan/wspython/wspy_proto.c b/epan/wspython/wspy_proto.c
deleted file mode 100644
index 865c098b9b..0000000000
--- a/epan/wspython/wspy_proto.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/* wspy_proto.c
- *
- * Wireshark Protocol Python Binding
- *
- * Copyright (c) 2009 by Sebastien Tandel <sebastien [AT] tandel [dot] be>
- * Copyright (c) 2001 by Gerald Combs <gerald@wireshark.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include "config.h"
-
-#ifdef HAVE_PYTHON
-#include <Python.h>
-
-#include <glib.h>
-
-#include <stdio.h>
-
-#include "proto.h"
-
-
-hf_register_info *hf_register_info_create(const guint8 size)
-{
- hf_register_info *hf = g_malloc0(sizeof(hf_register_info) * size);
-
- /**STA TODO :
- * if (!hf_register_info)
- * raise exception
- */
-
- return hf;
-}
-
-void hf_register_info_destroy(hf_register_info *hf)
-{
- if (hf) {
- g_free(hf);
- }
-}
-
-void hf_register_info_add(hf_register_info *hf, guint8 index,
- int *p_id, const char *name, const char *abbrev,
- enum ftenum type, int display, const void *strings,
- guint32 bitmask, const char *blurb)
-{
- hf[index].p_id = p_id;
- hf[index].hfinfo.name = name;
- hf[index].hfinfo.abbrev = abbrev;
- hf[index].hfinfo.type = type;
- hf[index].hfinfo.display = display;
- hf[index].hfinfo.strings = strings;
- hf[index].hfinfo.bitmask = bitmask;
- hf[index].hfinfo.blurb = blurb;
- hf[index].hfinfo.id = 0;
- hf[index].hfinfo.parent = 0;
- hf[index].hfinfo.ref_type = HF_REF_TYPE_NONE;
- hf[index].hfinfo.same_name_next = NULL;
- hf[index].hfinfo.same_name_prev_id = -1;
-}
-
-void hf_register_info_print(hf_register_info *hf, guint8 size)
-{
- guint8 c;
- if (!hf)
- return;
-
- for (c = 0; c < size; c++) {
- printf("%s : %s : %s\n", hf[c].hfinfo.name,
- hf[c].hfinfo.abbrev,
- hf[c].hfinfo.blurb);
- }
-}
-
-#endif /* HAVE_PYTHON */
diff --git a/epan/wspython/wspy_proto.h b/epan/wspython/wspy_proto.h
deleted file mode 100644
index 6d98ca79c6..0000000000
--- a/epan/wspython/wspy_proto.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* wspy_proto.h
- *
- * Wireshark Protocol Python Binding
- *
- * Copyright (c) 2009 by Sebastien Tandel <sebastien [AT] tandel [dot] be>
- * Copyright (c) 2001 by Gerald Combs <gerald@wireshark.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-#ifndef __WS_PY_PROTO_H__
-#define __WS_PY_PROTO_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#ifdef HAVE_PYTHON
-hf_register_info *hf_register_info_create(const guint8 size);
-void hf_register_info_destroy(hf_register_info *hf);
-void hf_register_info_add(hf_register_info *hf, guint8 index,
- int *p_id, const char *name, const char *abbrev,
- enum ftenum type, int display, const void *strings,
- guint32 bitmask, const char *blurb);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __WS_PY_PROTO_H__ */
diff --git a/epan/wspython/wspy_register.c b/epan/wspython/wspy_register.c
deleted file mode 100644
index 5c7228d192..0000000000
--- a/epan/wspython/wspy_register.c
+++ /dev/null
@@ -1,230 +0,0 @@
-/* wspy_register.c
- *
- * Wireshark Protocol Python Binding
- *
- * Copyright (c) 2009 by Sebastien Tandel <sebastien [AT] tandel [dot] be>
- * Copyright (c) 2001 by Gerald Combs <gerald@wireshark.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include "config.h"
-
-#ifdef HAVE_PYTHON
-#include <Python.h>
-
-#include <glib.h>
-
-#include <stdio.h>
-
-#include "epan.h"
-#include "proto.h"
-#include "packet.h"
-#include "tvbuff.h"
-#include "filesystem.h"
-
-#include "wspy_register.h"
-
-/* hash table containing all the registered python dissectors */
-GHashTable * g_py_dissectors=NULL;
-
-/**
- * Global objects that python method dissect() will get. Avoid to write a
- * function for each proto_tree*.
- * Is it the only way to do that? I can't believe it ... think about it
- */
-tvbuff_t * g_tvb = NULL;
-packet_info * g_pinfo = NULL;
-proto_tree * g_tree = NULL;
-
-
-/* Initialization of the Python Interpreter */
-static inline
-void wspy_init(void)
-{
- Py_Initialize();
-}
-
-/* Finalization of the Python Interpreter */
-static inline
-void wspy_finalize(void)
-{
- Py_Finalize();
-}
-
-/*const char * py_dissector_short_desc(PyObject * py_dissector)
-{
-}*/
-
-/**
- * Returns the __str__ of the python object
- */
-char * py_dissector_name(PyObject * py_dissector)
-{
- PyObject * py_object_name;
-
- assert(py_dissector);
- py_object_name = PyObject_Str(py_dissector);
-
-#if PY_MAJOR_VERSION == 2
- return PyString_AS_STRING(py_object_name);
-#else
- return PyUnicode_AsString(py_object_name);
-#endif
-}
-
-/**
- * Register the dissector
- */
-void py_dissector_register(PyObject * py_dissector)
-{
- /**
- * Register protocol, fields, subtrees
- *
- * Done by calling register method of the object
- */
- PyObject_CallMethod(py_dissector, "register_protocol", NULL);
-
-}
-
-static const char *get_py_register_file(void)
-{
- static const char * wspython_register_file = NULL;
-
- if (!wspython_register_file) {
-#ifdef _WIN32
- wspython_register_file = g_strdup_printf("%s\\register-dissector.py", get_wspython_dir());
-#else
- wspython_register_file = g_strdup_printf("%s/register-dissector.py", get_wspython_dir());
-#endif /* _WIN32 */
- }
- return wspython_register_file;
-}
-
-/**
- * Finds out all the python dissectors and register them
- */
-void register_all_py_protocols_func(void)
-{
- FILE * py_reg;
- PyObject * global_dict, * main_module, * register_fn;
- PyObject * py_dissectors, * py_dissector;
- PyObject * py_args;
- Py_ssize_t index;
- char * name;
-
- /* intialize the hash table where all the python dissectors are kept */
- g_py_dissectors = g_hash_table_new(g_str_hash, g_str_equal);
-
- /* STA TODO : init only if prefs is enabled */
- wspy_init();
-
- /* load the python register module */
- py_reg = fopen(get_py_register_file(), "r");
- if (py_reg == NULL) {
- printf("Can't open Python registration file: %s\n", get_py_register_file());
- return;
- }
- PyRun_SimpleFile(py_reg, get_py_register_file());
-
- /* Getting the global symbols from the python register module */
- main_module = PyImport_AddModule("__main__");
- global_dict = PyModule_GetDict(main_module);
-
- /* Get the python register function */
- register_fn = PyDict_GetItemString(global_dict, "register_dissectors");
- if (register_fn == NULL) {
- printf("Error in Python registration file: %s\n", get_py_register_file());
- return;
- }
-
- /* Execute the python register function */
- /* This function returns a sequence of python dissectors objects */
- py_args = Py_BuildValue("ss", get_wspython_dir(), get_plugins_pers_dir());
- py_dissectors = PyObject_CallObject(register_fn, py_args);
-
- /* Check that the py_dissectors is really a sequence */
- if (!py_dissectors || !PySequence_Check(py_dissectors)) {
- printf("Python dissectors not registered ...\n");
- return;
- }
-
- /**
- * For each dissector, register it in cb and registers all fields, subtrees,
- * protocol name, etc ...
- */
- for (index = 0; (py_dissector = PySequence_GetItem(py_dissectors, index)); index++)
- {
- name = py_dissector_name(py_dissector);
- py_dissector_register(py_dissector);
- g_hash_table_insert(g_py_dissectors, (gpointer*)name, py_dissector);
- }
-}
-
-void py_dissector_args(tvbuff_t ** tvb, packet_info ** pinfo, proto_tree ** tree)
-{
- *tvb = g_tvb;
- *pinfo = g_pinfo;
- *tree = g_tree;
-}
-
-/*
- * Generic Python Dissector
- *
- * Search the correct PyObject dissector based on
- * pinfo->current_proto in the hash table py_dissectors.
- *
- * We then call the method "dissect" of this PyObject.
- */
-void py_dissect(tvbuff_t * tvb, packet_info * pinfo,
- proto_tree * tree)
-{
- PyObject * py_dissector;
-
- /* printf("pinfo->current_proto : %s\n", pinfo->current_proto); */
- /* NOTE => pinfo->current_proto == "HomePlug" */
-
- g_tree = tree;
- g_pinfo = pinfo;
- g_tvb = tvb;
-
- py_dissector = g_hash_table_lookup(g_py_dissectors, pinfo->current_proto);
- assert(py_dissector);
-
- PyObject_CallMethod(py_dissector, "pre_dissect", NULL);
-}
-
-dissector_handle_t py_create_dissector_handle(const int proto)
-{
- return create_dissector_handle(&py_dissect, proto);
-}
-
-static void register_all_py_handoffs_foreach(gpointer key _U_, gpointer value, gpointer user_data _U_)
-{
- PyObject * py_dissector = (PyObject *)value;
-
- PyObject_CallMethod(py_dissector, "register_handoff", NULL);
-}
-
-/**
- * Finalize the registration of the python protocol dissectors
- */
-void
-register_all_py_handoffs_func(void)
-{
- g_hash_table_foreach(g_py_dissectors, register_all_py_handoffs_foreach, NULL);
-}
-
-#endif /* HAVE_PYTHON */
diff --git a/epan/wspython/wspy_register.h b/epan/wspython/wspy_register.h
deleted file mode 100644
index 0d18a6e8c2..0000000000
--- a/epan/wspython/wspy_register.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/* wspy_register.h
- *
- * Wireshark Protocol Python Binding
- *
- * Copyright (c) 2009 by Sebastien Tandel <sebastien [AT] tandel [dot] be>
- * Copyright (c) 2001 by Gerald Combs <gerald@wireshark.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-#ifndef __WS_PY_REGISTER_H__
-#define __WS_PY_REGISTER_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#ifdef HAVE_PYTHON
-void register_all_py_protocols_func(void);
-void register_all_py_handoffs_func(void);
-
-WS_DLL_PUBLIC
-dissector_handle_t py_create_dissector_handle(const int proto);
-WS_DLL_PUBLIC
-void py_dissector_args(tvbuff_t ** tvb, packet_info ** pinfo, proto_tree ** tree);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __WS_PY_REGISTER_H__ */