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)
Automate gate/garage door opening via 433.92MHz emitter with Raspberry Pi, Home Assistant and Homekit.

Automate opening your garage door / gate Summary This project sums up how I automated opening my garage door using a Raspberry PI, a 433Mhz emitter, H

Julien Fouilhé 29 Nov 30, 2022
This Home Assistant custom component adding support for controlling Midea dehumidifiers on local network.

This custom component for Home Assistant adds support for Midea air conditioner and dehumidifier appliances via the local area network. homeassistant-

Nenad Bogojevic 92 Dec 31, 2022
Authentication provider using Synology DSM users for Home Assistant

Authentication provider using Synology DSM users for Home Assistant The Synology authentication provider lets you authenticate using the users in your

Sam Debruyn 5 Oct 06, 2022
Python para microcontroladores com MicroPyhton

MicroPython - PyBR2021 Python para microcontroladores com MicroPyhton Repositório de exemplos para tutorial "Python para microcontroladores com MicroP

gabriel aragão 1 Oct 18, 2021
A flexible data historian based on InfluxDB, Grafana, MQTT and more. Free, open, simple.

Kotori Telemetry data acquisition and sensor networks for humans. Documentation: https://getkotori.org/ Source Code: https://github.com/daq-tools/koto

83 Nov 26, 2022
GUI wrapper designed for convenient service work with TI CC1352/CC2538/CC2652 based Zigbee sticks or gateways. Packed into single executable file

ZigStar GW Multi tool is GUI wrapper firtsly designed for convenient service work with Zig Star LAN GW, but now supports any TI CC1352/CC2538/CC2652 b

133 Jan 01, 2023
Playing diabolo with two robot arms in ROS + Gazebo

Playing diabolo with robots This repository holds the ROS packages for playing diabolo with two UR5e robot arms on ROS Melodic (Ubuntu 18.04). Read ou

23 Dec 18, 2022
This OctoPrint plugin will make the initial connection to 3D Hub a breeze

3D Hub Connector This OctoPrint plugin will make the initial connection to 3D Hub a breeze. In future it will help in setting up a tunnel connection a

3D Hub 2 Aug 03, 2022
Implemented robot inverse kinematics.

robot_inverse_kinematics Project setup # put the package in the workspace $ cd ~/catkin_ws/ $ catkin_make $ source devel/setup.bash Description In thi

Jianming Han 2 Dec 08, 2022
This is a collection of python modules that interact with the Ryze Tello drone.

This is a collection of python modules that interact with the Ryze Tello drone.

DJI-SDK 1.2k Jan 03, 2023
The PicoEMP is a low-cost Electromagnetic Fault Injection (EMFI) tool,

ChipSHOUTER-PicoEMP The PicoEMP is a low-cost Electromagnetic Fault Injection (EMFI) tool, designed specifically for self-study and hobbiest research.

NewAE Technology Inc. 312 Jan 07, 2023
Quasi-static control of the centroid of quadruped robot

Quasi-static control of quadruped robot   This is a demo of the quasi-static controller for the centroid of the quadruped robot. The Quadratic Program

Junwen Cui 21 Dec 12, 2022
Raspberry Pi Pico development platform for PlatformIO

Raspberry Pi Pico development platform for PlatformIO A few words in the beginning Before experimental please Reinstall the platform Version: 1.0.0 Th

Georgi Angelov 160 Dec 23, 2022
Run this code to blink your ThinkPad LED with a hidden mysterious Morse code! ;)

TMorse Run this code to blink your ThinkPad LED with a hidden mysterious Morse code! ;) Compatible with python3.9+. No third-party library is required

Mahyar 2 Jul 11, 2022
MicroPython driver for 74HC595 shift registers

MicroPython 74HC595 A MicroPython library for 74HC595 8-bit shift registers. There's both an SPI version and a bit-bang version, each with a slightly

Mike Causer 17 Nov 29, 2022
🐱 Petkit feeder components for HomeAssistant

Petkit for HomeAssistant Installing Download and copy custom_components/xiaomi_miot folder to custom_components folder in your HomeAssistant config fo

62 Dec 29, 2022
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 05, 2022
PlatformIO development platform for GSM modules

PlatformIO development platform for GSM modules Supported Modules Quectel M66 OpenCPU Arduino - TODO other - in progress... Supported Boards Comet M66

Georgi Angelov 5 Aug 06, 2022
CO2Ampel - This RaspberryPi project uses weather data to estimate the share of renewable energy in the power grid

CO2Ampel This RaspberryPi project uses weather data to estimate the share of ren

Felix 4 Jan 19, 2022
Count the number of people around you 👨‍👨‍👦 by monitoring wifi signals 📡 .

howmanypeoplearearound Count the number of people around you 👨‍👨‍👦 by monitoring wifi signals 📡 . howmanypeoplearearound calculates the number of

Zack 6.7k Jan 07, 2023