Distributed collection of group participation metadata
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Paul Feitzinger c9d326e926
add option to let user add password to decrypt db key
5 months ago
code add option to let user add password to decrypt db key 5 months ago
config initial commit 5 months ago
output initial commit 5 months ago
Dockerfile copy chat_list.txt at runtime rather than build time 5 months ago
README.md add note about why to filer with -f 5 months ago
build.sh move docker build into separate script 5 months ago
run.sh add option to let user add password to decrypt db key 5 months ago

README.md

Signal Group User Activity

"How active is each user in the signal groups I'm in?"

This project reads the configuration directory from the Signal for Desktop app and generates a spreadsheet that looks like this:

Alice Bob ...
Neighborhod Chat 1 5 ...
Roomate Chat 12 0 ...
... ... ... ...

Each cell is the total message count for a user in a chat.

The goal is to afford distributed collection of group participation metadata from a community that uses disparate signal groups. No one member of the community is a member of every signal group, so we need to make use of multiple users' signal data.

I personally would not at all feel comfortable sending someone my decrypted signal database, so I implemented this as a dockerized python command line tool that runs locally. It generates a simple csv file that's easily inspectable before sharing.

Usage

First build the docker container for the tool

$ ./build.sh
Sending build context to Docker daemon  716.3kB
Step 1/12 : FROM archlinux:base-20241110.0.278197
---> 8f94599caa7b
[...]
Successfully built 1c3e3a1b45f5
Successfully tagged sigint:latest

The following command will run the analysis against the signal config directory you point it to, and dump the output to ./output/table.csv

Linux

$ ./run.sh -c ~/.config/Signal

INFO:main:writing message count table to /output/table.csv

Macos

$ ./run.sh -c ~/Library/Application\ Support/Signal

INFO:main:writing message count table to /output/table.csv

Group Filtering

Adding -f will filter the groups under consideration to only those listed in config/chat_list.txt

$ ./run.sh -c ~/.config/Signal -f

You might want to run the command once without filtering, then paste the chat name column from the spreadsheet into config/chat_list.txt and narrow down to only the ones you care about and run it again with -f. This will ensure the output spreadsheet only has columns for users in the groups you care about, and not every single user you ever saw on Signal.