TeleGramSight
A client that retrieves vulnerability observations from a Telegram collector and pushes them to a Vulnerability-Lookup instance.
Installation
pipx is an easy way to install and run Python applications in isolated environments. It's easy to install.
$ pipx install TeleGramSight
$ export TeleGramSight_CONFIG=~/conf.py
The configuration should be defined in a Python file (e.g., ~/.TeleGramSight/conf.py).
You must then set an environment variable (TeleGramSight_CONFIG) with the full path to this file.
Usage
Once installed and configured, invoke the CLI:
$ telegramsight --since 2026-04-23T00:00:00 --until 2026-04-24T00:00:00
$ telegramsight --since 'yesterday' --until 'today' --no-push
$ telegramsight --since '2 days ago' --until 'today'
$ telegramsight --since 1775001600 --until 1776902399
Arguments:
--since/--until— time window bounds. Accept unix-epoch seconds, ISO 8601 timestamps, or natural-language expressions (e.g.2 days ago,yesterday,today,1 week ago). Defaults to the last 24 hours when omitted, which is the expected cron invocation.--page-size— results per API call (default 100).--no-push— dry run: fetch and build sightings and log them, but don't send anything to Vulnerability-Lookup.
Cron example (every hour):
0 * * * * TeleGramSight_CONFIG=/etc/telegramsight/conf.py /usr/local/bin/telegramsight
Decrypting a source fragment
Sightings coming from private channels carry an opaque Telegram/<ct> source
instead of a public t.me/<user>/<id> link, and never include the message
text (see Security). When investigating such a sighting, an
operator who holds the source_encryption_key can recover
the underlying <chat_id>/<msg_id> locally with the telegramsight-decrypt
helper:
$ telegramsight-decrypt c3vSlSPcOR_UbD4dIs0S5bT1NWHke0QXkPNkd5-4SeE9
-1001234567890/42
$ telegramsight-decrypt 'Telegram/c3vSlSPcOR_UbD4dIs0S5bT1NWHke0QXkPNkd5-4SeE9'
-1001234567890/42
The command reads the same config file as telegramsight (via
TeleGramSight_CONFIG) and uses the same source_encryption_key. Decryption
happens entirely on the operator's machine — nothing is sent over the network
— so the privacy guarantee around private channels is preserved: the original
chat_id is only ever revealed to someone who already has the key.
Security
Sighting sources are encrypted with AES-SIV (RFC 5297) using the
source_encryption_key set in your configuration file. AES-SIV is used
deterministically (no nonce, no associated data) so that the same Telegram
message always produces the same source string, which lets Vulnerability-Lookup
deduplicate on the ciphertext without decrypting it. The key may be 32, 48, or
64 bytes (AES-128/192/256-SIV); 64 bytes is recommended for new deployments.
AES-256 retains an estimated ~128-bit security margin against known quantum
attacks (Grover's algorithm), but the tool itself has not been independently
audited or certified.
License
TeleGramSight is licensed under GNU General Public License version 3
Copyright (c) 2026 Computer Incident Response Center Luxembourg (CIRCL)
Copyright (C) 2026 Cédric Bonhomme - https://github.com/cedricbonhomme
Release files for TeleGramSight 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| telegramsight-0.6.0.tar.gz | 20.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| telegramsight-0.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 41.7 kB
Release files / telegramsight-0.6.0.tar.gz
| Download URL | telegramsight-0.6.0.tar.gz |
|---|---|
| Size | 20.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4db17a1301c69898e25452bf519b61c23159227fe1fc3c39c9910506b32ab193
|
|
BLAKE2b-256 checksum How to use checksums |
99d1e4bcd1670f1dfa305b9858db39be44200a4bdf09c004d8dbc15a88e6d83e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 30, 2026.
Transparency logRelease files / telegramsight-0.6.0-py3-none-any.whl
| Download URL | telegramsight-0.6.0-py3-none-any.whl |
|---|---|
| Size | 21.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
adbba7072bf1e2b236323d27914345c73a75b85ec4fd662bc51508cc4e8edd7e
|
|
BLAKE2b-256 checksum How to use checksums |
fb198d648b21cf60adc7185f9cc1ba6c2e753049bec07a034e9b586b90187f91
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 30, 2026.
Transparency log