diff --git a/Document/0x05h-Testing-Platform-Interaction.md b/Document/0x05h-Testing-Platform-Interaction.md
index f987c5fb53..239cca1741 100644
--- a/Document/0x05h-Testing-Platform-Interaction.md
+++ b/Document/0x05h-Testing-Platform-Interaction.md
@@ -35,88 +35,83 @@ Independently from the assigned Protection Level, it is important to consider th
| Risk Category | Permissions | Protection Level |
|------------------|-----------------------------------------------------------------|-------------------|
| **ASTRONOMICAL** | `android.permission.INSTALL_PACKAGES` | signature |
-| | | |
| **CRITICAL** | `android.permission.COPY_PROTECTED_DATA` | signature |
-| | `android.permission.WRITE_SECURE_SETTINGS` | signature |
-| | `android.permission.READ_FRAME_BUFFER` | signature |
-| | `android.permission.MANAGE_CA_CERTIFICATES` | signature |
-| | `android.permission.MANAGE_APP_OPS_MODES` | signature |
-| | `android.permission.GRANT_RUNTIME_PERMISSIONS` | signature |
-| | `android.permission.DUMP` | signature |
-| | `android.permission.CAMERA` | dangerous |
-| | `android.permission.SYSTEM_CAMERA` | signatureOrSystem |
-| | `android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS` | signature |
-| | `android.permission.MOUNT_UNMOUNT_FILESYSTEMS` | signature |
-| | `android.permission.PROVIDE_DEFAULT_ENABLED_CREDENTIAL_SERVICE` | signature |
-| | `android.permission.PROVIDE_REMOTE_CREDENTIALS` | signature |
-| | | |
+| **CRITICAL** | `android.permission.WRITE_SECURE_SETTINGS` | signature |
+| **CRITICAL** | `android.permission.READ_FRAME_BUFFER` | signature |
+| **CRITICAL** | `android.permission.MANAGE_CA_CERTIFICATES` | signature |
+| **CRITICAL** | `android.permission.MANAGE_APP_OPS_MODES` | signature |
+| **CRITICAL** | `android.permission.GRANT_RUNTIME_PERMISSIONS` | signature |
+| **CRITICAL** | `android.permission.DUMP` | signature |
+| **CRITICAL** | `android.permission.CAMERA` | dangerous |
+| **CRITICAL** | `android.permission.SYSTEM_CAMERA` | signatureOrSystem |
+| **CRITICAL** | `android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS` | signature |
+| **CRITICAL** | `android.permission.MOUNT_UNMOUNT_FILESYSTEMS` | signature |
+| **CRITICAL** | `android.permission.PROVIDE_DEFAULT_ENABLED_CREDENTIAL_SERVICE` | signature |
+| **CRITICAL** | `android.permission.PROVIDE_REMOTE_CREDENTIALS` | signature |
| **HIGH** | `android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS` | signature |
-| | `android.permission.READ_SMS` | dangerous |
-| | `android.permission.WRITE_SMS` | normal |
-| | `android.permission.RECEIVE_MMS` | dangerous |
-| | `android.permission.SEND_SMS_NO_CONFIRMATION` | signature |
-| | `android.permission.RECEIVE_SMS` | dangerous |
-| | `android.permission.READ_LOGS` | signature |
-| | `android.permission.READ_PRIVILEGED_PHONE_STATE` | signature |
-| | `android.permission.LOCATION_HARDWARE` | signature |
-| | `android.permission.ACCESS_FINE_LOCATION` | dangerous |
-| | `android.permission.ACCESS_BACKGROUND_LOCATION` | dangerous |
-| | `android.permission.BIND_ACCESSIBILITY_SERVICE` | signature |
-| | `android.permission.ACCESS_WIFI_STATE` | normal |
-| | `com.android.voicemail.permission.READ_VOICEMAIL` | signature |
-| | `android.permission.RECORD_AUDIO` | dangerous |
-| | `android.permission.CAPTURE_AUDIO_OUTPUT` | signature |
-| | `android.permission.ACCESS_NOTIFICATIONS` | signature |
-| | `android.permission.INTERACT_ACROSS_USERS_FULL` | signature |
-| | `android.permission.BLUETOOTH_PRIVILEGED` | signature |
-| | `android.permission.GET_PASSWORD` | signature |
-| | `android.permission.INTERNAL_SYSTEM_WINDOW` | signature |
-| | `android.permission.MANAGE_ONGOING_CALLS` | signature |
-| | `android.permission.READ_RESTRICTED_STATS` | internal |
-| | `android.permission.BIND_AUTOFILL_SERVICE` | signature |
-| | | |
+| **HIGH** | `android.permission.READ_SMS` | dangerous |
+| **HIGH** | `android.permission.WRITE_SMS` | normal |
+| **HIGH** | `android.permission.RECEIVE_MMS` | dangerous |
+| **HIGH** | `android.permission.SEND_SMS_NO_CONFIRMATION` | signature |
+| **HIGH** | `android.permission.RECEIVE_SMS` | dangerous |
+| **HIGH** | `android.permission.READ_LOGS` | signature |
+| **HIGH** | `android.permission.READ_PRIVILEGED_PHONE_STATE` | signature |
+| **HIGH** | `android.permission.LOCATION_HARDWARE` | signature |
+| **HIGH** | `android.permission.ACCESS_FINE_LOCATION` | dangerous |
+| **HIGH** | `android.permission.ACCESS_BACKGROUND_LOCATION` | dangerous |
+| **HIGH** | `android.permission.BIND_ACCESSIBILITY_SERVICE` | signature |
+| **HIGH** | `android.permission.ACCESS_WIFI_STATE` | normal |
+| **HIGH** | `com.android.voicemail.permission.READ_VOICEMAIL` | signature |
+| **HIGH** | `android.permission.RECORD_AUDIO` | dangerous |
+| **HIGH** | `android.permission.CAPTURE_AUDIO_OUTPUT` | signature |
+| **HIGH** | `android.permission.ACCESS_NOTIFICATIONS` | signature |
+| **HIGH** | `android.permission.INTERACT_ACROSS_USERS_FULL` | signature |
+| **HIGH** | `android.permission.BLUETOOTH_PRIVILEGED` | signature |
+| **HIGH** | `android.permission.GET_PASSWORD` | signature |
+| **HIGH** | `android.permission.INTERNAL_SYSTEM_WINDOW` | signature |
+| **HIGH** | `android.permission.MANAGE_ONGOING_CALLS` | signature |
+| **HIGH** | `android.permission.READ_RESTRICTED_STATS` | internal |
+| **HIGH** | `android.permission.BIND_AUTOFILL_SERVICE` | signature |
| **MEDIUM** | `android.permission.ACCESS_COARSE_LOCATION` | dangerous |
-| | `android.permission.CHANGE_COMPONENT_ENABLED_STATE` | signature |
-| | `android.permission.READ_CONTACTS` | dangerous |
-| | `android.permission.WRITE_CONTACTS` | dangerous |
-| | `android.permission.CONNECTIVITY_INTERNAL` | signature |
-| | `android.permission.ACCESS_MEDIA_LOCATION` | dangerous |
-| | `android.permission.READ_EXTERNAL_STORAGE` | dangerous |
-| | `android.permission.WRITE_EXTERNAL_STORAGE` | dangerous |
-| | `android.permission.SYSTEM_ALERT_WINDOW` | signature |
-| | `android.permission.READ_CALL_LOG` | dangerous |
-| | `android.permission.WRITE_CALL_LOG` | dangerous |
-| | `android.permission.INTERACT_ACROSS_USERS` | signature |
-| | `android.permission.MANAGE_USERS` | signature |
-| | `android.permission.READ_CALENDAR` | dangerous |
-| | `android.permission.BLUETOOTH_ADMIN` | normal |
-| | `android.permission.BODY_SENSORS` | dangerous |
-| | `android.permission.MANAGE_EXTERNAL_STORAGE` | signature |
-| | `android.permission.ACCESS_BLOBS_ACROSS_USERS` | signature |
-| | `android.permission.BLUETOOTH_ADVERTISE` | dangerous |
-| | `android.permission.READ_MEDIA_AUDIO` | dangerous |
-| | `android.permission.READ_MEDIA_IMAGES` | dangerous |
-| | `android.permission.READ_MEDIA_VIDEO` | dangerous |
-| | | |
+| **MEDIUM** | `android.permission.CHANGE_COMPONENT_ENABLED_STATE` | signature |
+| **MEDIUM** | `android.permission.READ_CONTACTS` | dangerous |
+| **MEDIUM** | `android.permission.WRITE_CONTACTS` | dangerous |
+| **MEDIUM** | `android.permission.CONNECTIVITY_INTERNAL` | signature |
+| **MEDIUM** | `android.permission.ACCESS_MEDIA_LOCATION` | dangerous |
+| **MEDIUM** | `android.permission.READ_EXTERNAL_STORAGE` | dangerous |
+| **MEDIUM** | `android.permission.WRITE_EXTERNAL_STORAGE` | dangerous |
+| **MEDIUM** | `android.permission.SYSTEM_ALERT_WINDOW` | signature |
+| **MEDIUM** | `android.permission.READ_CALL_LOG` | dangerous |
+| **MEDIUM** | `android.permission.WRITE_CALL_LOG` | dangerous |
+| **MEDIUM** | `android.permission.INTERACT_ACROSS_USERS` | signature |
+| **MEDIUM** | `android.permission.MANAGE_USERS` | signature |
+| **MEDIUM** | `android.permission.READ_CALENDAR` | dangerous |
+| **MEDIUM** | `android.permission.BLUETOOTH_ADMIN` | normal |
+| **MEDIUM** | `android.permission.BODY_SENSORS` | dangerous |
+| **MEDIUM** | `android.permission.MANAGE_EXTERNAL_STORAGE` | signature |
+| **MEDIUM** | `android.permission.ACCESS_BLOBS_ACROSS_USERS` | signature |
+| **MEDIUM** | `android.permission.BLUETOOTH_ADVERTISE` | dangerous |
+| **MEDIUM** | `android.permission.READ_MEDIA_AUDIO` | dangerous |
+| **MEDIUM** | `android.permission.READ_MEDIA_IMAGES` | dangerous |
+| **MEDIUM** | `android.permission.READ_MEDIA_VIDEO` | dangerous |
| **LOW** | `android.permission.DOWNLOAD_WITHOUT_NOTIFICATION` | normal |
-| | `android.permission.PACKAGE_USAGE_STATS` | signature |
-| | `android.permission.MASTER_CLEAR` | signature |
-| | `android.permission.DELETE_PACKAGES` | normal |
-| | `android.permission.GET_PACKAGE_SIZE` | normal |
-| | `android.permission.BLUETOOTH` | normal |
-| | `android.permission.DEVICE_POWER` | signature |
-| | `android.permission.READ_PRECISE_PHONE_STATE` | signature |
-| | `android.permission.LOG_FOREGROUND_RESOURCE_USE` | signature |
-| | `android.permission.MANAGE_DEFAULT_APPLICATIONS` | signature |
-| | `android.permission.MANAGE_FACE` | signature |
-| | | |
+| **LOW** | `android.permission.PACKAGE_USAGE_STATS` | signature |
+| **LOW** | `android.permission.MASTER_CLEAR` | signature |
+| **LOW** | `android.permission.DELETE_PACKAGES` | normal |
+| **LOW** | `android.permission.GET_PACKAGE_SIZE` | normal |
+| **LOW** | `android.permission.BLUETOOTH` | normal |
+| **LOW** | `android.permission.DEVICE_POWER` | signature |
+| **LOW** | `android.permission.READ_PRECISE_PHONE_STATE` | signature |
+| **LOW** | `android.permission.LOG_FOREGROUND_RESOURCE_USE` | signature |
+| **LOW** | `android.permission.MANAGE_DEFAULT_APPLICATIONS` | signature |
+| **LOW** | `android.permission.MANAGE_FACE` | signature |
| **NONE** | `android.permission.ACCESS_NETWORK_STATE` | normal |
-| | `android.permission.RECEIVE_BOOT_COMPLETED` | normal |
-| | `android.permission.WAKE_LOCK` | normal |
-| | `android.permission.FLASHLIGHT` | normal |
-| | `android.permission.VIBRATE` | normal |
-| | `android.permission.WRITE_MEDIA_STORAGE` | signature |
-| | `android.permission.MODIFY_AUDIO_SETTINGS` | normal |
+| **NONE** | `android.permission.RECEIVE_BOOT_COMPLETED` | normal |
+| **NONE** | `android.permission.WAKE_LOCK` | normal |
+| **NONE** | `android.permission.FLASHLIGHT` | normal |
+| **NONE** | `android.permission.VIBRATE` | normal |
+| **NONE** | `android.permission.WRITE_MEDIA_STORAGE` | signature |
+| **NONE** | `android.permission.MODIFY_AUDIO_SETTINGS` | normal |
Note that this categorization can change over time. The paper gives us an example of that:
diff --git a/docs/hooks/add-tags.py b/docs/hooks/add-tags.py
index b7663cf6bb..3d8e10bf13 100644
--- a/docs/hooks/add-tags.py
+++ b/docs/hooks/add-tags.py
@@ -12,9 +12,12 @@ def on_page_markdown(markdown, page, **kwargs):
tags = page.meta.get('tags', [])
- if page.meta.get('platform'):
- for platform in page.meta.get('platform', []):
- tags.append(platform)
+ if page.meta.get('platform'):
+ if type(page.meta.get('platform')) == str:
+ tags.append(page.meta.get('platform'))
+ elif type(page.meta.get('platform')) == list:
+ for platform in page.meta.get('platform'):
+ tags.append(platform)
if page.meta.get('profiles'):
for profile in page.meta.get('profiles', []):
tags.append(profile)
diff --git a/docs/index.md b/docs/index.md
index 96460070a7..dd38a48e43 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -55,9 +55,9 @@ hide:
-
+
- Download the Checklist
+
diff --git a/docs/javascripts/datatables.js b/docs/javascripts/datatables.js
index 6c2c75171d..24f1d470ae 100644
--- a/docs/javascripts/datatables.js
+++ b/docs/javascripts/datatables.js
@@ -1,5 +1,6 @@
document$.subscribe(function() {
$('table').DataTable({
- paging: false
+ paging: false,
+ dom: '<"top"if>rt<"bottom"lp><"clear">'
});
});
diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css
index dc124fb8f7..4c6c79919a 100644
--- a/docs/stylesheets/extra.css
+++ b/docs/stylesheets/extra.css
@@ -1,5 +1,6 @@
:root {
--md-primary-fg-color: #499FFF;
+ --mas-gradient: linear-gradient(315deg, #499fff 0%, #02d6a9 100%);
}
/* Wider space for pages */
@@ -24,6 +25,14 @@
display: table
}
+.md-header {
+ background: var(--mas-gradient);
+}
+
+.md-tabs {
+ background: var(--mas-gradient);
+}
+
@keyframes pump {
0%, 40%, 80%, 100% {
transform: scale(1);
@@ -171,10 +180,11 @@
height: 3em;
line-height: 2em;
text-align: center;
- background: linear-gradient(90deg,#03a9f4,#f441a5,#ffeb3b,#03a9f4);
+ background: var(--mas-gradient);
background-size: 300%;
border-radius: 8px;
z-index: 1;
+ transition: background 0.3s ease;
}
.mas-button:hover {
@@ -186,7 +196,6 @@
0% {
background-position: 0%;
}
-
100% {
background-position: 400%;
}
@@ -200,7 +209,7 @@
right: -5px;
bottom: -5px;
z-index: -1;
- background: linear-gradient(90deg,#03a9f4,#f441a5,#ffeb3b,#03a9f4);
+ background: var(--mas-gradient);
background-size: 400%;
border-radius: 8px;
transition: 1s;
@@ -211,5 +220,76 @@
}
.mas-button:active {
- background: linear-gradient(32deg,#03a9f4,#f441a5,#ffeb3b,#03a9f4);
+ background: var(--mas-gradient);
+}
+
+/* Default DataTables styling for light mode */
+table.dataTable {
+ background-color: white;
+ color: #3a3a3a;
+}
+
+table.dataTable th {
+ border-bottom: 1px solid #ccc !important;
+}
+
+/* Dark mode DataTables styling */
+[data-md-color-scheme="slate"] table.dataTable,
+[data-md-color-scheme="dark"] table.dataTable {
+ background-color: var(--md-default-bg-color);
+ color: white;
+}
+
+[data-md-color-scheme="slate"] table.dataTable th,
+[data-md-color-scheme="dark"] table.dataTable th {
+ background-color: var(--md-default-bg-color);
+ color: white;
+}
+
+[data-md-color-scheme="slate"] table.dataTable td,
+[data-md-color-scheme="dark"] table.dataTable td {
+ background-color: var(--md-default-bg-color);
+ color: white;
+}
+
+/* Adjusting pagination buttons and other elements */
+[data-md-color-scheme="slate"] .dataTables_wrapper .dataTables_paginate .paginate_button,
+[data-md-color-scheme="dark"] .dataTables_wrapper .dataTables_paginate .paginate_button {
+ color: white !important;
+}
+
+/* Adjust .dataTables_info */
+[data-md-color-scheme="slate"] .dataTables_wrapper .dataTables_info,
+[data-md-color-scheme="dark"] .dataTables_wrapper .dataTables_info {
+ color: white;
+}
+
+/* add margin to dataTables_filter and dataTables_info independent of color scheme */
+
+.dataTables_filter {
+ margin: 1em 0 2em 0;
+}
+
+.dataTables_info {
+ margin: 1em 0 2em 0;
+ padding-top: 0px !important;
+ color: #aaaaaa !important;
+}
+
+.dataTables_wrapper .dataTables_filter input {
+ border-radius: 10px !important;
+ margin-left: 10px !important;
+}
+
+[data-md-color-scheme="slate"] .dataTables_wrapper .dataTables_filter input,
+[data-md-color-scheme="dark"] .dataTables_wrapper .dataTables_filter input {
+ background-color: #3a3a3a;
+ color: white;
+ border: 1px solid #555;
+}
+
+
+[data-md-color-scheme="slate"] .dataTables_wrapper .dataTables_filter label,
+[data-md-color-scheme="dark"] .dataTables_wrapper .dataTables_filter label {
+ color: white;
}