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)
Activate Numpad inside the touchpad with top right corner switch or F8 key

This is a python service which enables switching between numpad and touchpad for the Asus UX433. It may work for other models.

Mohamed Badaoui 230 Jan 08, 2023
HA-Edge-Connector - HA Edge Connector For Python

HA-Edge-Connector 1. Required a. Smartthings Hub & Homeassistant must be in same

chals 21 Dec 29, 2022
A python script to poll RPi GPIO pins and subscribe and publish their state via MQTT

MQTT-GPIO A python script to poll RPi GPIO pins and subscribe and publish their state via MQTT using TLS. This script is short and meant to be edited

23 Oct 12, 2021
Custom component for interacting with Octopus Energy

Home Assistant Octopus Energy ** WARNING: This component is currently a work in progress ** Custom component built from the ground up to bring your Oc

David Kendall 116 Jan 02, 2023
Self Driving Car Prototype

Package Delivery Rover 🚀 This project is a prototype of Self Driving Car. It's based on embedded systems, to meet the current requirement of delivery

Abhishek Pawar 1 Oct 31, 2021
Ingeniamotion is a library that works over ingenialink and aims to simplify the interaction with Ingenia's drives.

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

Ingenia Motion Control 7 Dec 15, 2022
Simples Keylogger para Windows com um autoboot implementado no sistema

MKW Keylogger Keylogger simples para Windos com um autoboot implementado no sistema, o malware irá capturar pressionamentos de tecla e armazená-lo em

3 Jul 03, 2021
Python library to manipulate Ingenico mobile payment device like iCT220 or iWL220 equipped with Telium Manager. RS232/USB.

Python library to manipulate Ingenico mobile payment device like iCT220 or iWL220 equipped with Telium Manager. RS232/USB.

TAHRI Ahmed R. 72 Dec 24, 2022
Home Assistant custom component to help ev-chargers stay below peak hourly energy levels.

Peaqev ev-charging Peaqev ev-charging is an attempt of charging an ev without breaching a preset monthly max-peak energy level. In order for this inte

Magnus Eldén 35 Dec 24, 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
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
This application works with serial communication. Use a simple gui to send and receive serial data from arduino and control leds and motor direction

This application works with serial communication. Use a simple gui to send and receive serial data from arduino and control leds and motor direction

ThyagoKZKR 2 Jul 18, 2022
ArucoFollow - A script for Robot Operating System and it is a part of a project Robot

ArucoFollow ArucoFollow is a script for Robot Operating System and it is a part

5 Jan 25, 2022
A script and GUI for controlling stepper motors from an arduino

A script and GUI for controlling stepper motors from an arduino (nema 23 in my case but should work for others in general)

Pip 2 Aug 01, 2022
Code reimplementation of some papers published in SAIL-Lab

SAIL SAIL-Lab统一代码库 Motivation 创建这个项目的动机最早来源于实验室组内成员相互Debug代码的时候遇到的麻烦。

Jianwen Chen 8 Nov 15, 2022
SPI driven CircuitPython driver for PCA9745B constant current LED driver.

Introduction THIS IS VERY MUCH ALPHA AND IN ACTIVE DEVELOPMENT. THINGS WILL BREAK! THIS MAY ALSO BREAK YOUR THINGS! SPI driven CircuitPython driver fo

Andrew Ferguson 1 Jan 14, 2022
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
The project is an open-source and low-cost kit to get started with underactuated robotics.

Torque Limited Simple Pendulum Introduction The project is an open-source and low-cost kit to get started with underactuated robotics. The kit targets

34 Dec 14, 2022
Technical Answers to Real-World Problems. Evolution of Watering Manually to Watering Automatically.

Automatic Watering System using Soil Moisture Sensor and RTC Timer with Arduino Technical Answers to Real-World Problems Know the plant, Grow the plan

NelakurthiSudheer 3 Jan 03, 2022
Automatic CPU speed & power optimizer for Linux

Automatic CPU speed & power optimizer for Linux based on active monitoring of laptop's battery state, CPU usage, CPU temperature and system load. Ultimately allowing you to improve battery life witho

Adnan Hodzic 3.4k Jan 07, 2023