Open source · MIT · Zero dependencies

Know the moment your machine is backdoored.

ping-shield is a real-time tripwire for Linux workstations. It watches the places attackers use to stay on your machine: SSH keys, auto-start entries and IDE extensions. It also follows the threat news that matches your stack, and alerts you on Telegram within seconds. Each finding is sent exactly once.

$ pipx install ping-shield
How it works
● Linux (Fedora, Ubuntu, Debian, Arch…) ○ macOS & Windows on the roadmap
ping-shield
bot
MenuMessage🎙
~2 sfrom change to alert
24persistence checks
17curated intel sources
0runtime dependencies
Features

A small tool that watches the right places.

Attackers rarely break in twice. They leave something behind that brings them back. ping-shield watches those places and tells you when something new appears.

Real-time detection

Linux inotify wakes ping-shield the moment a watched directory changes. Alerts arrive in about two seconds, and the watcher uses no CPU while idle.

SSH & persistence

authorized_keys, crontab, systemd user units, autostart, environment.d and your shell rc files, each with an exact diff.

IDE extension integrity

Reports installs, removals and updates in VS Code, Cursor, VSCodium and Windsurf. Extension code changed without a version bump is flagged as possible tampering.

Threat intel for your stack

Follows RSS feeds, official advisories and public Telegram channels. You only hear about severe threats that mention software installed on your machine.

Exactly-once alerts

A change is recorded as seen only after Telegram confirms delivery. If the network is down, the alert waits for the next run. A story covered by several outlets is sent once, matched by link, title and CVE.

An interactive bot

Tap It was me or Not me to get a response checklist, or mute a noisy keyword. Use /scan, /status and /catalog from your phone.

How it works

Up and running in three commands.

No root required, and no YAML or systemd files to write. ping-shield sets itself up as a user service.

  1. Connect Telegram

    --init stores your bot token with owner-only permissions, and can find your chat id for you.

  2. Record a baseline

    The first scan fingerprints every watched location quietly. After that, only changes produce alerts.

  3. Watch & alert

    The real-time watcher catches changes within seconds. A full scan every 15 minutes covers everything else.

~ — bash
$ pipx install ping-shield
$ pshield --init
✓ Token verified: bot @YourShieldBot
✓ Message sent. Check Telegram.
$ pshield --test
[PASS] Test 0: Telegram connectivity
[PASS] Test 1: SSH monitoring (~/.ssh/authorized_keys)
[PASS] Test 2: Threat-intel news alerting
$ pshield --setup-service
✓ enabled and started ping-shield.timer (every 15 min)
✓ enabled and started ping-shield-bot.service
# that's it. go back to work.
Coverage

What ping-shield watches

The places attackers use to keep access to a machine, checked against a SHA-256 baseline.

🔑

SSH trust

~/.ssh/authorized_keys · rc · environment

real-time
⚙️

systemd user units

~/.config/systemd/user/

real-time
🐚

Shell start-up files

.bashrc · .bashrc.d · .profile · .zshrc · config.fish

real-time
🖥

Desktop autostart & environment

~/.config/autostart · environment.d

real-time
🧩

IDE extensions

~/.vscode · ~/.cursor · ~/.vscode-oss · ~/.windsurf

real-time
⏰

User crontab

crontab -l

every 15 min
Threat intel

Your news feed, filtered to your stack.

An item alerts only if it's severe (actively exploited, a zero-day, a backdoor, CVSS ≥ 9…) and it mentions something installed on this machine. You add sources from the terminal or from Telegram.

📰 Security news

The Hacker NewsBleepingComputerKrebs on SecurityDark Reading

🏛 Official advisories

CISAoss-securityGitHub SecurityPyPISocket

🐧 Your distro

Ubuntu USNDebian DSAFedoraArch ASA

✈️ Telegram channels

@thehackernews@bleepingcomputer@cveNotify
…or any RSS/Atom feed or public Telegram channel: $ pshield --add-source t.me/yourchannel
Trust

Built like a security tool should be.

A tool that guards your supply chain shouldn't add risk to it.

Zero dependencies

Only the Python standard library, so no third-party packages to audit or trust.

No root, ever

Runs as your user, as a systemd user service. Nothing system-wide is installed.

Local by design

Baselines stay in ~/.config/ping-shield with owner-only permissions. Alerts are the only thing that leaves your machine.

Secrets redacted

API keys, passwords and tokens in diffs are masked before anything is sent to Telegram.

Your bot, your chat

The bot answers only the chat you configured. Strangers are refused.

Open source

MIT licensed. Read every line on GitHub before you run it.

Roadmap

Linux today. More platforms next.

The same zero-dependency approach, extended to the other operating systems developers use.

Available

Linux

Real-time watching, the bot and threat intel on any systemd distribution.

Planned

macOS

LaunchAgents, login items and zsh, with kqueue watching and a launchd schedule.

Planned

Windows

Registry Run keys, the Startup folder and scheduled tasks, scheduled with Task Scheduler.

Exploring

More channels & checks

Discord, Slack and ntfy alerts, plus package-manager and git hook tampering.

FAQ

Questions, answered.

Is it an antivirus?

No. It doesn't scan every file for malware, and it doesn't watch processes or network traffic. ping-shield is a tripwire: it tells you when the places attackers use to keep access to a machine change. It complements other security tools rather than replacing them.

Does it send my data anywhere?

Only the alerts, and only to your own Telegram bot. Baselines, configuration and the news cache stay in ~/.config/ping-shield. Values that look like credentials are masked before an alert is sent.

What happens when I change a file myself?

You get one alert, and you tap ✅ It was me. The new state becomes the baseline, so you're never alerted about the same change twice.

Do I need my own Telegram bot?

Yes, and it takes about a minute: message @BotFather, send /newbot, then paste the token into pshield --init. With your own bot, nobody else can read your alerts or send messages as your bot.

Does it need root?

No. Everything runs as your user, and the services are systemd user units. To keep scanning while you're logged out, run loginctl enable-linger once.

The pipx command isn't found. What now?

pipx is a separate tool that installs Python apps in their own isolated environment. Install it with sudo dnf install pipx (Fedora), sudo apt install pipx (Ubuntu/Debian) or sudo pacman -S python-pipx (Arch), run pipx ensurepath, open a new terminal, then pipx install ping-shield.

How can I contribute?

Issues and pull requests are welcome on GitHub. CONTRIBUTING.md covers the ground rules (no dependencies, no root, exactly-once alerts), the project layout and the review process. Please report security issues privately, as described in SECURITY.md.

Which Telegram channels can I follow?

Any public channel. ping-shield reads its public web preview, so it needs no login or API key. Private channels can't be read this way.

Install it before an attacker gets in.

Free, open source, and running in under five minutes.

$ pipx install ping-shield
Star on GitHub