mirror of
https://github.com/KnugiHK/WhatsApp-Chat-Exporter.git
synced 2026-01-29 13:50:42 +00:00
Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
77ceaa25dd | ||
|
|
e09f18e2f2 | ||
|
|
23114572bd | ||
|
|
2f04b69f38 | ||
|
|
e7c246822b | ||
|
|
2a215d024f | ||
|
|
f267f53007 | ||
|
|
3a30dfc800 | ||
|
|
580eaddb24 | ||
|
|
77b4b784d3 |
@@ -7,9 +7,9 @@ A customizable Android and iPhone Whatsapp database parser that will give you th
|
||||
**If you plan to uninstall WhatsApp or delete your WhatsApp account, please make a backup of your WhatsApp database. You may want to use this exporter again on the same database in the future as the exporter develops**
|
||||
|
||||
# Usage
|
||||
**Usage in README may be removed in the future. Check the usage in [Wiki](https://github.com/KnugiHK/Whatsapp-Chat-Exporter/wiki)**
|
||||
**Usage in README may be removed in the future. Check the usage in [Wiki](https://github.com/KnugiHK/Whatsapp-Chat-Exporter/wiki)**.
|
||||
|
||||
**If you want to use the old release (< 0.5) of the exporter, please follow the [old usage guide](https://github.com/KnugiHK/Whatsapp-Chat-Exporter/blob/main/old_README.md#usage)**
|
||||
**If you want to use the old release (< 0.5) of the exporter, please follow the [old usage guide](https://github.com/KnugiHK/Whatsapp-Chat-Exporter/wiki/Old-Usage#usage)**.
|
||||
|
||||
First, install the exporter by:
|
||||
```shell
|
||||
|
||||
@@ -1 +1 @@
|
||||
__version__ = "0.8.2"
|
||||
__version__ = "0.8.5"
|
||||
|
||||
@@ -4,10 +4,8 @@ import sqlite3
|
||||
import json
|
||||
import jinja2
|
||||
import os
|
||||
import requests
|
||||
import shutil
|
||||
import re
|
||||
import pkgutil
|
||||
import io
|
||||
import hmac
|
||||
from pathlib import Path
|
||||
@@ -114,7 +112,8 @@ def decrypt_backup(database, key, output, crypt=Crypt.CRYPT14):
|
||||
raise ValueError("The crypt15 file must be at least 131 bytes")
|
||||
t1 = t2 = None
|
||||
iv = database[8:24]
|
||||
db_ciphertext = database[131:]
|
||||
db_offset = database[0] + 2 # Skip protobuf + protobuf size and backup type
|
||||
db_ciphertext = database[db_offset:]
|
||||
|
||||
if t1 != t2:
|
||||
raise ValueError("The signature of key file and backup file mismatch")
|
||||
|
||||
@@ -4,9 +4,7 @@ import sqlite3
|
||||
import json
|
||||
import jinja2
|
||||
import os
|
||||
import requests
|
||||
import shutil
|
||||
import pkgutil
|
||||
from pathlib import Path
|
||||
from bleach import clean as sanitize
|
||||
from markupsafe import Markup
|
||||
|
||||
@@ -115,7 +115,10 @@ def extract_media(base_dir):
|
||||
folder = hashes[:2]
|
||||
flags = row[2]
|
||||
if flags == 2:
|
||||
os.mkdir(destination)
|
||||
try:
|
||||
os.mkdir(destination)
|
||||
except FileExistsError:
|
||||
pass
|
||||
elif flags == 1:
|
||||
shutil.copyfile(f"{base_dir}/{folder}/{hashes}", destination)
|
||||
i += 1
|
||||
|
||||
@@ -92,7 +92,7 @@
|
||||
</video>
|
||||
{% elif "/" in msg.mime %}
|
||||
<div style="text-align: center;" class="w3-panel w3-border-blue w3-pale-blue w3-rightbar w3-leftbar">
|
||||
<p>The file cannot be displayed here, however it should be located at {{ msg.data }}</p>
|
||||
<p>The file cannot be displayed here, however it should be located at <a href="./{{ msg.data }}">here</a></p>
|
||||
</div>
|
||||
{% else %}
|
||||
{% filter escape %}{{ msg.data }}{% endfilter %}
|
||||
@@ -148,7 +148,7 @@
|
||||
</video>
|
||||
{% elif "/" in msg.mime %}
|
||||
<div style="text-align: center;" class="w3-panel w3-border-blue w3-pale-blue w3-rightbar w3-leftbar">
|
||||
<p>The file cannot be displayed here, however it should be located at {{ msg.data }}</p>
|
||||
<p>The file cannot be displayed here, however it should be located at <a href="./{{ msg.data }}">here</a></p>
|
||||
</div>
|
||||
{% else %}
|
||||
{% filter escape %}{{ msg.data }}{% endfilter %}
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
# Whatsapp-Chat-Exporter
|
||||
A Whatsapp database parser that will give you the history of your Whatsapp conversations in HTML and JSON
|
||||
**If you plan to uninstall WhatsApp or delete your WhatsApp account, please make a backup of your WhatsApp database. You may want to use this exporter again on the same database in the future as the exporter develops**
|
||||
|
||||
# Usage
|
||||
First, clone this repo, and copy all py and html files to a working directory if you want to do so.
|
||||
```shell
|
||||
git clone https://github.com/KnugiHK/Whatsapp-Chat-Exporter.git
|
||||
```
|
||||
Then, ready your WhatsApp database, place them in the root of working directory.
|
||||
* For Android, it is called msgstore.db. If you want name of your contacts, get the contact database, which is called wa.db.
|
||||
* For iPhone, it is called 7c7fba66680ef796b916b067077cc246adacf01d (YES, a hash).
|
||||
|
||||
Next, ready your media folder, place it in the root of working directory.
|
||||
* For Android, copy the WhatsApp directory from your phone directly.
|
||||
* For iPhone, run the extract_iphone_media.py, and you will get a folder called Message.
|
||||
```
|
||||
python extract_iphone_media.py "C:\Users\[Username]\AppData\Roaming\Apple Computer\MobileSync\Backup\[device id]"
|
||||
```
|
||||
And now, you should have something like this:
|
||||
|
||||

|
||||
|
||||
Last, run the script regarding the type of phone.
|
||||
```
|
||||
python extract.py & :: Android
|
||||
python extract_iphone.py & :: iPhone
|
||||
```
|
||||
And you will get these:
|
||||
#### Private Message
|
||||

|
||||
|
||||
#### Group Message
|
||||

|
||||
6
setup.py
6
setup.py
@@ -37,13 +37,13 @@ setuptools.setup(
|
||||
],
|
||||
python_requires='>=3.7',
|
||||
install_requires=[
|
||||
'jinja2',
|
||||
'bleach'
|
||||
'jinja2',
|
||||
'bleach'
|
||||
],
|
||||
extras_require={
|
||||
'android_backup': ["pycryptodome", "javaobj-py3"],
|
||||
'crypt12': ["pycryptodome"],
|
||||
'crypt12': ["pycryptodome"],
|
||||
'crypt14': ["pycryptodome"],
|
||||
'crypt15': ["pycryptodome", "javaobj-py3"]
|
||||
},
|
||||
entry_points={
|
||||
|
||||
Reference in New Issue
Block a user