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)
LED effects plugin for klipper

This plugin allows Klipper to run effects and animations on addressable LEDs, such as Neopixels, WS2812 or SK6812.

Julian Schill 238 Jan 04, 2023
Terkin is a flexible data logger application for MicroPython and CPython environments.

Terkin Data logging for humans, written in MicroPython. Documentation: https://terkin.org/ Source Code: https://github.com/hiveeyes/terkin-datalogger

hiveeyes 45 Dec 15, 2022
3D-printable hexagonal mirror array capable of reflecting sunlight into arbitrary patterns

3D-printable hexagonal mirror array capable of reflecting sunlight into arbitrary patterns

Ben Bartlett 2.3k Dec 30, 2022
An embedded application for toy-car controlling based on Raspberry Pi 3 Model B and AlphaBot2-Pi.

An embedded application for toy-car controlling based on Raspberry Pi 3 Model B and AlphaBot2-Pi. This is the source codes of my programming assignmen

StardustDL 4 Oct 19, 2022
A python script for Homeassistant that counts down the days to birthdays, anniversaries etc

Date Countdown A python script for Homeassistant that counts down the days to birthdays, anniversaries etc Important note I no longer use homeassistan

Marc Forth 21 Mar 12, 2022
Automatically draw a KiCad schematic for a circuit prototyped on a breadboard.

Schematic-o-matic Schematic-o-matic automatically draws a KiCad schematic for a circuit prototyped on a breadboard. How It Works The first step in the

Nick Bild 22 Oct 11, 2022
Code and build instructions for Snap, a simple Raspberry Pi and LED machine to show you how expensive the electricyty is at the moment

Code and build instructions for Snap, a simple Raspberry Pi and LED machine to show you how expensive the electricyty is at the moment. On row of LEDs shows the cost of the hour, the other row the co

Johan Jonk Stenström 3 Sep 08, 2022
Home Assistant custom integration for e-distribución

e-Distribución is an energy distribution company that covers most of South Spain area. If you live in this area, you probably are able to register into their website to get some information about you

VMG 17 Sep 07, 2022
Blender Camera Switcher

Blender Camera Switcher A simple camera switcher addon for blender. Useful when use reference image for camera. This addon will automatically fix the

Corgice 1 Jan 31, 2022
Universal Xiaomi MIoT integration for Home Assistant

Xiaomi MIoT Raw 简体中文 | English MIoT 协议是小米智能家居从 2018 年起推行的智能设备通信协议规范,此后凡是可接入米家的设备均通过此协议进行通信。此插件按照 MIoT 协议规范与设备通信,实现对设备的状态读取及控制。

1.9k Jan 02, 2023
Simple Python script to decode and verify an European Health Certificate QR-code

A simple Python script to decode and verify an European Health Certificate QR-code.

Mathias Panzenböck 61 Oct 05, 2022
Home Assistant custom integration for Yi cameras: yi-hack-MStar, yi-hack-Allwinner and yi-hack-Allwinner-v2

yi-hack Home Assistant integration Overview yi-hack Home Assistant is a custom integration for Yi cameras (or Sonoff camera) with one of the following

roleo 131 Jan 03, 2023
Open-Source board for converting RaspberryPI to Brain-computer interface

The easiest way to the neuroscience world with the shield for RaspberryPi - PIEEG (website). Open-source. Crowdsupply This project is the result of se

Ildaron 436 Jan 01, 2023
ROS2 nodes for Waveshare Alphabot2-Pi mobile robot.

ROS2 for Waveshare Alphabot2-Pi This repo contains ROS2 packages for the Waveshare Alphabot2-Pi mobile robot: alphabot2: it contains the nodes used to

Michele Rizzo 2 Oct 11, 2022
3d printable macropad

Pico Mpad A 3D printable macropad for automating frequently repeated actions. Hardware To build this project you need access to a 3d printer. The mode

Dmytro Panin 94 Jan 07, 2023
Turn your Raspberry Pi Pico into a USB Rubber Ducky

pico-ducky Turn your Raspberry Pi Pico into a USB Rubber Ducky Install Requirements CircuitPython for the Raspberry Pi Pico adafruit-circuitpython-bun

Konstantinos 5 Nov 08, 2022
A battery pack simulation tool that uses the PyBaMM framework

Overview of liionpack liionpack takes a 1D PyBaMM model and makes it into a pack. You can either specify the configuration e.g. 16 cells in parallel a

PyBaMM Team 40 Jan 05, 2023
raspberry pi servo control using pca9685

RPi_servo-control_pca9685 raspberry pi 180° servo control using pca9685 Requirements Requires you to have the adafruit servokit library installed You

1 Jan 10, 2022
Event-based hardware simulation framework

An event-based multi-device simulation framework providing configuration and orchestration of complex multi-device simulations.

Diamond Light Source Controls Group 3 Feb 01, 2022
Mini Pupper - Open-Source,ROS Robot Dog Kit

Mini Pupper - Open-Source,ROS Robot Dog Kit

MangDang 747 Dec 28, 2022