PyFlowDroid
Python wrappers for FlowDroid Apk analyzer. This project was built with two goals in mind:
- Automate the creation of a FlowDroid environment out-of-the-box
- Allow the usage of FlowDroid from Python code
1. Installation
1.1 Prerequisites
Make sure you have:
- A working version of java in the PATH of your environment.
- A working version of python in the PATH of your environment.
- A working version of git in the PATH of your environment.
1.2 Installing pyFlowDroid
You can get it from pypi using pip:
$ pip install pyflowdroid
Then, you need to run an additional command to make pyflowdroid download and install FlowDroid and the required resources to use it:
$ python -m pyflowdroid install
2. Using pyflowdroid as a Python library
You can use this script as a guide for downloading and analyzing apk files with pyflowdroid:
import pyflowdroid
# Path to a folder where the apks are stored
apkfolder = "./apks"
# If you need test apks, you can dowload the desired amount
# from a given provider into a destination folder
pyflowdroid.fetch(10, 'cubapk.com', apkfolder)
# Analyze all the apks in a folder
apk_count, leaks_count, leaky_apps = pyflowdroid.analyze(apkfolder)
# Analyze a single apk
flowdroid_logs = pyflowdroid.analyze_apk('./apks/test.apk')
3. Using pyflowdroid as a command line tool
The main advantage of using pyflowdroid as a command line tool over using FlowDroid directly is the automatic gathering of resources required to execute the flow analysis. pyflowdroid comes bundled with all the required resources to allow a quick analysis of apk files.
To analyze an .apk file with the default pyflowdroid setup, just run:
$ python -m pyflowdroid analyze path/to/file.apk
Similarly, you can perform a flow analysis on all the apks inside a folder:
$ python -m pyflowdroid analyze path/to/folder/
This should store raw FlowDroid logs for each analyzed apk and then show a general report like the following:
################################################################################
# PYFLOWDROID REPORT #
################################################################################
Analized: 5
Leaks found: 2
Leaky apps:
- 'path/to/folder/app1.apk'
- 'path/to/folder/app3.apk'
If you want to get some test apks, pyflowdroid includes a download function to fetch apks from a given provider. Current available providers are:
To fetch apks from a provider, just run:
$ python -m pyflowdroid download amount path/to/store/apks/ provider_name
For instance, to download 10 apk files from cubapk.com, run:
$ python -m pyflowdroid download 10 ./myapks/ cubapk.com
4. Contributing to pyflowdroid
If you want to add any features to pyflowdroid you will need to get a development enviroment.
4.1 Fetching the project source code
You can clone the github repository by executing:
$ git clone https://github.com/gvieralopez/pyFlowDroid
$ cd pyFlowDroid
4.2 Installing pyFlowDroid dependencies
You can install them with poetry by executing:
$ poetry shell
$ poetry install
$ poetry build
4.3 Download FlowDroid and its dependencies
This step will download and install FlowDroid. After doing this you can use FlowDroid with or without pyFlowDroid wrappers. Simply run:
$ python -m pyflowdroid install
4.4 Making your changes appear in the project
Just make a Pull Request.
4.5 Quality Assurance:
Run tests:
$ pytest
Type checking:
$ mypy
Code style:
$ flake8
4.6 Pending features
- Improve cli interface with hints on the parameters
- Improve cli interface with parameters all supported API functions
- Recognize in runtime when Flowdroid and depencies were not installed
- Add new apk providers
- Write pytest unit tests
- Write documentation
Metadata
Release files for pyflowdroid 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pyflowdroid-0.2.0.tar.gz | 442.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pyflowdroid-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 898.6 kB
Release files / pyflowdroid-0.2.0.tar.gz
| Download URL | pyflowdroid-0.2.0.tar.gz |
|---|---|
| Size | 442.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c6cbdf53fa985a2b5126aedf4393fa50a8e518f0686a2c18409d917e3ed358a7
|
|
BLAKE2b-256 checksum How to use checksums |
4254c1f6afefba8ea89378b9017e27156a531d45c45a85fa048ebd82dd375b39
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.1.12 CPython/3.10.4 Windows/10
|
Release files / pyflowdroid-0.2.0-py3-none-any.whl
| Download URL | pyflowdroid-0.2.0-py3-none-any.whl |
|---|---|
| Size | 456.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5385f40c0803873de6fc8463ed0635fcc3228d2f7a954ad1dea7486898ba6d79
|
|
BLAKE2b-256 checksum How to use checksums |
2b73b65f5f23680973627344f60fd60a27f52edee02cd7422a796251f29f5d83
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.1.12 CPython/3.10.4 Windows/10
|