---
title: "ابزار Wireglass"
description: "CLI با Rust برای اندازه‌گیری DNS → TCP → TLS → HTTP/2 → HTTP/3 و UDP (STUN/QUIC) با گزارش صادقانهٔ شکست. v0.2.1 برای Linux، macOS، Windows و اندروید."
author: "Mohammad-Pouya Ghourchiani"
canonical: "https://ghourchiani.ir/fa/projects/wireglass"
image: "https://ghourchiani.ir/og/mark-square.png"
updated: "2026-10-31"
lang: "fa"
generated: "2026-11-02"
---
# ابزار Wireglass

> **خلاصه:** CLI محلی با Rust که DNS → TCP → TLS (ALPN) → HTTP/2 → HTTP/3 و پروب‌های UDP (STUN/QUIC) را اندازه می‌گیرد — باینری آماده برای Linux، macOS، Windows و Android.

Wireglass یک CLI محلی با Rust است که مسیر واقعی اتصال را طی می‌کند — DNS → TCP → TLS (ALPN) → HTTP/2 → HTTP/3 — و هر مرحله را به‌صورت نتیجهٔ اندازه‌گیری‌شده و قابل‌بازتولید گزارش می‌کند. از v0.2.0 تشخیص UDP آگاه از پروتکل برای STUN و QUIC هم دارد. هیچ چیز حدس زده یا استنتاج نمی‌شود؛ هر اندازه‌گیری ناموفق با خطا و وضعیت دقیقش گزارش می‌شود.

## پاسخ مستقیم

یک دستور، یک هدف، یک گزارش JSON. DNS عمیق (رکورد، TTL، CAA، زنجیرهٔ تفویض، DS/DNSKEY) + اتصال TCP واقعی + handshake TLS (پروتکل، cipher، ALPN، انقضای گواهی) + درخواست HTTP/2 واقعی + handshake QUIC/HTTP-3 واقعی + پروب‌های اختیاری UDP برای STUN/QUIC. downgrade پنهان HTTP/3 — تبلیغ‌شده با `Alt-Svc` اما هرگز واقعاً متصل نشده — صادقانه گزارش می‌شود. باینری آماده را از [Releases](https://github.com/BTF-Kabir-2020/wireglass/releases) بگیر و روی هر URL اجرا کن.

## وضعیت (۲۰۲۶-۱۰-۳۱)

- **آخرین نسخه:** [v0.2.1](https://github.com/BTF-Kabir-2020/wireglass/releases/tag/v0.2.1) (۲۰۲۶-۱۰-۳۰) — باینری آماده برای Linux x86_64، macOS ARM64 و Windows x86_64، به‌علاوهٔ APK اندروید.
- **فاز ۱:** امتیازدهی + «roast» تفسیری روی موتور اندازه‌گیری فاز ۰. دروازه‌های شاهد فاز ۱ (G1–G6) در [`docs/evidence-plan.md`](https://github.com/BTF-Kabir-2020/wireglass/blob/main/docs/evidence-plan.md) هنوز باز هستند.
- **CI** ([Actions](https://github.com/BTF-Kabir-2020/wireglass/actions)): `cargo fmt` + `clippy -D warnings` (هسته و اپ اندروید)، build + تست روی Linux، macOS و Windows، و یک host check اندروید — روی `main` سبز. workflow جدای Release برای هر tag باینری‌ها را می‌سازد.
- **مجوز:** MIT یا Apache-2.0.

## آنچه اندازه می‌گیرد

- **DNS** — رکوردهای A/AAAA با TTL واقعی، CAA، زنجیرهٔ تفویض NS/SOA (root → … → zone میزبان)، DS/DNSKEY خام، خطاهای صریح (`hickory-resolver`).
- **TCP** — زمان اتصال واقعی به یک آدرس انتخابی؛ `--repeat N` پراکندگی را ثبت می‌کند.
- **TLS** — زمان handshake، نسخهٔ پروتکل، cipher suite، ALPN مذاکره‌شده، subject/issuer/expiry گواهی (`rustls` + `x509-parser`).
- **HTTP/2** — درخواست واقعی روی ALPN مذاکره‌شده، با status، `server` و `Alt-Svc`.
- **HTTP/3** — handshake QUIC واقعی با ALPN `h3` روی پورت واقعی URL؛ *تبلیغ‌شده* جدا از *واقعاً متصل‌شده*.
- **UDP/STUN** — درخواست STUN Binding؛ موفق فقط با پاسخ Binding هم‌بسته با magic cookie، transaction ID و طول درست. تکرارپذیر و چندهدفه.
- **UDP/QUIC** — پروب‌هایی که همان handshake HTTP/3 را روی هر host:port اجرا می‌کنند.
- **امتیاز** — `score/total`، grade، دلیل هر دسته و roast قطعی، در JSON و گزارش HTML.

## دانلود (v0.2.1)

| پلتفرم | فایل | حجم |
| --- | --- | --- |
| Linux x86_64 | `wireglass-linux-x64` | <span dir="ltr">10.8 MB</span> |
| macOS ARM64 | `wireglass-macos-arm64` | <span dir="ltr">9.0 MB</span> |
| Windows x86_64 | `wireglass-windows-x64.exe` | <span dir="ltr">8.0 MB</span> |
| Android (arm64-v8a) | `wireglass-android-arm64-v0.2.1.apk` | <span dir="ltr">7.4 MB</span> |

چک‌سام‌های SHA256 (`SHA256SUMS.txt`، `wireglass-android-SHA256SUMS.txt`) و هر دو فایل مجوز همراه هر نسخه هستند.

**اندروید** پیش‌نمایش مهندسی است، نه نسخهٔ Play Store: رابط Slint روی همان هستهٔ `wireglass::run`، `minSdk 26` (Android 8)، `targetSdk 34`، فقط arm64، و **فقط مجوز `INTERNET`**. پیشرفت زندهٔ مراحل، لغو، اشتراک با fallback به کلیپ‌بورد، هدف‌های اخیر و خروجی «Save JSON» دارد. پوشش دستگاه‌ها جدا پیگیری می‌شود — بدون شاهد، ادعای پشتیبانی گسترده نمی‌کنیم.

## اجرا

```sh
# باینری آماده
chmod +x wireglass-linux-x64 && ./wireglass-linux-x64 https://example.com

# از سورس
cargo run -- https://example.com
cargo run -- https://example.com --compact --timeout 15
cargo run -- https://example.com --html report.html --card card.svg

# تشخیص UDP (برای هدف‌های بیشتر فلگ را تکرار کن)
cargo run -- --stun-target stun.l.google.com:19302 --timeout 3 --repeat 3
cargo run -- --quic-target example.com:443 --quic-target example.net:8443

# اثبات کار کردن مسیر QUIC client وقتی UDP/443 بسته است
cargo run --example quic_selfcheck
```

خروجی JSON روی stdout است (pretty به‌صورت پیش‌فرض). `--render FILE` گزارش ذخیره‌شده را آفلاین دوباره رندر می‌کند. ایمیج Docker از خود مخزن ساخته می‌شود (`docker build -t wireglass .`).

## محدودیت‌های صادقانه

- **DNSSEC:** زنجیره و DS/DNSKEY خام گزارش می‌شوند، اما امضاها به‌صورت رمزنگاری **اعتبارسنجی نمی‌شوند** (`unsigned` · `signed_unverified` · `delegation_signed_no_dnskey`).
- **HTTP/3:** فقط handshake QUIC — هنوز درخواست/پاسخ HTTP/3 نیست و گزارش همین را می‌گوید.
- **STUN:** `MESSAGE-INTEGRITY` / `FINGERPRINT` اعتبارسنجی نمی‌شوند؛ TURN خارج از دامنه است.
- **timeout در UDP ≠ مسدود:** timeout یعنی در زمان مقرر پاسخ معتبری از همان endpoint نیامد — هرگز اثبات فیلترینگ نیست. یک آدرس برای هر هدف؛ یک نقطهٔ دید؛ برای اتصال IPv4 ترجیح دارد.

## تاریخچهٔ نسخه‌ها

- **v0.2.1** (۲۰۲۶-۱۰-۳۰) — سخت‌سازی: اعتبارسنجی سخت‌تر URL/scheme، بدون fallback به `0.0.0.0` وقتی DNS شکست می‌خورد، bind روی IPv6 برای هدف‌های IPv6 در HTTP/3، شمارش درست body در HTTP/1.1، لغو تعاونی؛ manifest اندروید فقط `INTERNET`، «Save JSON»، fallback اشتراک به کلیپ‌بورد؛ CI حالا اپ اندروید را هم پوشش می‌دهد.
- **v0.2.0** (۲۰۲۶-۱۰-۲۸) — تشخیص UDP آگاه از پروتکل (`--stun-target`، `--quic-target`)، پروب چندهدفه/چندپورته، `udp_measurements` ساخت‌یافته، تست‌های UDP محلی قطعی؛ پروب HTTP/3 از پورت واقعی URL استفاده می‌کند.
- **v0.1.0** (۲۰۲۶-۱۰-۱۳) — فاز ۰: DNS با زنجیرهٔ تفویض و رکوردهای خام DNSSEC، TCP، TLS + ALPN، HTTP/2، handshake QUIC، گزارش JSON + HTML، کارت SVG، امتیاز.
- **روی `main`، منتشرنشده:** رفع stack overflow ویندوز برای `cargo run` (futureهای boxed + stack بزرگ‌تر برای main thread).

لاگ کامل: [CHANGELOG.md](https://github.com/BTF-Kabir-2020/wireglass/blob/main/CHANGELOG.md).

## چرا وجود دارد

بر اساس [یادداشت‌های رقبا](https://github.com/BTF-Kabir-2020/wireglass/blob/main/docs/competitors.md)، «خط زمانی» و «گزارش قابل‌بازتولید» به‌تنهایی منحصربه‌فرد نیستند — `http-stat-rs` و `httptap` این کار را می‌کنند. Wireglass روی ترکیب شرط می‌بندد: DNS + TLS + HTTP/2 + HTTP/3 عمیق در یک خروجی قابل‌بازتولید، گزارش صادقانهٔ downgrade پنهان HTTP/3، اندازه‌گیری‌های STUN و QUIC آگاه از پروتکل با دسته‌بندی ساخت‌یافتهٔ شکست، و یک ابزار Rust تک‌فایل محلی که داده‌ات را به هیچ سرویس ثالثی نمی‌فرستد.

## لینک‌ها

- مخزن: https://github.com/BTF-Kabir-2020/wireglass
- نسخه‌ها: https://github.com/BTF-Kabir-2020/wireglass/releases
- مستندات: https://github.com/BTF-Kabir-2020/wireglass/tree/main/docs (اندروید، پیش‌نیازها، مجوزها، حجم APK، طراحی، دیپلوی)
- CI: https://github.com/BTF-Kabir-2020/wireglass/actions
- evidence plan: https://github.com/BTF-Kabir-2020/wireglass/blob/main/docs/evidence-plan.md
- تغییرات: https://github.com/BTF-Kabir-2020/wireglass/blob/main/CHANGELOG.md
