diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 7468264..f2c3ce8 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -67,7 +67,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v3 + uses: github/codeql-action/init@v4 with: languages: ${{ matrix.language }} build-mode: ${{ matrix.build-mode }} @@ -95,6 +95,6 @@ jobs: exit 1 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3 + uses: github/codeql-action/analyze@v4 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/compile-binary.yml b/.github/workflows/compile-binary.yml index bad45ed..04532bf 100644 --- a/.github/workflows/compile-binary.yml +++ b/.github/workflows/compile-binary.yml @@ -12,23 +12,23 @@ jobs: linux: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Set up Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: '3.13' - 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.8.9 pip install . - name: Build binary with Nuitka run: | - python -m nuitka --no-deployment-flag=self-execution --onefile \ + python -m nuitka --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_linux_x64 + --assume-yes-for-downloads Whatsapp_Chat_Exporter --output-filename=wtsexporter_linux_x64 sha256sum wtsexporter_linux_x64 - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v6 with: name: binary-linux path: | @@ -37,22 +37,22 @@ jobs: windows: runs-on: windows-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Set up Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: '3.13' - 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.8.9 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 --onefile --include-data-file=./Whatsapp_Chat_Exporter/whatsapp.html=./Whatsapp_Chat_Exporter/whatsapp.html --assume-yes-for-downloads Whatsapp_Chat_Exporter --output-filename=wtsexporter copy wtsexporter.exe wtsexporter_x64.exe Get-FileHash wtsexporter_x64.exe - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v6 with: name: binary-windows path: | @@ -61,23 +61,23 @@ jobs: macos: runs-on: macos-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Set up Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: '3.13' - 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.8.9 pip install . - name: Build binary with Nuitka run: | - python -m nuitka --no-deployment-flag=self-execution --onefile \ + python -m nuitka --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_macos_x64 + --assume-yes-for-downloads Whatsapp_Chat_Exporter --output-filename=wtsexporter_macos_x64 shasum -a 256 wtsexporter_macos_x64 - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v6 with: name: binary-macos path: | diff --git a/README.md b/README.md index cdf04de..3de11ae 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,8 @@ To contribute, see the [Contributing Guidelines](https://github.com/KnugiHK/What > [!NOTE] > Usage in README may be removed in the future. Check the usage in [Wiki](https://github.com/KnugiHK/Whatsapp-Chat-Exporter/wiki) +> +> Click [here](https://github.com/KnugiHK/WhatsApp-Chat-Exporter/wiki/Android-Usage#crypt15-end-to-end-encrypted-backup) for the most trivia way for exporting from Android First, install the exporter by: ```shell @@ -254,7 +256,7 @@ Miscellaneous: --max-bruteforce-worker MAX_BRUTEFORCE_WORKER Specify the maximum number of worker for bruteforce decryption. -WhatsApp Chat Exporter: 0.12.0 Licensed with MIT. See https://wts.knugi.dev/docs?dest=osl for all open source +WhatsApp Chat Exporter: 0.12.1 Licensed with MIT. See https://wts.knugi.dev/docs?dest=osl for all open source licenses. ``` diff --git a/Whatsapp_Chat_Exporter/utility.py b/Whatsapp_Chat_Exporter/utility.py index 5f2add1..a147dfb 100644 --- a/Whatsapp_Chat_Exporter/utility.py +++ b/Whatsapp_Chat_Exporter/utility.py @@ -439,6 +439,7 @@ CRYPT14_OFFSETS = ( {"iv": 67, "db": 193}, {"iv": 67, "db": 194}, {"iv": 67, "db": 158}, + {"iv": 67, "db": 196} ) diff --git a/pyproject.toml b/pyproject.toml index 6bc571f..2651eea 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,8 +4,8 @@ build-backend = "setuptools.build_meta" [project] name = "whatsapp-chat-exporter" -version = "0.12.0" -description = "A cross-platform tool for parsing WhatsApp chat databases from Android and iOS/iPadOS backups. Supports Android .crypt12, .crypt14, .crypt15, and the latest database formats. Outputs chat history in readable HTML or structured JSON." +version = "0.12.1" +description = "A Whatsapp database parser that provides history of your Whatsapp conversations in HTML and JSON. Android, iOS, iPadOS, Crypt12, Crypt14, Crypt15 supported." readme = "README.md" authors = [ { name = "KnugiHK", email = "hello@knugi.com" }