From ecc7706959c07dbadb323dd585363b7e78f63898 Mon Sep 17 00:00:00 2001 From: Marek Kraus Date: Sun, 29 Sep 2024 11:48:54 +0200 Subject: [PATCH 01/19] Add extracting command for iTunes downloaded from Microsoft Store --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index c6070a9..84839ed 100644 --- a/README.md +++ b/README.md @@ -106,6 +106,10 @@ Simply invoke the following command from shell, remember to replace the username ```sh wtsexporter -i -b "C:\Users\[Username]\AppData\Roaming\Apple Computer\MobileSync\Backup\[device id]" ``` +#### Windows (iTunes downloaded from Microsoft Store) +```sh +wtsexporter -i -b "C:\Users\[Username]\Apple\MobileSync\Backup\[device id]" +``` #### Mac ```sh wtsexporter -i -b ~/Library/Application\ Support/MobileSync/Backup/[device id] From 113e9c1c19637db7cba160891cce1eb9c812db0d Mon Sep 17 00:00:00 2001 From: Knugi <24708955+KnugiHK@users.noreply.github.com> Date: Sat, 1 Mar 2025 04:02:33 +0000 Subject: [PATCH 02/19] Update Nuitka --- .github/workflows/compile-binary.yml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/compile-binary.yml b/.github/workflows/compile-binary.yml index be1b723..9b07b51 100644 --- a/.github/workflows/compile-binary.yml +++ b/.github/workflows/compile-binary.yml @@ -16,16 +16,16 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: '3.12' + python-version: '3.13' - name: Install dependencies run: | python -m pip install --upgrade pip - pip install pycryptodome javaobj-py3 ordered-set zstandard nuitka==2.3 + pip install pycryptodome javaobj-py3 ordered-set zstandard nuitka==2.6.7 pip install . - name: Build binary with Nuitka run: | - python -m nuitka --no-deployment-flag=self-execution --onefile --include-data-file=./Whatsapp_Chat_Exporter/whatsapp.html=./Whatsapp_Chat_Exporter/whatsapp.html --follow-imports Whatsapp_Chat_Exporter/__main__.py - cp __main__.bin wtsexporter_linux_x64 + python -m nuitka --no-deployment-flag=self-execution --onefile --include-data-file=./Whatsapp_Chat_Exporter/whatsapp.html=./Whatsapp_Chat_Exporter/whatsapp.html --follow-imports Whatsapp_Chat_Exporter/__main__.py --output-filename=wtsexporter + cp wtsexporter.bin wtsexporter_linux_x64 sha256sum wtsexporter_linux_x64 - uses: actions/upload-artifact@v4 with: @@ -40,16 +40,16 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: '3.12' + python-version: '3.13' - name: Install dependencies run: | python -m pip install --upgrade pip - pip install pycryptodome javaobj-py3 ordered-set zstandard nuitka==2.3 + pip install pycryptodome javaobj-py3 ordered-set zstandard nuitka==2.6.7 pip install . - name: Build binary with Nuitka run: | - python -m nuitka --no-deployment-flag=self-execution --onefile --include-data-file=./Whatsapp_Chat_Exporter/whatsapp.html=./Whatsapp_Chat_Exporter/whatsapp.html --assume-yes-for-downloads --follow-imports Whatsapp_Chat_Exporter\__main__.py - copy __main__.exe wtsexporter_x64.exe + python -m nuitka --no-deployment-flag=self-execution --onefile --include-data-file=./Whatsapp_Chat_Exporter/whatsapp.html=./Whatsapp_Chat_Exporter/whatsapp.html --assume-yes-for-downloads --follow-imports Whatsapp_Chat_Exporter\__main__.py --output-filename=wtsexporter + copy wtsexporter.exe wtsexporter_x64.exe Get-FileHash wtsexporter_x64.exe - uses: actions/upload-artifact@v4 with: @@ -64,16 +64,16 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: '3.12' + python-version: '3.13' - name: Install dependencies run: | python -m pip install --upgrade pip - pip install pycryptodome javaobj-py3 ordered-set zstandard nuitka==2.3 + pip install pycryptodome javaobj-py3 ordered-set zstandard nuitka==2.6.7 pip install . - name: Build binary with Nuitka run: | - python -m nuitka --no-deployment-flag=self-execution --onefile --include-data-file=./Whatsapp_Chat_Exporter/whatsapp.html=./Whatsapp_Chat_Exporter/whatsapp.html --follow-imports Whatsapp_Chat_Exporter/__main__.py - cp __main__.bin wtsexporter_macos_x64 + python -m nuitka --no-deployment-flag=self-execution --onefile --include-data-file=./Whatsapp_Chat_Exporter/whatsapp.html=./Whatsapp_Chat_Exporter/whatsapp.html --follow-imports Whatsapp_Chat_Exporter/__main__.py --output-filename=wtsexporter + cp wtsexporter.bin wtsexporter_macos_x64 shasum -a 256 wtsexporter_macos_x64 - uses: actions/upload-artifact@v4 with: From 2132bbbff83f62684e780e622b4eedc829d73347 Mon Sep 17 00:00:00 2001 From: Knugi <24708955+KnugiHK@users.noreply.github.com> Date: Sat, 1 Mar 2025 04:04:15 +0000 Subject: [PATCH 03/19] Add vobject to dependency --- .github/workflows/compile-binary.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/compile-binary.yml b/.github/workflows/compile-binary.yml index 9b07b51..79f7128 100644 --- a/.github/workflows/compile-binary.yml +++ b/.github/workflows/compile-binary.yml @@ -20,7 +20,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install pycryptodome javaobj-py3 ordered-set zstandard nuitka==2.6.7 + pip install pycryptodome vobject javaobj-py3 ordered-set zstandard nuitka==2.6.7 pip install . - name: Build binary with Nuitka run: | @@ -44,7 +44,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install pycryptodome javaobj-py3 ordered-set zstandard nuitka==2.6.7 + pip install pycryptodome vobject javaobj-py3 ordered-set zstandard nuitka==2.6.7 pip install . - name: Build binary with Nuitka run: | @@ -68,7 +68,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install pycryptodome javaobj-py3 ordered-set zstandard nuitka==2.6.7 + pip install pycryptodome vobject javaobj-py3 ordered-set zstandard nuitka==2.6.7 pip install . - name: Build binary with Nuitka run: | From 39a1e1dec0c146c65e2c6a065dd3bacd7d273549 Mon Sep 17 00:00:00 2001 From: Knugi <24708955+KnugiHK@users.noreply.github.com> Date: Sat, 1 Mar 2025 04:09:26 +0000 Subject: [PATCH 04/19] Update compile-binary.yml --- .github/workflows/compile-binary.yml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/workflows/compile-binary.yml b/.github/workflows/compile-binary.yml index 79f7128..c8d6ca2 100644 --- a/.github/workflows/compile-binary.yml +++ b/.github/workflows/compile-binary.yml @@ -24,7 +24,9 @@ jobs: pip install . - name: Build binary with Nuitka run: | - python -m nuitka --no-deployment-flag=self-execution --onefile --include-data-file=./Whatsapp_Chat_Exporter/whatsapp.html=./Whatsapp_Chat_Exporter/whatsapp.html --follow-imports Whatsapp_Chat_Exporter/__main__.py --output-filename=wtsexporter + python -m nuitka --no-deployment-flag=self-execution --onefile \ + --include-data-file=./Whatsapp_Chat_Exporter/whatsapp.html=./Whatsapp_Chat_Exporter/whatsapp.html \ + --assume-yes-for-downloads --follow-imports Whatsapp_Chat_Exporter/__main__.py --output-filename=wtsexporter cp wtsexporter.bin wtsexporter_linux_x64 sha256sum wtsexporter_linux_x64 - uses: actions/upload-artifact@v4 @@ -48,7 +50,9 @@ jobs: pip install . - name: Build binary with Nuitka run: | - python -m nuitka --no-deployment-flag=self-execution --onefile --include-data-file=./Whatsapp_Chat_Exporter/whatsapp.html=./Whatsapp_Chat_Exporter/whatsapp.html --assume-yes-for-downloads --follow-imports Whatsapp_Chat_Exporter\__main__.py --output-filename=wtsexporter + python -m nuitka --no-deployment-flag=self-execution --onefile \ + --include-data-file=./Whatsapp_Chat_Exporter/whatsapp.html=./Whatsapp_Chat_Exporter/whatsapp.html \ + --assume-yes-for-downloads --follow-imports Whatsapp_Chat_Exporter\__main__.py --output-filename=wtsexporter copy wtsexporter.exe wtsexporter_x64.exe Get-FileHash wtsexporter_x64.exe - uses: actions/upload-artifact@v4 @@ -72,7 +76,9 @@ jobs: pip install . - name: Build binary with Nuitka run: | - python -m nuitka --no-deployment-flag=self-execution --onefile --include-data-file=./Whatsapp_Chat_Exporter/whatsapp.html=./Whatsapp_Chat_Exporter/whatsapp.html --follow-imports Whatsapp_Chat_Exporter/__main__.py --output-filename=wtsexporter + python -m nuitka --no-deployment-flag=self-execution --onefile \ + --include-data-file=./Whatsapp_Chat_Exporter/whatsapp.html=./Whatsapp_Chat_Exporter/whatsapp.html \ + --assume-yes-for-downloads --follow-imports Whatsapp_Chat_Exporter/__main__.py --output-filename=wtsexporter cp wtsexporter.bin wtsexporter_macos_x64 shasum -a 256 wtsexporter_macos_x64 - uses: actions/upload-artifact@v4 From e23773e5212d7347aa3e062305db2e55e7075f8c Mon Sep 17 00:00:00 2001 From: Knugi <24708955+KnugiHK@users.noreply.github.com> Date: Sat, 1 Mar 2025 04:13:27 +0000 Subject: [PATCH 05/19] Update compile-binary.yml --- .github/workflows/compile-binary.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/compile-binary.yml b/.github/workflows/compile-binary.yml index c8d6ca2..dd3d5bd 100644 --- a/.github/workflows/compile-binary.yml +++ b/.github/workflows/compile-binary.yml @@ -50,8 +50,8 @@ jobs: pip install . - name: Build binary with Nuitka run: | - python -m nuitka --no-deployment-flag=self-execution --onefile \ - --include-data-file=./Whatsapp_Chat_Exporter/whatsapp.html=./Whatsapp_Chat_Exporter/whatsapp.html \ + python -m nuitka --no-deployment-flag=self-execution --onefile ^ + --include-data-file=./Whatsapp_Chat_Exporter/whatsapp.html=./Whatsapp_Chat_Exporter/whatsapp.html ^ --assume-yes-for-downloads --follow-imports Whatsapp_Chat_Exporter\__main__.py --output-filename=wtsexporter copy wtsexporter.exe wtsexporter_x64.exe Get-FileHash wtsexporter_x64.exe From 2d7a377646b0111ef757defb8f189f8da1e58e6b Mon Sep 17 00:00:00 2001 From: Knugi <24708955+KnugiHK@users.noreply.github.com> Date: Sat, 1 Mar 2025 04:16:45 +0000 Subject: [PATCH 06/19] Update compile-binary.yml --- .github/workflows/compile-binary.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/compile-binary.yml b/.github/workflows/compile-binary.yml index dd3d5bd..fdf7509 100644 --- a/.github/workflows/compile-binary.yml +++ b/.github/workflows/compile-binary.yml @@ -50,8 +50,8 @@ jobs: pip install . - name: Build binary with Nuitka run: | - python -m nuitka --no-deployment-flag=self-execution --onefile ^ - --include-data-file=./Whatsapp_Chat_Exporter/whatsapp.html=./Whatsapp_Chat_Exporter/whatsapp.html ^ + python -m nuitka --no-deployment-flag=self-execution --onefile ` + --include-data-file=./Whatsapp_Chat_Exporter/whatsapp.html=./Whatsapp_Chat_Exporter/whatsapp.html ` --assume-yes-for-downloads --follow-imports Whatsapp_Chat_Exporter\__main__.py --output-filename=wtsexporter copy wtsexporter.exe wtsexporter_x64.exe Get-FileHash wtsexporter_x64.exe From b08f958c2ab4d1799e0aaec29f1f0dfd1418ed7b Mon Sep 17 00:00:00 2001 From: Knugi <24708955+KnugiHK@users.noreply.github.com> Date: Sat, 1 Mar 2025 04:23:02 +0000 Subject: [PATCH 07/19] Update compile-binary.yml --- .github/workflows/compile-binary.yml | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/.github/workflows/compile-binary.yml b/.github/workflows/compile-binary.yml index fdf7509..48e459d 100644 --- a/.github/workflows/compile-binary.yml +++ b/.github/workflows/compile-binary.yml @@ -26,8 +26,7 @@ jobs: run: | python -m nuitka --no-deployment-flag=self-execution --onefile \ --include-data-file=./Whatsapp_Chat_Exporter/whatsapp.html=./Whatsapp_Chat_Exporter/whatsapp.html \ - --assume-yes-for-downloads --follow-imports Whatsapp_Chat_Exporter/__main__.py --output-filename=wtsexporter - cp wtsexporter.bin wtsexporter_linux_x64 + --assume-yes-for-downloads --follow-imports Whatsapp_Chat_Exporter/__main__.py --output-filename=wtsexporter_linux_x64 sha256sum wtsexporter_linux_x64 - uses: actions/upload-artifact@v4 with: @@ -50,9 +49,7 @@ jobs: pip install . - name: Build binary with Nuitka run: | - python -m nuitka --no-deployment-flag=self-execution --onefile ` - --include-data-file=./Whatsapp_Chat_Exporter/whatsapp.html=./Whatsapp_Chat_Exporter/whatsapp.html ` - --assume-yes-for-downloads --follow-imports Whatsapp_Chat_Exporter\__main__.py --output-filename=wtsexporter + python -m nuitka --no-deployment-flag=self-execution --onefile --include-data-file=./Whatsapp_Chat_Exporter/whatsapp.html=./Whatsapp_Chat_Exporter/whatsapp.html --assume-yes-for-downloads --follow-imports Whatsapp_Chat_Exporter\__main__.py --output-filename=wtsexporter copy wtsexporter.exe wtsexporter_x64.exe Get-FileHash wtsexporter_x64.exe - uses: actions/upload-artifact@v4 @@ -78,8 +75,7 @@ jobs: run: | python -m nuitka --no-deployment-flag=self-execution --onefile \ --include-data-file=./Whatsapp_Chat_Exporter/whatsapp.html=./Whatsapp_Chat_Exporter/whatsapp.html \ - --assume-yes-for-downloads --follow-imports Whatsapp_Chat_Exporter/__main__.py --output-filename=wtsexporter - cp wtsexporter.bin wtsexporter_macos_x64 + --assume-yes-for-downloads --follow-imports Whatsapp_Chat_Exporter/__main__.py --output-filename=wtsexporter_macos_x64 shasum -a 256 wtsexporter_macos_x64 - uses: actions/upload-artifact@v4 with: From ec53ba61e3c7029de62bb9fa2410f52f4de8c722 Mon Sep 17 00:00:00 2001 From: KnugiHK <24708955+KnugiHK@users.noreply.github.com> Date: Tue, 4 Mar 2025 21:53:43 +0800 Subject: [PATCH 08/19] The new path may not necessarily be used exclusively by iTunes from the MS Store --- README.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 84839ed..f92f28e 100644 --- a/README.md +++ b/README.md @@ -101,15 +101,16 @@ If you want to work on an encrypted iOS/iPadOS Backup, you should install iphone pip install git+https://github.com/KnugiHK/iphone_backup_decrypt ``` ### Extracting -Simply invoke the following command from shell, remember to replace the username and device id correspondingly in the command. +To extract messages from iOS/iPadOS backups, run the following command in the shell, making sure to replace the username and device ID with the correct values. Keep in mind that there are at least two possible paths for the backups on Windows. #### Windows -```sh +```powershell +# Possible path one wtsexporter -i -b "C:\Users\[Username]\AppData\Roaming\Apple Computer\MobileSync\Backup\[device id]" -``` -#### Windows (iTunes downloaded from Microsoft Store) -```sh + +# Possible path two wtsexporter -i -b "C:\Users\[Username]\Apple\MobileSync\Backup\[device id]" ``` + #### Mac ```sh wtsexporter -i -b ~/Library/Application\ Support/MobileSync/Backup/[device id] From 7ee61084c04b6b439d8a4d519c02178d1672827f Mon Sep 17 00:00:00 2001 From: Knugi <24708955+KnugiHK@users.noreply.github.com> Date: Tue, 4 Mar 2025 14:08:08 +0000 Subject: [PATCH 09/19] Create pull_request_template.md --- .github/pull_request_template.md | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .github/pull_request_template.md diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..90eb9c0 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,8 @@ +## Related Issue +- Please reference the related issue here (e.g., `Fixes #123` or `Closes #456`), if there are any. + +## Description of Changes +- Briefly describe the changes made in this PR. Explain the purpose, the implementation details, and any important information that reviewers should be aware of. + +## Important (Please remove this section before submitting the PR) +- Before submitting this PR, please make sure to look at **[this issue](https://github.com/KnugiHK/WhatsApp-Chat-Exporter/issues/137)**. It contains crucial context and discussion that may affect the changes in this PR. From ed49633f9ca3de05a5f5835848d141a272b0fec6 Mon Sep 17 00:00:00 2001 From: Knugi <24708955+KnugiHK@users.noreply.github.com> Date: Sun, 9 Mar 2025 16:29:11 +0000 Subject: [PATCH 10/19] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5af47d9..4f41112 100644 --- a/README.md +++ b/README.md @@ -225,7 +225,7 @@ licenses. # To do See [issues](https://github.com/KnugiHK/Whatsapp-Chat-Exporter/issues). -# Copyright +# Legal Stuff & Disclaimer This is a MIT licensed project. The Telegram Desktop's export is the reference for whatsapp.html in this repo. From 17308d97276d8b3f49544ce8a3eb84e3ded5eaf5 Mon Sep 17 00:00:00 2001 From: Knugi <24708955+KnugiHK@users.noreply.github.com> Date: Mon, 10 Mar 2025 13:29:37 +0000 Subject: [PATCH 11/19] Create CONTRIBUTING.md --- CONTRIBUTING.md | 61 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..880d8f3 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,61 @@ +# Contributing Guidelines + +*Pull requests, bug reports, and all other forms of contribution are welcomed and highly encouraged!* + +> **This guide serves to set clear expectations for everyone involved with the project so that we can improve it together while also creating a welcoming space for everyone to participate. Following these guidelines will help ensure a positive experience for contributors and maintainers.** + + Maintainer's note: I aim to keep things simple and flexible, without imposing too many restrictions, while still ensuring it’s useful for the project. + +## :book: Code of Conduct + +There isn't an official code of conduct at the moment, and we hope it won't be necessary. The rule is simple: be reasonable and treat others with respect! + +## :bulb: Asking Questions + +While there is no formal support from the maintainer, they are happy to help if you provide enough information. However, please note: + +If you feel the questions or difficulties you're encountering aren't related to the software itself, please [open a discussion thread](https://github.com/KnugiHK/WhatsApp-Chat-Exporter/discussions/new/choose). Do not open an issue just to ask a question. While asking questions in the project issues is not strictly prohibited, any issues that don't qualify as genuine problems will be converted into discussion threads. + +Hopefully, the community will be able to offer assistance as well. You can check out the article [How do I ask a good question?](https://stackoverflow.com/help/how-to-ask) on StackOverflow to learn how to craft questions that encourage more people to respond. + +## :inbox_tray: Opening an Issue + +Before [creating an issue](https://help.github.com/en/github/managing-your-work-on-github/creating-an-issue), check if you are using the latest version of the project. If you are not up-to-date, see if updating fixes your issue first. + +### :lock: Reporting Security Issues + +Please report any vulnerability to [GitHub Security Advisory](https://github.com/KnugiHK/WhatsApp-Chat-Exporter/security/advisories/new). **Do not** file a public issue for security vulnerabilities. + +### :beetle: Bug Reports and Feature Requests + +- **Do not open a duplicate issue!** Search through existing issues to see if your issue or request has previously been reported. If your issue exists, comment with any additional information you have. You may simply note "I have this problem too/I want this feature too", which helps prioritize the most common problems and requests. + +- **Fully complete the provided issue template.** The issue templates request all the information we need to quickly and efficiently address your issue. Be clear, concise, and descriptive. Provide as much information as you can, including steps to reproduce, stack traces, compiler errors, library versions, OS versions, and screenshots (if applicable). This will assist the maintainer in efficiently triaging your issues and isolating the problems. + +- For feature requests, be specific about the proposed outcome and how it fits with the existing features. If possible, include implementation details. + +Note that feature requests may be out of scope for the project, and if accepted, we cannot commit to a specific timeline for implementation. + +## :repeat: Submitting Pull Requests + +- **Smaller is better.** Submit **one** pull request per bug fix or feature. A pull request should contain isolated changes pertaining to a single bug fix or feature implementation. **Do not** refactor or reformat code that is unrelated to your change. It is better to **submit many small pull requests** rather than a single large one. Enormous pull requests will take enormous amounts of time to review, or may be rejected altogether. + +- **Coordinate bigger changes.** For large and non-trivial changes, open an issue to discuss a strategy with the maintainers. Otherwise, you risk doing a lot of work for nothing! + +- **Follow PEP8.** Python code should follow PEP8 formatting and styling guidelines. Consider using automated tools like [autopep8](https://github.com/hhatto/autopep8) or [flake8](https://github.com/PyCQA/flake8) to ensure your code adheres to these standards. + +- **[Resolve any merge conflicts](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/resolving-a-merge-conflict-on-github)** that occur. + +- Use spaces, not tabs. + +## :memo: Copyright + +This repository is licensed under the MIT License. Contributions will be licensed under the same terms. + +By contributing, you confirm that your contributions do not infringe on the rights of others. + +If your contribution includes code from other open-source projects, ensure that their licenses are compatible with this one. For example, code licensed under the GPL cannot be included in this project. + +## :pray: Credit + +This contribution guidelines is remixed from [jessesquires/.github:CONTRIBUTING.md](https://github.com/jessesquires/.github/blob/main/CONTRIBUTING.md) which also incorporated other works. *We commend them for their efforts to facilitate collaboration in their projects.* From 6b98acdecf40917d410906c2ef034c54cd24d342 Mon Sep 17 00:00:00 2001 From: Knugi <24708955+KnugiHK@users.noreply.github.com> Date: Mon, 10 Mar 2025 13:32:41 +0000 Subject: [PATCH 12/19] Update CONTRIBUTING.md --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 880d8f3..56d1c61 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -50,7 +50,7 @@ Note that feature requests may be out of scope for the project, and if accepted, ## :memo: Copyright -This repository is licensed under the MIT License. Contributions will be licensed under the same terms. +This repository is licensed under the MIT License. **Any contributions you submit will be licensed under the same terms.** By contributing, you confirm that your contributions do not infringe on the rights of others. From 538afef5b69ec29bd2b0cbbf50763d94b313285f Mon Sep 17 00:00:00 2001 From: Knugi <24708955+KnugiHK@users.noreply.github.com> Date: Tue, 11 Mar 2025 13:59:03 +0000 Subject: [PATCH 13/19] Update README.md --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 4f41112..3a7b89d 100644 --- a/README.md +++ b/README.md @@ -43,8 +43,7 @@ Simply invoke the following command from shell. wtsexporter -a ``` #### Enriching Contact from vCard -Usually, the default WhatsApp contact database extracted from your phone will contains the contact names and the exporter will use it to map your chats. However, some reported cases showed that the database could has never been populated. -In this case, you can export your contacts to a vCard file from your phone or a cloud provider like Google Contacts. Then, install the necessary dependency and run the following command from the shell: +The default WhatsApp contact database typically contained contact names extracted from your phone, which the exporter used to map your chats. However, in some reported cases, the database may have never been populated. In such case, you can export your contacts to a vCard file from your phone or a cloud provider like Google Contacts. Then, install the necessary dependency and run the following command from the shell: ```sh pip install whatsapp-chat-exporter["vcards"] wtsexporter -a --enrich-from-vcard contacts.vcf --default-country-code 852 From 4bafeb9b00a7be84389bc72acce0ffd805160602 Mon Sep 17 00:00:00 2001 From: Knugi <24708955+KnugiHK@users.noreply.github.com> Date: Tue, 11 Mar 2025 14:30:06 +0000 Subject: [PATCH 14/19] Update README.md --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3a7b89d..063e6ee 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,9 @@ # Whatsapp-Chat-Exporter -[![Latest in Pypi](https://img.shields.io/pypi/v/whatsapp-chat-exporter?label=Latest%20in%20Pypi)](https://pypi.org/project/whatsapp-chat-exporter/) -![License MIT](https://img.shields.io/pypi/l/whatsapp-chat-exporter) +[![Latest in PyPI](https://img.shields.io/pypi/v/whatsapp-chat-exporter?label=Latest%20in%20PyPI)](https://pypi.org/project/whatsapp-chat-exporter/) +[![License MIT](https://img.shields.io/pypi/l/whatsapp-chat-exporter?color=427B93)](https://github.com/KnugiHK/WhatsApp-Chat-Exporter/blob/main/LICENSE) [![Python](https://img.shields.io/pypi/pyversions/Whatsapp-Chat-Exporter)](https://pypi.org/project/Whatsapp-Chat-Exporter/) +[![Matrix Chat Room](https://img.shields.io/matrix/wtsexporter:matrix.org.svg?label=Matrix%20Chat%20Room)](https://matrix.to/#/#wtsexporter:matrix.org) +![Since 2021](https://img.shields.io/github/created-at/knugihk/WhatsApp-Chat-Exporter?label=Since&color=purple) A customizable Android and iPhone Whatsapp database parser that will give you the history of your Whatsapp conversations in HTML and JSON. Inspired by [Telegram Chat Export Tool](https://telegram.org/blog/export-and-more). > [!TIP] From d0100ad9043545194f9d3ab44a10ebf5fc74099a Mon Sep 17 00:00:00 2001 From: Knugi <24708955+KnugiHK@users.noreply.github.com> Date: Sat, 15 Mar 2025 07:14:05 +0000 Subject: [PATCH 15/19] Update docs.html --- docs.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs.html b/docs.html index e64e2c5..476bb75 100644 --- a/docs.html +++ b/docs.html @@ -6,7 +6,7 @@ "filter": "Filter", "date": "Filters#date-filters", "chat": "Filters#chat-filter", - "osl": "Open-Source-Licenses" + "osl": "Open-Source-Licenses", null: "" }; const dest = new URLSearchParams(window.location.search).get('dest'); From 9adb1f9c08953ce467d32bd0c44b2944396c7ef5 Mon Sep 17 00:00:00 2001 From: Knugi <24708955+KnugiHK@users.noreply.github.com> Date: Thu, 27 Mar 2025 14:05:45 +0000 Subject: [PATCH 16/19] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 063e6ee..fc94f62 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ cd working_wts ## Working with Android ### Unencrypted WhatsApp database -Extract the WhatsApp database with whatever means, one possible means is to use the [WhatsApp-Key-DB-Extractor](https://github.com/KnugiHK/WhatsApp-Key-DB-Extractor) +Extract the WhatsApp database with whatever means, one possible means is to use the [WhatsApp-Key-DB-Extractor](https://github.com/KnugiHK/WhatsApp-Key-DB-Extractor). Note that the extractor only works on Android 4.0 to 13. After you obtain your WhatsApp database, copy the WhatsApp database and media folder to the working directory. The database is called msgstore.db. If you also want the name of your contacts, get the contact database, which is called wa.db. And copy the WhatsApp (Media) directory from your phone directly. From 1c30dc0ed8a27c4985183161352abdd283d650f1 Mon Sep 17 00:00:00 2001 From: Knugi <24708955+KnugiHK@users.noreply.github.com> Date: Sat, 29 Mar 2025 15:26:37 +0000 Subject: [PATCH 17/19] Update docs.html --- docs.html | 1 + 1 file changed, 1 insertion(+) diff --git a/docs.html b/docs.html index 476bb75..b4e9823 100644 --- a/docs.html +++ b/docs.html @@ -7,6 +7,7 @@ "date": "Filters#date-filters", "chat": "Filters#chat-filter", "osl": "Open-Source-Licenses", + "iose2e": "iOS-Usage#encrypted-iosipados-backup", null: "" }; const dest = new URLSearchParams(window.location.search).get('dest'); From 60b8512dde6bf00e0a51fe4a685acdea9f8bae9b Mon Sep 17 00:00:00 2001 From: Knugi <24708955+KnugiHK@users.noreply.github.com> Date: Tue, 8 Apr 2025 14:41:32 +0000 Subject: [PATCH 18/19] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index fc94f62..27ab820 100644 --- a/README.md +++ b/README.md @@ -113,6 +113,8 @@ If you want to work on an encrypted iOS/iPadOS Backup, you should install iphone ```sh pip install git+https://github.com/KnugiHK/iphone_backup_decrypt ``` +> [!NOTE] +> You will need to disable the built-in end-to-end encryption for WhatsApp backups. See [WhatsApp's FAQ](https://faq.whatsapp.com/490592613091019#turn-off-end-to-end-encrypted-backup) for how to do it. ### Extracting To extract messages from iOS/iPadOS backups, run the following command in the shell, making sure to replace the username and device ID with the correct values. Keep in mind that there are at least two possible paths for the backups on Windows. #### Windows From 7c7260893d8629e227c66446a262d2aab3a3dd0e Mon Sep 17 00:00:00 2001 From: Nickson Yap Date: Fri, 18 Apr 2025 03:02:10 +0800 Subject: [PATCH 19/19] Add the fileID / SHA-1 for CallHistory.sqlite of WhatsApp for Business --- Whatsapp_Chat_Exporter/utility.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/Whatsapp_Chat_Exporter/utility.py b/Whatsapp_Chat_Exporter/utility.py index 259c318..6aef483 100644 --- a/Whatsapp_Chat_Exporter/utility.py +++ b/Whatsapp_Chat_Exporter/utility.py @@ -419,16 +419,17 @@ def slugify(value, allow_unicode=False): class WhatsAppIdentifier(StrEnum): - MESSAGE = "7c7fba66680ef796b916b067077cc246adacf01d" - CONTACT = "b8548dc30aa1030df0ce18ef08b882cf7ab5212f" - CALL = "1b432994e958845fffe8e2f190f26d1511534088" + MESSAGE = "7c7fba66680ef796b916b067077cc246adacf01d" # AppDomainGroup-group.net.whatsapp.WhatsApp.shared-ChatStorage.sqlite + CONTACT = "b8548dc30aa1030df0ce18ef08b882cf7ab5212f" # AppDomainGroup-group.net.whatsapp.WhatsApp.shared-ContactsV2.sqlite + CALL = "1b432994e958845fffe8e2f190f26d1511534088" # AppDomainGroup-group.net.whatsapp.WhatsApp.shared-CallHistory.sqlite DOMAIN = "AppDomainGroup-group.net.whatsapp.WhatsApp.shared" class WhatsAppBusinessIdentifier(StrEnum): - MESSAGE = "724bd3b98b18518b455a87c1f3ac3a0d189c4466" - CONTACT = "d7246a707f51ddf8b17ee2dddabd9e0a4da5c552" - DOMAIN = "AppDomainGroup-group.net.whatsapp.WhatsAppSMB.shared" + MESSAGE = "724bd3b98b18518b455a87c1f3ac3a0d189c4466" # AppDomainGroup-group.net.whatsapp.WhatsAppSMB.shared-ChatStorage.sqlite + CONTACT = "d7246a707f51ddf8b17ee2dddabd9e0a4da5c552" # AppDomainGroup-group.net.whatsapp.WhatsAppSMB.shared-ContactsV2.sqlite + CALL = "b463f7c4365eefc5a8723930d97928d4e907c603" # AppDomainGroup-group.net.whatsapp.WhatsAppSMB.shared-CallHistory.sqlite + DOMAIN = "AppDomainGroup-group.net.whatsapp.WhatsAppSMB.shared" class JidType(IntEnum): PM = 0