├── .github
└── workflows
│ └── changelog.yml
├── .gitignore
├── CHANGELOG.md
├── CONTRIBUTING
├── LICENSE.txt
├── README.md
├── app
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ ├── main
│ ├── AndroidManifest.xml
│ ├── ic_history-web.png
│ ├── ic_monitor_off-web.png
│ ├── java
│ │ ├── de
│ │ │ └── bjoernr
│ │ │ │ └── ssllabs
│ │ │ │ ├── Api.java
│ │ │ │ ├── Console.java
│ │ │ │ └── ConsoleUtilities.java
│ │ └── org
│ │ │ └── secuso
│ │ │ └── privacyfriendlynetmonitor
│ │ │ ├── Activities
│ │ │ ├── AboutActivity.java
│ │ │ ├── Adapter
│ │ │ │ ├── AppListRecyclerAdapter.java
│ │ │ │ ├── ExpandableHistoryListAdapter.java
│ │ │ │ ├── ExpandableListAdapter.java
│ │ │ │ ├── ExpandableReportAdapter.java
│ │ │ │ ├── FragmentDayListAdapter.java
│ │ │ │ └── PagerAdapter.java
│ │ │ ├── AppConnections_Chart.java
│ │ │ ├── BaseActivity.java
│ │ │ ├── HelpActivity.java
│ │ │ ├── HelpDataDump.java
│ │ │ ├── HistoryActivity.java
│ │ │ ├── HistoryDetailActivity.java
│ │ │ ├── MainActivity.java
│ │ │ ├── ReportDetailActivity.java
│ │ │ ├── SelectHistoryAppsActivity.java
│ │ │ ├── SettingsActivity.java
│ │ │ ├── SplashActivity.java
│ │ │ └── TutorialActivity.java
│ │ │ ├── Assistant
│ │ │ ├── AsyncCertVal.java
│ │ │ ├── AsyncDNS.java
│ │ │ ├── Const.java
│ │ │ ├── ExecCom.java
│ │ │ ├── KnownPorts.java
│ │ │ ├── PrefManager.java
│ │ │ ├── RunStore.java
│ │ │ ├── TLType.java
│ │ │ └── ToolBox.java
│ │ │ ├── ConnectionAnalysis
│ │ │ ├── Collector.java
│ │ │ ├── Detector.java
│ │ │ ├── PassiveService.java
│ │ │ ├── Report.java
│ │ │ └── ServiceHandler.java
│ │ │ ├── DatabaseUtil
│ │ │ ├── DBApp.java
│ │ │ ├── GenerateReportEntities.java
│ │ │ └── ReportEntity.java
│ │ │ └── fragment
│ │ │ ├── Fragment_day.java
│ │ │ ├── Fragment_month.java
│ │ │ └── Fragment_week.java
│ └── res
│ │ ├── drawable-hdpi-v11
│ │ └── ic_notification.png
│ │ ├── drawable-hdpi-v9
│ │ └── ic_notification.png
│ │ ├── drawable-hdpi
│ │ ├── ic_action_name.png
│ │ ├── ic_edit_list.png
│ │ └── ic_notification.png
│ │ ├── drawable-mdpi-v11
│ │ └── ic_notification.png
│ │ ├── drawable-mdpi-v9
│ │ └── ic_notification.png
│ │ ├── drawable-mdpi
│ │ ├── ic_action_name.png
│ │ ├── ic_edit_list.png
│ │ └── ic_notification.png
│ │ ├── drawable-xhdpi-v11
│ │ └── ic_notification.png
│ │ ├── drawable-xhdpi-v9
│ │ └── ic_notification.png
│ │ ├── drawable-xhdpi
│ │ ├── ic_action_name.png
│ │ ├── ic_edit_list.png
│ │ └── ic_notification.png
│ │ ├── drawable-xxhdpi-v11
│ │ └── ic_notification.png
│ │ ├── drawable-xxhdpi-v9
│ │ └── ic_notification.png
│ │ ├── drawable-xxhdpi
│ │ ├── ic_action_name.png
│ │ ├── ic_edit_list.png
│ │ └── ic_notification.png
│ │ ├── drawable
│ │ ├── background_border.xml
│ │ ├── button_fullwidth.xml
│ │ ├── ic_clear.xml
│ │ ├── ic_delete.xml
│ │ ├── ic_help.xml
│ │ ├── ic_history.xml
│ │ ├── ic_menu_info.xml
│ │ ├── ic_play_arrow.xml
│ │ ├── ic_refresh.xml
│ │ ├── ic_search_white_24dp.xml
│ │ ├── ic_settings.xml
│ │ ├── ic_sort_white_24dp.xml
│ │ ├── ic_stop.xml
│ │ ├── ic_tutorial.xml
│ │ ├── ic_tutorial_inverted.xml
│ │ ├── privacyfriendlyappslogo.png
│ │ ├── secuso_logo_blau_blau.png
│ │ └── splash_screen.xml
│ │ ├── layout
│ │ ├── activity_about.xml
│ │ ├── activity_help.xml
│ │ ├── activity_help_content.xml
│ │ ├── activity_history.xml
│ │ ├── activity_main.xml
│ │ ├── activity_main_app_bar.xml
│ │ ├── activity_main_content.xml
│ │ ├── activity_report.xml
│ │ ├── activity_report_app_bar.xml
│ │ ├── activity_report_content.xml
│ │ ├── activity_report_detail.xml
│ │ ├── activity_report_detail_content.xml
│ │ ├── activity_select_history_apps.xml
│ │ ├── activity_settings.xml
│ │ ├── activity_splash.xml
│ │ ├── activity_tutorial.xml
│ │ ├── app_list_group.xml
│ │ ├── app_list_item.xml
│ │ ├── app_report_detail_layout.xml
│ │ ├── content_history.xml
│ │ ├── content_select_history_apps.xml
│ │ ├── fragment_charts.xml
│ │ ├── fragment_list_item.xml
│ │ ├── help_list_group.xml
│ │ ├── help_list_item.xml
│ │ ├── history_list_group.xml
│ │ ├── history_list_item.xml
│ │ ├── main_nav_header.xml
│ │ ├── report_detail_item.xml
│ │ ├── report_list_group.xml
│ │ ├── report_list_group_header.xml
│ │ ├── report_list_item.xml
│ │ ├── toolbar.xml
│ │ ├── tutorial_slide1.xml
│ │ ├── tutorial_slide2.xml
│ │ └── tutorial_slide3.xml
│ │ ├── menu
│ │ ├── applistseletion_menu.xml
│ │ ├── main_drawer.xml
│ │ └── toolbar_menu.xml
│ │ ├── mipmap-hdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_monitor_off.png
│ │ └── splash_icon.png
│ │ ├── mipmap-mdpi
│ │ ├── ic_drawer.png
│ │ ├── ic_launcher.png
│ │ ├── ic_monitor_off.png
│ │ └── splash_icon.png
│ │ ├── mipmap-xhdpi
│ │ ├── ic_drawer.png
│ │ ├── ic_launcher.png
│ │ ├── ic_monitor_off.png
│ │ └── splash_icon.png
│ │ ├── mipmap-xxhdpi
│ │ ├── ic_drawer.png
│ │ ├── ic_launcher.png
│ │ ├── ic_monitor_off.png
│ │ └── splash_icon.png
│ │ ├── mipmap-xxxhdpi
│ │ ├── ic_drawer.png
│ │ ├── ic_launcher.png
│ │ ├── ic_monitor_off.png
│ │ └── splash_icon.png
│ │ ├── values-de
│ │ └── strings.xml
│ │ ├── values-ja
│ │ └── strings.xml
│ │ ├── values
│ │ ├── colors.xml
│ │ ├── dimens.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ │ └── xml
│ │ ├── preferences.xml
│ │ └── searchable.xml
│ └── test
│ └── java
│ └── bjoernr
│ └── ssllabs
│ ├── ApiAssert.java
│ └── ApiTest.java
├── build.gradle
├── fastlane
└── metadata
│ └── android
│ ├── ar
│ └── summary.txt
│ ├── de-DE
│ ├── full_description.txt
│ ├── images
│ │ ├── icon.png
│ │ └── phoneScreenshots
│ │ │ ├── 1.png
│ │ │ └── 2.png
│ ├── short_description.txt
│ └── title.txt
│ ├── de
│ ├── full_description.txt
│ ├── images
│ │ ├── icon.png
│ │ └── phoneScreenshots
│ │ │ ├── 1.png
│ │ │ └── 2.png
│ ├── short_description.txt
│ └── title.txt
│ ├── en-US
│ ├── full_description.txt
│ ├── images
│ │ ├── icon.png
│ │ └── phoneScreenshots
│ │ │ ├── 1.png
│ │ │ └── 2.png
│ ├── short_description.txt
│ └── title.txt
│ ├── eo
│ └── summary.txt
│ ├── es
│ └── summary.txt
│ ├── fr
│ └── summary.txt
│ ├── he
│ └── summary.txt
│ ├── it
│ └── summary.txt
│ ├── ja
│ └── summary.txt
│ ├── nb
│ └── summary.txt
│ ├── nn
│ └── summary.txt
│ ├── pl
│ └── summary.txt
│ ├── pt-BR
│ └── summary.txt
│ ├── pt-PT
│ └── summary.txt
│ ├── pt
│ └── summary.txt
│ ├── ro
│ └── summary.txt
│ ├── ru
│ └── summary.txt
│ ├── tr
│ └── summary.txt
│ ├── uk
│ └── summary.txt
│ ├── zh-CN
│ └── summary.txt
│ └── zh-TW
│ └── summary.txt
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
/.github/workflows/changelog.yml:
--------------------------------------------------------------------------------
1 | name: Changelog Generation
2 |
3 | on:
4 | release:
5 | types: [published]
6 | workflow_dispatch:
7 |
8 | jobs:
9 | changelog:
10 | runs-on: ubuntu-latest
11 | steps:
12 | - uses: actions/checkout@v3
13 | with:
14 | submodules: 'recursive'
15 | ref: master
16 | - uses: rhysd/changelog-from-release/action@v3
17 | with:
18 | file: CHANGELOG.md
19 | pull_request: true
20 | github_token: ${{ secrets.GITHUB_TOKEN }}
21 | commit_summary_template: 'update changelog for %s changes'
22 | args: -l 2
23 | header: |
24 | # Changelog
25 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Built application files
2 | /*/build/
3 |
4 | # Crashlytics configuations
5 | com_crashlytics_export_strings.xml
6 |
7 | # Local configuration file (sdk path, etc)
8 | local.properties
9 |
10 | # Gradle generated files
11 | .gradle/
12 |
13 | #build files
14 | build/
15 |
16 | # Idea configuations
17 | .idea/
18 |
19 | # Signing files
20 | .signing/
21 |
22 | # User-specific configurations
23 | .idea/libraries/
24 | .idea/workspace.xml
25 | .idea/tasks.xml
26 | .idea/.name
27 | .idea/compiler.xml
28 | .idea/copyright/profiles_settings.xml
29 | .idea/encodings.xml
30 | .idea/misc.xml
31 | .idea/modules.xml
32 | .idea/scopes/scope_settings.xml
33 | .idea/vcs.xml
34 | *.iml
35 |
36 | # OS-specific files
37 | .DS_Store
38 | .DS_Store?
39 | ._*
40 | .Spotlight-V100
41 | .Trashes
42 | ehthumbs.db
43 | Thumbs.db
44 |
45 | # Documents
46 | *.pdf
47 | *.doc
48 | *.docx
49 | *.odt
50 |
51 | #APK
52 | *.apk
53 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Changelog
2 |
3 |
4 | ## [Netmonitor (Privacy Friendly) v2.1](https://github.com/SecUSo/privacy-friendly-netmonitor/releases/tag/v2.1) - 24 Sep 2020
5 |
6 | - small bugfixes
7 | - upgraded compile and target Android versions
8 | - updated dependencies and libraries
9 | - disabled for Android 10 and later
10 | - updated SECUSO references
11 | - fixed notification for newer Android versions
12 |
13 | [Changes][v2.1]
14 |
15 |
16 |
17 | ## [Privacy Friendly Netmonitor v2.0](https://github.com/SecUSo/privacy-friendly-netmonitor/releases/tag/v2.0) - 29 Mar 2018
18 |
19 | * Improvement history function: Apps with the Internet permission can be chosen and monitored
20 | * Redesign
21 |
22 | [Changes][v2.0]
23 |
24 |
25 |
26 | ## [Privacy Friendly Netmonitor v1.2](https://github.com/SecUSo/privacy-friendly-netmonitor/releases/tag/v1.2) - 12 Oct 2017
27 |
28 | - Bug fixing
29 | - Icon updates
30 | - Better handling of unknown apps
31 |
32 | [Changes][v1.2]
33 |
34 |
35 |
36 | ## [Privacy Friendly Net Monitor v1.1.4](https://github.com/SecUSo/privacy-friendly-netmonitor/releases/tag/v1.1.4) - 09 Mar 2017
37 |
38 | Blocking of screenshots removed
39 |
40 | [Changes][v1.1.4]
41 |
42 |
43 |
44 | ## [Privacy Friendly Net Monitor v1.1.3](https://github.com/SecUSo/privacy-friendly-netmonitor/releases/tag/v1.1.3) - 04 Mar 2017
45 |
46 | - Android 4 Support added
47 | - Icons refinements (list icons, splash icons, unloadable icons)
48 | - Help page refinement
49 | - Bug Fixes
50 |
51 |
52 | [Changes][v1.1.3]
53 |
54 |
55 |
56 | ## [Privacy Friendly Net Monitor v1.1.2](https://github.com/SecUSo/privacy-friendly-netmonitor/releases/tag/v1.1.2) - 28 Feb 2017
57 |
58 | - MinSDK reset to 21
59 |
60 |
61 | [Changes][v1.1.2]
62 |
63 |
64 |
65 | ## [Privacy Friendly Net Monitor v1.1.1](https://github.com/SecUSo/privacy-friendly-netmonitor/releases/tag/v1.1.1) - 21 Feb 2017
66 |
67 | - Refinements of translations
68 | - Downgrade to SDK 23 is target
69 |
70 |
71 | [Changes][v1.1.1]
72 |
73 |
74 |
75 | ## [Privacy Friendly Net Monitor v1.1](https://github.com/SecUSo/privacy-friendly-netmonitor/releases/tag/v1.1) - 20 Feb 2017
76 |
77 | Adding of SSL Rating
78 |
79 |
80 | [Changes][v1.1]
81 |
82 |
83 |
84 | ## [Privacy Friendly Net Monitor v1.0](https://github.com/SecUSo/privacy-friendly-netmonitor/releases/tag/v1.0) - 21 Jan 2017
85 |
86 | Privacy Friendly Net Monitor is an Android application that can identify and monitor active network connections of applications that are installed on the mobile device.
87 | It monitors active network sockets and provides information about the scanned connections and apps. The invoking app is identified and listed with it's name, package and icon. The Connection's local and remote socket information (ip/port) is displayed along with a resolved hostname information and protocol evaluation based on well-known ports. Known un-/encrypted protocols are automatically marked. Privacy Friendly Net Monitor does not require a rooted device.
88 |
89 | Privacy Friendly Net Monitor is optimized regarding the user’s privacy. It doesn’t use any tracking mechanisms, neither it displays any advertisement. It belongs to the Privacy Friendly Apps group developed by the SECUSO research group at Technische Universität Darmstadt, Germany.
90 |
91 |
92 | [Changes][v1.0]
93 |
94 |
95 | [v2.1]: https://github.com/SecUSo/privacy-friendly-netmonitor/compare/v2.0...v2.1
96 | [v2.0]: https://github.com/SecUSo/privacy-friendly-netmonitor/compare/v1.2...v2.0
97 | [v1.2]: https://github.com/SecUSo/privacy-friendly-netmonitor/compare/v1.1.4...v1.2
98 | [v1.1.4]: https://github.com/SecUSo/privacy-friendly-netmonitor/compare/v1.1.3...v1.1.4
99 | [v1.1.3]: https://github.com/SecUSo/privacy-friendly-netmonitor/compare/v1.1.2...v1.1.3
100 | [v1.1.2]: https://github.com/SecUSo/privacy-friendly-netmonitor/compare/v1.1.1...v1.1.2
101 | [v1.1.1]: https://github.com/SecUSo/privacy-friendly-netmonitor/compare/v1.1...v1.1.1
102 | [v1.1]: https://github.com/SecUSo/privacy-friendly-netmonitor/compare/v1.0...v1.1
103 | [v1.0]: https://github.com/SecUSo/privacy-friendly-netmonitor/tree/v1.0
104 |
105 |
106 |
--------------------------------------------------------------------------------
/CONTRIBUTING:
--------------------------------------------------------------------------------
1 | # How to contribute
2 |
3 | We encourage open source developers to support the Privacy Friendly Apps.
4 | We also wish to keep it as easy as possible to contribute. There are a few
5 | guidelines that we need contributors to follow.
6 | For further questions we refer to the contact details on the [Privacy Friendly Apps website](https://secuso.org/pfa).
7 |
8 | ## Reporting of Issues
9 |
10 | * Make sure you have a [GitHub account](https://github.com/signup/free).
11 | * Open an issue in the corresponding app's repository, assuming one does not already exist.
12 | * Clearly describe the issue including steps to reproduce when it is a bug.
13 | In some cases screenshots can be supportive.
14 | * Make sure you mention the Android version and the device you have used when
15 | you encountered the issue.
16 | * Make your description as precise as possible.
17 |
18 | ## Making Changes
19 |
20 | * Make sure you have a [GitHub account](https://github.com/signup/free).
21 | * Find an issue that you wish to close. If the issue you wish to close is not
22 | present, open it. Make sure that the issue has one of the following labels
23 | which are set by our team:
24 | * Bug
25 | * Enhancement
26 | * Help wanted
27 | * No integration planned
28 | That means that we have already reviewed the issue. If you wish to add a
29 | translation, opening an issue is not required.
30 | * Fork the repository on GitHub.
31 | * Create a topic branch from where you want to base your work (usually master branch).
32 | * To quickly create a topic branch based on master, run `git checkout -b
33 | fix/master/my_contribution master`.
34 | * Please avoid working directly on the `master` branch.
35 | * Make commits of logical units in english language.
36 | * Make sure your commit messages are in the proper format. If the commit
37 | addresses an issue filed in the Github repository, start the first line
38 | of the commit with a hash followed by the issue number (e.g. #42).
39 | * Make sure you have added the necessary tests for your changes.
40 | * Run all available tests to assure nothing else was accidentally broken.
41 |
42 | ### Unwanted Changes
43 |
44 | The Privacy Friendly Apps are a group of Android apps that are optimized regarding
45 | the user's privacy. Therefore, Pull Requests that contain the following functionality
46 | will be rejected:
47 | * Analytics or advertisement frameworks
48 | * User tracking (e.g. sending of data to a third party)
49 | * Any that use of libraries that do not comply the license of the corresponding Privacy
50 | Friendly App (GPLv3 or Apache2).
51 | * Unnecessary use of Android permissions. If new functionality is added that requires
52 | the usage of an Android permission you should clearly explain the Pull Request why
53 | this permission is required.
54 | * New translations/languages
55 |
56 | ## Submitting Changes
57 |
58 | * Push your changes to a topic branch in your fork of the repository.
59 | * Submit a Pull Request to the repository of the corresponding Privacy Friendly App.
60 | * Indicate that you have read this policy by writing the second word of the section "unwanted changes"
61 | * Our team looks at Pull Requests on a regular basis and assigns a reviewer.
62 | * After feedback has been given we expect responses within one month. After one
63 | month we might close the pull request if no activity is shown.
64 |
65 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | [][Twitter]
2 | [][Mastodon]
3 |
4 | [Mastodon]: https://xn--baw-joa.social/@SECUSO_Research
5 | [Twitter]: https://twitter.com/SECUSOResearch
6 |
7 |
12 | # Privacy Friendly Net Monitor #
13 |
14 | > :warning: :warning: :warning: **Please note:** This project is no longer officially maintained. In an attempt to focus our maintenance efforts, we have decided to stop the maintenance of some projects, including this one. This means that there will be no further feature updates or bugfixes planned for this app (exceptions only in cases of severe security or privacy issues). Consequently, the app has also been removed from the stores.
15 | If someone is interested in taking over the maintenance of this app, please do not hesitate to contact us: pfa@secuso.org
16 |
17 | This app monitors active network sockets and provides information on the scanned connections and apps. The invoking app is identified and listed with it's name, package and icon. The Connection's local and remote socket information (ip/port) is displayed along with a resolved hostname information and protocol evaluation based on well-known ports. Known un-/encrypted protocols are automatically marked. Additional features can be activated in the settings tab. This includes a panel for detailed technical information on connections, a logging functionality to keep scan results, a remote analysis of TLS-Servers via SSL-Labs API, a database connection to save selected reports in a history and charts to visualize the reports in different time intervals.
18 |
19 | This app is optimized regarding the user’s privacy. It doesn’t use any tracking mechanisms, neither it displays any advertisement. It belongs to the Privacy Friendly Apps group developed by the SECUSO research group at Karlsruhe Institute of Technology, Germany.
20 |
21 | ## Motivation ##
22 | This application has been developed to raise user awareness for the constant and unobserved communication behaviour of mobil device application. Additionally a coarse, technical analysis of the connections can help to identify unsecure, privacy-violating or malicious communicating behaviour of installed applications.
23 |
24 | ## Building ##
25 |
26 | ### API Reference ###
27 | Mininum SDK: 22 Target SDK: 26
28 |
29 | ### Setup ###
30 | * Android Studio 3.0.1
31 |
32 | ### Future Enhancements ###
33 | possible additional features
34 | - raw socket inspection
35 | - ip locating feature
36 | - export of identified information
37 | - display of additional remote host information (SSLLabs)
38 | - long term goal: addtitional active service, perfoming (deep) packet inspection with VPN-Capture implementation
39 |
40 | ### License ###
41 |
42 | Privacy Friendly Net Monitor is licensed under the GPLv3. Copyright (C) 2015 - 2018 Felix Tsala Schiller
43 |
44 | This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
45 |
46 | This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
47 |
48 | You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.
49 |
50 | The icons used in the nagivation drawer are licensed under the CC BY 2.5. In addition to them the app uses icons from Google Design Material Icons licensed under Apache License Version 2.0. All other images (the logo of Privacy Friendly Apps, the SECUSO logo, the app logos and the spash screen icon) copyright [SECUSO](www.secuso.org) (2019).
51 |
52 | This application uses SSL Labs APIs v1.24.4 by Qualys SSL Labs (Terms of use: https://www.ssllabs.com/downloads/Qualys_SSL_Labs_Terms_of_Use.pdf) and Java SSL Labs API by Björn Roland GLicense: GPLv3, https://github.com/bjoernr-de/java-ssllabs-api)
53 |
54 | Privacy Friendly Net Monitor is a non-root variant of TLSMetric android app (https://bitbucket.org/schillef/tlsmetric/overview) by Felix Tsala Schiller.
55 |
56 | ### Contributors ###
57 |
58 | App Icon:
59 | Markus Hau
60 |
61 | Developers:
62 | Felix Tsala Schiller
63 | Tobias Burger
64 | Marco Egermaier
65 |
66 | Contributors (Github):
67 | Yonjuni
68 | Kamuno
69 | di72nn
70 | stevesoltys
71 | FroggieFrog
72 |
73 |
74 |
75 |
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 | apply plugin: 'org.greenrobot.greendao'
3 |
4 | android {
5 | compileSdkVersion 29
6 | defaultConfig {
7 | applicationId 'org.secuso.privacyfriendlynetmonitor'
8 | minSdkVersion 17
9 | targetSdkVersion 29
10 | versionCode 9
11 | versionName "2.1"
12 | testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
13 | vectorDrawables.useSupportLibrary = true
14 | }
15 | buildTypes {
16 | release {
17 | minifyEnabled false
18 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
19 | }
20 | }
21 | productFlavors {
22 | }
23 |
24 | }
25 |
26 | android {
27 | lintOptions {
28 | disable 'MissingTranslation'
29 | }
30 | }
31 |
32 | //added by TB (needed for Studio 3.0.0) and for the charts
33 | allprojects {
34 | repositories {
35 | jcenter()
36 | google()
37 | maven { url "https://jitpack.io" }
38 | }
39 | }
40 |
41 | dependencies {
42 | implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
43 | implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3'
44 | implementation fileTree(include: ['*.jar'], dir: 'libs')
45 | androidTestImplementation('androidx.test.espresso:espresso-core:3.1.0', {
46 | exclude group: 'com.android.support', module: 'support-annotations'
47 | })
48 | implementation 'androidx.appcompat:appcompat:1.0.0'
49 | implementation 'com.google.android.material:material:1.2.1'
50 | implementation 'androidx.legacy:legacy-support-v4:1.0.0'
51 | implementation 'org.greenrobot:greendao:3.3.0'
52 | implementation 'net.zetetic:android-database-sqlcipher:3.5.9'
53 |
54 | implementation fileTree(include: ['*.jar'], dir: 'libs')
55 | implementation 'androidx.appcompat:appcompat:1.0.0'
56 | implementation 'com.google.android.material:material:1.2.1'
57 | implementation 'androidx.legacy:legacy-support-v4:1.0.0'
58 | implementation 'androidx.cardview:cardview:1.0.0'
59 | implementation 'androidx.recyclerview:recyclerview:1.1.0'
60 | implementation 'com.github.PhilJay:MPAndroidChart:v3.0.0-beta1'
61 |
62 | testImplementation 'junit:junit:4.12'
63 | testImplementation 'org.json:json:20180813'
64 | }
65 |
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in C:\Users\fs\AppData\Local\Android\Sdk/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/app/src/main/ic_history-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SecUSo/privacy-friendly-netmonitor/c927533285960fc03e74b5ad62e93b176fd26188/app/src/main/ic_history-web.png
--------------------------------------------------------------------------------
/app/src/main/ic_monitor_off-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SecUSo/privacy-friendly-netmonitor/c927533285960fc03e74b5ad62e93b176fd26188/app/src/main/ic_monitor_off-web.png
--------------------------------------------------------------------------------
/app/src/main/java/de/bjoernr/ssllabs/ConsoleUtilities.java:
--------------------------------------------------------------------------------
1 | /*
2 | Privacy Friendly Net Monitor (Net Monitor)
3 | - Copyright (2015 - 2017) Felix Tsala Schiller
4 |
5 | ###################################################################
6 |
7 | This file is part of Net Monitor.
8 |
9 | Net Monitor is free software: you can redistribute it and/or modify
10 | it under the terms of the GNU General Public License as published by
11 | the Free Software Foundation, either version 3 of the License, or
12 | (at your option) any later version.
13 |
14 | Net Monitor is distributed in the hope that it will be useful,
15 | but WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 | GNU General Public License for more details.
18 |
19 | You should have received a copy of the GNU General Public License
20 | along with Net Monitor. If not, see .
21 |
22 | Diese Datei ist Teil von Net Monitor.
23 |
24 | Net Monitor ist Freie Software: Sie können es unter den Bedingungen
25 | der GNU General Public License, wie von der Free Software Foundation,
26 | Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren
27 | veröffentlichten Version, weiterverbreiten und/oder modifizieren.
28 |
29 | Net Monitor wird in der Hoffnung, dass es nützlich sein wird, aber
30 | OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite
31 | Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK.
32 | Siehe die GNU General Public License für weitere Details.
33 |
34 | Sie sollten eine Kopie der GNU General Public License zusammen mit diesem
35 | Programm erhalten haben. Wenn nicht, siehe .
36 |
37 | ###################################################################
38 |
39 | This app has been created in affiliation with SecUSo-Department of Technische Universität
40 | Darmstadt.
41 |
42 | The design is based on the Privacy Friendly Example App template by Karola Marky, Christopher
43 | Beckmann and Markus Hau (https://github.com/SecUSo/privacy-friendly-app-example).
44 |
45 | Privacy Friendly Net Monitor is based on TLSMetric by Felix Tsala Schiller
46 | https://bitbucket.org/schillef/tlsmetric/overview.
47 |
48 | */
49 | package de.bjoernr.ssllabs;
50 |
51 | import org.json.JSONArray;
52 | import org.json.JSONException;
53 | import org.json.JSONObject;
54 |
55 | import java.util.ArrayList;
56 | import java.util.HashMap;
57 | import java.util.Iterator;
58 | import java.util.List;
59 | import java.util.Map;
60 | import java.util.regex.Matcher;
61 | import java.util.regex.Pattern;
62 |
63 | public class ConsoleUtilities {
64 | private static String newLine = "\n";
65 |
66 | /*
67 | * Special thanks to Vikas Gupta (http://stackoverflow.com/users/2915208/vikas-gupta)
68 | * http://stackoverflow.com/questions/21720759/convert-a-json-string-to-a-hashmap
69 | *
70 | * START code of Vikas Gupta from stackoverflow
71 | */
72 | public static Map jsonToMap(JSONObject json) throws JSONException {
73 | Map retMap = new HashMap();
74 |
75 | if (json != JSONObject.NULL) {
76 | retMap = toMap(json);
77 | }
78 | return retMap;
79 | }
80 |
81 | public static Map toMap(JSONObject object) throws JSONException {
82 | Map map = new HashMap();
83 |
84 | Iterator keysItr = object.keys();
85 | while (keysItr.hasNext()) {
86 | String key = keysItr.next();
87 | Object value = object.get(key);
88 |
89 | if (value instanceof JSONArray) {
90 | value = toList((JSONArray) value);
91 | } else if (value instanceof JSONObject) {
92 | value = toMap((JSONObject) value);
93 | }
94 | map.put(key, value);
95 | }
96 | return map;
97 | }
98 |
99 | public static List