From 328ca7a262403b3b12f32fb65890b94600fb720f Mon Sep 17 00:00:00 2001 From: nihith Date: Fri, 14 May 2021 19:30:06 +0530 Subject: [PATCH 1/2] Python3 support, update image and README --- README.md | 49 ++++++++------- ...atterndecode.py => androidpatterndecode.py | 59 ++++++++++++------ res/img/device-2015-02-18-234613.png | Bin 57411 -> 0 bytes res/img/pattern.png | Bin 0 -> 11782 bytes 4 files changed, 67 insertions(+), 41 deletions(-) rename src/androidpatterndecode.py => androidpatterndecode.py (54%) mode change 100755 => 100644 delete mode 100644 res/img/device-2015-02-18-234613.png create mode 100644 res/img/pattern.png diff --git a/README.md b/README.md index e24fb94..adb31c3 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,7 @@ # Android Pattern Lock Decoder -Pattern unlock on Android is entered by joining at least four points on a 3x3 matrix. Each -point can only be used once and the maximum number of points is nine. Android, internally -stores the pattern as a byte sequence. Each point is mapped to its index, where 0 represents -the top left point and 8 the bottom right one on the matrix. Thus the pattern is similar -to a PIN Lock with a minimum of four and and a maximum of nine digits but which only use -nine distinctive digits (0 to 8). Because points cannot be repeated in the pattern and -certain combinations are not possible (e.g. directly connecting 1 to 9), the number of -variations in an unlock pattern is considerably lower compared to those of a nine-digit PIN. +Pattern unlock on Android is entered by joining at least four points on a 3x3 matrix. Each point can only be used once and the maximum number of points is nine. Android, internally stores the pattern as a byte sequence. Each point is mapped to its index, where 0 represents the top left point and 8 the bottom right one on the matrix. Thus the pattern is similar +to a PIN Lock with a minimum of four and and a maximum of nine digits but which only use nine distinctive digits (0 to 8). Because points cannot be repeated in the pattern and certain combinations are not possible (e.g. directly connecting 1 to 9), the number of variations in an unlock pattern is considerably lower compared to those of a nine-digit PIN. The Sha-1 hash of a pattern lock is stored in ``` @@ -17,23 +11,33 @@ The Sha-1 hash of a pattern lock is stored in ``` as an **unsalted** SHA-1 value. -Each pattern is always hashed to the same value because a random salt value isn't used -when calculating the hash. This makes it relatively easy to generate a precomputed table -of all possible patterns and their respective hashes. This allows for **instant** recovery -of the pattern once the `gesture.key` file is retrieved from the device. However the file, -is owned by the system user and its default permissions are set to `0600` so on production -devices recovery is not possible without rooting the device. +Each pattern is always hashed to the same value because a random salt value isn't used when calculating the hash. This makes it relatively easy to generate a precomputed table of all possible patterns and their respective hashes. This allows for **instant** recovery of the pattern once the `gesture.key` file is retrieved from the device. However the file, +is owned by the system user and its default permissions are set to `0600` so on production devices recovery is not possible without rooting the device. ## Usage +```bash +Usage: python3 androidpatterndecode.py -g -d . +This program is used to recover android's pattern passowrd. + +Options: + -h, --help show this help message and exit + -g GESTURE_FILE, --gesture=GESTURE_FILE + Path to your gesture.key file in your local system + -d DICTIONARY_FILE, --dictionary=DICTIONARY_FILE + Path to your dictionary file containing sha1 hashes in + your local system +``` + +## Example + Example below uses the following pattern lock: -![Pattern-Lock](https://github.com/cvarta/droid-pattern-decoder/blob/master/res/img/device-2015-02-18-234613.png) +![Pattern-Lock](./res/img/pattern.png) -Copy the gesture.key file from `/data/system/gesture.key` to `/sdcard/` and pull the file -from the device using `adb pull /sdcard/gesture.key .` +Copy the gesture.key file from `/data/system/gesture.key` to `/sdcard/` and pull the file from the device using `adb pull /sdcard/gesture.key .` -To view the content use the od dump tool (Example file in [res/gesture.key](../master/res/gesture.key)) +To view the content use the `od` dump tool or any hex editor like `ghex or HxD or xxd` (Example file in [res/gesture.key](./res/gesture.key)) ``` $ od -t x1 < res/gesture.key @@ -42,10 +46,9 @@ $ od -t x1 < res/gesture.key 0000024 ``` -To lookup the pattern use the supplied python script with the provided hash table: - -``` -$ ./src/androidpatterndecode.py -g ./res/gesture.key -d ./res/androidpatternsha1.txt +To lookup the pattern use the [androidpatterendecode.py](./androidpatterendecode.py) python script with the provided hash table: - 3214789 +```bash +$ python3 androidpatterndecode.py -g res/gesture.key -d res/androidpatternsha1.txt +[+] Pattern retrieved from gesture.key file is: 3214789 ``` diff --git a/src/androidpatterndecode.py b/androidpatterndecode.py old mode 100755 new mode 100644 similarity index 54% rename from src/androidpatterndecode.py rename to androidpatterndecode.py index 4a6433a..fb510b3 --- a/src/androidpatterndecode.py +++ b/androidpatterndecode.py @@ -1,57 +1,80 @@ -#!/usr/bin/python +#!/usr/bin/env python3 + __author__ = 'Chris Yereaztian' + """ This script recovers the pattern combination from Android's pattern lock. To acquire the gesture.key file you need a rooted device. """ + from optparse import OptionParser +import binascii +def b2s(a): + """ + Converts bytes to str + """ + return "".join(list(map(chr, a))) def read_gesture(gesture_file_loc=""): - """Reads gesture.key file and converts bytes to string""" + """ + Reads gesture.key file and converts bytes to string + """ try: gesture_file = open(gesture_file_loc, "rb") sha1bytes = [] for i in range(0, 20): sha1hash = gesture_file.read(1) - sha1bytes.append(sha1hash.encode('hex')) - i += 1 + sha1bytes.append(binascii.hexlify(sha1hash)) + # i += 1 sha1hash = "" for i in range(0, 20): - sha1hash += sha1bytes[i] - return sha1hash + sha1hash += b2s(sha1bytes[i]) + return(sha1hash) except IOError: - print "[-] Gesture file cannot be opened. File not present or permission denied" + print("[-] Gesture file cannot be opened. File not present or permission denied") exit(1) def match_pattern(dictionary="", sha1hash=""): - """Looks up hash in provided dictionary""" + """ + Looks up hash in provided dictionary + """ + sha1hash = str.upper(sha1hash) dictionary_file = open(dictionary, "r") lines = dictionary_file.readlines() + for line in lines: if line.__contains__(sha1hash): index = line.index(";", 0, 10) pattern = line[0:index] - print "" - print pattern.center(80) + print("[+] Pattern retrieved from gesture.key file is: " + pattern) + # print(pattern.center(80)) def parse_opt(): - #Create a option parser - parser = OptionParser("%prog [options].\n\rThis program is used to recover android's pattern passowrd.") - #Add options + # Create a option parser + + parser = OptionParser("python3 %prog -g -d .\n\rThis program is used to recover android's pattern passowrd.") + + # Add options + parser.add_option("-g", "--gesture", type="string", dest="gesture_file", help="Path to your gesture.key file in your local system") - parser.add_option("-d", "--dictionary", type="string", dest="dictionary_file", help="Path to your dictionary file in your local system") - #Parse options + parser.add_option("-d", "--dictionary", type="string", dest="dictionary_file", help="Path to your dictionary file containing sha1 hashes in your local system") + + # Parse options + options, arguments = parser.parse_args() - #Verify all options are used + + # Verify all options are used + if options.gesture_file and options.dictionary_file: - #Recover the pattern from the hash + # Recover the pattern from the hash sha1hash = read_gesture(options.gesture_file) match_pattern(options.dictionary_file, sha1hash) + else: - #Show help screen in case of missing arguments + # Show help screen in case of missing arguments parser.print_help() exit(1) diff --git a/res/img/device-2015-02-18-234613.png b/res/img/device-2015-02-18-234613.png deleted file mode 100644 index cf3716679a244c533cab23c64dc980ba74201514..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57411 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 ZS~)mRZ+t%^-Fgi$F|fQ_ujlsse*hcW|J(oo literal 0 HcmV?d00001 From b652568465381f5b6c52c95058bcff95d4d76bd6 Mon Sep 17 00:00:00 2001 From: nihith Date: Fri, 14 May 2021 19:57:17 +0530 Subject: [PATCH 2/2] Update minor changes --- README.md | 10 ++++++---- androidpatterndecode.py | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index adb31c3..6962033 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@ # Android Pattern Lock Decoder -Pattern unlock on Android is entered by joining at least four points on a 3x3 matrix. Each point can only be used once and the maximum number of points is nine. Android, internally stores the pattern as a byte sequence. Each point is mapped to its index, where 0 represents the top left point and 8 the bottom right one on the matrix. Thus the pattern is similar -to a PIN Lock with a minimum of four and and a maximum of nine digits but which only use nine distinctive digits (0 to 8). Because points cannot be repeated in the pattern and certain combinations are not possible (e.g. directly connecting 1 to 9), the number of variations in an unlock pattern is considerably lower compared to those of a nine-digit PIN. +Pattern unlock on Android is entered by joining at least four points on a 3x3 matrix. Each point can only be used once and the maximum number of points is nine. Android, internally stores the pattern as a byte sequence. + +Each point is mapped to its index, where 0 represents the top left point and 8 the bottom right one on the matrix. Thus the pattern is similar to a PIN Lock with a minimum of four and and a maximum of nine digits but which only use nine distinctive digits (0 to 8). Because points cannot be repeated in the pattern and certain combinations are not possible (e.g. directly connecting 1 to 9), the number of variations in an unlock pattern is considerably lower compared to those of a nine-digit PIN. The Sha-1 hash of a pattern lock is stored in ``` @@ -18,7 +19,8 @@ is owned by the system user and its default permissions are set to `0600` so on ```bash Usage: python3 androidpatterndecode.py -g -d . -This program is used to recover android's pattern passowrd. + +This program is used to recover android's pattern password. Options: -h, --help show this help message and exit @@ -46,7 +48,7 @@ $ od -t x1 < res/gesture.key 0000024 ``` -To lookup the pattern use the [androidpatterendecode.py](./androidpatterendecode.py) python script with the provided hash table: +To retrieve the pattern from the `gesture.key` file, use the [androidpatterndecode.py](./androidpatterndecode.py) a python script by providing a hash table: ```bash $ python3 androidpatterndecode.py -g res/gesture.key -d res/androidpatternsha1.txt diff --git a/androidpatterndecode.py b/androidpatterndecode.py index fb510b3..7bff6c0 100644 --- a/androidpatterndecode.py +++ b/androidpatterndecode.py @@ -55,7 +55,7 @@ def match_pattern(dictionary="", sha1hash=""): def parse_opt(): # Create a option parser - parser = OptionParser("python3 %prog -g -d .\n\rThis program is used to recover android's pattern passowrd.") + parser = OptionParser("python3 %prog -g -d .\n\rThis program is used to recover android's pattern password.") # Add options