Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
punchline — Одноранговый зашифрованный мессенджер на Rust с Noise IK и пробросом UDP NAT | Kitploit
Инструменты/GitHubGitHub/michal-pielka/punchline
Инструменты шифрования/дешифрованияСетевая безопасностьКонфиденциальностьУтилиты и фреймворкиАутентификация
GitHubmichal-pielka/punchline

punchline

Одноранговый зашифрованный мессенджер на Rust с Noise IK и пробросом UDP NAT

Репозиторий
192576 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

punchline

Peer-to-peer чат с сквозным шифрованием через UDP. Без аккаунтов, без центрального сервера, ретранслирующего/хранящего сообщения, без посредников. Только два пира, прямое соединение и шифрование протоколом Noise.

https://github.com/user-attachments/assets/939e96d3-45e3-4484-9a27-28c3a0457b05

Содержание

  • Что это делает
  • Быстрый старт
  • Как это работает
  • Справка по CLI
  • Использование
    • Конфигурация
    • Управление пирами
    • Проверка статуса
    • Параметры серверов
    • Темизация
    • Автодополнение для оболочки
  • Криптография
    • Рукопожатие IK
    • Определение инициатора
    • Хранение ключей
  • Проводной протокол
    • Протокол hole punch
    • Транспортный протокол
    • Сигнальный протокол
    • Протокол STUN
  • Структура проекта
  • Установка
    • Из crates.io
    • Сборка из исходников
  • Запуск тестов
  • Технологический стек
  • Лицензия

Что это делает

Два человека запускают punchline connect <peer> на своих машинах. Punchline пробивается через их NAT, выполняет зашифрованное рукопожатие и погружает их в приватный чат — всё за несколько миллисекунд. Входящие в комплект серверы STUN и сигнальный сервер выполняют обнаружение, после чего уходят с пути. convo


Быстрый старт

cargo build --release

Запустите серверы (на машине, доступной обоим пирам) или используйте мои публичные, размещённые на 64.225.107.28 (STUN: порт 3478, сигнальный: порт 8743):

punchline-stund                  # STUN-сервер — сообщает пирам их внешний IP
punchline-signald                # Сигнальный сервер — сопоставляет пиров, желающих общаться
servers

На машине каждого пира:

# Создайте свою идентичность (пара ключей X25519)
punchline keygen

# Поделитесь своим открытым ключом с пиром
punchline pubkey

# Сохраните их ключ
punchline peers add alice a1b2c3d4...64_hex_chars

# Подключитесь (оба пира запускают это, указывая друг друга)
punchline connect alice --stun <server>:3478 --signal <server>:8743

TUI запускается с живым отображением прогресса подключения:

  1. Обнаружение STUN — определение вашего внешнего адреса через punchline-stund

  2. Сигнальный сервер — подключение к punchline-signald

  3. Ожидание пира — сигнальный сервер сопоставляет обоих пиров

  4. Hole punch — установление прямого UDP-пути

  5. Рукопожатие Noise — зашифрованный обмен ключами

    dashboard

После завершения вы в чате. Вводите текст и нажимайте Enter. Нажмите Esc для выхода.


Как это работает

Вся система состоит из трёх исполняемых файлов, все включены в этот репозиторий:

Бинарный файлРольКогда используется
punchline-stundSTUN-сервер (UDP) — отвечает внешним IP:портом клиентаТолько при настройке
punchline-signaldСигнальный сервер (WebSocket) — сопоставляет пиров и обменивается адресамиТолько при настройке
punchlineСам мессенджер — CLI, TUI, криптография, hole punchingВсегда

После первоначальной настройки серверы STUN и сигнальный больше не используются. Всё происходит напрямую между пирами.


Справка по CLI

punchline

КомандаОписание
keygen [--force] [-i path]Сгенерировать новую пару ключей идентичности X25519. Используйте --force для перезаписи без запроса. Используйте -i для указания пути вывода.
pubkey [-i path]Вывести ваш открытый ключ (64 шестнадцатеричных символа). Используйте -i для получения из конкретного файла ключа.
connect <peer> [-i path] [--stun addr] [--signal addr]Подключиться к пиру по псевдониму или шестнадцатеричному ключу. Используйте -i для указания ключа идентичности. Запускает TUI.
peersСписок всех известных пиров.
peers add <name> <key>Сохранить открытый ключ пира под псевдонимом.
peers remove <name>Удалить пира по псевдониму.
config pathПоказать путь к конфигурационному файлу.
config showПоказать текущие значения конфигурации.
statusПоказать идентичность, конфигурацию, доступность серверов и количество пиров.
completions <shell>Сгенерировать автодополнение для оболочки (bash, zsh или fish).

Глобальные флаги:

ФлагОписание
-vУвеличить подробность логов (-v = debug, -vv = trace).
-q, --quietПодавить весь вывод логов.

punchline-stund

ФлагОписание
--address <addr>Адрес привязки (по умолчанию: 0.0.0.0).
--port <port>Порт привязки (по умолчанию: 3478).
-v / -vvЛогирование отладки / трассировки.
-qТихий режим.

punchline-signald

ФлагОписание
--address <addr>Адрес привязки (по умолчанию: 0.0.0.0).
--port <port>Порт привязки (по умолчанию: 8743).
-v / -vvЛогирование отладки / трассировки.
-qТихий режим.

Использование

Конфигурация

Вместо передачи --stun и --signal каждый раз создайте ~/.config/punchline/config.toml:

stun_server = "203.0.113.10:3478"
signal_server = "203.0.113.10:8743"

Управление пирами

punchline peers                              # список всех
punchline peers add alice a1b2c3d4...        # добавить
punchline peers remove alice                 # удалить

Псевдонимы хранятся в ~/.punchline/known_peers.toml. Вы также можете подключиться напрямую, используя 64-символьный шестнадцатеричный ключ.

Проверка статуса

punchline status

Показывает вашу идентичность, конфигурацию, доступность серверов (отправляет реальный STUN-запрос и TCP-подключение) и количество пиров.

Параметры серверов

Оба сервера поддерживают -v (debug), -vv (trace), -q (quiet), --address и --port:

punchline-stund -v --port 3478
punchline-signald -v --port 8743

Темизация

Настройте TUI через ~/.config/punchline/style.toml Стили, использованные в видео:

[colors]
my_text = "#ebdbb2"
peer_text = "#bdae93"
input_text = "#ebdbb2"
border = "#ebdbb2"
sidebar_key = "#ebdbb2"
sidebar_value = "#bdae93"

[padding]
chat_horizontal = 2
chat_vertical = 1

Все цвета указаны в шестнадцатеричном RGB. Если файл отсутствует, используются цвета терминала по умолчанию.

Автодополнение для оболочки

punchline completions bash > ~/.local/share/bash-completion/completions/punchline
punchline completions zsh > ~/.zfunc/_punchline
punchline completions fish > ~/.config/fish/completions/punchline.fish

Криптография

Полное имя протокола: Noise_IK_25519_ChaChaPoly_SHA256

Скачать инструмент