JAVAFLOOD is a tool designed for launching Denial of Service (DoS) attacks on Minecraft Java Edition servers. This tool floods the server with multiple methods to overload the server’s resources, resulting in an unresponsive state.
Any unauthorized use, including attempting to disrupt, overload, or damage servers, is strictly prohibited and may be considered illegal under applicable laws. Such actions can lead to severe consequences for both the target systems and the individuals involved.
Please use this tool responsibly and only for legitimate security testing and academic purposes. Misuse of this tool is unethical, potentially unlawful, and strongly discouraged.
The developer of this tool only created it for educational and research purposes within a controlled environment and does not take any responsibility for any misuse, damage, or legal consequences resulting from intentional or unauthorized use by others.
-
TCP Handshake Flooding:
- Repeatedly initziates
TCP handshakesto consume server socket resources.
- Repeatedly initziates
-
Connection Reuse:
- Sends multiple forged packets over the same
TCP connectionto maximize impact.
- Sends multiple forged packets over the same
-
Multithreading:
- Uses
ThreadPoolExecutorto run multiple threads for parallel packet sending.
- Uses
-
Thread Synchronization:
- The monitoring thread runs in the background as a
daemon threads
- The monitoring thread runs in the background as a
-
Minecraft Protocol Abuse:
- Crafts and sends fake Minecraft handshake packets to simulate player connections.
-
Payload Padding:
- Adds random bytes to increase packet size and obfuscate attack patterns.
-
Rapid Connect-Disconnect Loops:
- Quickly opens and closes connections to exhaust server capacity.
-
Protocol Version Spoofing:
- Sends handshake packets using spoofed or invalid protocol versions to trigger unexpected server behavior.
-
Check Server Status:
- To check the server status directly with the api provided by mcstatus.io. Use the parameter
python3 javaflood.py -api < IP/Domain >
- To check the server status directly with the api provided by mcstatus.io. Use the parameter
| Argument | Required | Description |
|---|---|---|
| -ip | Yes | Defines the destination server IP address (e.g., 127.0.0.1). |
| -port | Yes | Specifies the target port (must integer between 1 and 65535). |
| -s | Yes | Configures the size (in bytes) of each transmitted packet. |
| -t | Yes | Determines the number of parallel execution threads. |
| -p | Yes | Sets the protocol version to be used during execution. |
| -d | Yes | Controls the total execution time (in seconds). |
| -api | Optional | Call the API function from mcstatus with the domain. |
| -load | Optional | Loads external configuration from a specified JSON file path. |
| -wait | Optional | Delays execution by a specified number of seconds. |
| -art | Optional | Toggles visibility of the logo (1 = show, 0 = hide). |
| -h | No | Show this help message and exit. |
-
Clone this repository to your local machine:
git clone https://github.com/Audrise/javaflood.git
cd javaflood -
Install the necessary Python libraries:
pip3 install -r requirements.txt
-
Run javaflood using several methods as below:
python3 javaflood.py -ip 120.0.0.1 -port 25565 -s 100 -t 100 -p 47 -d 60 -wait 10 -art 0
or you can use -load parameter:
python3 javaflood.py -load config.json
- Thanks to FiePaw for allowing me to fortify and modify the initial version of JAVAFLOOD developed by FiePaw.
- Thanks to BillyTheGoat356 which provides the PyStyle module for very nice terminal styling and Hyperion for nice obfuscation tool
- Thanks to mcstatus.io which provides API to check minecraft server easily and quickly.
By using the -load parameter, you can directly run the tool with the configuration set inside a .json file, without the need to manually input all the parameters. This is particularly useful for speeding up the setup process and running the tool with pre-configured settings.
For example, if you have a configuration file named config.json that contains the default settings for the tool, you can run the tool with the following command:
python3 javaflood.py -load config.jsonThis will load all parameters from config.json and run the tool.
Make sure the .json file you create is formatted correctly, with the parameters expected by the tool. Here's an example of a valid JSON structure for this tool:
{
"ip": "127.0.0.1",
"port": 25565,
"packet_size": 0,
"threads": 0,
"protocol": 0,
"duration": 0,
"wait": 60,
"art": 0
}