Dshell is a network forensic analysis framework.

Related tags

NetworkingDshell
Overview

Dshell

An extensible network forensic analysis framework. Enables rapid development of plugins to support the dissection of network packet captures.

Key features:

  • Deep packet analysis using specialized plugins
  • Robust stream reassembly
  • IPv4 and IPv6 support
  • Custom output handlers
  • Chainable plugins

Requirements

Optional

  • oui.txt
    • used by some plugins that handle MAC addresses
    • place in /data/
  • elasticsearch
    • used in the elasticout output module
    • only necessary if planning to use elasticsearch to store output
  • pyJA3
    • used in the tls plugin

Major Changes Since Previous Release

  • This is a major framework update to Dshell. Plugins written for the previous version are not compatible with this version, and vice versa.
  • Uses Python 3
    • Rewritten in Python 3 from the ground up. Python 2 language deprecated on 1 JAN 2020
    • By extension, dpkt and pypcap have been replaced with Python3-friendly pypacker and pcapy (respectively).
  • Is a Python package
    • Converted into a single package, removing the need for the shell to set several environment variables.
    • Allows easier use of Dshell plugins in other Python scripts
  • Changed "decoders" to "plugins"
    • Primarily a word-swap, to clarify that "decoders" can do more than simply decode traffic, and to put Dshell more in line with the terminology of other frameworks.
  • Significant reduction in camelCase functions, replaced with more Pythonic snake_case functions.
    • Notable examples include blobHandler->blob_handler, rawHandler->raw_handler, connectionInitHandler->connection_init_handler, etc.
  • All plugins are now chainable
    • To accommodate this, handler functions in plugins must now use return statements indicating whether a packet, connection, or similar will continue to the next plugin. The type of object(s) to return depends on the type of handler, but will generally match the types of the handler's input. Dshell will display a warning if it's not the right type.
  • Plugins can now use all output modules* available to the command line switch, -O
    • That does not mean every output module will be useful to every plugin (e.g. using netflow output for a plugin that looks at individual packets), but they are available.
    • alert(), write(), and dump() are now the same function: write()
    • Output modules can be listed with a new flag in decode.py, --list-output or --lo
    • Arguments for output modules are now passed with the --oargs command-line argument
    • * pcapout is (currently) the exception to this rule. A method has yet to arise that allows it to work with connection-based plugins
  • No more dObj declaration
    • decode.py just looks for the class named DshellPlugin and creates an instance of that
  • Improved error handling
    • Dshell handles more of the most common exceptions during everyday use
  • Enables development of external plugin packs, allowing the sharing and installation of new, externally-developed plugins without overlapping the core Dshell libraries.

Installation

  1. Install Dshell with pip
  • sudo python3 -m pip install Dshell/ OR sudo python3 -m pip install
  1. Configure geoip2 by moving the MaxMind data files (GeoLite2-ASN.mmdb, GeoLite2-City.mmdb, GeoLite2-Country.mmdb) to /data/GeoIP/
  2. Run dshell. This should drop you into a Dshell> prompt.

Basic Usage

  • decode -l
    • This will list all available plugins, alongside basic information about them
  • decode -h
    • Show generic command-line flags available to most plugins
  • decode -p
    • Display information about a plugin, including available command line flags
  • decode -p
    • Run the selected plugin on a pcap file
  • decode -p +
    • Chain two (or more) plugins together and run them on a pcap file
  • decode -p -i
    • Run the selected plugin live on an interface (may require superuser privileges)

Usage Examples

Showing DNS lookups in sample traffic

Dshell> decode -p dns ~/pcap/dns.cap |sort
[DNS] 2005-03-30 03:47:46    192.168.170.8:32795 --   192.168.170.20:53    ** ID: 4146, TXT? google.com., TXT: b'\x0fv=spf1 ptr ?all' **
[DNS] 2005-03-30 03:47:50    192.168.170.8:32795 --   192.168.170.20:53    ** ID: 63343, MX? google.com., MX: b'\x00(\x05smtp4\xc0\x0c', MX: b'\x00\n\x05smtp5\xc0\x0c', MX: b'\x00\n\x05smtp6\xc0\x0c', MX: b'\x00\n\x05smtp1\xc0\x0c', MX: b'\x00\n\x05smtp2\xc0\x0c', MX: b'\x00(\x05smtp3\xc0\x0c' **
[DNS] 2005-03-30 03:47:59    192.168.170.8:32795 --   192.168.170.20:53    ** ID: 18849, LOC? google.com. **
[DNS] 2005-03-30 03:48:07    192.168.170.8:32795 --   192.168.170.20:53    ** ID: 39867, PTR? 104.9.192.66.in-addr.arpa., PTR: 66-192-9-104.gen.twtelecom.net. **
[DNS] 2005-03-30 03:49:18    192.168.170.8:32795 --   192.168.170.20:53    ** ID: 30144, A? www.netbsd.org., A: 204.152.190.12 (ttl 82159s) **
[DNS] 2005-03-30 03:49:35    192.168.170.8:32795 --   192.168.170.20:53    ** ID: 61652, AAAA? www.netbsd.org., AAAA: 2001:4f8:4:7:2e0:81ff:fe52:9a6b (ttl 86400s) **
[DNS] 2005-03-30 03:50:35    192.168.170.8:32795 --   192.168.170.20:53    ** ID: 32569, AAAA? www.netbsd.org., AAAA: 2001:4f8:4:7:2e0:81ff:fe52:9a6b (ttl 86340s) **
[DNS] 2005-03-30 03:50:44    192.168.170.8:32795 --   192.168.170.20:53    ** ID: 36275, AAAA? www.google.com., CNAME: 'www.l.google.com.' **
[DNS] 2005-03-30 03:50:54    192.168.170.8:32795 --   192.168.170.20:53    ** ID: 56482, AAAA? www.l.google.com. **
[DNS] 2005-03-30 03:51:35    192.168.170.8:32795 --   192.168.170.20:53    ** ID: 48159, AAAA? www.example.com. **
[DNS] 2005-03-30 03:51:46    192.168.170.8:32795 --   192.168.170.20:53    ** ID: 9837, AAAA? www.example.notginh., NXDOMAIN **
[DNS] 2005-03-30 03:52:17    192.168.170.8:32795 --   192.168.170.20:53    ** ID: 65251, AAAA: 2001:4f8:0:2::d (ttl 600s), A: 204.152.184.88 (ttl 600s) **
[DNS] 2005-03-30 03:52:17    192.168.170.8:32796 --   192.168.170.20:53    ** ID: 23123, PTR? 1.0.0.127.in-addr.arpa., PTR: localhost. **
[DNS] 2005-03-30 03:52:17    192.168.170.8:32797 --   192.168.170.20:53    ** ID: 8330, NS: b'\x06ns-ext\x04nrt1\xc0\x0c', NS: b'\x06ns-ext\x04sth1\xc0\x0c', NS: b'\x06ns-ext\xc0\x0c', NS: b'\x06ns-ext\x04lga1\xc0\x0c' **
[DNS] 2005-03-30 03:52:17   192.168.170.56:1707  --      217.13.4.24:53    ** ID: 12910, SRV? _ldap._tcp.Default-First-Site-Name._sites.dc._msdcs.utelsystems.local., NXDOMAIN **
[DNS] 2005-03-30 03:52:17   192.168.170.56:1708  --      217.13.4.24:53    ** ID: 61793, SRV? _ldap._tcp.dc._msdcs.utelsystems.local., NXDOMAIN **
[DNS] 2005-03-30 03:52:17   192.168.170.56:1709  --      217.13.4.24:53    ** ID: 33633, SRV? _ldap._tcp.05b5292b-34b8-4fb7-85a3-8beef5fd2069.domains._msdcs.utelsystems.local., NXDOMAIN **
[DNS] 2005-03-30 03:52:17   192.168.170.56:1710  --      217.13.4.24:53    ** ID: 53344, A? GRIMM.utelsystems.local., NXDOMAIN **
[DNS] 2005-03-30 03:52:25   192.168.170.56:1711  --      217.13.4.24:53    ** ID: 30307, A? GRIMM.utelsystems.local., NXDOMAIN **

Following and reassembling a stream in sample traffic

Index of /

Index of /

Icon  Name                    Last modified      Size  Description
  
[DIR] 202-vorbereitung/ 06-Jul-2007 14:31 - [   ] Efficient_Video_on_d..> 19-Dec-2006 03:17 291K [   ] Welcome Stranger!!! 28-Dec-2006 03:46 0 [TXT] barschel.htm 31-Jul-2007 02:21 44K [DIR] bnd/ 30-Dec-2006 08:59 - [DIR] cia/ 28-Jun-2007 00:04 - [   ] cisco_ccna_640-801_c..> 28-Dec-2006 03:48 236K [DIR] doc/ 19-Sep-2006 01:43 - [DIR] freenetproto/ 06-Dec-2006 09:00 - [DIR] korrupt/ 03-Jul-2007 11:57 - [DIR] mp3_technosets/ 04-Jul-2007 08:56 - [TXT] neues_von_rainald_go..> 21-Mar-2007 23:27 31K [TXT] neues_von_rainald_go..> 21-Mar-2007 23:29 36K [   ] pruef.pdf 28-Dec-2006 07:48 88K
">
Dshell> decode -p followstream ~/pcap/v6-http.cap 
Connection 1 (TCP)
Start: 2007-08-05 15:16:44.189851
End:   2007-08-05 15:16:44.219460
2001:6f8:102d:0:2d0:9ff:fee3:e8de: 59201 -> 2001:6f8:900:7c0::2:    80 (300 bytes)
2001:6f8:900:7c0::2:    80 -> 2001:6f8:102d:0:2d0:9ff:fee3:e8de: 59201 (2379 bytes)

GET / HTTP/1.0
Host: cl-1985.ham-01.de.sixxs.net
Accept: text/html, text/plain, text/css, text/sgml, */*;q=0.01
Accept-Encoding: gzip, bzip2
Accept-Language: en
User-Agent: Lynx/2.8.6rel.2 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.8b



HTTP/1.1 200 OK
Date: Sun, 05 Aug 2007 19:16:44 GMT
Server: Apache
Content-Length: 2121
Connection: close
Content-Type: text/html



 
  Index of /
 
 

Index of /

Icon  Name                    Last modified      Size  Description
    
[DIR] 202-vorbereitung/ 06-Jul-2007 14:31 - [   ] Efficient_Video_on_d..> 19-Dec-2006 03:17 291K [   ] Welcome Stranger!!! 28-Dec-2006 03:46 0 [TXT] barschel.htm 31-Jul-2007 02:21 44K [DIR] bnd/ 30-Dec-2006 08:59 - [DIR] cia/ 28-Jun-2007 00:04 - [   ] cisco_ccna_640-801_c..> 28-Dec-2006 03:48 236K [DIR] doc/ 19-Sep-2006 01:43 - [DIR] freenetproto/ 06-Dec-2006 09:00 - [DIR] korrupt/ 03-Jul-2007 11:57 - [DIR] mp3_technosets/ 04-Jul-2007 08:56 - [TXT] neues_von_rainald_go..> 21-Mar-2007 23:27 31K [TXT] neues_von_rainald_go..> 21-Mar-2007 23:29 36K [   ] pruef.pdf 28-Dec-2006 07:48 88K

Chaining plugins to view flow data for a specific country code in sample traffic (note: TCP handshakes are not included in the packet count)

Dshell> decode -p country+netflow --country_code=JP ~/pcap/SkypeIRC.cap
2006-08-25 15:32:20.766761       192.168.1.2 ->  202.232.205.123  (-- -> JP)   UDP   60583   33438     1      0       64        0  0.0000s
2006-08-25 15:32:20.634046       192.168.1.2 ->  202.232.205.123  (-- -> JP)   UDP   60583   33435     1      0       64        0  0.0000s
2006-08-25 15:32:20.747503       192.168.1.2 ->  202.232.205.123  (-- -> JP)   UDP   60583   33437     1      0       64        0  0.0000s
2006-08-25 15:32:20.651501       192.168.1.2 ->  202.232.205.123  (-- -> JP)   UDP   60583   33436     1      0       64        0  0.0000s

Collecting DNS traffic from several files and storing it in a new pcap file.

Dshell> decode -p dns+pcapwriter --pcapwriter_outfile=test.pcap ~/pcap/*.cap >/dev/null
Dshell> tcpdump -nnr test.pcap |head
reading from file test.pcap, link-type EN10MB (Ethernet)
15:36:08.670569 IP 192.168.1.2.2131 > 192.168.1.1.53: 40209+ A? ui.skype.com. (30)
15:36:08.670687 IP 192.168.1.2.2131 > 192.168.1.1.53: 40210+ AAAA? ui.skype.com. (30)
15:36:08.674022 IP 192.168.1.1.53 > 192.168.1.2.2131: 40209- 1/0/0 A 212.72.49.131 (46)
15:36:09.011208 IP 192.168.1.1.53 > 192.168.1.2.2131: 40210 0/1/0 (94)
15:36:10.171350 IP 192.168.1.2.2131 > 192.168.1.1.53: 40210+ AAAA? ui.skype.com. (30)
15:36:10.961350 IP 192.168.1.1.53 > 192.168.1.2.2131: 40210* 0/1/0 (85)
15:36:10.961608 IP 192.168.1.2.2131 > 192.168.1.1.53: 40211+ AAAA? ui.skype.com. (30)
15:36:11.294333 IP 192.168.1.1.53 > 192.168.1.2.2131: 40211 0/1/0 (94)
15:32:21.664798 IP 192.168.1.2.2130 > 192.168.1.1.53: 39862+ A? ui.skype.com. (30)
15:32:21.664913 IP 192.168.1.2.2130 > 192.168.1.1.53: 39863+ AAAA? ui.skype.com. (30)

Collecting TFTP data and converting alerts to JSON format using sample traffic

Dshell> decode -p tftp -O jsonout ~/pcap/tftp_*.pcap
{"dport": 3445, "dip": "192.168.0.10", "data": "read  rfc1350.txt (24599 bytes) ", "sport": 50618, "readwrite": "read", "sip": "192.168.0.253", "plugin": "tftp", "ts": 1367411051.972852, "filename": "rfc1350.txt"}
{"dport": 2087, "dip": "192.168.0.13", "data": "write rfc1350.txt (24599 bytes) ", "sport": 57509, "readwrite": "write", "sip": "192.168.0.1", "plugin": "tftp", "ts": 1367053679.45274, "filename": "rfc1350.txt"}

Running a plugin within a separate Python script using sample traffic

# Import required Dshell libraries
import dshell.decode as decode
import dshell.plugins.tftp.tftp as tftp

# Instantiate plugin
plugin = tftp.DshellPlugin()
# Define plugin-specific arguments, if needed
dargs = {plugin: {"outdir": "/tmp/"}}
# Add plugin(s) to plugin chain
decode.plugin_chain = [plugin]
# Run decode main function with all other arguments
decode.main(
    debug=True,
    files=["/home/user/pcap/tftp_rrq.pcap", "/home/user/pcap/tftp_wrq.pcap"],
    plugin_args=dargs
)
Comments
  • Captureing network traffic and MaxMind GeoLite databases

    Captureing network traffic and MaxMind GeoLite databases

    Hello,

    I need your help on two points:

    1. I want to record a PCAP file using the decoder.

    I try the following command:

    decode -d writer -i INTERFACE -o pcap FILE NAME

    He gives me the following error message:

    WARNING:writer:rawHandler() got an unexpected keyword argument 'smac'

    Do you know what it is?

    1. The Dshell guide says that you should copy the following databases into the GeoIP folder:

    GeoIP.dat, GeoIPv6.dat, GeoIPASNum.dat, GeoIPASNumv6.dat

    The linked URL "https://dev.maxmind.com/geoip/geoip2/geolite2/" only has the GeoLite2 databases left:

    GeoLite2 City, ... Country, ... ASN

    These contain databases, but no longer the files mentioned above.

    Does this still work?

    opened by ghost 12
  • No results running live capture's plugins on interfaces

    No results running live capture's plugins on interfaces

    Hey! I hope this message finds you well.

    So, I'm trying to run some plugins to live capture on a well configured interface and I got no results.

    The Dshell prompt is presented again after I execute the decode command.

    Dshell> decode -i ens5f0 -d search --search_expression UPDATE Dshell>

    Any help?

    Best regards.

    opened by paulofdantas 7
  • Override line-break delimiter for followstream module

    Override line-break delimiter for followstream module

    This may just be personal preference, but the line-break added to the end of each blob in followstream output makes typical flows more difficult to read (for me). Without the line-break, the output more closely approximates that of Wireshark's follow stream output.

    opened by amm3 7
  • Documentation  README.md unclear regarding /share/GeoIP/

    Documentation README.md unclear regarding /share/GeoIP/

    README.md states:

    1. Configure pygeoip by moving the MaxMind data files (GeoIP.dat, GeoIPv6.dat, GeoIPASNum.dat, GeoIPASNumv6.dat) to /share/GeoIP/"

    Should that be /home/[username]/share/GeoIP

    or

    sudo mkdir /usr/local/share/GeoIP/ ?

    It is a bit unclear in README.md.

    opened by pauljamesharper 6
  • Error with created Connection for chained decoders

    Error with created Connection for chained decoders

    Pull #99 created a case where, if a decoder (such as xor) internally creates a Connection (e.g. for use with downstream chained decoders), the new object's nextoffset member references NoneType values instead of integers. And within the context of normal chained decoder operation, there is no condition wherein IPHandler would be called with a SYN flag to establish the natural starting offsets.

    Prior to #99, the default values were 0, so the internal object would function, albeit with artificial sequence numbers.

    My proposed solution is to manually (in the decoder) set the starting values of nextoffset to match the values of the "parent" Connection.

    Note: This condition doesn't impact other chainable decoders (such as country filters or grep) because those decoders don't create a new Connection object. They simply select which connections to pass downstream vs not.

    For reference, the following error was observed running xor+followstream, leading to the identification of this bug:

    ARNING:xor:unsupported operand type(s) for +: 'NoneType' and 'int'
    WARNING:xor:unsupported operand type(s) for +: 'NoneType' and 'int'
    WARNING:xor:unsupported operand type(s) for +: 'NoneType' and 'int'
    
    opened by amm3 5
  • Create ALT-Makefile

    Create ALT-Makefile

    make file for Linux System packaging , at least friendlier DESTDIR=/opt/Dshell

    may be some to-do's per say ,

    but with SRPM spec from others or debian control spec , and or my ebuild
    MV Makefile Makefile.orginal mv ALT-Makefile Makefile Emake ALL

    also can add on third party Plugins /decoders via packaging and call a script to build or rebuild decoders allowing $USER/.dshell/logs etc to be made might be an improvement if not running as sudo/su.

    Make Dshell use avalible to more users.

    opened by necrose99 5
  • strip layers for pppoe and other layer

    strip layers for pppoe and other layer

    Hi

    I can't seem to get dshell working with pcaps saved to disk or traffic from an interface. In wireshark the traffic has the pppoe layer above the ethernet layer, and another layer above the pppoe one, which wireshark calls 'Point-to-point Protocol' and is 2 bytes in length.

    I've started dshell with --strip= all numbers from 1 to 6, with nothing happening, the pcap definitely has dns traffic in it. --strip requires an int, so what should I give it?

    Many thanks

    opened by biatwc 5
  • is it possible to include the sample pcap in the project?

    is it possible to include the sample pcap in the project?

    I haven't do the network data capture and analysis for quite a while. mainly because being lazy. is it possible to include those pcap files mentioned in the README file ?

    opened by zinking 5
  • setup.py, Python Distutils

    setup.py, Python Distutils

    DestDir isnt cleanly defined in makefile so thus its a royal pest to package DSHELL on many distros....

    gentoo uses sandbox /var/portage/$Packagename/$package-version/build , D$ would fake the root based on DestDir's else i have to force {$ROOT} to force make a root-fs tree in sandbox (and it works about as well as a cluster-F####) {9999 is customary for Live-git version } once built then it gets copied over to actual install tree and temp paths removed. unfortunately .dshellrc dshell-decode dshell gets real paths and has to get fixed. basically it jumps out of security sandbox so it doesn't package well as is.
    however python most of all DISTUTILS packages goes up without a hitch. some require nominal patching to behave...

    A: distro or system Agnostic is the power of distutils https://docs.python.org/2/distutils/setupscript.html ie python setup.py /Dshell/share/GeoIP copy if exsits /usr/share/GeoIP file symlinks etc.
    B: makes for Easier Agnostic Packaging by Linux distros , adds consistent directories for 3rd parity add on modules. C: Can define USER or SYSTEM mode installs default-sysntem .dshell > /etc/skel/ so thus it is copied over to many users on login (usr /home/$username/Dshell-path/....... Symlink /opt/bin/Dshell or /usr/bin/Dshell/ dshell-decode dshell @/usr/bin Dshell/docs to /usr/share/doc/Dshell as many of the docs are dynamically generated. d: RPM/DEB /MSI ETC are a nice added bonus feature of python distutils , In theory Dshell could be just as easily patched for windows Boxes with a good and proper Python setup. and or even MACOS etc natives. as add-on modules that do added packaging, RPM or Deb , etc could be added on to the main modules , and then system packages generated for users conveniences latter. E: find any missing docs or apply updates. new modules etc.

    https://pythonhosted.org/setuptools/python3.html https://github.com/pypa/sampleproject https://docs.python.org/2.0/dist/creating-rpms.html https://ghantoos.org/2008/10/19/creating-a-deb-package-from-a-python-setuppy/ http://cyrille.rossant.net/create-a-standalone-windows-installer-for-your-python-application/

    [install] prefix=/usr/bin/Dshell install_lib=//usr/bin/Dshell/lib install_scripts=/usr/bin/Dshell/bin etc.

    [bdist_wininst] prefix=/c:/Dshell install_lib=/some/lib/path install_scripts=/some/bin/path

    opened by necrose99 4
  • ElasticSearch Output module

    ElasticSearch Output module

    This is a new output module for elasticsearch. It works standalone with --output elasticout,host=ES_HOST,index=INDEXNAME, but I find it also useful to extend the class. This allows for more centralized control over the cluster and dynamic/deterministic index names and doc IDs.

    opened by amm3 4
  • pcapslice

    pcapslice

    This is a utility to split pcap files by ip src/dst pair or tcp/udp stream using Dshell's PCAPWriter() to write the output files. This is sometimes useful when trying to process pcap in dshell that contains numerous and interleaved really large streams.

    opened by amm3 4
  • module 'distutils.sysconfig' has no attribute '_init_posix'

    module 'distutils.sysconfig' has no attribute '_init_posix'

    There seems to be an issue with installing pcapy: https://github.com/helpsystems/pcapy/issues/73 which is preventing installation of DShell.

    Collecting pcapy
      Downloading pcapy-0.11.4.tar.gz (37 kB)
      Preparing metadata (setup.py) ... error
      error: subprocess-exited-with-error
      
      × python setup.py egg_info did not run successfully.
      │ exit code: 1
      ╰─> [6 lines of output]
          Traceback (most recent call last):
            File "<string>", line 2, in <module>
            File "<pip-setuptools-caller>", line 34, in <module>
            File "/tmp/pip-install-nqz_zlei/pcapy_e1a8e2d5b3794862af12f48d4e4fdfdc/setup.py", line 49, in <module>
              save_init_posix = sysconfig._init_posix
          AttributeError: module 'distutils.sysconfig' has no attribute '_init_posix'
          [end of output]
    

    It appears unlikely that pcapy will release a fix for the issue since the latest commit was back in 2019. A possible work around is to use pcapy-ng (https://github.com/stamparm/pcapy-ng/) instead pcapy. Update the pcapy to pcapy-ng in setup.py

        install_requires=[
            "geoip2",
            "pcapy-ng",
            "pypacker",
        ],
    
    opened by eddocode 0
  • Blob handling

    Blob handling

    It appears that the blob_handler() function isn't getting called at certain critical junctures. My understanding was that the core code would call this function (if defined in a plugin) as it processed packets, every time the stream changed direction. It actually looks like the blob_handlers aren't called until the connection closes and the blobs are formed/iterated.

    opened by amm3 3
  • Updates to TLS module

    Updates to TLS module

    • Moves parsing of TLS extensions to a common function, invoked in parsing both the ClientHello and ServerHello.
    • Includes SSL/TLS version string in primary output and kw values
    opened by amm3 0
  • VLAN Wrapper Not Applied to Pcapy Reader

    VLAN Wrapper Not Applied to Pcapy Reader

    The only invocation of setfilter() on the capture device (pcapy.Reader class) is based on the initial_bpf from the first plugin on the chain.

    Because of this, any efforts to expand the filter are moot. Narrowing of the filter seems effective through manipulating compiled bpf filters on the plugin objects, but only the packets pulled from the wire or file (governed by the pcapy.Reader filter) are ever passed to the feed_plugin_chain function.

    It seems we may need a mechanism to update the Reader filter when bpf filters are changed in the plugin chain. But this is not trivial, because recompiling bpf happens in the plugin object and the instantiated Reader appears only in decode.py.

    I initially noticed this because the automatic vlan wrapper wasn't working with any plugin on vlan tagged PCAP files, but it has potential effects also in chained plugins and plugins that dynamically alter their bpf filters.

    opened by amm3 2
Releases(v3.1.3)
  • v3.1.3(Sep 22, 2020)

    Major version update/rewrite to Dshell, now using Python 3. See README for more details.

    Highlights:

    • This is a major framework update to Dshell. Plugins written for the previous version are not compatible with this version, and vice versa.
    • Uses Python 3
      • Rewritten in Python 3 from the ground up. Python 2 language deprecated on 1 JAN 2020
      • By extension, dpkt and pypcap have been replaced with Python 3-friendly pypacker and pcapy (respectively).
    • Is a Python package
    • All plugins are chainable
    • Plugins can use all output modules
    • Improved error handling
    • Enables development of external plugin packs, allowing the sharing and installation of new, externally-developed plugins without overlapping the core Dshell libraries.
    Source code(tar.gz)
    Source code(zip)
  • v2.4.10(Sep 1, 2020)

    Tagging the current version of Dshell 2 in preparation for our upcoming release of Dshell 3, the new version of Dshell for Python 3. See the README 'News' section for more information.

    Source code(tar.gz)
    Source code(zip)
Owner
DEVCOM Army Research Laboratory
Discover, innovate, and transition science and technology to ensure dominant strategic land power.
DEVCOM Army Research Laboratory
Python implementation of the IPv8 layer provide authenticated communication with privacy

Python implementation of the IPv8 layer provide authenticated communication with privacy

203 Oct 26, 2022
The OUCH Project - OUCH Server/Client

This software simulates OUCH Server/Client communication through a script which initialises a central server and another script which simulates clients connecting to the server.

Jahin Z. 2 Dec 10, 2022
Extended refactoring capabilities for Python LSP Server using Rope.

pylsp-rope Extended refactoring capabilities for Python LSP Server using Rope. This is a plugin for Python LSP Server, so you also need to have it ins

36 Dec 24, 2022
👨🏼‍💻 ‎‎‎‏‏ A customizable man-in-the-middle TCP proxy with out-of-the-box support for HTTP & HTTPS.

👨‍💻 mitm A customizable man-in-the-middle TCP proxy with out-of-the-box support for HTTP & HTTPS. Installing pip install mitm Note that OpenSSL 1.1

Felipe 92 Jan 05, 2023
A simple python application for generating a WiFi QR code for ease of connection

A simple python application for generating a WiFi QR code Initialize the class by providing QR code values WiFi_QR_Code(self, error_correction: int =

Ivan 2 Aug 01, 2022
This Tool Help To Information gathering for domain name or ip address...

Owl-Eye This Tool Help To Information gathering for domain name or ip address... follow this command $apt update && upgrade $apt install python apt in

Black Owl 6 Nov 12, 2022
This repository contain sample code of gRPC Communication between Python and GoLang

This repository contain sample code of gRPC Communication between Python and GoLang, the Server is running on GoLang while Python is running the client

Abdullahi Muhammad 2 Nov 29, 2021
Nautobot is a Network Source of Truth and Network Automation Platform.

Nautobot is a Network Source of Truth and Network Automation Platform. Nautobot was initially developed as a fork of NetBox (v2.10.4). Nautobot runs as a web application atop the Django Python framew

Nautobot 549 Dec 31, 2022
Utility for converting IP Fabric webhooks into a Teams format.

IP Fabric Webhook Integration for Microsoft Teams Setup IP Fabric Setup Go to Settings Webhooks Add webhook Provide a name URL will be: 'http://Y

Community Fabric 1 Jan 26, 2022
This program ingests a Cisco "sh ip arp" as a text file and produces the list of vendors seen in the file

IP-ARP-Vendor_lookup This program ingests a Cisco "sh ip arp" as a text file and produces the list of vendors seen in the file Why? Answers the questi

Stew Alexander 1 Dec 24, 2022
Evaluation of TCP BBRv1 in wireless networks

The Network Simulator, Version 3 Table of Contents: An overview Building ns-3 Running ns-3 Getting access to the ns-3 documentation Working with the d

3 Nov 01, 2021
Ping Verification Python Script

Python Script Port Scanner Script WHAT IS IT? Port scanner script using Python. HOW IT WORKS Once the script has been executed, it will request the ta

AC 0 Dec 12, 2021
A simple python script to send cute messages to my boyfriend.

Morning Messages A simple python script to send cute messages to my boyfriend. It gives him the weather and news currently. Installation git clone htt

Sabrina Medwinter 3 Oct 12, 2022
A simple DHCP server and client simulation with python

About The Project This is a simple DHCP server and client simulation. I implemented it for computer network course spring 2021 The client can request

shakiba 3 Feb 08, 2022
🐛 SSH self spreading worm written in python3 to propagate a botnet.

Mirkat SSH self spreading worm written in python3 to propagate a botnet. Install tutorial. cd ./script && sh setup.sh Support me. ⚠️ If this reposito

Ѵιcнч 58 Nov 01, 2022
openPortScanner is a port scanner made with Python!

Port Scanner made with python • Installation • Usage • Commands Installation Run this to install: $ git clone https://github.com/Miguel-Galdin0/openPo

Miguel Galdino 7 Jan 09, 2022
Simple Port Scanner With Socket Module In Python 3x

PortScanner Simple Port Scanner With Socket Module In Python 3x How To Install Requirements Of This Port Scanner sudo apt install python3;sudo apt ins

1 Nov 23, 2021
Library containing the core modules for the kingdom-python-server.

🏰 Kingdom Core Library containing the core modules for the kingdom-python-server. Installation Use the package manager pip to install kingdom-core. p

T10 4 Dec 27, 2021
Use Raspberry Pi and CircuitSetup's power monitor hardware to publish electrical usage to MQTT

This repo has code and notes for whole home electrical power monitoring using a Raspberry Pi and CircuitSetup modules. Beyond just collecting data, it

Eric Tsai 10 Jul 25, 2022
tradingview socket api for fetching real time prices.

tradingView-API tradingview socket api for fetching real time prices. How to run git clone https://github.com/mohamadkhalaj/tradingView-API.git cd tra

MohammadKhalaj 35 Dec 31, 2022