Scapy: the Python-based interactive packet manipulation program & library. Supports Python 2 & Python 3.

Overview

Scapy

Travis Build Status AppVeyor Build status Codecov Status Codacy Badge PyPI Version Python Versions License: GPL v2 Join the chat at https://gitter.im/secdev/scapy

Scapy is a powerful Python-based interactive packet manipulation program and library.

It is able to forge or decode packets of a wide number of protocols, send them on the wire, capture them, store or read them using pcap files, match requests and replies, and much more. It is designed to allow fast packet prototyping by using default values that work.

It can easily handle most classical tasks like scanning, tracerouting, probing, unit tests, attacks or network discovery (it can replace hping, 85% of nmap, arpspoof, arp-sk, arping, tcpdump, wireshark, p0f, etc.). It also performs very well at a lot of other specific tasks that most other tools can't handle, like sending invalid frames, injecting your own 802.11 frames, combining techniques (VLAN hopping+ARP cache poisoning, VoIP decoding on WEP protected channel, ...), etc.

Scapy supports Python 2.7 and Python 3 (3.4 to 3.8). It's intended to be cross platform, and runs on many different platforms (Linux, OSX, *BSD, and Windows).

Getting started

Scapy is usable either as a shell or as a library. For further details, please head over to Getting started with Scapy, which is part of the documentation.

Shell demo

Scapy install demo

Scapy can easily be used as an interactive shell to interact with the network. The following example shows how to send an ICMP Echo Request message to github.com, then display the reply source IP address:

sudo ./run_scapy
Welcome to Scapy
>>> p = IP(dst="github.com")/ICMP()
>>> r = sr1(p)
Begin emission:
.Finished to send 1 packets.
*
Received 2 packets, got 1 answers, remaining 0 packets
>>> r[IP].src
'192.30.253.113'

Resources

The documentation contains more advanced use cases, and examples.

Other useful resources:

Installation

Scapy works without any external Python modules on Linux and BSD like operating systems. On Windows, you need to install some mandatory dependencies as described in the documentation.

On most systems, using Scapy is as simple as running the following commands:

git clone https://github.com/secdev/scapy
cd scapy
./run_scapy

To benefit from all Scapy features, such as plotting, you might want to install Python modules, such as matplotlib or cryptography. See the documentation and follow the instructions to install them.

Contributing

Want to contribute? Great! Please take a few minutes to read this!

Comments
  • What is the plan for Python 3 support?

    What is the plan for Python 3 support?

    Hello,

    I'm trying to find out if there are any plans for "the original" scapy to support Python 3 or not.

    The only references to real code I found is in https://github.com/secdev/scapy/issues/87#issuecomment-258094860 but it seems to me that the plan for scapy rewrite is not moving forward because repo https://bitbucket.org/secdev/scapy3-prototype2 has last commit from 2015-02-25.

    Given that current Fedora (and so future of RHEL/CentOS/Scientific Linux) is migrating away from Python 2 (as well as all other Linux distros) this forces me to ask the question again: What are the plans for Python 3 support in scapy?

    Without some form plan, Fedora/RHEL/CentOS will have to implement the same approach as Debian (see https://github.com/secdev/scapy/issues/87#issuecomment-257431044), i.e. use scapy3k instead of scapy.

    If this is the case, are there any plans to start merging features between scapy and scapy3k?

    Thank you for your time and answers.

    discussion 
    opened by pspacek 61
  • [Windows] Loading speedup (pcapdnet cache) + cleanup

    [Windows] Loading speedup (pcapdnet cache) + cleanup

    This PR speeds up windows booting (by a lot on windows 7):

    • pcapdnet cache
    • remove useless function
    • do not read routes twice in get_working_if
    • fixes route_add_loopback
    • re-uses the same powershell instance while booting by adding a Powershell Manager
    • fix long IP lists (especially IPv6 possible IPs): do not crop
    • minor bug fixes (python3)

    Results:

    >>> a = time.time()
    ...:for i in range(1,10):
    ...:    read_routes[6]()
    ...:print(time.time()-a)
    

    on Windows 10:

    | | Normal | After POWERSHELL_PROCESS.__init__() (=during of after booting) | | --|---|---| | 10 x read_routes | 8.33999991417s | 0.571000051498s | | 10 x read_routes6 | 9.13199996948s | 0.917000055313s | | 10 x get_windows_if_list | 12.8439998627s | 1.46499991417s |

    POWERSHELL_PROCESS auto-turns off when scapy has finished booting (this could be changed, but do we want to leave a background task powershell open ?)

    opened by gpotter2 48
  • Improve dissection of the IKEv2 protocol

    Improve dissection of the IKEv2 protocol

    Considered on its own, the implementation of the IKEv2 protocol is quite mature, however the integration with the other protocols, in particular with the closely related protocols ISAKMP (= IKEv1, its predecessor) and ESP is unfinished and slightly broken.

    The fact that the IKEv2 support needs to be loaded manually is only a minor flaw compared to the fact that the module essentially only replaces ISAKMP bindings with IKEv2 bindings and does not solve the problem of coexistence of the three protocols.

    In particular, Scapy's dissector is currently missing the the following features:

    • automatic switching between IKEv2 and ISAKMP based on the protocol version
    • UDP Encapsulation of ESP and IKE packets on port 4500 for NAT traversal

    As a consequence, packet captures of VPN traffic are not dissected correctly.

    This commit fixes the problem by implementing the missing features, Moving the IKEv2 implementation from 'scapy.contrib' to 'scapy.layer' was a natural choice which not only simplified the fix but is also justified by the fact that this fix turns IKEv2 is a full-featured Scapy layer which simply works out-of-the-box.

    Checklist:

    • [x] I have checked CONTRIBUTING.md
    • [x] I squashed commits belonging together
    • [x] I added unit tests or explained why they are not relevant
    • [x] I added example packet captures
    • [x] I executed the regression tests (using cd test && ./run_tests or tox)
    opened by mspncp 45
  • RTPS contrib layer

    RTPS contrib layer

    Check this branch for detailed history of this change: https://github.com/phretor/scapy/commits/rtps

    Disclaimer: I'm not sure this is the right way to bind layers that are not restricted to a non-fixed port range, so I put a comment. Let me or @vmayoral know if you prefer to enable the "ugly hack". All dissection tests pass even now.

    # layer binding
    # for port in range(7400, 7500):  # very ugly hack :-)
    #     bind_layers(UDP, RTPS, dport=port)
    #     bind_layers(TCP, RTPS, dport=port)
    
    bind_layers(UDP, RTPS)
    bind_layers(RTPS, RTPSMessage, magic=b"RTPS")
    bind_layers(RTPS, RTPSMessage, magic=b"RTPX")
    

    Co-authored-by: Federico Maggi [email protected] Co-authored-by: Víctor Mayoral Vilches [email protected] Signed-off-by: Federico Maggi [email protected]

    new layer 
    opened by phretor 41
  • Unstable automotive tests

    Unstable automotive tests

    @KeksMassacre The following to GMLAN Utils-Tests aren't working with ISOTPSoftSockets after a refactoring of ISOTPUnitTests #2341

    This is a reminder to fix this unit tests

    https://github.com/secdev/scapy/blob/f1e632b9a78029578371d7b27f2f116945da1049/test/contrib/automotive/gm/gmlanutils.uts#L490-L491 https://github.com/secdev/scapy/blob/f1e632b9a78029578371d7b27f2f116945da1049/test/contrib/automotive/gm/gmlanutils.uts#L880-L881

    tests 
    opened by polybassa 40
  • Integration of pytest

    Integration of pytest

    This is just a PoC. A *.uts file will be transformed to a pytest like file. The exported file usually needs manual modifications, but this exporter can be a first step towards pytest

    discussion tests on hold 
    opened by polybassa 36
  • Merge sndrcv() and sniff() implementations for Unix & Windows systems

    Merge sndrcv() and sniff() implementations for Unix & Windows systems

    This avoids duplicated code and brings to Windows enhancements that exist for Unix (sniff() on multiple interfaces, parallel sndrcv()).

    It also brings a huge code clean-up on both functions and may have a (limited but positive) impact on performances (some tests have been moved outside of sniff loops). The code is (IMO) much more readable and maintainable.

    It changes the behavior of sniff(): it is now possible to provide lists for offline and opened_socket parameters (that was only possible for iface). It is also possible, for those three parameters, to provide dict objects mapping an element (interface or file name, or opened socket) to a label.

    Also, fixes #780.

    opened by p-l- 36
  • Packet viewer

    Packet viewer

    @TabeaSpahn @polybassa

    We would be interested in the opinions of the maintainers. It took some time but we think it's finally stable enough to be shown in a PR.

    Python 2 and Python 3 supported.

    Things that probably have to be changed:

    • [x] Merge tests
    • [x] Add urwid as an optional dependency to scapy and maybe output a nice error message if the packet viewer is imported even though urwid is not installed
    • [x] Add urwid to Travis server
    • [x] Fix flake8 errors
    • [x] Remove debugging scripts
    • [x] Improve documentation (for example add a screenshot of the viewer)
    • [x] Show time relative to first packet

    Requirements: pip3 install urwid

    Cool feature I want to highlight: It's a TUI working fully over ssh which means also mouse interaction is possible over ssh.

    discussion 
    opened by akorb 35
  • [Deprecated PR] Python 3- Step 2: Auto-code migration

    [Deprecated PR] Python 3- Step 2: Auto-code migration

    EDIT: That PR was splitted in smaller ones. This will stay open for legacy until all have been merged

    Next part of supporting Python 3. This increases the compatibility between python 2 and 3, by using common methods + six.py module. It does not provide a suitable python 3 compatibility yet.

    The PR:

    • used Python-modernize as a base to update scapy's code
    • manually fixed some conflicts/bugs
    • Included six.py in modules
    • fix some small bugs (windows)
    opened by gpotter2 35
  • [Networking/Windows] Added IPv6 support

    [Networking/Windows] Added IPv6 support

    Well this is https://github.com/secdev/scapy/pull/380 and https://github.com/secdev/scapy/pull/397 but a way more cleaner...

    IT IS FINALLY WORKING

    So as today, IPv6 routes are not supported by scapy on Windows. Here is the IPv6 routes support on Windows 😃

    This patch:

    • Fixes some route6.py functions to work on Windows
    • Removes double warning logs when loading scapy (when winpcap is not installed)
    • Add regression.uts tests

    What it returns: http://pastebin.com/hUU6ykcc

    I've tested it: it's possible to send IPv6 packets

    opened by gpotter2 33
  • [UTscapy] allow interrupting tests

    [UTscapy] allow interrupting tests

    Hello!

    I made a few fixes and enhancements in the UTscapy file:

    • Fix trailing whitespace, unused variable and unused imports.
    • Protect file opening in 'with' statements
    • Use local version of UTscapy.js and UTscapy.css
    • Allow continuing tests after a failed campaign. Add an option to keep old behavior

    And the main feature is to be able to interrupt a serie of tests using Control-C.

    conflicts 
    opened by ThomasFaivre 32
  • Fix length calculation for GTPv2 header

    Fix length calculation for GTPv2 header

    3GPP TS 29.274 states in Section 5.5.1: "Octets 3 to 4 represent the Message Length field. This field shall indicate the length of the message in octets excluding the mandatory part of the GTP-C header (the first 4 octets). The TEID (if present) and the Sequence Number shall be included in the length count."

    Checklist:

    • [x] If you are new to Scapy: I have checked CONTRIBUTING.md (esp. section submitting-pull-requests)
    • [ ] I squashed commits belonging together
    • [x] I added unit tests or explained why they are not relevant
    • [x] I executed the regression tests (using cd test && ./run_tests or tox)
    • [ ] If the PR is still not finished, please create a Draft Pull Request
    opened by muelleme 1
  • NetflowV9 Options Templates length field is not compliant with RFC 3954

    NetflowV9 Options Templates length field is not compliant with RFC 3954

    Brief description

    In the current scapy implementation of Netflow protocol, it seems like the Options-Templates Flowset scapy.layers.netflow.NetflowOptionsFlowsetV9 length field does not include the padding length.

    However, Section 6.1 of RFC 3954 (NetflowV9), states that

    Padding The Exporter SHOULD insert some padding bytes so that the subsequent FlowSet starts at a 4-byte aligned boundary. It is important to note that the Length field includes the padding bytes. Padding SHOULD be using zeros.

    Is it a misunderstanding of my side, or is it really a bug ?

    Thanks !

    Scapy version

    2.4.5

    Python version

    3.10

    Operating system

    Linux 5.15.0

    Additional environment information

    No response

    How to reproduce

    from scapy.layers.netflow import NetflowHeader, NetflowHeaderV9, NetflowOptionsFlowsetOptionV9, NetflowOptionsFlowsetV9, NetflowOptionsFlowsetScopeV9, NetflowDataflowsetV9
    
    templateFlowSet_256 = NetflowOptionsFlowsetV9(
    	templateID = 256,
    	option_scope_length = 4*1,
    	option_field_length = 4*3,
    	scopes = [
    		NetflowOptionsFlowsetScopeV9(scopeFieldType=1,	scopeFieldlength= 4),
    	],
    	options = [
    		NetflowOptionsFlowsetOptionV9(optionFieldType= 10,	optionFieldlength= 4),
    		NetflowOptionsFlowsetOptionV9(optionFieldType= 82,	optionFieldlength= 32),
    		NetflowOptionsFlowsetOptionV9(optionFieldType= 83,	optionFieldlength= 240)
    	])
    
    netflow_header = NetflowHeader() / NetflowHeaderV9()
    
    
    pkt = netflow_header / templateFlowSet_256
    
    pkt.show2()
    

    Actual result

    ###[ Netflow Header ]### 
      version   = 9
    ###[ Netflow Header V9 ]### 
         count     = 1
         sysUptime = 0
         unixSecs  = Thu, 01 Jan 1970 00:00:00 +0000 (0)
         packageSequence= 0
         SourceID  = 0
    ###[ Netflow Options Template FlowSet V9 ]### 
            flowSetID = 1
            length    = 26
            templateID= 256
            option_scope_length= 4
            option_field_length= 12
            \scopes    \
             |###[ Netflow Options Template FlowSet V9/10 - Scope ]### 
             |  scopeFieldType= System
             |  scopeFieldlength= 4
            \options   \
             |###[ Netflow Options Template FlowSet V9/10 - Option ]### 
             |  enterpriseBit= 0
             |  optionFieldType= INPUT_SNMP
             |  optionFieldlength= 4
             |###[ Netflow Options Template FlowSet V9/10 - Option ]### 
             |  enterpriseBit= 0
             |  optionFieldType= IF_NAME
             |  optionFieldlength= 32
             |###[ Netflow Options Template FlowSet V9/10 - Option ]### 
             |  enterpriseBit= 0
             |  optionFieldType= IF_DESC
             |  optionFieldlength= 240
            pad       = ''
    ###[ Netflow FlowSet V9/10 ]### 
               flowSetID = 0
               length    = None
               \templates \
    

    Expected result

    • pre_build length is : 10 (flowsetID + length + templateID) + 4 (scope) + 12 (options) = 26 bytes
    • padding should be of 26 % 4 = 2 bytes
    • post_build Flowset length after post_build() should be of 26 + 2 (padding) = 28 bytes
    
    ###[ Netflow Header ]### 
      version   = 9
    ###[ Netflow Header V9 ]### 
         count     = 1
         sysUptime = 0
         unixSecs  = Thu, 01 Jan 1970 00:00:00 +0000 (0)
         packageSequence= 0
         SourceID  = 0
    ###[ Netflow Options Template FlowSet V9 ]### 
            flowSetID = 1
            length    = 28
            templateID= 256
            option_scope_length= 4
            option_field_length= 12
            \scopes    \
             |###[ Netflow Options Template FlowSet V9/10 - Scope ]### 
             |  scopeFieldType= System
             |  scopeFieldlength= 4
            \options   \
             |###[ Netflow Options Template FlowSet V9/10 - Option ]### 
             |  enterpriseBit= 0
             |  optionFieldType= INPUT_SNMP
             |  optionFieldlength= 4
             |###[ Netflow Options Template FlowSet V9/10 - Option ]### 
             |  enterpriseBit= 0
             |  optionFieldType= IF_NAME
             |  optionFieldlength= 32
             |###[ Netflow Options Template FlowSet V9/10 - Option ]### 
             |  enterpriseBit= 0
             |  optionFieldType= IF_DESC
             |  optionFieldlength= 240
            pad       = '\x00\x00'
    

    Related resources

    bug 
    opened by theplatypus 1
  • ASN.1 BER ID encoding broken by PR #3693 (Kerberos: documentation + various fixes + demo)

    ASN.1 BER ID encoding broken by PR #3693 (Kerberos: documentation + various fixes + demo)

    Brief description

    See this cange to ber.py of PR #3693:

    - s = BER_id_enc(implicit_tag) + s[1:]
    + s = BER_id_enc((hash(hidden_tag) & ~(0x1f)) | implicit_tag) + s[1:]
    

    hash(hidden_tag) will resolve to the enum value of custom tags. When OR'ed together with an implicit tag, nothing good happens.

    As a side note, if hidden_tag ever was None: hash(None) is a large integer, yielding even more garbage.

    Scapy version

    2.5.0

    Python version

    3.8.12

    Operating system

    RH8

    Additional environment information

    No response

    How to reproduce

    from scapy.asn1.asn1 import ASN1_Codecs
    from scapy.asn1packet import ASN1_Packet
    from scapy.layers.ldap import ASN1F_LDAP_Authentication_simple
     
    class TestAuth(ASN1_Packet):
        ASN1_codec = ASN1_Codecs.BER
        ASN1_root = ASN1F_LDAP_Authentication_simple("auth", None, implicit_tag=129)
     
    test = TestAuth()
    test.auth = b'abc'
    print(bytes(test).hex())
    

    Actual result

    a103616263

    Expected result

    8103616263

    Related resources

    No response

    opened by pgit 0
  • btle: Add core v5.3 control pdus

    btle: Add core v5.3 control pdus

    Adds the Control PDUs that were added in spec revision 5.1, 5.2 and 5.3.

    This changes only support using a scapy as a packet builder. Dissection is not yet implemented.

    opened by rugeGerritsen 3
  • Add 802.11v BSS transition management request & response

    Add 802.11v BSS transition management request & response

    This PR will add 802.11 action frame categories (802.11-2016 9.4.1.11), 802.11 WNM frame action fields (802.11-2016 9.6.14.1), and 802.11v BSS transition (BTM) request and response frames (802.11-2016 9.6.14.9-10) to the dot11 layer.

    802.11v BTM frames are part of the WNM protocol, which is a category of action management frames. They are used to steer wireless stations to and from a BSS. This PR includes required fields and optional Neighbor Report element field. Neighbor Report (802.11-2016 9.4.2.37) element can contain various sub elements; only BSS Termination Duration sub element is added, and for the rest, generic SubelemTLV is used.

    Tests: air-sniffed BTM request and response frames are added. For response, a frame with status code = 6 is used, which contains the Neighbor Report element and will provide more coverage for the test.

    enhancement 
    opened by alpatakan 1
Releases(v2.5.0)
  • v2.5.0(Dec 25, 2022)

    Changelog

    Scapy v2.5.0 is the last version to support Python 2.7

    Main Changes

    • Type hinting of Scapy core: Scapy now provides type hintings for all of its core
    • Python 3.9 and 3.10 support
    • macOS 10.15 support
    • update built-in dependencies (six) + and our cryptography imports that created warnings
    • fix sniffing performance issues with 2.4.4+ on Windows
    • greatly improve BPF (macOS) support (timestamps...)
    • enhanced loopback interface support on Linux, *BSD, and Windows
    • SPDX License identifiers added
    • several major CLI improvements, especially in autocompletion: you can now auto-complete the names for all Scapy fields, automatons, answering machines thanks to signature injection (and patches in IPython/bpython)

    Core

    • improved support of BPF
    • support pcapng writing, comments, TLS secrets decryption block
    • Re-work how sent_time is shared across packets iterators
    • support new LINUX_SLL2 packet type (new tcpdump versions)
    • pipes: performances issues fixed
    • tools: fixes to hexdiff, lhex...

    Layers

    • new layers related to Windows: DCERPC/NTLM/KERBEROS/GSSAPI/SPNEGO/(C)LDAP.
    • new contrib layers: ESMC/RTPS/RTPC/metawatch
    • rework Netbios/SMB1/SMB2, basic SMB clients & server, ntlm relay
    • several fixes to the TLS implementation
    • major zigbee/6lowpan improvements
    • bug fixes in TLS: properly support FFDH, fix the TLS 1.3 notebooks... among other things
    • p0f module update
    • IPsec: fixes, x25519 support...
    • various updates to the ASN.1 engine
    • IKEv2: fixes, UDP encapsulation
    • STUN support
    • Postgres line protocol 3.0 support
    • EDNS0 client subnet support
    • ESMC protocol added
    • support TCP-MD5 and TCP-AO options
    • ERF Ethernet Support
    • many fixes: modbus, 802.11, BTLE, SCTP, DNS, LLDP, Kerberos, RTPS, DHCP, MQTT, BGP, L2TP...

    Automotive

    • ISOTPSoftSocket: Bug fixes and performance improvements
    • Documentation and API-Doc improvements
    • Unit-Test speedups for Scanners
    • IPv6 support for DoIP
    • Bugfixes for DoIP
    • Unit-Test cleanups
    • UDS-, GMLAN- and OBD-Scanner refactoring
    • CANFD support

    Misc

    • new sanity rules prevent fields from having the same name in all packets
      • Currently displays a warning but will become a SyntaxError in the future!
    • archives of the Scapy repo should now have more consistent hashes
    Source code(tar.gz)
    Source code(zip)
  • v2.4.5(Apr 19, 2021)

    Main Changes

    Changelog

    Core

    • 354 commits to master since v2.4.4, from 73 contributors
    • Python 3.9 support
    • New interfaces system. conf.iface is now an object (retro-compatible as a string) which contains additional information about the interface and allows for an automatic selection of the socket type. conf.ifaces now lists all available interfaces.
    • Fix *BSD support. Improve filters handling on Linux and libpcap
    • Automaton: support for STOP event - allows to cleanly end an Automata. Implemented in all Scapy's automatons
    • [Deprecated] Naming different fields with the same name will now raise a deprecation warning. This behavior has never properly worked and should never be necessary
    • Enhance Net and Net6
    • Improvements to scapy's logging, colored output and to UTscapy
    • Fix edge-cases with ConditionalField and MultipleTypeField to make them more resilient
    • [Doc] Enhancements: improved MultipleTypeField handling, add view source.
    • [Internal] Move the test suite to GitHub Actions
    • [Internal] Unit test housekeeping
    • [Internal] Begin type hinting

    Layers

    • 6LoWPAN refactor
    • TLS improvements (TLS 1.3 server downgrade, TLS 1.2 EXT MS...)
    • HTTP improvements (http_request, support for zstd...)
    • Refactor TunTap support
    • Cleanup MACsec
    • Many small bug fixes or improvements to layers (SMB2, BFD, DNS, Zigbee, EAP, HomeplugGP, DHCPv6, 802.11...)

    Automotive

    • Renaming of ENET to HSFZ
    • Added XCP layer
    • Added DoIP layer
    • [Internal] Cleanup of interface preparation code in unit tests
    • Renaming of ECU to Ecu
    • Refactoring of EcuState class to be more versatile
    • [Internal] Started with typing
    • [Internal] Multiple minor cleanups
    • Minor updates to the documentation
    Source code(tar.gz)
    Source code(zip)
  • v2.4.4(Sep 2, 2020)

    Main Changes

    Core

    • 784 commits to master since this v2.4.3
    • fix how timestamps are measured on layer 3 (broken since 2.4.1)
    • drop DNET support (deprecated since 2.4.0)
    • Scapy will now use libpcap instead of tcpdump to compile the filters (tcpdump is still used to filter pcaps)
    • major changes to the online doc: add an automatically generated API reference with visual representation of each layer, move to Sphinx 3.0.0, new layer-specific doc...
    • *BSD fixes
    • more doc to many functions

    Layers

    • New layers (homeplug sg, smb2, NSH, RPL, ERSPAN, BFD, ROCE...)
    • TLS: TLS 1.3 support & many fixes
    • 802.11 improvements / WPA3 detection
    • Netflow 9 fixes
    • Major refactor & changes of the Automotive layers
    • HTTP changes
    • DHCPv6 fixes according to revision of the RFC
    • Bluetooth improvements (+BLE)
    • minor fixes to Radius, PPP, GTP, IPsec, CDP, VTP, HTTP/2, ...
    Source code(tar.gz)
    Source code(zip)
  • v2.4.3(Aug 6, 2019)

    Main Changes

    Core

    • 364 commits since v2.4.2
    • better native support for FreeBSD, NetBSD, OpenBSD
    • Windows: native RAW sockets support, load interfaces/routes using C calls, ...
    • Solaris: fixed support
    • latency improvements
    • sniff() can be used to test BPF fiters on pcap files
    • more unit tests and Python3 compatibility
    • asynchronous sniffing
    • UTScapy vim syntax highlighting
    • drop distutils for setuptools
    • Console / IPython integration improvements

    Layers

    Major changes

    New

    • HTTP (from the deprecated scapy-http module), TLS 1.3, ATA over Ethernet, OVD, IEC 60870-5-104, enip, ...

    Improved

    • NetflowV9, ISOTP, Zigbee, RTR, BLE, PPI, DNS, LLDP, ...
    • Bluetooth/BTLE rework
    • PPI / 802.11 improvements
    Source code(tar.gz)
    Source code(zip)
  • v2.4.2(Jan 11, 2019)

    Main changes

    • Gabriel Potter is officially part of the Scapy maintainers team
    • PEP08 compliance (see #1277)
    • Speed improvements (see #642)

    Core

    • 253 merged pull requests since v2.4.0
    • Python 3.7 support
    • Enhanced Windows support
    • unit testing is now 100% tox based

    Layers

    Major changes

    • Many automotive related layers added (ISO-TP...)

    New

    • EtherCat
    • OPCDA
    • SOCKS
    • USBpcap
    • RPKI

    Improved

    • MACsec, MQTT, MPLS, DNS, ARP, Dot15d4, Zigbee, Bluetooth4LE, RadioTap ...
    • Enhanced monitor mode support

    Other

    Source code(tar.gz)
    Source code(zip)
  • v2.4.0(Mar 27, 2018)

    Main changes

    • Python3 support
    • 85% code coverage

    Core

    • Pcap/PcapNg improvements
    • enhanced Windows support
    • OpenBSD improvements
    • OSX 802.11 monitor mode
    • Krack AP module
    • iPython support
    • automatically tested on Linux, OSX & Windows
    • ...

    Layers

    Major changes

    TLS (including TLS1.3), X.509 ...

    New

    HTTP/2, EAP-TTLS, TACACS, MQTT ...

    Improved

    IPv6, SCTP, NTP, PPTP, CDP, BGP, ISIS ...

    Source code(tar.gz)
    Source code(zip)
  • v2.2.0(Jun 26, 2018)

    Note: all releases tags before 2.4.0 are imported from http://freshmeat.sourceforge.net/projects/scapy This release adds a contrib section filled with old contributions that were not distributed with Scapy yet: CDP, IGMP, MPLS, CHDLC, SLARP, WPA EAPOL, DTP, EIGRP, VQP, BGP, OSPF, VTP RSVP, EtherIP, RIPng, and IKEv2. It fixes some bugs.

    Source code(tar.gz)
    Source code(zip)
  • v2.1.1(Jun 26, 2018)

  • v2.1.0(Jun 26, 2018)

    The Windows branch has been merged. Many bugs have been fixed. Network automata gained new features like the ability to add breakpoints or tracepoints. Many new small features have been added. Last but not least, this release comes with documentation.

    Source code(tar.gz)
    Source code(zip)
  • v2.0.0.10(Jun 26, 2018)

  • v1.1.1(Jun 26, 2018)

    This release adds the ability to transcribe ASN1-specified protocols easily, SNMP protocol support, MIB parsing, OID/DNS/OUI resolving, configurable field value resolution, a startup script, and srflood() and srpflood() to flood with packets while catching answers.

    Source code(tar.gz)
    Source code(zip)
  • v1.0.5.20(Jun 26, 2018)

    This release has improved fuzzing capability with frame random corruption. It has improved ISAKMP support. New protocols have been added. Autofragmentation for big frames has been added. There are many bugfixes.

    Source code(tar.gz)
    Source code(zip)
  • v1.0.4.106(Jun 26, 2018)

    This release adds easy packet list filtering (e.g., list[ICMP]), bluetooth HCI protocol support, an improved show() for PacketFields, a LaTeX theme that escapes special characters, a timeout to sniff(), an equality test, a 3D traceroute, and bugfixes. It no longer depends on libreadline.

    Source code(tar.gz)
    Source code(zip)
Kwcpu - An unobtrusive CPU meter that fits in the default Windows 11 taskbar. Supports up to 32 cores.

kwcpu An unobtrusive CPU meter that fits in the default Windows 11 taskbar. Supports up to 32 cores. kwcpu is provided as a Rainmeter skin. By default

Jay Oster 2 Nov 7, 2022
Pinion — Nice-looking interactive diagrams for KiCAD PCBs

Pinion — Nice-looking interactive diagrams for KiCAD PCBs Pinion is a simple tool that allows you to make a nice-looking pinout diagrams for your PCBs

Jan Mrázek 297 Jan 6, 2023
A Python program that makes it easy to manage modules on a CircuitPython device!

CircuitPython-Bundle-Manager-v2 A Python program that makes it easy to manage modules on a CircuitPython device! The CircuitPython Bundle Manager v2 i

Ckyiu 1 Dec 18, 2021
Drobo Status is a python program that will connect to your Drobo and return JSON data regarding your Drobo

This is a simple python script that will run a docker container to pull data from Drobo. It will give information like (Name, serial, firmware, disk-total, disk-used, disk-free and individual disk status). I have an older Drobo FS 8 disk array. Please let me know if anyone can test. The results are outputted via JSON

Biofects 1 Jan 15, 2022
A versatile program that uses the raspberry pi camera and provides it as a service

PiCameleon Is a daemon program meant to provide the RaspberryPi Camera as a service while running according to a configuration.

André Esser 52 Oct 16, 2022
This is the remake of the program PYOBD. It works on Python3 and all new libraries. It was tested on Linux, Windows, and it should work on MAC too.

This is the remake of the program PYOBD. It works on Python3 and all new libraries. It was tested on Linux, Windows, and it should work on MAC too. You just need an ELM327 USB or bluetooth device and a PC(laptop preferably).

null 127 Jan 6, 2023
It is a program that displays the current temperature of the GPU and CPU in real time and stores the temperature history.

HWLogger It is a program that displays the current temperature of the GPU and CPU in real time and stores the temperature history. Sample Usage Run HW

Xeros 0 Apr 5, 2022
A simple program to make MSI Modern 15 speaker and microphone mute led work.

MSI Modern 15 sound led fixup for linux A simple program to fix the MSI Modern 15 speaker and microphone mute LEDs. Installation Requirements pulsectl

Seyed Danial Movahed 4 Oct 18, 2022
The ABR Control library is a python package for the control and path planning of robotic arms in real or simulated environments.

The ABR Control library is a python package for the control and path planning of robotic arms in real or simulated environments. ABR Control provides API's for the Mujoco, CoppeliaSim (formerly known as VREP), and Pygame simulation environments, and arm configuration files for one, two, and three-joint models, as well as the UR5 and Kinova Jaco 2 arms. Users can also easily extend the package to run with custom arm configurations. ABR Control auto-generates efficient C code for generating the control signals, or uses Mujoco's internal functions to carry out the calculations.

Applied Brain Research 277 Jan 5, 2023
A python library written for the raspberry pi.

A python package for using certain components on the raspberry pi.

Builder212 1 Nov 9, 2021
Robot Framework keyword library wrapper for atlassian-python-api

Robot Framework keyword library wrapper for atlassian-python-api

Marcin Koperski 3 Jul 29, 2022
Python library for the Phomemo m02s bluetooth thermal printer

Phomemo M02S Python library This is a basic Python library for controlling the Phomemo M02S bluetooth thermal printer. It probably only works on Mac &

Stargirl Flowers 28 Nov 7, 2022
Python library to interact with the GCE Electronics IPX800 device

A python library to control a GCE-Electronics IPX800 V4 device through its API.

Marc-Aurèle Brothier 2 Oct 20, 2021
A PYTHON Library for Controlling Motors using SOLO Motor Controllers with RASPBERRY PI, Linux, windows, and more!

A PYTHON Library for Controlling Motors using SOLO Motor Controllers with RASPBERRY PI, Linux, windows, and more!

SOLO Motor Controllers 3 Apr 29, 2022
a library for using WS2812b leds (aka neopixels) with Raspberry Pi Pico

pico_ws2812b a library for using WS2812b leds (aka neopixels) with Raspberry Pi Pico You'll first need to save the ws2812b.py file to your device (for

null 76 Nov 25, 2022
LUNA: a USB multitool & nMigen library

LUNA is a full toolkit for working with USB using FPGA technology; and provides hardware, gateware, and software to enable USB applications.

Great Scott Gadgets 750 Dec 28, 2022
CircuitPython library for the CH559 USB to Serial chip

CH559 (USB to Serial) CircuitPython Library Why? Because you might want to get keyboard/mouse/gamepad/HID input into your CircuitPython projects witho

Guy Dupont 3 Nov 19, 2022
Example for Calculating Robot Dynamics Using Pinocchio Library

A Example for Calculating Robot Dynamics Using Pinocchio Library Developed by: Xinyang Tian. Platform: Linux + Pinocchio. In this work, i use Pinocchi

Rot_Tianers 33 Dec 28, 2022
Ingeniamotion is a library that works over ingenialink and aims to simplify the interaction with Ingenia's drives.

Ingeniamotion Ingeniamotion is a library that works over ingenialink and aims to simplify the interaction with Ingenia's drives. Requirements Python 3

Ingenia Motion Control 7 Dec 15, 2022