Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
ab81180
Update README
YuriCosta May 4, 2018
6c62962
Update WhatsAppGDExtract.py
YuriCosta May 4, 2018
b91c16a
Fixed exitFlag
YuriCosta May 4, 2018
422e107
Update README.md
YuriCosta May 4, 2018
0a24b91
Update README.md
YuriCosta May 4, 2018
e8d6cd7
Update WhatsAppGDExtract.py
YuriCosta May 4, 2018
78272b1
Added files for google auth functions
YuriCosta May 4, 2018
473bbd5
Update config parser
YuriCosta May 4, 2018
0970cad
Commenting/testing git HTPPS commits from desktop
YuriCosta May 4, 2018
a93158e
Mispelling, thank you Dardgaih
YuriCosta May 23, 2018
0aadb22
add missing property
longstone May 27, 2018
1632226
add gitignore
longstone May 27, 2018
8589a0c
add description to cellnumbr
longstone May 27, 2018
a8b26fc
Merge pull request #1 from longstone/feature/fix-cell-number-configur…
YuriCosta May 28, 2018
6bb3302
ConfigParser exceptions error fixed
YuriCosta Jun 14, 2018
3dc08f4
fixed config parser again, tested still working
YuriCosta Jun 14, 2018
545b703
Log system deprecated, it was checking the filelist on realtime anywa…
YuriCosta Jul 2, 2018
82025c6
Fixed request urls, adapted the code to deal with the new filemap for…
YuriCosta Oct 22, 2019
c048158
added nextPageToken functionality for large archive
pianojockl Dec 7, 2019
4206e7f
Merge pull request #3 from pianojockl/master
YuriCosta Dec 9, 2019
f701a36
Google apparently stopped sending a newline character at the end of t…
pianojockl Mar 31, 2020
a5f0fd8
Merge pull request #4 from pianojockl/master
YuriCosta Apr 1, 2020
e960941
Update README.md
Kartikaggarwal98 May 28, 2020
24bfa9e
Merge pull request #5 from Kartikaggarwal98/errorneed-browser
YuriCosta May 29, 2020
d0f45b7
Remove compiled Python files
davispuh Jul 19, 2020
88835a3
Prefer systems gpsoauth
davispuh Jul 19, 2020
0550a87
Add flag to ask for password instead of using from settings.cfg
davispuh Jul 19, 2020
c6f3fc6
Merge pull request #6 from davispuh/pyc
YuriCosta Jul 19, 2020
de897de
Merge pull request #7 from davispuh/sys
YuriCosta Jul 19, 2020
07e7b47
Merge branch 'master' into password
YuriCosta Aug 1, 2020
954f778
Merge pull request #8 from davispuh/password
YuriCosta Aug 1, 2020
eb55723
Code cleanup and typo fix
Aug 5, 2020
3498a56
Remove deprecated incomplete backup marker
Aug 8, 2020
819a92d
Code cleanup and typo fix
Aug 5, 2020
a41d40c
Merge pull request #10 from nicolaslazo/master
YuriCosta Aug 21, 2020
fd862f0
Merge branch 'master' into remove-incomplete-backup-marker
YuriCosta Aug 21, 2020
3c85a66
Merge pull request #11 from nicolaslazo/remove-incomplete-backup-marker
YuriCosta Aug 21, 2020
e59d855
Update settings.cfg
xiaoveiti Nov 8, 2020
5089efa
Merge pull request #12 from xiaoveiti/patch-1
YuriCosta Jan 15, 2021
989646b
Fix "Bad Authentication".
jocki84 Feb 11, 2021
b559fca
Update .gitignore
YuriCosta Feb 12, 2021
a96da33
Delete .gitignore
YuriCosta Feb 12, 2021
0f39865
Merge pull request #13 from jocki84/master
YuriCosta Feb 12, 2021
88bf6dd
Fix % character
Alcazer Feb 16, 2021
11b812d
Merge pull request #15 from Alcazer/patch-1
YuriCosta Feb 16, 2021
d451572
Fix UnicodeEncodeError
Alcazer Mar 6, 2021
3b1ce0d
Merge pull request #20 from Alcazer/patch-1
YuriCosta Mar 13, 2021
5254d70
Fix + character
Alcazer Jun 13, 2021
fb226c5
Merge pull request #24 from Alcazer/patch-1
YuriCosta Jun 15, 2021
a0dced2
fixed bug where a corrupt backup would end the whole script
YuriCosta Jul 14, 2021
fc3023a
fix #30, fix #32
Alcazer Sep 21, 2021
e32ecb2
fix #30
Alcazer Sep 21, 2021
dfbba45
cosmetic and fix #30, #32, #34
Alcazer Nov 7, 2021
d959773
cosmetic and fix backup info, #30, #32, #34
Alcazer Nov 7, 2021
7513942
cosmetic and fix backup info, #30, #32, #34
Alcazer Nov 7, 2021
9c35117
Merge pull request #33 from Alcazer/patch-1
YuriCosta Nov 8, 2021
09e3707
Fixed error on list option
Choromanski Nov 14, 2021
c09df76
Update README.md
sidharthv96 Apr 25, 2022
a2ecb0e
Merge pull request #41 from sidharthv96/patch-1
YuriCosta May 9, 2022
48b57dc
Merge pull request #35 from Choromanski/feature/Fix-info
YuriCosta Jun 11, 2022
300b0ab
requirements and password instructions, script working again!
Dec 1, 2022
a34e1b5
hotfix
Dec 1, 2022
e6376f8
fix: set correct version for the dependency urllib3
joanroig Jun 23, 2023
6434313
Merge pull request #48 from joanroig/master
YuriCosta Jul 24, 2023
35decac
Update requirements.txt
YuriCosta May 29, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
164 changes: 164 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
.pybuilder/
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# .python-version

# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock

# poetry
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
#poetry.lock

# pdm
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
#pdm.lock
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
# in version control.
# https://pdm.fming.dev/#use-with-ide
.pdm.toml

# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
__pypackages__/

# Celery stuff
celerybeat-schedule
celerybeat.pid

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/

# pytype static type analyzer
.pytype/

# Cython debug symbols
cython_debug/

# PyCharm
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/

# Whatsapp extractor
*/*
md5sum.txt
72 changes: 48 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,56 @@
# WhatsApp Google Drive Extractor
Allows WhatsApp users on Android to extract their backed up WhatsApp data from Google Drive.
WhatsApp Google Drive Extractor
===============================

###### BRANCH UPDATES:
v1.0 - Initial release.
v1.1 - Added Python 3 support.
Allows WhatsApp users on Android to extract their backed up WhatsApp data
from Google Drive.


###### PREREQUISITES:
1. O/S: Windows Vista, Windows 7, Windows 8, Windows 10, Mac OS X or Linux
2. Python 2.x or 3.x - If not installed: https://www.python.org/downloads/
3. Android device with WhatsApp installed and the Google Drive backup feature enabled
4. Google services device id (if you want to reduce the risk of being logged out of Google)
Search Google Play for "device id" for plenty of apps that can reveal this information
5. Google account login credentials (username and password)
Prerequisites
-------------

1. [Python 3][PYTHON]
2. Android device with WhatsApp installed and the Google Drive backup
feature enabled.
3. The device's Android ID (if you want to reduce the risk of being logged
out of Google). Run `adb shell settings get secure android_id` or Search Google Play for "device id" for plenty of apps
that can reveal this information.
4. Google account login credentials (username and password). Create and use an App password when using 2-factor authentication: https://myaccount.google.com/apppasswords

###### INSTRUCTIONS:
1. Extract "WhatsApp-GD-Extractor-master.zip".
2. Edit the [auth] section in "settings.cfg".
3. Run python WhatsAppGDExtract.py from your command console.
4. Read the usage examples that are displayed.
5. Run any of the examples.


###### TROUBLESHOOTING:
1. Check you have the required imports installed (configparser and requests).
I.E.: pip install configparser requests
Instructions
------------

1. Extract `WhatsApp-GD-Extractor-master.zip`.
2. Install dependencies: Run `python3 -m pip install -r requirements.txt`
from your command console. Make sure gpsoauth is the latest version.
3. Edit the `[auth]` section in `settings.cfg`.
4. Run `python3 WhatsAppGDExtract.py` from your command console.
5. Read the usage examples that are displayed.
6. Run any of the examples.

###### CREDITS:
AUTHOR: TripCode
If downloading is interrupted, the files that were received successfully
won't be re-downloaded when running the tool one more time. After
downloading, you may verify the integrity of the downloaded files using
`md5sum --check md5sum.txt` on Linux or [md5summer][MD5SUMMER] on Windows.


Troubleshooting
---------------

1. Check that you have the required imports installed: `python3 -m pip
install gpsoauth`
2. If you have `Error:Need Browser`, go to this url to solve the issue:
https://accounts.google.com/b/0/DisplayUnlockCaptcha


Credits
-------

Author: TripCode

Contributors: DrDeath1122 from XDA for the multi-threading backbone part,
YuriCosta for reverse engineering the new restore system


[MD5SUMMER]: http://md5summer.org/
[PYTHON]: https://www.python.org/downloads/
Loading