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)
Play a song with a 3D printer.

MIDI to GCODE Play a song with a FDM 3D printer. SLA printers don't have motors, so they cannot play music. Warning: Be ready to turn off the 3D print

Patrick 6 Apr 11, 2022
Modi2-firmware-updater - MODI+ Firmware Updater With Python

MODI+ Firmware Updater 실행 준비 python3(파이썬3.9 혹은 그 이상의 버전)를 컴퓨터에 설치 python3 -m pip

LUXROBO 1 Feb 04, 2022
A Home Assistant integration for Solaredge inverters

A Home Assistant integration for Solaredge inverters. Supports multiple inverters chained through RS485.

Seth 50 Dec 23, 2022
An emulated LED scoreboard for Major League Baseball ⚾

An LED scoreboard for Major League Baseball. Displays a live scoreboard for your team's game on that day.

Tyler Porter 8 Apr 08, 2022
A blender 2.9x addon for managing camera settings

TMG-Camera-Tools A blender 2.9x addon for managing camera settings Tutorial showcasing current features

Mainman002 12 Apr 16, 2022
A dashboard for Raspberry Pi to display environmental weather data, rain radar, weather forecast, etc. written in Python

Weather Clock for Raspberry PI This project is a dashboard for Raspberry Pi to display environmental weather data, rain radar, weather forecast, etc.

Markus Geiger 1 May 01, 2022
Transform a Raspberry Pi into a network diagnostic machine.

EtherView Last updated jan 30, 2022. Welcome to the EtherView project! This is a project to transform a RaspberryPi into a portable network diagnostic

1 Jan 30, 2022
A ESP32 project template with a web interface built in React

ESP AP Webserver demo.mp4 This is my experiment with "mobile app development" for the ESP32. The project consists of two parts, the ESP32 code and the

8 Dec 15, 2022
A python library written for the raspberry pi.

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

Builder212 1 Nov 09, 2021
[unmaintained] WiFi tools for linux

Note: This project is unmaintained. While I would love to keep up the development on this project, it is difficult for me for several reasons: I don't

Rocky Meza 288 Dec 13, 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
LedFx is a network based LED effect controller with support for advanced real-time audio effects

Welcome to LedFx ✨ -Making music come alive! LedFx website: https://ledfx.app/ What is LedFx? What LedFx offers is the ability to take audio input, an

786 Jan 02, 2023
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
This allows you to record keyboard and mouse input, and play it back using pynput.

Record and Play with Python! This allows you to record keyboard and mouse input, and play it back (with looping) using pynput. It allows for automatio

George Jensen 45 Jan 02, 2023
Brogrammer-keyboard - FIrmware for the Brogrammer Keyboard v1.0

Brogrammer Keyboard Firmware The package contains the firmware that runs on the Brogrammer Keyboard v1.0 See https://imgur.com/a/oY5QZ14 This keyboard

Devin Hartleben 1 Apr 21, 2022
Minimal and clean dashboard to visualize some stats of Pi-Hole with an E-Ink display attached to your Raspberry Pi

Clean Dashboard for Pi-Hole Minimal and clean dashboard to visualize some stats of Pi-Hole with an E-Ink display attached to your Raspberry Pi.

Alessio Santoru 104 Dec 14, 2022
uOTA - OTA updater for MicroPython

Update your device firmware written in MicroPython over the air. Suitable for private and/or larger projects with many files.

Martin Komon 25 Dec 19, 2022
Modeling and Simulation of Satellite Servicing Manipulators

Modeling and Simulation of Satellite Servicing Manipulators Final Project for the course ENPM662: Introduction to Robot Modeling (Fall 2021). This pro

Adarsh M 1 Jan 24, 2022
E-Ink Magic Calendar that automatically syncs to Google Calendar and runs off a battery powered Raspberry Pi Zero

E-Ink Magic Calendar that automatically syncs to Google Calendar and runs off a battery powered Raspberry Pi Zero

2.8k Dec 30, 2022
Andreas Frisch 1 Jan 10, 2022