10 Commits
0.8.2 ... 0.8.5

Author SHA1 Message Date
KnugiHK
77ceaa25dd Bump version 2023-01-31 17:52:34 +08:00
KnugiHK
e09f18e2f2 Minor fix 2023-01-31 17:52:12 +08:00
KnugiHK
23114572bd Forgot to change the variable lol 2023-01-31 17:52:12 +08:00
KnugiHK
2f04b69f38 A more concrete way to determine database offset 2023-01-31 17:52:12 +08:00
KnugiHK
e7c246822b Link to the file intead of showing the path directly
Not tested
Ref: https://github.com/KnugiHK/Whatsapp-Chat-Exporter/issues/15
2023-01-31 17:52:12 +08:00
KnugiHK
2a215d024f Bug fix
Duplicated folder creation
https://github.com/KnugiHK/Whatsapp-Chat-Exporter/issues/14
2023-01-31 17:52:12 +08:00
KnugiHK
f267f53007 Remove unused dependencies 2023-01-31 17:52:12 +08:00
KnugiHK
3a30dfc800 Bump version 2023-01-31 17:52:12 +08:00
Knugi
580eaddb24 Delete old_README.md 2022-10-24 03:59:42 +00:00
Knugi
77b4b784d3 Update README.md 2022-10-24 03:59:24 +00:00
8 changed files with 14 additions and 48 deletions

View File

@@ -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** **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
**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: First, install the exporter by:
```shell ```shell

View File

@@ -1 +1 @@
__version__ = "0.8.2" __version__ = "0.8.5"

View File

@@ -4,10 +4,8 @@ import sqlite3
import json import json
import jinja2 import jinja2
import os import os
import requests
import shutil import shutil
import re import re
import pkgutil
import io import io
import hmac import hmac
from pathlib import Path 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") raise ValueError("The crypt15 file must be at least 131 bytes")
t1 = t2 = None t1 = t2 = None
iv = database[8:24] 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: if t1 != t2:
raise ValueError("The signature of key file and backup file mismatch") raise ValueError("The signature of key file and backup file mismatch")

View File

@@ -4,9 +4,7 @@ import sqlite3
import json import json
import jinja2 import jinja2
import os import os
import requests
import shutil import shutil
import pkgutil
from pathlib import Path from pathlib import Path
from bleach import clean as sanitize from bleach import clean as sanitize
from markupsafe import Markup from markupsafe import Markup

View File

@@ -115,7 +115,10 @@ def extract_media(base_dir):
folder = hashes[:2] folder = hashes[:2]
flags = row[2] flags = row[2]
if flags == 2: if flags == 2:
os.mkdir(destination) try:
os.mkdir(destination)
except FileExistsError:
pass
elif flags == 1: elif flags == 1:
shutil.copyfile(f"{base_dir}/{folder}/{hashes}", destination) shutil.copyfile(f"{base_dir}/{folder}/{hashes}", destination)
i += 1 i += 1

View File

@@ -92,7 +92,7 @@
</video> </video>
{% elif "/" in msg.mime %} {% elif "/" in msg.mime %}
<div style="text-align: center;" class="w3-panel w3-border-blue w3-pale-blue w3-rightbar w3-leftbar"> <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> </div>
{% else %} {% else %}
{% filter escape %}{{ msg.data }}{% endfilter %} {% filter escape %}{{ msg.data }}{% endfilter %}
@@ -148,7 +148,7 @@
</video> </video>
{% elif "/" in msg.mime %} {% elif "/" in msg.mime %}
<div style="text-align: center;" class="w3-panel w3-border-blue w3-pale-blue w3-rightbar w3-leftbar"> <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> </div>
{% else %} {% else %}
{% filter escape %}{{ msg.data }}{% endfilter %} {% filter escape %}{{ msg.data }}{% endfilter %}

View File

@@ -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:
![Folder structure](imgs/structure.png)
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
![Private Message](imgs/pm.png)
#### Group Message
![Group Message](imgs/group.png)

View File

@@ -37,13 +37,13 @@ setuptools.setup(
], ],
python_requires='>=3.7', python_requires='>=3.7',
install_requires=[ install_requires=[
'jinja2', 'jinja2',
'bleach' 'bleach'
], ],
extras_require={ extras_require={
'android_backup': ["pycryptodome", "javaobj-py3"], 'android_backup': ["pycryptodome", "javaobj-py3"],
'crypt12': ["pycryptodome"], 'crypt12': ["pycryptodome"],
'crypt12': ["pycryptodome"], 'crypt14': ["pycryptodome"],
'crypt15': ["pycryptodome", "javaobj-py3"] 'crypt15': ["pycryptodome", "javaobj-py3"]
}, },
entry_points={ entry_points={