{"id":27110845,"url":"https://github.com/vmapps/scapyfic","last_synced_at":"2025-04-09T21:52:32.201Z","repository":{"id":286433486,"uuid":"961388252","full_name":"vmapps/scapyfic","owner":"vmapps","description":"Various tools based on Scapy","archived":false,"fork":false,"pushed_at":"2025-04-06T21:19:03.000Z","size":14,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-09T21:52:30.007Z","etag":null,"topics":["python","scapy"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vmapps.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-04-06T12:17:56.000Z","updated_at":"2025-04-06T21:20:24.000Z","dependencies_parsed_at":"2025-04-06T13:31:54.850Z","dependency_job_id":"d45db69f-f530-4bd5-87bd-ebb0a918256c","html_url":"https://github.com/vmapps/scapyfic","commit_stats":null,"previous_names":["vmapps/scapyfic"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vmapps%2Fscapyfic","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vmapps%2Fscapyfic/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vmapps%2Fscapyfic/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vmapps%2Fscapyfic/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vmapps","download_url":"https://codeload.github.com/vmapps/scapyfic/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248119401,"owners_count":21050754,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["python","scapy"],"created_at":"2025-04-07T00:40:55.864Z","updated_at":"2025-04-09T21:52:32.184Z","avatar_url":"https://github.com/vmapps.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# scapyfic\n\nVarious tips and tricks on Scapy\n\n- [Scapy Awesome](#scapy-awesome)\n- [Scapy DNS2IP](#scapy-dns2ip)\n- [Scapy IP2DNS](#scapy-ip2dns)\n- [Scapy Scan ARP](#scapy-scan-arp)\n- [Scapy Scan ICMP](#scapy-scan-icmp)\n- [Scapy Scan TCP SYN](#scapy-scan-tcp-syn)\n- [Scapy Traceroute](#scapy-traceroute)\n\n## Scapy Awesome\n\nSome helpful scapy commands.\n\n```\nimport scapy.all as scapy\n\n# Scapy documentation\nprint( scapy.sniff.__doc__ )\n\n# Sniff traffic\npackets = scapy.sniff(\n    count=0,\n    iface='en0',\n    prn=lambda p:p.summary()\n    )\n\n# Sniff traffic filtering on IP layer\npackets = scapy.sniff(\n    count=0,\n    iface='en0',\n    prn=lambda p:p.summary(),\n    lfilter=lambda p:p.haslayer(scapy.IP)\n    )\n\n# Sniff traffic filtering on UDP layer\npackets = scapy.sniff(\n    count=0,\n    iface='en0',\n    prn=lambda p:p.summary(),\n    lfilter=lambda p:p.haslayer(scapy.UDP)\n    )\n\n# Sniff traffic filtering on DNS layer\npackets = scapy.sniff(\n    count=0,\n    iface='en0',\n    prn=lambda p:p.summary(),\n    lfilter=lambda p:p.haslayer(scapy.DNS)\n    )\n\n# Sniff traffic filtering on DNS Queries\npackets = scapy.sniff(\n    count=0,\n    iface='en0',\n    prn=lambda p:p.summary(),\n    lfilter=lambda p:p.haslayer(scapy.DNS) and p.getlayer(scapy.DNS).qr==0\n    )\n\npackets = scapy.sniff(\n    count=0,\n    iface='en0',\n    prn=lambda p:p[scapy.DNS].qd.qname.decode('utf-8'),\n    lfilter=lambda p:p.haslayer(scapy.DNS) and p.getlayer(scapy.DNS).qr==0\n    )\n```\n\n## Scapy DNS2IP\n\nSample script to resolve DNS name into IP addresses.\n\n```\n$ python3 scapy-dns2ip.py\nUsage: scapy-dns2ip.py \u003chost\u003e\n\n$ python3 scapy-dns2ip.py www.fmac.com\nwww.fmac.com address is ['3.33.251.168', '15.197.225.128']\n```\n\nWhat is script doing :\n\n- get `target` from command line with `sys.argv`\n- create layer from `scapy.IP()` and set resolver address using `dst`\n- create layer from `scapy.UDP()` and set destination port using `dport`\n- create layer from `scapy.DNS()` and `scapy.DNQR()` to set query using `qname` and `qtype`\n- forge packet from layers previously created with `scapy.sr1()`\n- return `an.rdata` array of results from `scapy.DNS()` entries\n\n## Scapy IP2DNS\n\nSample script to resolve IP address into DNS name.\n\n```\n$ python3 scapy-ip2dns.py\nUsage: scapy-ip2dns.py \u003cipaddr\u003e\n\n$ python3 scapy-ip2dns.py 2.20.10.35\n2.20.10.35 name is a2-20-10-35.deploy.static.akamaitechnologies.com\n```\n\nWhat is script doing :\n\n- get `target` from command line with `sys.argv`\n- convert IP address to `in-addr.arpa` format\n- create layer from `scapy.IP()` and set resolver address using `dst`\n- create layer from `scapy.UDP()` and set destination port using `dport`\n- create layer from `scapy.DNS()` and `scapy.DNQR()` to set query using `qname` and `qtype`\n- forge packet from layers previously created with `scapy.sr1()`\n- return `an.rdata` result from `scapy.DNS()` entry\n\n## Scapy Scan ARP\n\nSample script to scan IP target (or range) with ARP.\n\n```\n$ python3 scapy-scan-arp.py\nUsage: scapy-scan-arp.py \u003ctarget|range\u003e\n\n$ python3 scapy-scan-arp.py 192.168.0.119\nscan 192.168.0.119 with ARP\nARP reply from 192.168.0.119 (80:16:12:c5:b2:2c)\n```\n\nWhat is script doing :\n\n- get `target` from command line with `sys.argv`\n- create packet with layer `scapy.Ether()` under `scapy.ARP()`\n- set `dst` for `scapy.Ether()` to use broadcast address\n- set `pdst` for `scapy.ARP()`\n- send one `Ether()/ARP()` packet with `scapy.srp()`\n- display packets `src` and `hwsrc` from answers received\n\n## Scapy Scan ICMP\n\nSample script to scan IP target (or range) with ICMP.\n\n```\n$ python3 scapy-scan-icmp.py\nUsage: scapy-scan-icmp.py \u003ctarget|range\u003e\n\n$ python3 scapy-scan-icmp.py 192.168.1.0/24\nscan 192.168.1.0/24 with ICMP\nICMP echo-reply from 192.168.1.1\nICMP echo-reply from 192.168.1.51\nICMP echo-reply from 192.168.1.52\n```\n\nWhat is script doing :\n\n- get `target` from command line with `sys.argv`\n- create packet with layer `scapy.ICMP()` under `scapy.IP()`\n- set `dst` for `scapy.IP()`\n- send one `IP()/ICMP()` packet with `scapy.sr()`\n- display packets being type of `echo-reply` from answers received\n\n## Scapy Scan TCP SYN\n\nSample script to scan IP target (or range) with TCP SYN flag.\n\n```\n$ python3 scapy-scan-tcpsyn.py\nUsage: scapy-scan-tcpsyn.py \u003ctarget|range\u003e\n\n$ python3 scapy-scan-tcpsyn.py 192.168.0.0/24\nscan 192.168.0.0/24 with TCP SYN\nTCP SYN reply from 192.168.0.1\nTCP SYN reply from 192.168.0.92\nTCP SYN reply from 192.168.0.118\nTCP SYN reply from 192.168.0.161\nTCP SYN reply from 192.168.0.203\n```\n\nWhat is script doing :\n\n- get `target` from command line with `sys.argv`\n- create packet with layer `scapy.ICMP()` under `scapy.TCP()`\n- set `dst` for `scapy.IP()`\n- set `dport` and `flags` for `scapy.TCP()`\n- send one `IP()/TCP()` packet with `scapy.sr()`\n- display packets having proto set to `tcp` from answers received\n\n## Scapy Traceroute\n\nSample script to trace IP route to a target.\n\n```\n$ python3 scapy-traceroute.py\nUsage: scapy-traceroute.py \u003ctarget\u003e\n\n$ python3 scapy-traceroute.py www.cisco.com\ntraceroute to 2.20.10.35 (www.cisco.com)\n[ttl=1 ] reply type 11 from 192.168.0.1 (192.168.0.1)\n[ttl=2 ] reply type 11 from 192.168.1.1 (192.168.1.1)\n[ttl=3 ] timed out\n[ttl=4 ] timed out\n[ttl=5 ] timed out\n[ttl=6 ] timed out\n[ttl=7 ] reply type 11 from 193.251.131.8 (193.251.131.8)\n[ttl=8 ] reply type 11 from 81.52.187.80 (81.52.187.80)\n[ttl=9 ] reply type 0 from 2.20.10.35 (a2-20-10-35.deploy.static.akamaitechnologies.com)\n```\n\nWhat is script doing :\n\n- get `target` from command line with `sys.argv`\n- resolve name to IP address with `socket.gethostbyname()`\n- enter loop to send packets with `ttl=1`until `target` reached or `ttl=maxttl`\n  - create packet with layer `scapy.ICMP()` under `scapy.IP()`\n  - set `dst`and `ttl`values for `scapy.IP()`\n  - set `type` value for `scapy.ICMP()`\n  - send one `IP()/ICMP()` packet with `scapy.sr1()`\n  - if no packet returned, display timeout message\n  - else print source of `ICMP`packet received\n  - if packet received from `target`, then break the loop\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvmapps%2Fscapyfic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvmapps%2Fscapyfic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvmapps%2Fscapyfic/lists"}