{"id":16161454,"url":"https://github.com/gamemann/packet-flooder","last_synced_at":"2025-03-18T22:30:45.953Z","repository":{"id":41878370,"uuid":"260106300","full_name":"gamemann/Packet-Flooder","owner":"gamemann","description":"A packet flooding/generating program I made that supports TCP, UDP, and ICMP packets. Includes functionality to change characteristics per packet and is also multithreaded.","archived":false,"fork":false,"pushed_at":"2021-01-25T00:30:55.000Z","size":64,"stargazers_count":30,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-17T00:01:58.524Z","etag":null,"topics":["c","denial-of-service","dos","dos-attack","fast","flood","flooding","multithreading","network","packet","packet-flood","packet-flooder","packet-generator","packetflood","pcktflood","pcktgen","pentest","pentest-tool","pentesting","security"],"latest_commit_sha":null,"homepage":"https://moddingcommunity.com/","language":"C","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/gamemann.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}},"created_at":"2020-04-30T03:39:23.000Z","updated_at":"2025-01-10T23:18:24.000Z","dependencies_parsed_at":"2022-08-20T08:10:55.947Z","dependency_job_id":null,"html_url":"https://github.com/gamemann/Packet-Flooder","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gamemann%2FPacket-Flooder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gamemann%2FPacket-Flooder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gamemann%2FPacket-Flooder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gamemann%2FPacket-Flooder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gamemann","download_url":"https://codeload.github.com/gamemann/Packet-Flooder/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244318344,"owners_count":20433882,"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":["c","denial-of-service","dos","dos-attack","fast","flood","flooding","multithreading","network","packet","packet-flood","packet-flooder","packet-generator","packetflood","pcktflood","pcktgen","pentest","pentest-tool","pentesting","security"],"created_at":"2024-10-10T02:25:18.321Z","updated_at":"2025-03-18T22:30:45.646Z","avatar_url":"https://github.com/gamemann.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Packet Flooder/Generator\n## Newer Packet Sequence Program (Faster)\nI would recommend checking out my newer Packet Sequence program [here](https://github.com/gamemann/Packet-Sequence). This newer tool takes my Packet Flooding/Generator tool to the next level by making it so you can define sequences with more features such as sourcing out as specific IP/CIDR ranges. It is still under development, but I'm making great progress and hope to implement functionality that'll allow it to operate as a network monitoring tool.\n\nThis tool is also **a lot** more faster than this Packet Flooder tool because I've moved as much instructions outside of the while loop (for sending packets) as possible. With that said, I've added command line support for replacing values in the first sequence. The only thing it does not include is native IPIP support. Other than that, it is overall a better solution than this program.\n\n## Description\nThis is a packet flooder/generator tool made in C that supports sending TCP, UDP, IPIP, and ICMP packets. This program also supports many features including randomizing each packet's characteristics such as its source IP, port, and more. This tool is also multithreaded by using `pthreads`. My goal is to achieve the highest packets per second rate with this tool while also being able to use neat features like randomizing payload, source IPs, and more.\n\n**Note** - Please use this tool at your own risk. I am not responsible for any damage done and do not support using this tool for illegal operations such as targeted (D)DoS attacks. This tool was primarily made for pen-testing.\n\n## Why Did I Make This?\nI've been learning how to mitigate (D)DoS attacks against my Anycast network and wanted to do pen-testing using different characteristics in each packet. I figured I'd make a pen-testing tool I can use to test out my (D)DoS mitigation methods on firewalls I make in the future and present (including my [XDP Firewall](https://github.com/gamemann/XDP-Firewall)).\n\n## Compiling\nI use GCC to compile this program. You must add `-lpthread` at the end of the command when compiling via GCC.\n\nHere's an example:\n\n```\ngit clone https://github.com/gamemann/Packet-Flooder.git\ncd Packet-Flooder\ngcc -g src/flood.c -o flood -lpthread\n```\n\n## Usage\nHere's output from the `--help` flag that goes over the program's command line usage:\n\n```\n./flood --help\nUsage for: ./flood:\n--dev -i =\u003e Interface name to bind to.\n--src -s =\u003e Source address (0/unset = random/spoof).\n--dst -d =\u003e Destination IP to send packets to.\n--port -p =\u003e Destination port (0/unset = random port).\n--sport =\u003e Source port (0/unset = random port).\n--internal =\u003e When set, if no source IP is specified, it will randomize the source IP from the 10.0.0.0/8 range.\n--interval =\u003e Interval between sending packets in micro seconds.\n--threads -t =\u003e Amount of threads to spawn (default is host's CPU count).\n--count -c =\u003e The maximum packet count allowed sent.\n--time =\u003e Amount of time in seconds to run tool for.\n--smac =\u003e Source MAC address in xx:xx:xx:xx:xx:xx format.\n--dmac =\u003e Destination MAC address in xx:xx:xx:xx:xx:xx format.\n--payload =\u003e The payload to send. Format is in hexadecimal. Example: FF FF FF FF 49.\n--verbose -v =\u003e Print how much data we've sent each time.\n--nostats =\u003e Do not track PPS and bandwidth. This may increase performance.\n--urg =\u003e Set the URG flag for TCP packets.\n--ack =\u003e Set the ACK flag for TCP packets.\n--psh =\u003e Set the PSH flag for TCP packets.\n--rst =\u003e Set the RST flag for TCP packets.\n--syn =\u003e Set the SYN flag for TCP packets.\n--fin =\u003e Set the FIN flag for TCP packets.\n--min =\u003e Minimum payload length.\n--max =\u003e Maximum payload length.\n--tcp =\u003e Send TCP packets.\n--icmp =\u003e Send ICMP packets.\n--icmptype =\u003e The ICMP type to send when --icmp is specified.\n--icmpcode =\u003e The ICMP code to send when --icmp is specified.\n--ipip =\u003e Add outer IP header in IPIP format.\n--ipipsrc =\u003e When IPIP is specified, use this as outer IP header's source address.\n--ipipdst =\u003e When IPIP is specified, use this as outer IP header's destination address.\n--nocsum =\u003e Do not calculate the IP header's checksum. Useful for checksum offloading on the hardware which'll result in better performance.\n--nocsum4 =\u003e Do not calculate the layer 4's checksum (e.g. TCP/UDP). It will leave the checksum field as 0 in the headers.\n--minttl =\u003e The minimum TTL (Time-To-Live) range for a packet.\n--maxttl =\u003e The maximum TTL (Time-To-Live) range for a packet.\n--tos =\u003e The TOS (Type Of Service) to set on each packet.\n--help -h =\u003e Show help menu information.\n```\n\nExample:\n\n```\n./flood --dev ens18 --dst 10.50.0.4 --port 80 -t 1 --interval 100000 --tcp --min 1200 --max 1200 -v\n```\n\n## Credits\n* [Christian Deacon](https://www.linkedin.com/in/christian-deacon-902042186/) - Created program.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgamemann%2Fpacket-flooder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgamemann%2Fpacket-flooder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgamemann%2Fpacket-flooder/lists"}