From bf245a489c5ef8220d9fd166efef0aecffbf17f4 Mon Sep 17 00:00:00 2001 From: Carlos Holguera Date: Sun, 7 Jul 2024 14:09:39 +0200 Subject: [PATCH] Fix datatables style (#2656) * fix buttons and add new mas gradient * fix datatable style * fix table colors and fix permissions table * fix auto add of platform tags --- .../0x05h-Testing-Platform-Interaction.md | 149 +++++++++--------- docs/hooks/add-tags.py | 9 +- docs/index.md | 4 +- docs/javascripts/datatables.js | 3 +- docs/stylesheets/extra.css | 88 ++++++++++- 5 files changed, 166 insertions(+), 87 deletions(-) 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; }