├── BenignAPK ├── a.SurlyProjectFinal.apk ├── ae.gov.dha.dha.apk └── aero.zztrop.apk ├── ExtractorAIO.py ├── LICENSE ├── MalwareAPK ├── a5starapps.com.drkalamquotes.apk ├── ackman.placemarks.apk └── ackmaniac.currencyfxrates.apk ├── Modules └── jadx │ ├── bin │ └── jadx │ └── lib │ ├── android-29-clst.jar │ ├── android-29-res.jar │ ├── animal-sniffer-annotations-1.17.jar │ ├── annotations-17.0.0.jar │ ├── antlr-2.7.7.jar │ ├── antlr-runtime-3.5.2.jar │ ├── apksig-3.4.1.jar │ ├── asm-7.1.jar │ ├── baksmali-2.2.7.jar │ ├── checker-qual-2.8.1.jar │ ├── commons-lang3-3.9.jar │ ├── commons-text-1.6.jar │ ├── dexlib2-2.2.7.jar │ ├── dx-1.16.jar │ ├── error_prone_annotations-2.3.2.jar │ ├── failureaccess-1.0.1.jar │ ├── gson-2.8.5.jar │ ├── guava-28.0-jre.jar │ ├── image-viewer-1.2.3.jar │ ├── j2objc-annotations-1.3.jar │ ├── jadx-cli-dev.jar │ ├── jadx-core-dev.jar │ ├── jadx-gui-dev.jar │ ├── jcommander-1.74.jar │ ├── jfontchooser-1.0.5.jar │ ├── jsr305-3.0.2.jar │ ├── listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar │ ├── logback-classic-1.2.3.jar │ ├── logback-core-1.2.3.jar │ ├── reactive-streams-1.0.2.jar │ ├── rsyntaxtextarea-3.0.3.jar │ ├── rxjava-2.2.10.jar │ ├── rxjava2-swing-0.3.7.jar │ ├── slf4j-api-1.7.26.jar │ ├── smali-2.2.7.jar │ ├── stringtemplate-3.2.1.jar │ └── util-2.2.7.jar ├── PermList └── DefaultPermList.txt ├── README.md └── TODO /BenignAPK/a.SurlyProjectFinal.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/BenignAPK/a.SurlyProjectFinal.apk -------------------------------------------------------------------------------- /BenignAPK/ae.gov.dha.dha.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/BenignAPK/ae.gov.dha.dha.apk -------------------------------------------------------------------------------- /BenignAPK/aero.zztrop.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/BenignAPK/aero.zztrop.apk -------------------------------------------------------------------------------- /ExtractorAIO.py: -------------------------------------------------------------------------------- 1 | """ 2 | Author : Saket Upadhyay 3 | Android Permission Extraction and Database Creation 4 | 5 | 26 Sept. 2019 6 | """ 7 | from os import system as sys 8 | import os, time 9 | import xml.etree.ElementTree as ET 10 | import numpy as np 11 | import csv 12 | 13 | 14 | 15 | # FUNCTION TO MERGE FOUND PERMISSIONS TO DEFAULT PERMISSION LIST TO CREATE COMPRIHENSIVE PERMISSION LIST 16 | def PermListUpdater(): 17 | updateList = [] 18 | defaultList = [] 19 | with open('./PermList/UpdatePermList.txt') as updateFile: 20 | updatedata = updateFile.read() 21 | updateList = updatedata.split('\n') 22 | updateList.pop() 23 | with open('./PermList/DefaultPermList.txt') as defaultFile: 24 | defaultdata = defaultFile.read() 25 | defaultList = defaultdata.split('\n') 26 | defaultList.pop() 27 | 28 | newList=defaultList+list(set(updateList) - set(defaultList)) 29 | 30 | with open('./PermList/UpdatedPermList.txt', 'w') as dumpFile: 31 | for i in newList: 32 | dumpFile.write(i+'\n') 33 | 34 | 35 | # FUNCTION TO CREATE .csv FILE TO STORE DATA FROM PERMISSION LIST SUPPLIED 36 | def CSVFormatter(): 37 | test_file=open("./PermList/UpdatedPermList.txt") 38 | data=test_file.read() 39 | test_file.close() 40 | 41 | permlist=data.split('\n') 42 | permlist.pop() 43 | 44 | csv_row_data=['NAME'] #ADD NAME COLUMN 45 | csv_row_data += permlist 46 | csv_row_data.append('CLASS') # ADD PERMISSION COLUMN 47 | 48 | with open('data.csv','w') as csv_file: 49 | writer=csv.writer(csv_file) 50 | writer.writerow(csv_row_data) 51 | 52 | 53 | #FUNCTION TO EXTRACT PERMISSIONS FROM APPLICATIONS TO CREATE A LIST 54 | def Extract(): 55 | DIRTYPE=["./MalwareAPK","./BenignAPK"] 56 | permCollection = set() 57 | 58 | 59 | for datastoredir in DIRTYPE: 60 | if datastoredir == "./MalwareAPK": # FILTER APK TYPE TO AID IN LABEL GENERATION 61 | apktype="MALWARE" 62 | else: 63 | apktype="BENIGN" 64 | Flag=1 65 | TimeStamp = str(time.time()) 66 | Jdax = "./Modules/jadx/bin/jadx" # JADX MODULE PATH 67 | TargetApkPath = datastoredir 68 | ApkNameList = os.listdir(datastoredir) 69 | if len(ApkNameList) == int(0): 70 | Flag=0 71 | 72 | if Flag != int(0): 73 | ApkNameList.sort() 74 | TargetApkPath = datastoredir+"/" 75 | CurrentApk = 0 76 | 77 | for ApkName in ApkNameList: 78 | TargetApk = TargetApkPath + ApkName 79 | 80 | print("("+str(apktype)+")"+ " [" + str(CurrentApk + 1) + ' / ' + str(len(ApkNameList)) + "] --- "+ApkName,end="") 81 | 82 | sys(Jdax + " -d ./UnpackedApk/" + ApkName + TimeStamp + " " + TargetApk+ " >/dev/null" ) # USE JADX TO EXTRACT FILES FROM APK AND MAINFEST.XML 83 | UnpackedDir = "./UnpackedApk/" + ApkName + TimeStamp 84 | MainfestPath = UnpackedDir + "/resources/AndroidManifest.xml" 85 | try: 86 | root = ET.parse(MainfestPath).getroot() 87 | permissions = root.findall("uses-permission") 88 | 89 | print(" SET STATUS :", end=' ') # ADD NEW PERMISSION TO THE LIST 90 | for perm in permissions: 91 | for att in perm.attrib: 92 | permelement = perm.attrib[att] 93 | 94 | if permelement in permCollection: 95 | print("0", end=' ') 96 | else: 97 | print("1", end=' ') 98 | permCollection.add(permelement) 99 | 100 | except FileNotFoundError: 101 | print('Error') 102 | print(TargetApk) 103 | pass 104 | sys("rm -f -R " + UnpackedDir) 105 | print() 106 | CurrentApk += 1 107 | 108 | 109 | permList = list(permCollection) 110 | 111 | 112 | with open("./PermList/UpdatePermList.txt", 'w') as file: # SAVE LIST IN FILE. 113 | for i in permList: 114 | file.write(i + '\n') 115 | 116 | 117 | #FUNCTION TO CREATE DATASET FROM EXISTING .csv FILE AND SUPPLIED APK FILES FOLDER. 118 | def Bagger(datastoredir): 119 | if datastoredir == "./MalwareAPK": 120 | TYPE=1 # TYPE SET TO DIFFERENTIATE MALWARE AND BENIGN IN DATASET WITH LABELS 121 | print("\n\t ** Extracting From Malware Samples ** \n\n") 122 | elif datastoredir =="./BenignAPK": 123 | TYPE=0 124 | print("\n\t ** Extracting From Benign Samples ** \n\n") 125 | TimeStamp = str(time.time()) 126 | Flag=1 127 | 128 | Jdax = "./Modules/jadx/bin/jadx" 129 | TargetApkPath = datastoredir+"/" 130 | ApkNameList = os.listdir(datastoredir) 131 | if len(ApkNameList) == int(0): 132 | Flag=0 133 | 134 | if Flag != int(0): 135 | ApkNameList.sort() 136 | TotalApks = len(ApkNameList) 137 | CurrentApk = 0 138 | fieldnames=[] 139 | with open('data.csv') as csv_file: 140 | CSVREADER=csv.DictReader(csv_file) 141 | fieldnames=CSVREADER.fieldnames #GET THE FIELD NAMES 142 | 143 | csv_master_dict=dict.fromkeys(fieldnames,0) 144 | 145 | 146 | for ApkName in ApkNameList: 147 | TargetApk = TargetApkPath + ApkName 148 | 149 | print(">[" + str(CurrentApk + 1) + ' / ' + str(TotalApks) + "] --- "+ApkName ,end=' ') 150 | print("\t.",end=' ') 151 | sys(Jdax + " -d ./UnpackedApk/" + ApkName + TimeStamp + " " + TargetApk + " >/dev/null") #EXTRACT THE PERMISSIONS FROM THE APK FILES 152 | print(".",end=' ') 153 | 154 | UnpackedDir = "./UnpackedApk/" + ApkName + TimeStamp 155 | MainfestPath = UnpackedDir + "/resources/AndroidManifest.xml" 156 | 157 | try: 158 | root = ET.parse(MainfestPath).getroot() # FORMAT DATA ROW 159 | permissions = root.findall("uses-permission") 160 | csv_master_dict=dict.fromkeys(fieldnames,0) 161 | csv_master_dict['NAME']=ApkName 162 | csv_master_dict['CLASS']=TYPE 163 | for perm in permissions: 164 | for att in perm.attrib: 165 | permelement = perm.attrib[att] 166 | csv_master_dict[permelement]=1 167 | sys("rm -f -R " + UnpackedDir) 168 | print(".", end=' ') 169 | with open('data.csv', 'a') as csv_dump: 170 | CSVwriter = csv.DictWriter(csv_dump, fieldnames=fieldnames) 171 | CSVwriter.writerow(csv_master_dict) # SAVE DATA TO DATASET ROW BY ROW FOR EACH APPLICATION 172 | print(".") 173 | except Exception: 174 | print("EERRRROORR") 175 | pass 176 | CurrentApk += 1 177 | 178 | 179 | 180 | # MAIN DRIVER FUNCTION 181 | def Main(): 182 | sys("rm './PermList/UpdatePermList.txt' './PermList/UpdatePermList2.txt' './PermList/UpdatedPermList.txt'") # TO CLEAN THE STRUCTURE BEFORE STARTING 183 | sys("rm -rf ./UnpackedApk/*") 184 | Malware_Directory_Name="./MalwareAPK" 185 | Benign_Directory_Name="./BenignAPK" 186 | sys("clear") 187 | print("\tANDROID PERMISSION BASED DATASET CREATOR FOR ML MODELS \n\tGIT : https://github.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python\n\n") 188 | print("Extracting Permissions\t[*---]") 189 | Extract() 190 | print("\n\nCreating Base Permission List\t[**--]") 191 | PermListUpdater() 192 | print("\n\nCreating Base Dataset\t[***-]") 193 | CSVFormatter() 194 | print("\n\nCreating Main Dataset\t[****]") 195 | Bagger(Benign_Directory_Name) 196 | Bagger(Malware_Directory_Name) 197 | print("\n## Cleaning Temp. Files") 198 | sys("rm -rf ./UnpackedApk/*") 199 | sys("rm './PermList/UpdatePermList.txt' './PermList/UpdatedPermList.txt'") 200 | print("\n\n ***************DONE***************** \nSaved as data.csv") 201 | 202 | 203 | if __name__ == '__main__': 204 | Main() 205 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Saket Upadhyay 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /MalwareAPK/a5starapps.com.drkalamquotes.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/MalwareAPK/a5starapps.com.drkalamquotes.apk -------------------------------------------------------------------------------- /MalwareAPK/ackman.placemarks.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/MalwareAPK/ackman.placemarks.apk -------------------------------------------------------------------------------- /MalwareAPK/ackmaniac.currencyfxrates.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/MalwareAPK/ackmaniac.currencyfxrates.apk -------------------------------------------------------------------------------- /Modules/jadx/bin/jadx: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | # 4 | # Copyright 2015 the original author or authors. 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | ############################################################################## 20 | ## 21 | ## jadx start up script for UN*X 22 | ## 23 | ############################################################################## 24 | 25 | # Attempt to set APP_HOME 26 | # Resolve links: $0 may be a link 27 | PRG="$0" 28 | # Need this for relative symlinks. 29 | while [ -h "$PRG" ] ; do 30 | ls=`ls -ld "$PRG"` 31 | link=`expr "$ls" : '.*-> \(.*\)$'` 32 | if expr "$link" : '/.*' > /dev/null; then 33 | PRG="$link" 34 | else 35 | PRG=`dirname "$PRG"`"/$link" 36 | fi 37 | done 38 | SAVED="`pwd`" 39 | cd "`dirname \"$PRG\"`/.." >/dev/null 40 | APP_HOME="`pwd -P`" 41 | cd "$SAVED" >/dev/null 42 | 43 | APP_NAME="jadx" 44 | APP_BASE_NAME=`basename "$0"` 45 | 46 | # Add default JVM options here. You can also use JAVA_OPTS and JADX_OPTS to pass JVM options to this script. 47 | DEFAULT_JVM_OPTS='"-Xms128M" "-Xmx4g" "-XX:+UseG1GC"' 48 | 49 | # Use the maximum available, or set MAX_FD != -1 to use that value. 50 | MAX_FD="maximum" 51 | 52 | warn () { 53 | echo "$*" 54 | } 55 | 56 | die () { 57 | echo 58 | echo "$*" 59 | echo 60 | exit 1 61 | } 62 | 63 | # OS specific support (must be 'true' or 'false'). 64 | cygwin=false 65 | msys=false 66 | darwin=false 67 | nonstop=false 68 | case "`uname`" in 69 | CYGWIN* ) 70 | cygwin=true 71 | ;; 72 | Darwin* ) 73 | darwin=true 74 | ;; 75 | MINGW* ) 76 | msys=true 77 | ;; 78 | NONSTOP* ) 79 | nonstop=true 80 | ;; 81 | esac 82 | 83 | CLASSPATH=$APP_HOME/lib/jadx-cli-dev.jar:$APP_HOME/lib/jadx-core-dev.jar:$APP_HOME/lib/dx-1.16.jar:$APP_HOME/lib/android-29-clst.jar:$APP_HOME/lib/android-29-res.jar:$APP_HOME/lib/logback-classic-1.2.3.jar:$APP_HOME/lib/slf4j-api-1.7.26.jar:$APP_HOME/lib/baksmali-2.2.7.jar:$APP_HOME/lib/smali-2.2.7.jar:$APP_HOME/lib/util-2.2.7.jar:$APP_HOME/lib/jcommander-1.74.jar:$APP_HOME/lib/asm-7.1.jar:$APP_HOME/lib/annotations-17.0.0.jar:$APP_HOME/lib/gson-2.8.5.jar:$APP_HOME/lib/dexlib2-2.2.7.jar:$APP_HOME/lib/guava-28.0-jre.jar:$APP_HOME/lib/logback-core-1.2.3.jar:$APP_HOME/lib/antlr-runtime-3.5.2.jar:$APP_HOME/lib/stringtemplate-3.2.1.jar:$APP_HOME/lib/failureaccess-1.0.1.jar:$APP_HOME/lib/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar:$APP_HOME/lib/jsr305-3.0.2.jar:$APP_HOME/lib/checker-qual-2.8.1.jar:$APP_HOME/lib/error_prone_annotations-2.3.2.jar:$APP_HOME/lib/j2objc-annotations-1.3.jar:$APP_HOME/lib/animal-sniffer-annotations-1.17.jar:$APP_HOME/lib/antlr-2.7.7.jar 84 | 85 | # Determine the Java command to use to start the JVM. 86 | if [ -n "$JAVA_HOME" ] ; then 87 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 88 | # IBM's JDK on AIX uses strange locations for the executables 89 | JAVACMD="$JAVA_HOME/jre/sh/java" 90 | else 91 | JAVACMD="$JAVA_HOME/bin/java" 92 | fi 93 | if [ ! -x "$JAVACMD" ] ; then 94 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 95 | 96 | Please set the JAVA_HOME variable in your environment to match the 97 | location of your Java installation." 98 | fi 99 | else 100 | JAVACMD="java" 101 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 102 | 103 | Please set the JAVA_HOME variable in your environment to match the 104 | location of your Java installation." 105 | fi 106 | 107 | # Increase the maximum file descriptors if we can. 108 | if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then 109 | MAX_FD_LIMIT=`ulimit -H -n` 110 | if [ $? -eq 0 ] ; then 111 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 112 | MAX_FD="$MAX_FD_LIMIT" 113 | fi 114 | ulimit -n $MAX_FD 115 | if [ $? -ne 0 ] ; then 116 | warn "Could not set maximum file descriptor limit: $MAX_FD" 117 | fi 118 | else 119 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 120 | fi 121 | fi 122 | 123 | # For Darwin, add options to specify how the application appears in the dock 124 | if $darwin; then 125 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 126 | fi 127 | 128 | # For Cygwin, switch paths to Windows format before running java 129 | if $cygwin ; then 130 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` 131 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 132 | JAVACMD=`cygpath --unix "$JAVACMD"` 133 | 134 | # We build the pattern for arguments to be converted via cygpath 135 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 136 | SEP="" 137 | for dir in $ROOTDIRSRAW ; do 138 | ROOTDIRS="$ROOTDIRS$SEP$dir" 139 | SEP="|" 140 | done 141 | OURCYGPATTERN="(^($ROOTDIRS))" 142 | # Add a user-defined pattern to the cygpath arguments 143 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then 144 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 145 | fi 146 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 147 | i=0 148 | for arg in "$@" ; do 149 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 150 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 151 | 152 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 153 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 154 | else 155 | eval `echo args$i`="\"$arg\"" 156 | fi 157 | i=$((i+1)) 158 | done 159 | case $i in 160 | (0) set -- ;; 161 | (1) set -- "$args0" ;; 162 | (2) set -- "$args0" "$args1" ;; 163 | (3) set -- "$args0" "$args1" "$args2" ;; 164 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;; 165 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 166 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 167 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 168 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 169 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 170 | esac 171 | fi 172 | 173 | # Escape application args 174 | save () { 175 | for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done 176 | echo " " 177 | } 178 | APP_ARGS=$(save "$@") 179 | 180 | # Collect all arguments for the java command, following the shell quoting and substitution rules 181 | eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $JADX_OPTS -classpath "\"$CLASSPATH\"" jadx.cli.JadxCLI "$APP_ARGS" 182 | 183 | # by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong 184 | if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then 185 | cd "$(dirname "$0")" 186 | fi 187 | 188 | exec "$JAVACMD" "$@" 189 | -------------------------------------------------------------------------------- /Modules/jadx/lib/android-29-clst.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/Modules/jadx/lib/android-29-clst.jar -------------------------------------------------------------------------------- /Modules/jadx/lib/android-29-res.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/Modules/jadx/lib/android-29-res.jar -------------------------------------------------------------------------------- /Modules/jadx/lib/animal-sniffer-annotations-1.17.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/Modules/jadx/lib/animal-sniffer-annotations-1.17.jar -------------------------------------------------------------------------------- /Modules/jadx/lib/annotations-17.0.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/Modules/jadx/lib/annotations-17.0.0.jar -------------------------------------------------------------------------------- /Modules/jadx/lib/antlr-2.7.7.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/Modules/jadx/lib/antlr-2.7.7.jar -------------------------------------------------------------------------------- /Modules/jadx/lib/antlr-runtime-3.5.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/Modules/jadx/lib/antlr-runtime-3.5.2.jar -------------------------------------------------------------------------------- /Modules/jadx/lib/apksig-3.4.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/Modules/jadx/lib/apksig-3.4.1.jar -------------------------------------------------------------------------------- /Modules/jadx/lib/asm-7.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/Modules/jadx/lib/asm-7.1.jar -------------------------------------------------------------------------------- /Modules/jadx/lib/baksmali-2.2.7.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/Modules/jadx/lib/baksmali-2.2.7.jar -------------------------------------------------------------------------------- /Modules/jadx/lib/checker-qual-2.8.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/Modules/jadx/lib/checker-qual-2.8.1.jar -------------------------------------------------------------------------------- /Modules/jadx/lib/commons-lang3-3.9.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/Modules/jadx/lib/commons-lang3-3.9.jar -------------------------------------------------------------------------------- /Modules/jadx/lib/commons-text-1.6.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/Modules/jadx/lib/commons-text-1.6.jar -------------------------------------------------------------------------------- /Modules/jadx/lib/dexlib2-2.2.7.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/Modules/jadx/lib/dexlib2-2.2.7.jar -------------------------------------------------------------------------------- /Modules/jadx/lib/dx-1.16.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/Modules/jadx/lib/dx-1.16.jar -------------------------------------------------------------------------------- /Modules/jadx/lib/error_prone_annotations-2.3.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/Modules/jadx/lib/error_prone_annotations-2.3.2.jar -------------------------------------------------------------------------------- /Modules/jadx/lib/failureaccess-1.0.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/Modules/jadx/lib/failureaccess-1.0.1.jar -------------------------------------------------------------------------------- /Modules/jadx/lib/gson-2.8.5.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/Modules/jadx/lib/gson-2.8.5.jar -------------------------------------------------------------------------------- /Modules/jadx/lib/guava-28.0-jre.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/Modules/jadx/lib/guava-28.0-jre.jar -------------------------------------------------------------------------------- /Modules/jadx/lib/image-viewer-1.2.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/Modules/jadx/lib/image-viewer-1.2.3.jar -------------------------------------------------------------------------------- /Modules/jadx/lib/j2objc-annotations-1.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/Modules/jadx/lib/j2objc-annotations-1.3.jar -------------------------------------------------------------------------------- /Modules/jadx/lib/jadx-cli-dev.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/Modules/jadx/lib/jadx-cli-dev.jar -------------------------------------------------------------------------------- /Modules/jadx/lib/jadx-core-dev.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/Modules/jadx/lib/jadx-core-dev.jar -------------------------------------------------------------------------------- /Modules/jadx/lib/jadx-gui-dev.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/Modules/jadx/lib/jadx-gui-dev.jar -------------------------------------------------------------------------------- /Modules/jadx/lib/jcommander-1.74.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/Modules/jadx/lib/jcommander-1.74.jar -------------------------------------------------------------------------------- /Modules/jadx/lib/jfontchooser-1.0.5.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/Modules/jadx/lib/jfontchooser-1.0.5.jar -------------------------------------------------------------------------------- /Modules/jadx/lib/jsr305-3.0.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/Modules/jadx/lib/jsr305-3.0.2.jar -------------------------------------------------------------------------------- /Modules/jadx/lib/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/Modules/jadx/lib/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar -------------------------------------------------------------------------------- /Modules/jadx/lib/logback-classic-1.2.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/Modules/jadx/lib/logback-classic-1.2.3.jar -------------------------------------------------------------------------------- /Modules/jadx/lib/logback-core-1.2.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/Modules/jadx/lib/logback-core-1.2.3.jar -------------------------------------------------------------------------------- /Modules/jadx/lib/reactive-streams-1.0.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/Modules/jadx/lib/reactive-streams-1.0.2.jar -------------------------------------------------------------------------------- /Modules/jadx/lib/rsyntaxtextarea-3.0.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/Modules/jadx/lib/rsyntaxtextarea-3.0.3.jar -------------------------------------------------------------------------------- /Modules/jadx/lib/rxjava-2.2.10.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/Modules/jadx/lib/rxjava-2.2.10.jar -------------------------------------------------------------------------------- /Modules/jadx/lib/rxjava2-swing-0.3.7.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/Modules/jadx/lib/rxjava2-swing-0.3.7.jar -------------------------------------------------------------------------------- /Modules/jadx/lib/slf4j-api-1.7.26.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/Modules/jadx/lib/slf4j-api-1.7.26.jar -------------------------------------------------------------------------------- /Modules/jadx/lib/smali-2.2.7.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/Modules/jadx/lib/smali-2.2.7.jar -------------------------------------------------------------------------------- /Modules/jadx/lib/stringtemplate-3.2.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/Modules/jadx/lib/stringtemplate-3.2.1.jar -------------------------------------------------------------------------------- /Modules/jadx/lib/util-2.2.7.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python/3717a43da7365df0f518696a7e0c59cb1c4e738e/Modules/jadx/lib/util-2.2.7.jar -------------------------------------------------------------------------------- /PermList/DefaultPermList.txt: -------------------------------------------------------------------------------- 1 | android.permission.ACCESS_ALL_DOWNLOADS 2 | android.permission.ACCESS_BLUETOOTH_SHARE 3 | android.permission.ACCESS_CACHE_FILESYSTEM 4 | android.permission.ACCESS_CHECKIN_PROPERTIES 5 | android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY 6 | android.permission.ACCESS_DOWNLOAD_MANAGER 7 | android.permission.ACCESS_DOWNLOAD_MANAGER_ADVANCED 8 | android.permission.ACCESS_DRM_CERTIFICATES 9 | android.permission.ACCESS_EPHEMERAL_APPS 10 | android.permission.ACCESS_FM_RADIO 11 | android.permission.ACCESS_INPUT_FLINGER 12 | android.permission.ACCESS_KEYGUARD_SECURE_STORAGE 13 | android.permission.ACCESS_LOCATION_EXTRA_COMMANDS 14 | android.permission.ACCESS_MOCK_LOCATION 15 | android.permission.ACCESS_MTP 16 | android.permission.ACCESS_NETWORK_CONDITIONS 17 | android.permission.ACCESS_NETWORK_STATE 18 | android.permission.ACCESS_NOTIFICATIONS 19 | android.permission.ACCESS_NOTIFICATION_POLICY 20 | android.permission.ACCESS_PDB_STATE 21 | android.permission.ACCESS_SURFACE_FLINGER 22 | android.permission.ACCESS_VOICE_INTERACTION_SERVICE 23 | android.permission.ACCESS_VR_MANAGER 24 | android.permission.ACCESS_WIFI_STATE 25 | android.permission.ACCESS_WIMAX_STATE 26 | android.permission.ACCOUNT_MANAGER 27 | android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK 28 | android.permission.ASEC_ACCESS 29 | android.permission.ASEC_CREATE 30 | android.permission.ASEC_DESTROY 31 | android.permission.ASEC_MOUNT_UNMOUNT 32 | android.permission.ASEC_RENAME 33 | android.permission.AUTHENTICATE_ACCOUNTS 34 | android.permission.BACKUP 35 | android.permission.BATTERY_STATS 36 | android.permission.BIND_ACCESSIBILITY_SERVICE 37 | android.permission.BIND_APPWIDGET 38 | android.permission.BIND_CARRIER_MESSAGING_SERVICE 39 | android.permission.BIND_CARRIER_SERVICES 40 | android.permission.BIND_CHOOSER_TARGET_SERVICE 41 | android.permission.BIND_CONDITION_PROVIDER_SERVICE 42 | android.permission.BIND_CONNECTION_SERVICE 43 | android.permission.BIND_DEVICE_ADMIN 44 | android.permission.BIND_DIRECTORY_SEARCH 45 | android.permission.BIND_DREAM_SERVICE 46 | android.permission.BIND_INCALL_SERVICE 47 | android.permission.BIND_INPUT_METHOD 48 | android.permission.BIND_INTENT_FILTER_VERIFIER 49 | android.permission.BIND_JOB_SERVICE 50 | android.permission.BIND_KEYGUARD_APPWIDGET 51 | android.permission.BIND_MIDI_DEVICE_SERVICE 52 | android.permission.BIND_NFC_SERVICE 53 | android.permission.BIND_NOTIFICATION_LISTENER_SERVICE 54 | android.permission.BIND_NOTIFICATION_RANKER_SERVICE 55 | android.permission.BIND_PACKAGE_VERIFIER 56 | android.permission.BIND_PRINT_RECOMMENDATION_SERVICE 57 | android.permission.BIND_PRINT_SERVICE 58 | android.permission.BIND_PRINT_SPOOLER_SERVICE 59 | android.permission.BIND_QUICK_SETTINGS_TILE 60 | android.permission.BIND_REMOTEVIEWS 61 | android.permission.BIND_REMOTE_DISPLAY 62 | android.permission.BIND_ROUTE_PROVIDER 63 | android.permission.BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE 64 | android.permission.BIND_SCREENING_SERVICE 65 | android.permission.BIND_TELECOM_CONNECTION_SERVICE 66 | android.permission.BIND_TEXT_SERVICE 67 | android.permission.BIND_TRUST_AGENT 68 | android.permission.BIND_TV_INPUT 69 | android.permission.BIND_TV_REMOTE_SERVICE 70 | android.permission.BIND_VOICE_INTERACTION 71 | android.permission.BIND_VPN_SERVICE 72 | android.permission.BIND_VR_LISTENER_SERVICE 73 | android.permission.BIND_WALLPAPER 74 | android.permission.BLUETOOTH 75 | android.permission.BLUETOOTH_ADMIN 76 | android.permission.BLUETOOTH_MAP 77 | android.permission.BLUETOOTH_PRIVILEGED 78 | android.permission.BLUETOOTH_STACK 79 | android.permission.BRICK 80 | android.permission.BROADCAST_CALLLOG_INFO 81 | android.permission.BROADCAST_NETWORK_PRIVILEGED 82 | android.permission.BROADCAST_PACKAGE_REMOVED 83 | android.permission.BROADCAST_PHONE_ACCOUNT_REGISTRATION 84 | android.permission.BROADCAST_SMS 85 | android.permission.BROADCAST_STICKY 86 | android.permission.BROADCAST_WAP_PUSH 87 | android.permission.CACHE_CONTENT 88 | android.permission.CALL_PRIVILEGED 89 | android.permission.CAMERA_DISABLE_TRANSMIT_LED 90 | android.permission.CAMERA_SEND_SYSTEM_EVENTS 91 | android.permission.CAPTURE_AUDIO_HOTWORD 92 | android.permission.CAPTURE_AUDIO_OUTPUT 93 | android.permission.CAPTURE_SECURE_VIDEO_OUTPUT 94 | android.permission.CAPTURE_TV_INPUT 95 | android.permission.CAPTURE_VIDEO_OUTPUT 96 | android.permission.CARRIER_FILTER_SMS 97 | android.permission.CHANGE_APP_IDLE_STATE 98 | android.permission.CHANGE_BACKGROUND_DATA_SETTING 99 | android.permission.CHANGE_COMPONENT_ENABLED_STATE 100 | android.permission.CHANGE_CONFIGURATION 101 | android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST 102 | android.permission.CHANGE_NETWORK_STATE 103 | android.permission.CHANGE_WIFI_MULTICAST_STATE 104 | android.permission.CHANGE_WIFI_STATE 105 | android.permission.CHANGE_WIMAX_STATE 106 | android.permission.CLEAR_APP_CACHE 107 | android.permission.CLEAR_APP_GRANTED_URI_PERMISSIONS 108 | android.permission.CLEAR_APP_USER_DATA 109 | android.permission.CONFIGURE_DISPLAY_COLOR_TRANSFORM 110 | android.permission.CONFIGURE_WIFI_DISPLAY 111 | android.permission.CONFIRM_FULL_BACKUP 112 | android.permission.CONNECTIVITY_INTERNAL 113 | android.permission.CONTROL_INCALL_EXPERIENCE 114 | android.permission.CONTROL_KEYGUARD 115 | android.permission.CONTROL_LOCATION_UPDATES 116 | android.permission.CONTROL_VPN 117 | android.permission.CONTROL_WIFI_DISPLAY 118 | android.permission.COPY_PROTECTED_DATA 119 | android.permission.CREATE_USERS 120 | android.permission.CRYPT_KEEPER 121 | android.permission.DELETE_CACHE_FILES 122 | android.permission.DELETE_PACKAGES 123 | android.permission.DEVICE_POWER 124 | android.permission.DIAGNOSTIC 125 | android.permission.DISABLE_KEYGUARD 126 | android.permission.DISPATCH_NFC_MESSAGE 127 | android.permission.DISPATCH_PROVISIONING_MESSAGE 128 | android.permission.DOWNLOAD_CACHE_NON_PURGEABLE 129 | android.permission.DOWNLOAD_WITHOUT_NOTIFICATION 130 | android.permission.DUMP 131 | android.permission.DVB_DEVICE 132 | android.permission.EXPAND_STATUS_BAR 133 | android.permission.FACTORY_TEST 134 | android.permission.FILTER_EVENTS 135 | android.permission.FLASHLIGHT 136 | android.permission.FORCE_BACK 137 | android.permission.FORCE_STOP_PACKAGES 138 | android.permission.FRAME_STATS 139 | android.permission.FREEZE_SCREEN 140 | android.permission.GET_ACCOUNTS_PRIVILEGED 141 | android.permission.GET_APP_GRANTED_URI_PERMISSIONS 142 | android.permission.GET_APP_OPS_STATS 143 | android.permission.GET_DETAILED_TASKS 144 | android.permission.GET_INTENT_SENDER_INTENT 145 | android.permission.GET_PACKAGE_IMPORTANCE 146 | android.permission.GET_PACKAGE_SIZE 147 | android.permission.GET_PASSWORD 148 | android.permission.GET_PROCESS_STATE_AND_OOM_SCORE 149 | android.permission.GET_TASKS 150 | android.permission.GET_TOP_ACTIVITY_INFO 151 | android.permission.GLOBAL_SEARCH 152 | android.permission.GLOBAL_SEARCH_CONTROL 153 | android.permission.GRANT_RUNTIME_PERMISSIONS 154 | android.permission.HARDWARE_TEST 155 | android.permission.HDMI_CEC 156 | android.permission.INJECT_EVENTS 157 | android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS 158 | android.permission.INSTALL_LOCATION_PROVIDER 159 | android.permission.INSTALL_PACKAGES 160 | android.permission.INTENT_FILTER_VERIFICATION_AGENT 161 | android.permission.INTERACT_ACROSS_USERS 162 | android.permission.INTERACT_ACROSS_USERS_FULL 163 | android.permission.INTERNAL_SYSTEM_WINDOW 164 | android.permission.INTERNET 165 | android.permission.INVOKE_CARRIER_SETUP 166 | android.permission.KILL_BACKGROUND_PROCESSES 167 | android.permission.KILL_UID 168 | android.permission.LAUNCH_TRUST_AGENT_SETTINGS 169 | android.permission.LOCAL_MAC_ADDRESS 170 | android.permission.LOCATION_HARDWARE 171 | android.permission.LOOP_RADIO 172 | android.permission.MANAGE_ACCOUNTS 173 | android.permission.MANAGE_ACTIVITY_STACKS 174 | android.permission.MANAGE_APP_OPS_RESTRICTIONS 175 | android.permission.MANAGE_APP_TOKENS 176 | android.permission.MANAGE_CA_CERTIFICATES 177 | android.permission.MANAGE_DEVICE_ADMINS 178 | android.permission.MANAGE_DOCUMENTS 179 | android.permission.MANAGE_FINGERPRINT 180 | android.permission.MANAGE_MEDIA_PROJECTION 181 | android.permission.MANAGE_NETWORK_POLICY 182 | android.permission.MANAGE_NOTIFICATIONS 183 | android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS 184 | android.permission.MANAGE_SOUND_TRIGGER 185 | android.permission.MANAGE_USB 186 | android.permission.MANAGE_USERS 187 | android.permission.MANAGE_VOICE_KEYPHRASES 188 | android.permission.MASTER_CLEAR 189 | android.permission.MEDIA_CONTENT_CONTROL 190 | android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS 191 | android.permission.MODIFY_AUDIO_ROUTING 192 | android.permission.MODIFY_AUDIO_SETTINGS 193 | android.permission.MODIFY_CELL_BROADCASTS 194 | android.permission.MODIFY_DAY_NIGHT_MODE 195 | android.permission.MODIFY_NETWORK_ACCOUNTING 196 | android.permission.MODIFY_PARENTAL_CONTROLS 197 | android.permission.MODIFY_PHONE_STATE 198 | android.permission.MOUNT_FORMAT_FILESYSTEMS 199 | android.permission.MOUNT_UNMOUNT_FILESYSTEMS 200 | android.permission.MOVE_PACKAGE 201 | android.permission.NET_ADMIN 202 | android.permission.NET_TUNNELING 203 | android.permission.NFC 204 | android.permission.NFC_HANDOVER_STATUS 205 | android.permission.NOTIFY_PENDING_SYSTEM_UPDATE 206 | android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS 207 | android.permission.OEM_UNLOCK_STATE 208 | android.permission.OVERRIDE_WIFI_CONFIG 209 | android.permission.PACKAGE_USAGE_STATS 210 | android.permission.PACKAGE_VERIFICATION_AGENT 211 | android.permission.PACKET_KEEPALIVE_OFFLOAD 212 | android.permission.PEERS_MAC_ADDRESS 213 | android.permission.PERFORM_CDMA_PROVISIONING 214 | android.permission.PERFORM_SIM_ACTIVATION 215 | android.permission.PERSISTENT_ACTIVITY 216 | android.permission.PROCESS_CALLLOG_INFO 217 | android.permission.PROCESS_PHONE_ACCOUNT_REGISTRATION 218 | android.permission.PROVIDE_TRUST_AGENT 219 | android.permission.QUERY_DO_NOT_ASK_CREDENTIALS_ON_BOOT 220 | android.permission.READ_BLOCKED_NUMBERS 221 | android.permission.READ_DREAM_STATE 222 | android.permission.READ_FRAME_BUFFER 223 | android.permission.READ_INPUT_STATE 224 | android.permission.READ_INSTALL_SESSIONS 225 | android.permission.READ_LOGS 226 | android.permission.READ_NETWORK_USAGE_HISTORY 227 | android.permission.READ_OEM_UNLOCK_STATE 228 | android.permission.READ_PRECISE_PHONE_STATE 229 | android.permission.READ_PRIVILEGED_PHONE_STATE 230 | android.permission.READ_PROFILE 231 | android.permission.READ_SEARCH_INDEXABLES 232 | android.permission.READ_SOCIAL_STREAM 233 | android.permission.READ_SYNC_SETTINGS 234 | android.permission.READ_SYNC_STATS 235 | android.permission.READ_USER_DICTIONARY 236 | android.permission.READ_WIFI_CREDENTIAL 237 | android.permission.REAL_GET_TASKS 238 | android.permission.REBOOT 239 | android.permission.RECEIVE_BLUETOOTH_MAP 240 | android.permission.RECEIVE_BOOT_COMPLETED 241 | android.permission.RECEIVE_DATA_ACTIVITY_CHANGE 242 | android.permission.RECEIVE_EMERGENCY_BROADCAST 243 | android.permission.RECEIVE_MEDIA_RESOURCE_USAGE 244 | android.permission.RECEIVE_STK_COMMANDS 245 | android.permission.RECEIVE_WIFI_CREDENTIAL_CHANGE 246 | android.permission.RECOVERY 247 | android.permission.REGISTER_CALL_PROVIDER 248 | android.permission.REGISTER_CONNECTION_MANAGER 249 | android.permission.REGISTER_SIM_SUBSCRIPTION 250 | android.permission.REGISTER_WINDOW_MANAGER_LISTENERS 251 | android.permission.REMOTE_AUDIO_PLAYBACK 252 | android.permission.REMOVE_DRM_CERTIFICATES 253 | android.permission.REMOVE_TASKS 254 | android.permission.REORDER_TASKS 255 | android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 256 | android.permission.REQUEST_INSTALL_PACKAGES 257 | android.permission.RESET_FINGERPRINT_LOCKOUT 258 | android.permission.RESET_SHORTCUT_MANAGER_THROTTLING 259 | android.permission.RESTART_PACKAGES 260 | android.permission.RETRIEVE_WINDOW_CONTENT 261 | android.permission.RETRIEVE_WINDOW_TOKEN 262 | android.permission.REVOKE_RUNTIME_PERMISSIONS 263 | android.permission.SCORE_NETWORKS 264 | android.permission.SEND_CALL_LOG_CHANGE 265 | android.permission.SEND_DOWNLOAD_COMPLETED_INTENTS 266 | android.permission.SEND_RESPOND_VIA_MESSAGE 267 | android.permission.SEND_SMS_NO_CONFIRMATION 268 | android.permission.SERIAL_PORT 269 | android.permission.SET_ACTIVITY_WATCHER 270 | android.permission.SET_ALWAYS_FINISH 271 | android.permission.SET_ANIMATION_SCALE 272 | android.permission.SET_DEBUG_APP 273 | android.permission.SET_INPUT_CALIBRATION 274 | android.permission.SET_KEYBOARD_LAYOUT 275 | android.permission.SET_ORIENTATION 276 | android.permission.SET_POINTER_SPEED 277 | android.permission.SET_PREFERRED_APPLICATIONS 278 | android.permission.SET_PROCESS_LIMIT 279 | android.permission.SET_SCREEN_COMPATIBILITY 280 | android.permission.SET_TIME 281 | android.permission.SET_TIME_ZONE 282 | android.permission.SET_WALLPAPER 283 | android.permission.SET_WALLPAPER_COMPONENT 284 | android.permission.SET_WALLPAPER_HINTS 285 | android.permission.SHUTDOWN 286 | android.permission.SIGNAL_PERSISTENT_PROCESSES 287 | android.permission.START_ANY_ACTIVITY 288 | android.permission.START_PRINT_SERVICE_CONFIG_ACTIVITY 289 | android.permission.START_TASKS_FROM_RECENTS 290 | android.permission.STATUS_BAR 291 | android.permission.STATUS_BAR_SERVICE 292 | android.permission.STOP_APP_SWITCHES 293 | android.permission.STORAGE_INTERNAL 294 | android.permission.SUBSCRIBED_FEEDS_READ 295 | android.permission.SUBSCRIBED_FEEDS_WRITE 296 | android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME 297 | android.permission.SYSTEM_ALERT_WINDOW 298 | android.permission.TABLET_MODE 299 | android.permission.TEMPORARY_ENABLE_ACCESSIBILITY 300 | android.permission.TETHER_PRIVILEGED 301 | android.permission.TRANSMIT_IR 302 | android.permission.TRUST_LISTENER 303 | android.permission.TV_INPUT_HARDWARE 304 | android.permission.TV_VIRTUAL_REMOTE_CONTROLLER 305 | android.permission.UPDATE_APP_OPS_STATS 306 | android.permission.UPDATE_CONFIG 307 | android.permission.UPDATE_DEVICE_STATS 308 | android.permission.UPDATE_LOCK 309 | android.permission.UPDATE_LOCK_TASK_PACKAGES 310 | android.permission.USER_ACTIVITY 311 | android.permission.USE_CREDENTIALS 312 | android.permission.VIBRATE 313 | android.permission.WAKE_LOCK 314 | android.permission.WRITE_APN_SETTINGS 315 | android.permission.WRITE_BLOCKED_NUMBERS 316 | android.permission.WRITE_DREAM_STATE 317 | android.permission.WRITE_GSERVICES 318 | android.permission.WRITE_MEDIA_STORAGE 319 | android.permission.WRITE_PROFILE 320 | android.permission.WRITE_SECURE_SETTINGS 321 | android.permission.WRITE_SETTINGS 322 | android.permission.WRITE_SMS 323 | android.permission.WRITE_SOCIAL_STREAM 324 | android.permission.WRITE_SYNC_SETTINGS 325 | android.permission.WRITE_USER_DICTIONARY 326 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | #### ! NOT IN ACTIVE DEVELOPMENT ! 2 | 3 | 4 | > Update Note : This script works best in Linux, the binaries used for internal process like JADX is ELF, and the OS specific commands are for 'nix systems. 5 | > But it's also easy to run on windows, you might need to tweak ~10-15% of this code. If you do so and get this working on windows, I would really appreciate if you can share with everyone here, feel free to create a PR ^\_^. 6 | > I am planning to do it as many people are in windows env. and they are facing problems, but I will do it when I get time or a vacation from my current academics. :-) 7 | 8 | # Android Permission Extraction and Dataset Creation with Python 9 | 10 | 11 |

About:

12 | This script will extract permission information from Malware and Benign applications in their respective folders and then create one Comma Seperated Values (.csv) file to store them in one place ready to be fed into ML algorithms. 13 | 14 |

How to use ?

15 | Just copy your Malware and Benign applications on which you want to train your ML Model and run the script by following command in terminal. 16 | 17 | ```bash 18 | python3 ExtractorAIO.py 19 | ``` 20 | The script will do the rest. 21 | > This can take several minutes depending on the size and number of your APK files. 22 | 23 | 24 |

How to use generated data?

25 | The generated data will be in .csv format and can be parsed with the help of many prebuild libraries or modules. 26 | > pandas module in python is suggested 27 | 28 |

Formatting

29 | The data is formatted in following way - 30 | 31 |
NAMEandroid.permission.ACCESS_KEYGUARD_SECURE_STORAGEandroid.permission.ACCESS_NETWORK_STATEandroid.permission.CALL_PHONEandroid.permission.READ_PHONE_STATEandroid.permission.WRITE_EXTERNAL_STORAGECLASS
a.SurlyProjectFinal.apk011110
ae.gov.dha.dha.apk010110
aero.zztrop.apk000000
a5starapps.com.drkalamquotes.apk010001
ackman.placemarks.apk010011
ackmaniac.currencyfxrates.apk010001
32 | 33 | > This is sample dataset of 6 applications (3 Malware & 3 Benign) 34 | 35 | With 1000s of samples the table can be too big for general Office tools to open it. 36 | 37 |
38 | The 1st column contains name of respective application and last column "CLASS" contains information if the application if from benign or malware family of training set. 39 | [0=Benign, 1=Malware] 40 | 41 | In between there are all the permissions (common + all found in 1st phase) with respective information bit, [0=The applicaion do not use this permission, 1=This permission is used in the application] 42 |
43 |

44 | Importing Data Example in SKlearn 45 |

46 | Following is an example to import the data from the generated dataset into your sklearn RandomForest Model. 47 | 48 | ```python 49 | file = pd.read_csv("data.csv") 50 | coulmnNames = file.iloc[1:1, 1:].columns 51 | FeatureNames = list(coulmnNames[1:-1]) 52 | LabelName = coulmnNames[-1] 53 | X = file[FeatureNames] 54 | X = np.asarray(X) 55 | Y = file[LabelName] 56 | Y = np.asarray(Y) 57 | feature_vectors = X 58 | labels = Y 59 | train_x, test_x, train_y, test_y = train_test_split(feature_vectors,labels,test_size=0.2) 60 | ``` 61 | 62 | The above code will remove **NAME** column and then store **FEATURE_MATRIX** (from column after * **NAME** * to second last column) and **LABEL_VECTOR** (* **CLASS** *column) in X and Y respectively, which later can be split into desired training and testing sets. 63 | 64 |

65 | More 66 |

67 | - This is used in PACE project. 68 |
69 | - This can be used to Reproduce the work in 70 | 71 | * A. Kumar, V. Agarwal, S. K. Shandilya, A. Shalaginov, S. Upadhyay and B. Yadav, **"PACE: Platform for Android Malware Classification and Performance Evaluation**," 2019 IEEE International Conference on Big Data (Big Data), Los Angeles, CA, USA, 2019, pp. 4280-4288, [doi: 10.1109/BigData47090.2019.9006557](https://doi.org/10.1109/BigData47090.2019.9006557). 72 | - Abstract: Android malware has become the topmost threat for ubiquitous and useful Android eco-system. Multiple solutions leveraging big data and machine learning capabilities to detect android malware are being constantly developed. Too often, many of these solutions are either limited to the research output or remain isolated and unable to reach to end-users or malware researchers. In this paper, we propose, PACE, a unified solution to offer open and easy implementation access to several machine learning-based Android malware detection techniques that make most of the research in this domain reproducible. The benefits of PACE are offered using three interfaces i.e. through REST API, Web Interface and ADB interface. Multiple interfaces enable users with different expertise such as IT administrator, security practitioners, malware researcher, etc. to avail its offered services. A community-accepted dataset is used for testing of all the techniques to provide a better comparison of performance. A prototype of the proposed platform is introduced and our vision is that it will help malware analysts to tackle challenges and reduce the amount of manual work. keywords: {Android (operating system);Big Data;invasive software;learning (artificial intelligence);pattern classification;software performance evaluation;big data;malware analysts;Android malware classification;performance evaluation;PACE;machine learning-based Android malware detection;Malware;Androids;Humanoid robots;Feature extraction;Smart phones;Machine learning;Security;Android Malware;Reproducible Research;Machine Learning;Cyber Threat Intelligence},URL: https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9006557&isnumber=9005444 73 | 74 | ### Please Cite above paper if you are using this tool : 75 | @INPROCEEDINGS{9006557, author={A. {Kumar} and V. {Agarwal} and S. K. {Shandilya} and A. {Shalaginov} and S. {Upadhyay} and B. {Yadav}}, booktitle={2019 IEEE International Conference on Big Data (Big Data)}, title={PACE: Platform for Android Malware Classification and Performance Evaluation}, year={2019}, volume={}, number={}, pages={4280-4288},} 76 | 77 |
78 |
79 | 80 | === Extra Reading === 81 | * [Kumar, Ajit, K. S. Kuppusamy, and G. Aghila. "FAMOUS: Forensic Analysis of MObile devices Using Scoring of application permissions." Future Generation Computer Systems 83 (2018): 158-172.](https://www.sciencedirect.com/science/article/pii/S0167739X17323257) 82 | -------------------------------------------------------------------------------- /TODO: -------------------------------------------------------------------------------- 1 | Solve Extraction module overflow problem - DONE 2 | Solve Permissions overlapig - DONE 3 | Create more clean output interface - DONE 4 | Clean clutter code - DONE 5 | ======================================================== 6 | 7 | 8 | --------------------------------------------------------------------------------