|
1 | 1 | #!/usr/bin/env python3 |
2 | 2 |
|
3 | 3 | import os |
4 | | -import random |
5 | 4 | import re |
| 5 | +import secrets |
6 | 6 | import signal |
7 | 7 | import subprocess |
8 | 8 | import sys |
@@ -859,7 +859,7 @@ def _create_tmp_file(filename_prefix=None, filename_suffix=None): |
859 | 859 | tmp_dir = "/data/local/tmp" |
860 | 860 |
|
861 | 861 | filepath_on_device = ( |
862 | | - f"{tmp_dir}/{filename_prefix}-{random.randint(1, 1000 * 1000 * 1000):d}.{filename_suffix}") |
| 862 | + f"{tmp_dir}/{filename_prefix}-{secrets.randbelow(1000 * 1000 * 1000):d}.{filename_suffix}") |
863 | 863 | if _file_exists(filepath_on_device): |
864 | 864 | # Retry if the file already exists |
865 | 865 | print_verbose(f"Tmp File {filepath_on_device} already exists, trying a new random name") |
@@ -919,36 +919,54 @@ def get_permission_group(args) -> str | None: |
919 | 919 |
|
920 | 920 | # Android keeps emptying these groups so that granted permissions are denied |
921 | 921 | # but the expectation of this tool is to do the right mapping |
922 | | -def _get_hardcoded_permissions_for_group(permission_group) -> list[str]: |
923 | | - match permission_group: |
924 | | - case "android.permission-group.CONTACTS": |
925 | | - return ["android.permission.READ_CONTACTS", "android.permission.WRITE_CONTACTS"] |
926 | | - case "android.permission-group.PHONE": |
927 | | - return [ |
928 | | - "android.permission.READ_PHONE_STATE", |
929 | | - "android.permission.READ_PHONE_NUMBERS", |
930 | | - "android.permission.CALL_PHONE", |
931 | | - "android.permission.ANSWER_PHONE_CALLS" |
932 | | - ] |
933 | | - case "android.permission-group.CALENDAR": |
934 | | - return ["android.permission.READ_CALENDAR", "android.permission.WRITE_CALENDAR"] |
935 | | - case "android.permission-group.CAMERA": |
936 | | - return ["android.permission.CAMERA"] |
937 | | - case "android.permission-group.SENSORS": |
938 | | - return ["android.permission.BODY_SENSORS"] |
939 | | - case "android.permission-group.LOCATION": |
940 | | - return ["android.permission.ACCESS_FINE_LOCATION", "android.permission.ACCESS_COARSE_LOCATION"] |
941 | | - case "android.permission-group.STORAGE": |
942 | | - return ["android.permission.READ_EXTERNAL_STORAGE", "android.permission.WRITE_EXTERNAL_STORAGE"] |
943 | | - case "android.permission-group.MICROPHONE": |
944 | | - return ["android.permission.RECORD_AUDIO"] |
945 | | - case "android.special-permission-group.NOTIFICATIONS": |
946 | | - return ["android.permission.POST_NOTIFICATIONS"] |
947 | | - case "android.permission-group.SMS": |
948 | | - return ["android.permission.READ_SMS", "android.permission.RECEIVE_SMS", "android.permission.SEND_SMS"] |
949 | | - case _: |
950 | | - print_verbose(f"Unexpected permission group: {permission_group}") |
951 | | - return [] # Default case if no match found |
| 922 | +def _get_hardcoded_permissions_for_group(permission_group: str) -> list[str]: |
| 923 | + result_map = { |
| 924 | + "android.permission-group.CONTACTS": [ |
| 925 | + "android.permission.READ_CONTACTS", |
| 926 | + "android.permission.WRITE_CONTACTS", |
| 927 | + ], |
| 928 | + "android.permission-group.PHONE": [ |
| 929 | + "android.permission.READ_PHONE_STATE", |
| 930 | + "android.permission.READ_PHONE_NUMBERS", |
| 931 | + "android.permission.CALL_PHONE", |
| 932 | + "android.permission.ANSWER_PHONE_CALLS", |
| 933 | + ], |
| 934 | + "android.permission-group.CALENDAR": [ |
| 935 | + "android.permission.READ_CALENDAR", |
| 936 | + "android.permission.WRITE_CALENDAR", |
| 937 | + ], |
| 938 | + "android.permission-group.CAMERA": [ |
| 939 | + "android.permission.CAMERA", |
| 940 | + ], |
| 941 | + "android.permission-group.SENSORS": [ |
| 942 | + "android.permission.BODY_SENSORS", |
| 943 | + ], |
| 944 | + "android.permission-group.LOCATION": [ |
| 945 | + "android.permission.ACCESS_FINE_LOCATION", |
| 946 | + "android.permission.ACCESS_COARSE_LOCATION", |
| 947 | + ], |
| 948 | + "android.permission-group.STORAGE": [ |
| 949 | + "android.permission.READ_EXTERNAL_STORAGE", |
| 950 | + "android.permission.WRITE_EXTERNAL_STORAGE", |
| 951 | + ], |
| 952 | + "android.permission-group.MICROPHONE": [ |
| 953 | + "android.permission.RECORD_AUDIO", |
| 954 | + ], |
| 955 | + "android.special-permission-group.NOTIFICATIONS": [ |
| 956 | + "android.permission.POST_NOTIFICATIONS", |
| 957 | + ], |
| 958 | + "android.permission-group.SMS": [ |
| 959 | + "android.permission.READ_SMS", |
| 960 | + "android.permission.RECEIVE_SMS", |
| 961 | + "android.permission.SEND_SMS", |
| 962 | + ], |
| 963 | + } |
| 964 | + |
| 965 | + result = result_map.get(permission_group, []) |
| 966 | + if not result: |
| 967 | + print_error(f"Unexpected permission group: {permission_group}") |
| 968 | + |
| 969 | + return result |
952 | 970 |
|
953 | 971 |
|
954 | 972 | # Pass the full-qualified permission group name to this method. |
|
0 commit comments