Wireshark: چیست، تحلیل ترافیک و رهگیری بسته‌ها

نویسنده: IT Sectr منتشر شده: 2026-05-08 زمان مطالعه: 9 دقیقه

Wireshark — تحلیلگر پیشرو ترافیک شبکه با کد منبع باز است که برای رهگیری و بازرسی بسته‌ها در زمان واقعی استفاده می‌شود. این ابزار بیش از دو هزار پروتکل شبکه را پشتیبانی می‌کند و روی همه پلتفرم‌های اصلی کار می‌کند. بر اساس Wireshark User Guide (2026)، این ابزار برای عیب‌یابی شبکه‌ها، اشکال‌زدایی API و تحلیل امنیت در توسعه موبایل و وب استفاده می‌شود.

نکات اصلی

  • Wireshark — یک اسنیفر بسته رایگان با رابط گرافیکی برای تحلیل ترافیک شبکه است.
  • رهگیری ترافیک از طریق رابط شبکه در حالت promiscuous در سطح لایه پیوند انجام می‌شود.
  • فیلتر کردن بسته‌ها بر اساس IP، پورت، پروتکل و محتوا از طریق زبان BPF و display filters پیاده‌سازی شده است.
  • تحلیل HTTPS نیاز به تنظیم SSLKEYLOGFILE یا پروکسی واسط برای رمزگشایی جلسات دارد.
  • اشکال‌زدایی موبایل از طریق ترکیب با tcpdump روی دستگاه و Remote Packet Capture ممکن است.

Wireshark چیست و چگونه کار می‌کند

Wireshark — برنامه‌ای با کد منبع باز (GPLv2) است که بسته‌های داده عبوری از رابط شبکه رایانه را رهگیری می‌کند. این برنامه بر پایه کتابخانه libpcap (Unix) یا Npcap (Windows) برای رهگیری در سطح لایه پیوند مدل OSI ساخته شده است.

اصل رهگیری بسته‌ها

کارت شبکه در حالت عادی فقط فریم‌های ارسال‌شده به آدرس MAC خود را دریافت می‌کند. Wireshark رابط را به حالت promiscuous (بی‌توجه به آدرس) تغییر می‌دهد که در آن سیستم همه فریم‌های عبوری را بدون توجه به گیرنده پردازش می‌کند. داده‌های رهگیری‌شده از طریق سوکت خام raw socket به هسته منتقل می‌شوند و سپس کتابخانه libpcap آن‌ها را برای تحلیل به فضای کاربر کپی می‌کند.

معماری پردازش

Wireshark از معماری ماژولار استفاده می‌کند: هر پروتکل به‌عنوان یک دیسکتور جداگانه — پلاگینی که داده‌های باینری را تجزیه و به‌صورت ساختاریافته نمایش می‌دهد — پیاده‌سازی شده است. تا سال 2026 در این برنامه دیسکتورهایی برای 2 874 پروتکل از جمله HTTP/2، QUIC، gRPC و MQTT پیاده‌سازی شده است. دیسکتورها از طریق سیستم درخت پروتکل کار می‌کنند — هر بسته به‌صورت لایه‌به‌لایه تحلیل می‌شود: از فریم Ethernet تا لایه کاربرد.

c
// نمونه یک دیسکتور ساده برای پروتکل سفارشی
static int dissect_custom(tvbuff_t *tvb, packet_info *pinfo,
        proto_tree *tree, void *data) {
    proto_item *ti = proto_tree_add_item(tree, hf_custom_field,
            tvb, 0, tvb_captured_length(tvb), ENC_NA);
    return 0;
}

امکانات اصلی Wireshark

رابط گرافیکی Wireshark به سه پنل تقسیم می‌شود: فهرست بسته‌ها (packet list)، جزئیات پروتکل (packet details) و دامپ hex (packet bytes). هر پنل در زمان واقعی به‌روزرسانی می‌شود و ناوبری تعاملی را پشتیبانی می‌کند — کلیک روی ردیف یک بسته ساختار کامل آن را باز می‌کند.

فرمت‌ها و پروتکل‌های پشتیبانی‌شده

این ابزار فایل‌های رهگیری را در قالب‌های pcap، pcapng، snoop و NetMon می‌خواند. خروجی به JSON، XML، CSV و plain text ممکن است. از جمله پروتکل‌های کلیدی لایه کاربرد: HTTP/HTTPS، DNS، DHCP، TCP، UDP، TLS، QUIC، WebSocket، MQTT، AMQP و Protobuf. برای توسعه موبایل، پشتیبانی از gRPC و HTTP/2 با مالتی‌پلکس‌کردن جریان‌ها اهمیت ویژه‌ای دارد.

ابزارهای تحلیل

ابزارهای داخلی شامل Follow Stream (بازیابی گفتگوی کامل TCP/UDP/TLS)، IO Graph (نمودار پهنای باند)، آمار مکالمات (Conversations) و سلسله‌مراتب پروتکل (Protocol Hierarchy) است. عملکرد Flow Graph توالی بسته‌ها بین گره‌ها را به‌صورت بصری نشان می‌دهد که جستجوی علل تأخیر در اشکال‌زدایی تعامل کلاینت-سرور را ساده می‌کند.

چگونه ترافیک را از طریق Wireshark رهگیری کنیم

شروع رهگیری با انتخاب رابط شبکه آغاز می‌شود — Ethernet، Wi-Fi، Bluetooth PAN یا Loopback. در ویندوز ممکن است نصب Npcap در حالت WinPcap API Compatible Mode لازم باشد. برای رهگیری روی دستگاه‌های موبایل از Remote Packet Capture از طریق تونل SSH استفاده می‌شود.

رهگیری روی دستگاه راه دور

روی دستگاه اندرویدی ترافیک از طریق tcpdump یا PCAPdroid رهگیری و سپس فایل به رایانه کاری منتقل می‌شود. دستور رهگیری راه دور از طریق ADB:

bash
# رهگیری ترافیک در اندروید از طریق ADB shell
adb shell tcpdump -i wlan0 -s 0 -w /sdcard/capture.pcap
# کپی کردن به رایانه
adb pull /sdcard/capture.pcap .

رهگیری ترافیک Loopback

در ویندوز ترافیک localhost (127.0.0.1) از رابط فیزیکی عبور نمی‌کند، بنابراین Wireshark آن را مستقیماً نمی‌بیند. راه‌حل — نصب Npcap با گزینه Loopback Support یا هدایت ترافیک از طریق RawCap. در لینوکس و macOS رابط loopback (lo) بدون تنظیمات اضافی رهگیری می‌شود.

فیلتر کردن بسته‌ها در Wireshark

Wireshark دو نوع فیلتر ارائه می‌دهد: capture filters (قبل از رهگیری، در سطح libpcap اعمال می‌شوند) و display filters (روی داده‌های از قبل رهگیری‌شده اعمال می‌شوند). Capture filters از نحو BPF (Berkeley Packet Filter) استفاده می‌کنند و display filters از زبان اختصاصی Wireshark با تکمیل خودکار.

Capture Filters (BPF)

فیلترهای BPF به قالب tcpdump نوشته می‌شوند و در هسته اجرا می‌شوند که افت بسته در بار بالا را به حداقل می‌رساند. نمونه‌هایی از فیلترها:

فیلتر کاربرد
tcp port 80 فقط ترافیک HTTP روی پورت استاندارد
host 192.168.1.1 بسته‌های یک میزبان خاص
not arp همه بسته‌ها به‌جز درخواست‌های ARP

Display Filters

Display filters پس از رهگیری اعمال می‌شوند و شرایط پیچیده با عملگرهای منطقی and، or، not را پشتیبانی می‌کنند. نمونه: http.request.method == "POST" and ip.src == 192.168.0.100 فقط درخواست‌های POST از یک IP خاص را فیلتر می‌کند. می‌توان فیلترها را برای استفاده مجدد به‌عنوان موارد دلخواه ذخیره کرد.

تحلیل ترافیک HTTP و HTTPS

ترافیک HTTP در Wireshark به‌صورت خوانا نمایش داده می‌شود: متد درخواست، URI، هدرها و بدنه پاسخ. عملکرد Follow TCP Stream گفتگوی کامل کلاینت و سرور را در یک پنجره جمع می‌کند. برای HTTPS به رمزگشایی جلسات TLS نیاز است، زیرا محتوا رمزگذاری شده است.

رمزگشایی HTTPS از طریق SSLKEYLOGFILE

مرورگرهای Chrome و Firefox از متغیر محیطی SSLKEYLOGFILE پشتیبانی می‌کنند که کلیدهای جلسه TLS را در یک فایل متنی ثبت می‌کند. Wireshark از این فایل برای رمزگشایی رکوردها استفاده می‌کند. تنظیم از طریق Preferences → Protocols → TLS → (Pre)-Master-Secret log filename انجام می‌شود.

bash
# اجرای Chrome با ثبت کلیدهای TLS
export SSLKEYLOGFILE=/tmp/sslkeys.log
google-chrome .

# پس از رهگیری مسیر را در Wireshark مشخص کنید
# Edit → Preferences → Protocols → TLS → Log Filename

تحلیل gRPC و Protobuf

gRPC از HTTP/2 به‌عنوان حمل‌ونقل و از Protobuf برای سریال‌سازی داده استفاده می‌کند. Wireshark در صورت ارائه فایل .proto با تعریف ساختارها، پیام‌های gRPC را رمزگشایی می‌کند. دیسکتور Protobuf فیلدهای باینری را با نام‌های فایل proto مطابقت می‌دهد که در اشکال‌زدایی معماری میکروسرویسی حیاتی است.

اشکال‌زدایی اپلیکیشن‌های موبایل با Wireshark

اشکال‌زدایی موبایل از طریق Wireshark نیاز به پراکسی‌کردن ترافیک دستگاه به رایانه دارد. مطمئن‌ترین روش — ایجاد نقطه دسترسی Wi-Fi روی لپ‌تاپ و هدایت ترافیک از طریق NAT. در اندروید روش VPN با اپلیکیشن PCAPdroid بدون دسترسی root نیز در دسترس است.

پیکربندی روی اندروید بدون root

PCAPdroid یک سرویس VPN محلی ایجاد می‌کند که ترافیک برنامه‌ها را از طریق جریان UDP به Wireshark هدایت می‌کند. این برنامه به دسترسی root نیاز ندارد و فیلترکردن بر اساس فرآیندهای جداگانه را پشتیبانی می‌کند. فایل‌های pcap به‌دست‌آمده برای تحلیل کامل در Wireshark باز می‌شوند.

bash
# دریافت ترافیک از PCAPdroid روی رایانه
# PCAPdroid → Settings → PCAP dumper → UDP Exporter
nc -l -u 192.168.0.10 12345 > capture.pcap

مقایسه Wireshark با گزینه‌های جایگزین

Wireshark — ابزاری همه‌کاره است، اما برای کارهای خاص راه‌حل‌های تخصصی‌تری وجود دارد. tcpdump برای رهگیری سروری بدون گرافیک مؤثرتر است، Charles Proxy برای تحلیل ترافیک HTTPS راحت‌تر است، و Fiddler — برای بازرسی ترافیک وب با امکان تغییر درخواست‌ها در لحظه.

Charles Proxy در مقابل Wireshark

Charles Proxy به‌عنوان سرور پروکسی واسط با امکان رهگیری HTTPS از طریق گواهینامه SSL اختصاصی عمل می‌کند. برخلاف Wireshark، Charles به تنظیم SSLKEYLOGFILE نیاز ندارد و می‌تواند ترافیک را نه‌تنها مشاهده، بلکه تغییر دهد — پاسخ‌ها را جایگزین کند، تأخیرها را شبیه‌سازی و درخواست‌ها را تکرار کند.

Fiddler Everywhere

Fiddler — یکی دیگر از ابزارهای پروکسی است که در اکوسیستم .NET محبوب است. این ابزار ویرایشگر داخلی درخواست، پشتیبانی از AutoResponder برای mockها و کامپوزر برای ایجاد درخواست‌های سفارشی فراهم می‌کند. Fiddler برای تحلیل ترافیک وب مرورگر و Wireshark برای تحلیل شبکه سطح پایین مناسب‌تر است.

ابزار نوع HTTPS بدون کلید تغییر ترافیک
Wireshark اسنیفر خیر (نیاز به SSLKEYLOGFILE) فقط مشاهده
Charles پروکسی بله (گواهینامه سفارشی) بله
Fiddler پروکسی بله (گواهینامه سفارشی) بله
tcpdump اسنیفر خیر فقط مشاهده

نکات عملی برای کار با Wireshark

Wireshark به درک اصول اولیه رهگیری ترافیک نیاز دارد. یکی از سناریوهای رایج — یافتن منبع تأخیرها در اپلیکیشن موبایل از طریق فیلتر tcp.analysis.ack_rtt. برای یافتن درخواست‌های HTTP کند از شرط http.time بزرگ‌تر از 1 استفاده کنید.

یافتن درخواست‌های کند

برای یافتن درخواست‌های HTTP کند http.time بزرگ‌تر از 1 را فیلتر کنید — Wireshark درخواست‌هایی با زمان پاسخ بیش از 1 ثانیه نشان می‌دهد. برای تحلیل یک سرور خاص با ip.addr ترکیب کنید. IO Graph با بازه 1 ثانیه پیک‌های بار را به‌وضوح نشان می‌دهد.

خروجی و گزارش‌دهی

Wireshark از خروجی به CSV، JSON و XML از طریق منوی File پشتیبانی می‌کند. برای تحلیل خودکار از tshark — نسخه کنسولی که در پایپ‌لاین‌های CI/CD کار می‌کند — استفاده کنید. Tshark همان فیلترها و قالب‌های خروجی نسخه گرافیکی را پشتیبانی می‌کند.

نکات عملی برای کار با Wireshark

Wireshark به درک اصول اولیه رهگیری ترافیک نیاز دارد. یکی از سناریوهای رایج — یافتن منبع تأخیرها در اپلیکیشن موبایل از طریق فیلتر tcp.analysis.ack_rtt. برای یافتن درخواست‌های HTTP کند از شرط http.time بزرگ‌تر از 1 استفاده کنید.

یافتن درخواست‌های کند

برای یافتن درخواست‌های HTTP کند http.time بزرگ‌تر از 1 را فیلتر کنید — Wireshark درخواست‌هایی با زمان پاسخ بیش از 1 ثانیه نشان می‌دهد. برای تحلیل یک سرور خاص با ip.addr ترکیب کنید. IO Graph با بازه 1 ثانیه پیک‌های بار را به‌وضوح نشان می‌دهد.

خروجی و گزارش‌دهی

Wireshark از خروجی به CSV، JSON و XML از طریق منوی File پشتیبانی می‌کند. برای تحلیل خودکار از tshark — نسخه کنسولی که در پایپ‌لاین‌های CI/CD کار می‌کند — استفاده کنید. Tshark همان فیلترها و قالب‌های خروجی نسخه گرافیکی را پشتیبانی می‌کند.

سوالات متداول

Wireshark چه تفاوتی با tcpdump دارد؟

Wireshark رابط گرافیکی با تجسم بسته‌ها، فیلترهای داخلی و آمار فراهم می‌کند. tcpdump — ابزار کنسولی بدون GUI است که برای رهگیری سروری از طریق SSH مناسب است. Wireshark می‌تواند فایل‌های tcpdump را بخواند و برعکس.

چگونه ترافیک HTTPS را در Wireshark رهگیری کنیم؟

برای رمزگشایی فایل کلیدهای جلسه TLS (SSLKEYLOGFILE) لازم است. Chrome و Firefox هنگام اجرا با متغیر محیطی کلیدها را صادر می‌کنند. مسیر فایل در تنظیمات Protocols → TLS در Wireshark مشخص می‌شود.

چرا Wireshark ترافیک localhost را در ویندوز نمی‌بیند؟

ترافیک loopback در ویندوز به‌طور پیش‌فرض از درایور Npcap عبور نمی‌کند. راه‌حل — نصب Npcap با فعال بودن گزینه Loopback Support یا استفاده از ابزار RawCap برای رهگیری ترافیک محلی.

آیا می‌توان از Wireshark برای اپلیکیشن‌های موبایل استفاده کرد؟

بله، از طریق پراکسی‌کردن ترافیک به رایانه. اندروید رهگیری را از طریق PCAPdroid (بدون root) یا tcpdump (با root) پشتیبانی می‌کند. iOS برای رهگیری به RVI (Remote Virtual Interface) از طریق macOS یا jailbreak نیاز دارد.

چگونه بسته‌ها را بر اساس محتوا در Wireshark فیلتر کنیم؟

Display filter frame contains یک رشته یا توالی hex را در کل بسته جستجو می‌کند. نمونه: frame contains "password" بسته‌های دارای زیررشته password در هر فیلدی را پیدا می‌کند. برای جستجوی دقیق بر اساس فیلد از http.request.uri contains "api" استفاده کنید.

جمع‌بندی

  • Wireshark — ابزار اصلی تحلیل ترافیک شبکه در توسعه، با پشتیبانی از بیش از 2800 پروتکل.
  • رهگیری بسته‌ها در حالت promiscuous از طریق کتابخانه libpcap یا Npcap در سطح دسترسی لایه پیوند انجام می‌شود.
  • فیلتر کردن به capture filters (BPF، در سطح هسته) و display filters (زبان Wireshark با تکمیل خودکار) تقسیم می‌شود.
  • رمزگشایی HTTPS از طریق SSLKEYLOGFILE برای مرورگرهای Chrome و Firefox در دسترس است.
  • اشکال‌زدایی موبایل از طریق PCAPdroid (اندروید) یا Remote Virtual Interface (iOS) بدون نیاز به root انجام می‌شود.
  • gRPC و Protobuf با بارگذاری فایل‌های .proto برای غیرسریال‌سازی داده‌های باینری پشتیبانی می‌شوند.
  • Flow Graph و IO Graph به تجسم تأخیرها و یافتن نقاط تنگنا در تعامل کلاینت-سرور کمک می‌کنند.

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید