{"library":"scapy","title":"Scapy","description":"Scapy is a powerful Python-based interactive packet manipulation tool that enables users to forge, decode, send, and sniff network packets. It supports a wide array of protocols and can function as an interactive shell (REPL) or as a library within Python scripts. Scapy runs on Linux, macOS, most Unix-like systems, and Windows (requiring Npcap). The current version is 2.7.0, and it maintains an active release cadence.","language":"python","status":"active","last_verified":"Wed May 20","install":{"commands":["pip install scapy"],"cli":{"name":"scapy","version":"\u001b[31m\u001b[1mERROR: option --version not recognized\u001b[0m\u001b[0m"}},"imports":["from scapy.all import *"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"from scapy.all import *\n\n# Craft an IP packet with an ICMP payload\npacket = IP(dst=\"8.8.8.8\")/ICMP()\n\n# Send the packet and receive a response\n# Note: Requires root/admin privileges to send/receive raw packets\n# Use os.environ.get('SCAPY_IFACE', 'eth0') to specify an interface if needed\n# For simple testing, can often run as sudo python your_script.py\n\n# sr1 sends one packet and waits for one answer\n# timeout is crucial for non-blocking execution in scripts\nresp = sr1(packet, timeout=1, verbose=0)\n\nif resp:\n    print(f\"Received response from: {resp.src}\")\n    resp.show()\nelse:\n    print(\"No response received.\")\n\n# Example of sniffing packets (run for 2 packets or 5 seconds)\n# Sniffing often requires elevated privileges\ndef print_packet_summary(pkt):\n    print(pkt.summary())\n\n# sniff(prn=print_packet_summary, count=2, timeout=5)\n# print(\"Sniffing complete.\")","lang":"python","description":"This quickstart demonstrates how to import Scapy, craft a basic IP/ICMP packet, send it, and process the response. It also includes a commented-out example for sniffing packets. Sending and sniffing raw packets with Scapy typically requires root or administrator privileges. The `sr1` function sends one packet and waits for a single response, while `sniff` can capture multiple packets, using a callback function for processing.","tag":null,"tag_description":null,"last_tested":"2026-04-25","results":[{"runtime":"python:3.10-alpine","exit_code":0},{"runtime":"python:3.10-slim","exit_code":0},{"runtime":"python:3.11-alpine","exit_code":0},{"runtime":"python:3.11-slim","exit_code":0},{"runtime":"python:3.12-alpine","exit_code":0},{"runtime":"python:3.12-slim","exit_code":0},{"runtime":"python:3.13-alpine","exit_code":0},{"runtime":"python:3.13-slim","exit_code":0},{"runtime":"python:3.9-alpine","exit_code":0},{"runtime":"python:3.9-slim","exit_code":0}]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-20","installed_version":"2.7.0","pypi_latest":"2.7.0","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":2.7,"avg_import_s":3.65,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"scapy","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":2.77,"mem_mb":53.5,"disk_size":"35.7M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"scapy","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":3.35,"mem_mb":53.5,"disk_size":"35.7M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"scapy","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.5,"import_time_s":1.9,"mem_mb":53.5,"disk_size":"36M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"scapy","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":2.1,"mem_mb":53.5,"disk_size":"36M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"scapy","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":4.86,"mem_mb":54.7,"disk_size":"41.6M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"scapy","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":5.69,"mem_mb":54.7,"disk_size":"41.6M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"scapy","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.6,"import_time_s":4.46,"mem_mb":54.7,"disk_size":"42M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"scapy","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":4.5,"mem_mb":54.7,"disk_size":"42M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"scapy","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":3.58,"mem_mb":53,"disk_size":"32.5M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"scapy","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":4.26,"mem_mb":53,"disk_size":"32.5M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"scapy","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.6,"import_time_s":4.14,"mem_mb":52.9,"disk_size":"33M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"scapy","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":4.72,"mem_mb":52.9,"disk_size":"33M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"scapy","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":3.57,"mem_mb":53.2,"disk_size":"32.3M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"scapy","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":4.11,"mem_mb":53.2,"disk_size":"32.2M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"scapy","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.8,"import_time_s":3.81,"mem_mb":53.2,"disk_size":"33M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"scapy","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":4.48,"mem_mb":53.2,"disk_size":"33M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"scapy","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":2.57,"mem_mb":53.4,"disk_size":"35.2M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"scapy","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":3.26,"mem_mb":53.4,"disk_size":"35.2M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"scapy","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3,"import_time_s":2.22,"mem_mb":53.3,"disk_size":"36M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"scapy","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":2.71,"mem_mb":53.3,"disk_size":"36M"}]}}