#signal #backup #decode #cargo #signals

app signal-backup-decode

A simple tool to decode signal backups

10 releases

0.2.3 Mar 21, 2021
0.2.2 Mar 21, 2021
0.2.1 Oct 9, 2020
0.1.5 Jul 12, 2020
0.1.0 Apr 30, 2018

#539 in Development tools

Download history 14/week @ 2022-08-08 11/week @ 2022-08-15 19/week @ 2022-08-22 7/week @ 2022-08-29 20/week @ 2022-09-05 11/week @ 2022-09-12 3/week @ 2022-09-19 9/week @ 2022-09-26 13/week @ 2022-10-03 9/week @ 2022-10-10 10/week @ 2022-10-17 15/week @ 2022-10-24 24/week @ 2022-10-31 18/week @ 2022-11-07 15/week @ 2022-11-14 7/week @ 2022-11-21

66 downloads per month

GPL-3.0 license

3.5K SLoC

signal backup decoder

This repository contains a small programm to decode a backup produced by Signal Android.


Rust v1.41 or higher is required. Install rust first and then execute the following command in a terminal:

cargo install signal-backup-decode

On Debian/Ubuntu you will need the following packages:

sudo apt install libsqlite3-dev libssl-dev pkg-config


This tool is run as signal-backup-decode. See signal-backup-decode --help:

signal-backup-decode 0.2.1
pajowu <pajowu@pajowu.de>
A simple tool to decode signal backups

    signal-backup-decode [FLAGS] [OPTIONS] <INPUT> <--password <PASSWORD>|--password-file <FILE>|--password-command <COMMAND>>

    -f, --force              Overwrite existing output files
    -h, --help               Prints help information
        --no-in-memory-db    Do not use in memory sqlite database. Database is immediately created on disk (only
                             considered with output type RAW).
        --no-verify-mac      Do not verify the HMAC of each frame in the backup
    -V, --version            Prints version information

    -v, --verbosity <LEVEL>             Verbosity level, either DEBUG, INFO, WARN, or ERROR
    -o, --output-path <FOLDER>          Directory to save output to. If not given, input file directory is used
    -t, --output-type <TYPE>            Output type, either RAW, CSV or NONE
        --password-command <COMMAND>    Read backup password from stdout from COMMAND
        --password-file <FILE>          File to read the backup password from
    -p, --password <PASSWORD>           Backup password (30 digits, with or without spaces)

    <INPUT>    Sets the input file to use

If you want to overwrite an existing backup, use the -f flag. Output type NONE can be useful to check the backup file for corrupted frames but no output is written to disk. Only the first line is read from --password-command and --password-file.

Feature Flags

This tool depends on parsed protoc files. A pre-generated version is included with in this repo, they can be regenerated using the feature flag rebuild-protobuf.

For regenerating the protobuf-files this tool, protoc has to be installed.

  • Debian: apt install protobuf-compiler
  • Arch: pacman -S protobuf

Once protoc is installed, this tool can be installed using cargo:

cargo install --features "rebuild-protobuf" signal-backup-decode


This repository is under the GPLv3 License.

The proto/Backups.proto file is taken and derived from the Signal Android Source Code with the following copyright notice:

 * Copyright (C) 2018 Open Whisper Systems
 * Licensed according to the LICENSE file in this repository.


~587K SLoC