Bash script to export android content providers data to csv
Bash script that exports content provider's data to raw and CSV format. It can be your own content provider or any other content provider that isn't blocked with permissions.
First, clone the repository using git:
git clone https://github.com/snatik/adb-export/
or download the script manually using this command:
curl "https://raw.githubusercontent.com/snatik/adb-export/master/adb-export.sh" -o adb-export.sh
Then give the execution permission to the script and run it:
$ chmod +x adb-export.sh
$ ./adb-export.sh
Enable Developer options
on the device
Example:
./adb-export.sh -e content://com.your.app/images
Example:
./adb-export.sh -e content://com.android.calendar/calendars
The exported data will be in a new created folders with timestamps in the same root folder this script is located. You will find two new created files:
raw_query.txt
- this is what we exported from devicedata.csv
- this is what you needThere is a list of some android content providers that don't block the adb query. My expectation was that it wouldn't be possible because of lack of provider permissions. Just to be on the safe side, I opened a security vulnarability issue to Security Google Team and got few replies where the last one says that this is not a security hole.
Just an example:
This one won't work: content://sms
The result will be: requires android.permission.READ_SMS
This will work: content://com.android.contacts/contacts
The result: CSV with all contacts
Which, btw, should also check for permissions, but it doesn't. :open_mouth:
If you discover some new that work, add them here
the
external
in the uri, you can also change tointernal
sudo apt-get install android-tools-adb
firstIf you have successfully tested this script on others systems or platforms please let me know or update this list.
REPLACE_VALUE_COMMAS_TO
variable in the script.Apache License 2.0
See LICENSE for details.