RAWSHARK(1)   RAWSHARK(1)

rawshark - استخراج و تحلیل داده‌های خام pcap

rawshark [ -d <encap:linktype>|<proto:protoname> ] [ -F <field to display> ] [ -l ] [ -m <bytes> ] [ -o <preference setting> ] ... [ -p ] [ -r <pipe>|- ] [ -R <read (display) filter> ] [ -s ] [ -S <field format> ] [ options ]

rawshark -h|--help

rawshark -v|--version

Rawshark جریانی از بسته‌ها را از یک فایل یا پایپ خوانده و یک سطر برای توصیف خروجی، و به دنبال آن مجموعه‌ای از فیلدهای منطبق برای هر بسته را در خروجی استاندارد چاپ می‌کند.

برخلاف TShark، برنامه Rawshark هیچ پیش‌فرضی درباره کپسوله‌سازی یا ورودی در نظر نمی‌گیرد. فلگ‌های -d و -r باید برای اجرای آن مشخص شوند. همچنین برای اینکه خروجی مفید باشد، باید یک یا چند فلگ -F تعیین گردند. سایر فلگ‌های فهرست‌شده در بالا از همان قواعد Wireshark و TShark پیروی می‌کنند.

برنامه Rawshark به طور پیش‌فرض انتظار رکوردهای ورودی با فرمت زیر را دارد. این ساختار با فرمت هدر بسته و داده‌های بسته در یک فایل با فرمت pcap روی دیسک مطابقت دارد.

struct rawshark_rec_s {
    uint32_t ts_sec;      /* Time stamp (seconds) */
    uint32_t ts_usec;     /* Time stamp (microseconds) */
    uint32_t caplen;      /* Length of the packet buffer */
    uint32_t len;         /* "On the wire" length of the packet */
    uint8_t data[caplen]; /* Packet data */
};

اگر -p ارائه شود، rawshark انتظار فرمت زیر را دارد. این ساختار با ساختار struct pcap_pkthdr و داده‌های بسته مورد استفاده در libpcap یا Npcap مطابقت دارد. فرمت این ساختار وابسته به پلتفرم است؛ اندازه فیلد tv_sec در ساختار struct timeval می‌تواند ۳۲ بیت یا ۶۴ بیت باشد. برای اینکه rawshark به درستی کار کند، چیدمان (layout) ساختار در ورودی باید با چیدمان ساختار در rawshark یکسان باشد. توجه داشته باشید که اگر rawshark یک برنامه ۳۲ بیتی باشد، این فرمت احتمالاً مشابه فرمت قبلی خواهد بود، اما اگر rawshark برنامه‌ای ۶۴ بیتی باشد، لزوماً یکسان نخواهد بود.

struct rawshark_rec_s {
    struct timeval ts;    /* Time stamp */
    uint32_t caplen;      /* Length of the packet buffer */
    uint32_t len;         /* "On the wire" length of the packet */
    uint8_t data[caplen]; /* Packet data */
};

در هر دو حالت، ترتیب بایت‌ها (اندیان) برای هر عدد صحیح باید با سیستمی که rawshark روی آن اجرا می‌شود یکسان باشد.

اگر یک یا چند فیلد از طریق فلگ -F مشخص شوند، Rawshark شماره، نوع فیلد و فرمت نمایش را برای هر فیلد در سطر نخست به عنوان «شماره بسته» ۰ چاپ می‌کند. برای هر رکورد، شماره بسته، فیلدهای منطبق، و مقدار "1" یا "0" چاپ می‌شوند تا مشخص شود آیا فیلد با فیلتر نمایش ارائه‌شده مطابقت داشته است یا خیر. علامت "-" برای نشان دادن پایان توصیف یک فیلد و همچنین در انتهای سطر هر بسته استفاده می‌شود. برای مثال، فلگ‌های -F ip.src -F dns.qry.type ممکن است خروجی زیر را تولید کنند:

0 FT_IPv4 BASE_NONE - 1 FT_UINT16 BASE_HEX -
1 1="1" 0="192.168.77.10" 1 -
2 1="1" 0="192.168.77.250" 1 -
3 0="192.168.77.10" 1 -
4 0="74.125.19.104" 1 -

توجه داشته باشید که بسته‌های ۱ و ۲ از نوع درخواست‌های DNS هستند و بسته‌های ۳ و ۴ این‌گونه نیستند. افزودن -R "not dns" همچنان هر سطر را چاپ می‌کند، اما نشانه‌ای وجود دارد مبنی بر اینکه بسته‌های ۱ و ۲ از فیلتر عبور نکرده‌اند:

0 FT_IPv4 BASE_NONE - 1 FT_UINT16 BASE_HEX -
1 1="1" 0="192.168.77.10" 0 -
2 1="1" 0="192.168.77.250" 0 -
3 0="192.168.77.10" 1 -
4 0="74.125.19.104" 1 -

همچنین توجه داشته باشید که خروجی ممکن است به هر ترتیبی باشد و چندین فیلد منطبق نمایش داده شوند.

-d <encapsulation>

نحوه تشریح داده‌های بسته را مشخص می‌کند. کپسوله‌سازی به فرم type:value است، که در آن type یکی از موارد زیر است:

encap:name داده‌های بسته باید با استفاده از name نوع پیوند داده (DLT) در libpcap/Npcap تشریح شوند، به عنوان مثال encap:EN10MB برای Ethernet. نام‌ها با استفاده از ()pcap_datalink_name_to_val تبدیل می‌شوند. فهرست کاملی از DLTها را می‌توان در نشانی زیر مشاهده کرد: https://www.tcpdump.org/linktypes.html.

encap:number داده‌های بسته باید با استفاده از number LINKTYPE_ در libpcap/Npcap تشریح شوند، به عنوان مثال encap:105 برای IEEE 802.11 خام یا encap:101 برای IP خام.

proto:protocol داده‌های بسته باید به تشریح‌کننده پروتکل Wireshark مشخص‌شده ارسال شوند، به عنوان مثال proto:http برای داده‌های HTTP.

-F <field to display>

فیلد منطبق را به خروجی اضافه می‌کند. فیلدها هر فیلد معتبر فیلتر نمایش هستند. می‌توان بیش از یک فلگ -F را مشخص کرد و هر فیلد می‌تواند چندین بار در یک بسته مشخص مطابقت یابد. در هر فلگ -F تنها یک فیلد ممکن است مشخص شود. اگر می‌خواهید یک فیلتر نمایش اعمال کنید، از فلگ -R استفاده کنید.

-h|--help

شماره نسخه و گزینه‌ها را چاپ کرده و خارج می‌شود.

-l

پس از چاپ اطلاعات هر بسته، خروجی استاندارد را تخلیه (flush) می‌کند. (اگر -V مشخص شده باشد، این حالت از نظر فنی بافر خطی نیست؛ با این حال، اگر -V مشخص نشده باشد مشابه بافر خطی خواهد بود، زیرا برای هر بسته تنها یک خط چاپ می‌شود، و از آنجا که -l معمولاً هنگام انتقال خروجی یک ضبط زنده به یک برنامه یا اسکریپت از طریق لوله (pipe) استفاده می‌شود تا خروجی یک بسته به محض مشاهده و تشریح آن ظاهر شود، باید درست مانند بافر خطی واقعی عمل کند. این کار به عنوان راه‌حلی برای رفع نقصی در کتابخانه Microsoft Visual C++ C انجام شده است.)

این گزینه ممکن است هنگام هدایت خروجی TShark به برنامه‌ای دیگر از طریق pipe مفید باشد، زیرا بدین معنی است که برنامه دریافت‌کننده، داده‌های تشریح‌شده یک بسته را به محض اینکه TShark بسته را مشاهده کرده و خروجی آن را تولید کند خواهد دید، نه اینکه تنها زمانی آن را دریافت کند که بافر خروجی استاندارد حاوی آن داده‌ها پر شود.

-m <memory limit bytes>

میزان استفاده حافظه rawshark را به تعداد بایت مشخص‌شده محدود می‌کند. فقط برای POSIX (غیر ویندوز).

-o <preference>:<value>

یک مقدار ترجیحی (preference) را تنظیم کرده و مقدار پیش‌فرض و هر مقداری که از یک فایل تنظیمات ترجیحی خوانده شده باشد را بازنویسی می‌کند. آرگومان این گزینه رشته‌ای به شکل prefname:value است، که در آن prefname نام ترجیح (همان نامی که در فایل ترجیحات ظاهر می‌شود) و value مقداری است که باید تنظیم شود.

-p

فرض می‌کند که داده‌های بسته با یک ساختار pcap_pkthdr همان‌گونه که در pcap.h تعریف شده آغاز می‌شوند. در برخی سیستم‌ها اندازه داده‌های برچسب زمان با داده‌های نوشته‌شده روی دیسک متفاوت خواهد بود. در سایر سیستم‌ها یکسان بوده و این فلگ تاثیری ندارد.

-r <pipe>|-

داده‌های بسته را از input source می‌خواند. می‌تواند نام یک FIFO (لوله نام‌گذاری‌شده) یا ``-'' برای خواندن داده‌ها از ورودی استاندارد باشد، و باید دارای قالب رکوردی باشد که در بالا مشخص شده است.

اگر در ویندوز داده‌ها را از یک فرآیند والد به rawshark ارسال می‌کنید، نباید هندل ورودی استاندارد rawshark را پیش از موعد ببندید، در غیر این صورت ممکن است زمان اجرای C یک استثنا ایجاد کند.

-R|--read-filter <read (display) filter>

باعث می‌شود فیلتر مشخص‌شده (که به جای ساختار فیلترهای ضبط، از ساختار فیلترهای خواندن/نمایش استفاده می‌کند) پیش از چاپ خروجی اعمال شود. فیلترهای خواندن و فیلترهای نمایش در rawshark مترادف هستند.

-s

با رد شدن از هدر ۲۴ بایتی فایل pcap، اجازه می‌دهد از فایل‌های استاندارد pcap به عنوان ورودی استفاده شود.

-S

از رشته قالب‌بندی مشخص‌شده برای چاپ هر فیلد استفاده می‌کند. قالب‌های زیر پشتیبانی می‌شوند:

%D نام فیلد یا توضیحات، به عنوان مثال "Type" برای dns.qry.type

%N مقدار عددی در مبنای ۱۰ برای فیلد.

%S مقدار رشته‌ای فیلد.

برای چیزی شبیه به نمایش استاندارد Wireshark (مانند "Type: A (1)") می‌توانید از %D: %S (%N) استفاده کنید.

-v|--version

اطلاعات نسخه کامل را چاپ کرده و خارج می‌شود.

-Y|--display-filter <read (display) filter>

باعث می‌شود فیلتر مشخص‌شده (که به جای ساختار فیلترهای ضبط، از ساختار فیلترهای خواندن/نمایش استفاده می‌کند) پیش از چاپ خروجی اعمال شود. فیلترهای خواندن و فیلترهای نمایش در rawshark مترادف هستند.

--disable-all-protocols

غیرفعال‌سازی کالبدشکافی تمام پروتکل‌ها.

--disable-protocol <proto_name>[,<proto_name>,...]

غیرفعال‌سازی کالبدشکافی proto_name. استفاده از ALL به عنوان proto_name برای نادیده‌گرفتن فهرست پیش‌فرض پروتکل‌های فعال در نمایه (profile) انتخابی شما و غیرفعال‌سازی موقت تمام پروتکل‌ها.

--disable-heuristic <short_name>

غیرفعال‌سازی کالبدشکافی پروتکل اکتشافی (heuristic).

--enable-protocol <proto_name>[,<proto_name>,...]

فعال‌سازی کالبدشکافی proto_name. استفاده از ALL به عنوان proto_name برای نادیده‌گرفتن فهرست پیش‌فرض پروتکل‌های غیرفعال در نمایه انتخابی شما و فعال‌سازی موقت تمام پروتکل‌هایی که به‌طور پیش‌فرض فعال هستند.

اگر پروتکلی هم در --disable-protocol و هم در --enable-protocol ذکر شده باشد، آن پروتکل فعال می‌شود. این به شما امکان می‌دهد تمام پروتکل‌ها را به‌جز فهرستی از موارد استثنا به‌طور موقت غیرفعال کنید. مثال: --disable-protocol ALL --enable-protocol eth,ip

--enable-heuristic <short_name>

فعال‌سازی کالبدشکافی پروتکل اکتشافی (heuristic).

-K <keytab>

بارگذاری کلیدهای رمزنگاری کربروس (Kerberos) از فایل جدول کلید (keytab) مشخص‌شده. این گزینه می‌تواند چندین بار برای بارگذاری کلیدها از چند فایل استفاده شود.

مثال: -K krb5.keytab

-n

غیرفعال‌سازی تحلیل نام اشیاء شبکه (مانند نام میزبان، نام پورت‌های TCP و UDP)؛ گزینه -N ممکن است این گزینه را نادیده بگیرد.

-N <name resolving flags>

روشن کردن تحلیل نام فقط برای انواع خاصی از آدرس‌ها و شماره پورت‌ها، به‌طوری که تحلیل نام برای سایر انواع آدرس‌ها و شماره پورت‌ها خاموش بماند. این گزینه (همراه با -n) می‌تواند چندین بار مشخص شود؛ آخرین مقدار تعیین‌شده مقادیر پیشین را بازنویسی می‌کند. این گزینه و -n گزینه‌های تنظیمات ترجیحی (preferences)، از جمله ترجیحات تنظیم‌شده با گزینه -o را نادیده می‌گیرند. اگر هیچ‌یک از گزینه‌های -N و -n مشخص نشوند، مقادیر تنظیمات ترجیحی استفاده می‌شوند که پیش‌فرض آن -N dmN است.

آرگومان رشته‌ای است که می‌تواند شامل این حروف باشد:

d برای فعال‌سازی تحلیل نام از بسته‌های DNS ضبط‌شده

g برای فعال‌سازی جستجوی اطلاعات موقعیت مکانی (geolocation) آدرس IP از پایگاه‌های داده پیکربندی‌شده MaxMind

m برای فعال‌سازی تحلیل آدرس MAC

n برای فعال‌سازی تحلیل آدرس شبکه

N برای فعال‌سازی استفاده از تحلیل‌گرهای خارجی (مانند DNS) جهت تحلیل آدرس شبکه؛ بدون فعال بودن همزمان n تاثیری ندارد.

s برای فعال‌سازی تحلیل آدرس با استفاده از اطلاعات SNI موجود در بسته‌های دست‌تکانی (handshake) ضبط‌شده

t برای فعال‌سازی تحلیل شماره پورت‌های لایه انتقال (transport-layer)

v برای فعال‌سازی تحلیل شناسه‌های VLAN به نام‌ها

--only-protocols <protocols>

تنها فعال‌سازی کالبدشکافی این پروتکل‌ها، جداشده با کاما. غیرفعال‌سازی هر چیز دیگر.

-t (a|ad|adoy|d|dd|e|r|rc|u|ud|udoy)[.[N]]|.[N]

تنظیم قالب برچسب زمانی بسته که در ستون پیش‌فرض زمان نمایش داده می‌شود. قالب می‌تواند یکی از موارد زیر باشد:

a مطلق (absolute): زمان مطلق، به صورت زمان محلی در منطقه زمانی شما، زمان واقعی ضبط بسته است بدون اینکه تاریخی نمایش داده شود

ad مطلق همراه با تاریخ: تاریخ مطلق، به صورت YYYY-MM-DD، و زمان، به صورت زمان محلی در منطقه زمانی شما، زمان و تاریخ واقعی ضبط بسته است

adoy مطلق همراه با تاریخ با استفاده از روز در سال: تاریخ مطلق، نمایش‌یافته به صورت YYYY/DOY، و زمان، به صورت زمان محلی در منطقه زمانی شما، زمان و تاریخ واقعی ضبط بسته است

d دلتا (delta): زمان دلتا، زمان سپری‌شده پس از ضبط بسته قبلی است

dd دلتای نمایشی (delta_displayed): زمان delta_displayed، زمان سپری‌شده پس از ضبط بسته نمایشی قبلی است

e مبدأ زمانی (epoch): زمان به ثانیه از مبدأ زمانی یونیکس (1 ژانویه 1970، ساعت 00:00:00)

r نسبی (relative): زمان نسبی، زمان سپری‌شده میان اولین بسته و بسته فعلی است

rc نسبی نسبت به آغاز ضبط: زمان نسبی نسبت به آغاز ضبط، زمان سپری‌شده میان شروع ضبط و بسته فعلی است

u زمان هماهنگ جهانی (UTC): زمان مطلق، به صورت UTC با پسوند "Z"، زمان واقعی ضبط بسته است، بدون اینکه تاریخی نمایش داده شود

ud زمان UTC همراه با تاریخ: تاریخ مطلق، نمایش‌یافته به صورت YYYY-MM-DD، و زمان، به صورت UTC با پسوند "Z"، زمان و تاریخ واقعی ضبط بسته است

udoy زمان UTC همراه با تاریخ با استفاده از روز در سال: تاریخ مطلق، نمایش‌یافته به صورت YYYY/DOY، و زمان، به صورت UTC با پسوند "Z"، زمان و تاریخ واقعی ضبط بسته است

.[N] تنظیم دقت: N تعداد رقم‌های اعشار است (۰ تا ۹). در صورت استفاده از "." بدون N، دقت به طور خودکار از روی ردگیری (trace) تعیین می‌شود.

قالب پیش‌فرض به‌صورت نسبی با دقت مبتنی بر قالب ضبط است.

-u <s|hms>

مشخص می‌کند که قالب‌های برچسب زمانی بسته در -t که زمان‌های نسبی هستند (یعنی relative، delta و delta_displayed) چگونه نمایش داده شوند. انتخاب‌های معتبر عبارتند از:

s برای ثانیه‌ها

hms برای ساعت‌ها، دقیقه‌ها و ثانیه‌ها

قالب پیش‌فرض ثانیه است.

--log-level <level>

تنظیم سطح فعال لاگ. سطوح پشتیبانی‌شده از کمترین به بیشترین ترتیب عبارتند از "noisy"، "debug"، "info"، "message"، "warning"، "critical" و "error". پیام‌های مربوط به هر سطح و بالاتر چاپ خواهند شد؛ برای نمونه "warning" پیام‌های "warning"، "critical" و "error" را چاپ می‌کند و "noisy" همه پیام‌های لاگ را چاپ می‌نماید. سطوح نسبت به کوچک و بزرگ بودن حروف حساس نیستند.

--log-fatal <level>

در صورت ثبت هر پیامی در سطح مشخص‌شده یا بالاتر، برنامه را متوقف می‌کند. برای نمونه، "warning" با ثبت هر یک از پیام‌های "warning"، "critical" یا "error" برنامه را متوقف خواهد کرد.

--log-fatal-count <count>

تعداد پیام‌های لاگ مهلک (fatal) که می‌توانند پیش از متوقف شدن برنامه ثبت شوند.

--log-domains <list>

فقط پیام‌های مربوط به دامنه‌های لاگ مشخص‌شده را چاپ می‌کند، مانند "GUI,Epan,sshdump". فهرست دامنه‌ها باید با کاما از هم جدا شوند. می‌تواند با "!" به عنوان نویسه نخست نفی شود (تطابق را معکوس می‌کند).

--log-debug <list>

دامنه‌های مشخص‌شده را مجبور می‌کند در سطح "debug" لاگ ثبت کنند. فهرست دامنه‌ها باید با کاما از هم جدا شوند. می‌تواند با "!" به عنوان نویسه نخست نفی شود (تطابق را معکوس می‌کند).

--log-noisy <list>

دامنه‌های مشخص‌شده را مجبور می‌کند در سطح "noisy" لاگ ثبت کنند. فهرست دامنه‌ها باید با کاما از هم جدا شوند. می‌تواند با "!" به عنوان نویسه نخست نفی شود (تطابق را معکوس می‌کند).

--log-fatal-domains <list>

در صورت ثبت هر پیامی برای دامنه‌های لاگ مشخص‌شده، برنامه را متوقف می‌کند. فهرست دامنه‌ها باید با کاما از هم جدا شوند.

--log-file <path>

پیام‌های لاگ و خروجی stderr را در فایل مشخص‌شده می‌نویسد.

برای مشاهده جدول کاملی از پروتکل‌ها و فیلدهای پروتکلی که در Rawshark قابل فیلتر شدن هستند، صفحه راهنمای wireshark-filter(4) را ببینید.

این فایل‌ها حاوی تنظیمات پیکربندی گوناگون Wireshark هستند.

ترجیحات (Preferences)

فایل‌های preferences شامل تنظیمات ترجیحی سراسری در سطح سیستم و شخصی هستند. اگر فایل ترجیحات سراسری در سطح سیستم وجود داشته باشد، ابتدا خوانده شده و تنظیمات پیش‌فرض را بازنویسی / لغو اولویت می‌کند. اگر فایل ترجیحات شخصی وجود داشته باشد، در مرحلهٔ بعد خوانده شده و هرگونه مقدار پیشین را بازنویسی / لغو اولویت خواهد کرد. نکته: اگر پرچم خط فرمان -o استفاده شود (احتمالاً بیش از یک بار)، به نوبهٔ خود مقادیر فایل‌های ترجیحات را بازنویسی / لغو اولویت خواهد کرد.

تنظیمات ترجیحات به شکل prefname:value در هر خط نوشته می‌شوند، که در آن prefname نام ترجیح و value مقداری است که باید روی آن تنظیم شود؛ فاصلهٔ خالی (white space) بین : و value مجاز است. یک تنظیم ترجیح را می‌توان با دندانه‌دار کردن خطوط بعدی با فاصلهٔ خالی، در خطوط بعد ادامه داد. نویسهٔ # آغازگر توضیحی است که تا انتهای خط ادامه می‌یابد:

# Vertical scrollbars should be on right side?
# TRUE or FALSE (case-insensitive).
gui.scrollbar_on_right: TRUE

فایل سراسری ترجیحات، در دایرکتوری wireshark زیر شاخهٔ share از دایرکتوری اصلی نصب جستجو می‌شود. در macOS، این مسیر معمولاً /Application/Wireshark.app/Contents/Resources/share است؛ در سایر سیستم‌های سازگار با UNIX مانند Linux، \*BSD، Solaris و AIX، این مسیر معمولاً برای بسته‌های نصب‌شده در سطح سیستم /usr/share/wireshark/preferences و برای بسته‌های نصب‌شده به صورت محلی /usr/local/share/wireshark/preferences خواهد بود؛ در ویندوز، این مسیر معمولاً C:\Program Files\Wireshark\preferences است.

در سیستم‌های سازگار با UNIX، فایل ترجیحات شخصی در $XDG_CONFIG_HOME/wireshark/preferences (یا اگر $XDG_CONFIG_HOME/wireshark وجود نداشته باشد در حالی که $HOME/.wireshark وجود دارد، در $HOME/.wireshark/preferences) جستجو می‌شود؛ این مسیر معمولاً $HOME/.config/wireshark/preferences است. در ویندوز، فایل ترجیحات شخصی در %APPDATA%\Wireshark\preferences (یا اگر %APPDATA% تعریف نشده باشد، در %USERPROFILE%\Application Data\Wireshark\preferences) جستجو می‌شود.

پروتکل‌های غیرفعال (فعال)

فایل‌های disabled_protos شامل فهرست‌های سراسری در سطح سیستم و شخصی از پروتکل‌هایی هستند که غیرفعال شده‌اند، تا کالبدشکاف‌های آن‌ها هرگز فراخوانی نشوند. این فایل‌ها شامل نام‌های پروتکل در هر خط هستند، به طوری که نام پروتکل همان نامی است که در فیلتر نمایش برای آن پروتکل استفاده می‌شود:

http
tcp     # a comment

اگر پروتکلی در فایل سراسری disabled_protos فهرست شده باشد، توسط کاربر قابل فعال‌سازی نخواهد بود.

فایل سراسری disabled_protos از همان دایرکتوری فایل ترجیحات سراسری استفاده می‌کند.

فایل شخصی disabled_protos از همان دایرکتوری فایل ترجیحات شخصی استفاده می‌کند.

فایل‌های disabled_protos تنها پروتکل‌هایی را فهرست می‌کنند که به طور پیش‌فرض فعال بوده اما غیرفعال شده‌اند؛ پروتکل‌هایی که به طور پیش‌فرض غیرفعال هستند (مانند برخی کالبدشکاف‌های پسین - postdissectors) فهرست نمی‌شوند. فایل‌های مشابه enabled_protos برای پروتکل‌هایی وجود دارند که به طور پیش‌فرض غیرفعال بوده اما فعال شده‌اند.

کالبدشکاف‌های اکتشافی (Heuristic Dissectors)

فایل‌های heuristic_protos شامل فهرست‌های سراسری در سطح سیستم و شخصی از کالبدشکاف‌های اکتشافی هستند و فعال یا غیرفعال بودن آن‌ها را مشخص می‌کنند. این فایل‌ها حاوی نام‌های کوتاه یکتای کالبدشکاف‌های اکتشافی در هر خط هستند که به دنبال آن یک کاما و سپس 0 برای غیرفعال و 1 برای فعال قرار می‌گیرد:

quic,1
rtcp_stun,1
rtcp_udp,1
rtp_stun,0
rtp_udp,0
tls_tcp,1

فایل سراسری heuristic_protos از همان دایرکتوری فایل ترجیحات سراسری استفاده می‌کند.

فایل شخصی heuristic_protos از همان دایرکتوری فایل ترجیحات شخصی استفاده می‌کند.

تحلیل نام (میزبان‌ها - hosts)

مدخل‌های موجود در فایل‌های hosts در دایرکتوری ترجیحات سراسری و شخصی، پیش از هر اقدام دیگری برای تحلیل نشانی‌های IPv4 و IPv6، برای تحلیل آن‌ها استفاده می‌شوند. این فایل از نحو استاندارد فایل hosts پیروی می‌کند؛ هر خط شامل یک نشانی IP و نام است که با فاصلهٔ خالی (whitespace) از یکدیگر جدا شده‌اند. در صورت وجود، فایل شخصی hosts فایل موجود در دایرکتوری سراسری را بازنویسی / لغو اولویت می‌کند.

تحلیل نام در فیلتر ضبط، در سیستم‌های سازگار با UNIX مانند Linux، macOS، \*BSD، Solaris و AIX توسط libpcap، و در ویندوز توسط Npcap انجام می‌شود. از این رو، برای تحلیل نام در فیلتر ضبط، به فایل شخصی hosts در Wireshark مراجعه نخواهد شد.

تحلیل نام (زیرشبکه‌ها - subnets)

اگر یک نشانی IPv4 نتواند از طریق تحلیل نام ترجمه شود (هیچ تطابق دقیقی یافت نشود)، یک تطابق جزئی از طریق فایل subnets امتحان می‌شود. در صورت وجود، هر دو فایل سراسری subnets و فایل شخصی subnets استفاده می‌شوند.

هر خط از این فایل متشکل از یک نشانی IPv4، طول ماسک زیرشبکه که تنها با یک / جدا شده، و یک نام که با فاصلهٔ خالی جدا شده است، می‌باشد. در حالی که نشانی باید یک نشانی کامل IPv4 باشد، هر مقداری فراتر از طول ماسک در ادامه نادیده گرفته خواهد شد.

یک نمونه:

# Comments must be prepended by the # sign! 192.168.0.0/24 ws_test_network

نامی که به طور جزئی تطابق یافته باشد، به شکل "subnet-name.remaining-address" چاپ خواهد شد. برای نمونه، "192.168.0.1" ذیل زیرشبکهٔ بالا به صورت "ws_test_network.1" چاپ می‌شود؛ اگر طول ماسک بالا به جای 24 برابر با 16 بود، نشانی چاپ‌شده "ws_test_network.0.1" می‌بود.

تحلیل نام (ethers)

فایل‌های ethers برای تطبیق آدرس‌های سخت‌افزاری ۶-بایتی EUI-48 و ۸-بایتی EUI-64 با نام‌ها بررسی می‌شوند. ابتدا فایل ethers شخصی بررسی می‌شود و اگر آدرس در آن یافت نشود، سپس فایل ethers سراسری بررسی می‌گردد.

این فایل قالبی شبیه به قالب تعریف‌شده توسط ethers(5) در برخی سیستم‌های شبه-یونیکس دارد. هر خط شامل یک آدرس سخت‌افزاری و نام است که با فاصله خالی (تب‌ها یا فاصله‌ها) جدا شده‌اند. ارقام هگزادسیمال آدرس سخت‌افزاری با دونقطه (:)، خط تیره (-) یا نقطه (.) از هم جدا می‌شوند. باید از همان نویسه جداکننده به طور یکدست در یک آدرس استفاده شود. علامت # نشان‌دهنده یک توضیح است که تا انتهای خط امتداد می‌یابد. هر دو آدرس ۶-بایتی MAC و ۸-بایتی EUI-64 پشتیبانی می‌شوند. چهار خط زیر خطوط معتبری از یک فایل ethers هستند:

ff:ff:ff:ff:ff:ff          Broadcast
c0-00-ff-ff-ff-ff          TR_broadcast
00.00.00.00.00.00          Zero_broadcast
00:00:00:00:00:00:00:00    EUI64_zero_broadcast

توجه داشته باشید که این قالب تنوع بیشتری از قالب‌ها را نسبت به فایل تعریف‌شده توسط ethers(5) در اکثر سیستم‌های UN*X می‌پذیرد.

فایل سراسری ethers در سیستم‌های سازگار با یونیکس، مانند لینوکس، macOS، \*BSD، سولاریس، و AIX در دایرکتوری /etc جستجو می‌شود، و در سیستم‌های ویندوز در دایرکتوری اصلی نصب (برای مثال، C:\Program Files\Wireshark) جستجو می‌گردد.

فایل شخصی ethers در همان دایرکتوری فایل تنظیمات شخصی جستجو می‌شود.

تحلیل نام فیلتر ضبط در سیستم‌های سازگار با یونیکس توسط libpcap و در سیستم‌های ویندوز توسط Npcap مدیریت می‌شود. بنابراین برای تحلیل نام فیلتر ضبط، فایل شخصی ethers در Wireshark بررسی نخواهد شد.

تحلیل نام (manuf)

فایل manuf برای تطبیق بخش ۳-بایتی سازنده از یک آدرس سخت‌افزاری ۶-بایتی با نام سازنده استفاده می‌شود؛ این فایل همچنین می‌تواند حاوی آدرس‌های MAC شناخته‌شده و محدوده‌های آدرس مشخص‌شده با ماسک شبکه باشد. قالب این فایل مشابه فایل‌های ethers است، با این تفاوت که ورودی‌هایی مانند:

00:00:0C      Cisco     Cisco Systems, Inc

می‌توانند ارائه شوند، همراه با OUI سه-بایتی و هر دو نام کوتاه و طولانی برای یک سازنده، و ورودی‌هایی مانند:

00-00-0C-07-AC/40     All-HSRP-routers

می‌توانند مشخص شوند، همراه با یک آدرس MAC و ماسکی که نشان می‌دهد چند بیت از آدرس باید مطابقت داشته باشد. ورودی بالا، برای مثال، دارای ۴۰ بیت معنادار یا ۵ بایت است، و با آدرس‌های 00-00-0C-07-AC-00 تا 00-00-0C-07-AC-FF مطابقت دارد. نیازی نیست که ماسک مضربی از ۸ باشد.

فایل سراسری manuf در همان دایرکتوری فایل تنظیمات سراسری جستجو می‌شود، و فایل شخصی manuf در همان دایرکتوری فایل تنظیمات شخصی جستجو می‌گردد.

در نسخه‌های اولیه Wireshark، اطلاعات رسمی مرجع ثبت IEEE در این قالب به عنوان فایل سراسری manuf توزیع می‌شد. این اطلاعات اکنون برای افزایش سرعت راه‌اندازی برنامه کامپایل شده است، اما اطلاعات داخلی را می‌توان در این قالب با tshark -G manuf ذخیره کرد.

علاوه بر فایل manuf، فایل دیگری با همین قالب به نام wka در دایرکتوری سراسری جستجو می‌شود. این فایل به همراه Wireshark توزیع می‌شود، و شامل داده‌هایی درباره آدرس‌های MAC شناخته‌شده و محدوده‌های آدرس گردآوری‌شده از منابع مختلف غیر IEEE اما معتبر است.

تحلیل نام (سرویس‌ها - services)

فایل services برای ترجمه شماره پورت‌ها به نام‌ها به کار می‌رود. هر دو فایل سراسری services و فایل شخصی services در صورت وجود استفاده می‌شوند.

این فایل دارای نحو استاندارد فایل services است؛ هر خط شامل یک نام (سرویس) و یک شناسه انتقال است که با فاصله خالی جدا شده‌اند. شناسه انتقال شامل یک شماره پورت و یک نام پروتکل انتقال (معمولاً tcp، udp، یا sctp) است که با یک / جدا شده‌اند.

یک مثال:

mydns 5045/udp # My own Domain Name Server mydns 5045/tcp # My own Domain Name Server

در نسخه‌های اولیه Wireshark، اطلاعات رسمی رجیستری IANA در این قالب به عنوان فایل سراسری services توزیع می‌شد. این اطلاعات اکنون برای افزایش سرعت راه‌اندازی برنامه کامپایل شده است، اما اطلاعات داخلی را می‌توان در این قالب با tshark -G services ذخیره کرد.

تحلیل نام (ipxnets)

فایل‌های ipxnets برای تطبیق شماره‌های شبکه IPX چهار-بایتی با نام‌ها به کار می‌روند. ابتدا فایل سراسری ipxnets بررسی می‌شود و اگر آن آدرس در آنجا یافت نشود، سپس فایل شخصی بررسی می‌گردد.

قالب آن همانند فایل ethers است، به جز اینکه هر آدرس به جای شش بایت، چهار بایت است. علاوه بر این، آدرس می‌تواند به عنوان یک عدد هگزادسیمال منفرد نشان داده شود، همان‌طور که در دنیای IPX معمول‌تر است، تا چهار اکتت هگزادسیمال. به عنوان مثال، این چهار خط، خطوط معتبری از یک فایل ipxnets هستند:

C0.A8.2C.00              HR
c0-a8-1c-00              CEO
00:00:BE:EF              IT_Server1
110f                     FileServer3

فایل سراسری ipxnets در دایرکتوری /etc در سیستم‌های سازگار با یونیکس، مانند Linux، macOS، \*BSD، Solaris و AIX، و در دایرکتوری اصلی نصب (برای مثال، C:\Program Files\Wireshark) در سیستم‌های Windows جستجو می‌شود.

فایل شخصی ipxnets در همان دایرکتوری فایل تنظیمات شخصی جستجو می‌شود.

تحلیل نام (ss7pcs)

فایل ss7pcs برای ترجمه کدهای نقطه (point codes) اس‌اس۷ (SS7) به نام‌ها به کار می‌رود. این فایل از دایرکتوری پیکربندی شخصی خوانده می‌شود.

هر خط در این فایل از یک شناسه شبکه تشکیل شده است که به دنبال آن یک خط تیره، یک کد نقطه به صورت ده‌دهی و یک نام گره که با فاصله خالی (whitespace) جدا شده‌اند می‌آید. یک مثال:

2-1234 MyPointCode1

تحلیل نام (vlans)

فایل vlans برای ترجمه شناسه برچسب VLAN به نام‌ها استفاده می‌شود. این فایل از دایرکتوری پیکربندی شخصی خوانده می‌شود.

هر خط در این فایل از یک شناسه برچسب VLAN تشکیل شده است که با فاصله خالی از یک نام جدا شده است. یک مثال:

123    Server-Lan
2049   HR-Client-LAN

فیلترهای رنگی (قوانین رنگ‌آمیزی)

فایل‌های colorfilters شامل فیلترهای رنگی سراسری سیستم و شخصی هستند. هر خط شامل یک فیلتر است که با رشته نمایش‌یافته در کادر محاوره آغاز می‌شود و به دنبال آن فیلتر نمایش متناظر می‌آید. سپس رنگ‌های پس‌زمینه و پیش‌زمینه افزوده می‌شوند:

# a comment
@tcp@tcp@[59345,58980,65534][0,0,0]
@udp@udp@[28834,57427,65533][0,0,0]

فایل سراسری colorfilters از همان دایرکتوری فایل تنظیمات (preferences) سراسری استفاده می‌کند.

فایل شخصی colorfilters از همان دایرکتوری فایل تنظیمات شخصی استفاده می‌کند. این فایل از طریق کادر محاوره‌ای View:Coloring Rules (نمایش: قوانین رنگ‌آمیزی) نوشته می‌شود.

اگر فایل سراسری colorfilters وجود داشته باشد، فقط زمانی استفاده می‌شود که فایل شخصی colorfilters وجود نداشته باشد؛ فیلترهای رنگی سراسری و شخصی با یکدیگر ادغام نمی‌شوند.

افزونه‌ها (Plugins)

نرم‌افزار Wireshark افزونه‌ها را هم در پوشه افزونه‌های شخصی و هم در پوشه افزونه‌های سراسری جستجو می‌کند.

در سیستم‌های سازگار با یونیکس (UNIX)، مانند لینوکس، مک‌اواس (macOS)، \*BSD، سولاریس و AIX، دایرکتوری سراسری افزونه‌ها lib/wireshark/plugins/ (در برخی سیستم‌ها lib64 جایگزین lib می‌شود) در زیر دایرکتوری اصلی نصب است (برای نمونه، /usr/local/lib/wireshark/plugins/). دایرکتوری شخصی افزونه‌ها $HOME/.local/lib/wireshark/plugins است.

در macOS، اگر Wireshark به صورت یک بسته برنامه‌ای (application bundle) نصب شده باشد، پوشه سراسری افزونه‌ها در عوض %APPDIR%/Contents/PlugIns/wireshark است.

در ویندوز، پوشه سراسری افزونه‌ها plugins/ در زیر دایرکتوری اصلی نصب است (برای نمونه، C:\Program Files\Wireshark\plugins\). پوشه شخصی افزونه‌ها %APPDATA%\Wireshark\plugins (یا اگر %APPDATA% تعریف نشده باشد، %USERPROFILE%\Application Data\Wireshark\plugins) است.

افزونه‌های Lua در پوشه‌های افزونه ذخیره می‌شوند؛ افزونه‌های کامپایل‌شده در زیرپوشه‌هایی از پوشه‌های افزونه ذخیره می‌شوند که نام زیرپوشه، شماره نسخه فرعی Wireshark (به صورت X.Y) است. یک سطح سلسله‌مراتبی دیگر برای هر نوع از افزونه‌های Wireshark وجود دارد (شامل libwireshark، libwiretap و codecs). برای نمونه، محل قرارگیری یک افزونه libwireshark با نام foo.so (یا foo.dll در ویندوز) مسیر PLUGINDIR/X.Y/epan خواهد بود (libwireshark قبلاً libepan نامیده می‌شد؛ نام سایر پوشه‌ها codecs و wiretap است).


نکته

در سیستم‌های سازگار با UNIX، افزونه‌های Lua (نه افزونه‌های باینری) ممکن است در
$XDG_CONFIG_HOME/wireshark/plugins نیز قرار داده شوند، (یا اگر $XDG_CONFIG_HOME/wireshark وجود نداشته باشد در حالی که $HOME/.wireshark وجود دارد، $HOME/.wireshark/plugins.)

توجه داشته باشید که یک ماژول افزونه کالبدشکاف (dissector plugin) ممکن است از بیش از یک پروتکل پشتیبانی کند؛ لزوماً تناظر یک‌به‌یک بین ماژول‌های افزونه کالبدشکاف و پروتکل‌ها وجود ندارد. پروتکل‌های پشتیبانی‌شده توسط یک ماژول افزونه کالبدشکاف به همان روشی فعال و غیرفعال می‌شوند که پروتکل‌های داخلی Wireshark کنترل می‌گردند.

WIRESHARK_CONFIG_DIR

این متغیر محیطی مسیر فایل‌های پیکربندی شخصی را جایگزین می‌کند. در سیستم‌های سازگار با UNIX، مانند Linux، macOS، \*BSD، Solaris و AIX، مقدار پیش‌فرض آن $XDG_CONFIG_HOME/wireshark است (یا اگر آن دایرکتوری وجود نداشته باشد اما $HOME/.wireshark وجود داشته باشد، $HOME/.wireshark)؛ این مسیر معمولاً $HOME/.config/wireshark است. در Windows، مقدار پیش‌فرض آن %APPDATA%\Wireshark است (یا اگر %APPDATA% تعریف نشده باشد، %USERPROFILE%\Application Data\Wireshark). از نسخه Wireshark 3.0 در دسترس است.

WIRESHARK_DEBUG_WMEM_OVERRIDE

تنظیم این متغیر محیطی چارچوب wmem را وادار می‌کند تا برای all تخصیص‌ها از بک‌اند تخصیص‌دهنده حافظه مشخص‌شده استفاده کند، صرف‌نظر از اینکه کدام بک‌اند به طور معمول توسط کد تعیین شده است. این قابلیت عمدتاً برای توسعه‌دهندگان هنگام آزمایش یا اشکال‌زدایی مفید است. برای جزئیات به README.wmem در توزیع سورس کد مراجعه کنید.

WIRESHARK_RUN_FROM_BUILD_DIRECTORY

این متغیر محیطی باعث می‌شود پلاگین‌ها و سایر فایل‌های داده به جای مکان‌های استاندارد، از دایرکتوری ساخت (جایی که برنامه کامپایل شده است) بارگذاری شوند. هنگامی که برنامه مورد نظر با دسترسی‌های root (یا setuid) در سیستم‌های سازگار با UNIX مانند Linux، macOS، \*BSD، Solaris و AIX اجرا می‌شود، این متغیر هیچ تاثیری ندارد.

WIRESHARK_DATA_DIR

این متغیر محیطی باعث می‌شود فایل‌های داده گوناگون از دایرکتوری دیگری غیر از مکان‌های استاندارد بارگذاری شوند. هنگامی که برنامه مورد نظر با دسترسی‌های root (یا setuid) در سیستم‌های سازگار با UNIX اجرا می‌شود، هیچ تاثیری ندارد.

ERF_RECORDS_TO_CHECK

این متغیر محیطی تعداد رکوردهای ERF بررسی‌شده را هنگام تصمیم‌گیری درباره اینکه آیا فایل واقعاً در قالب ERF است یا خیر کنترل می‌کند. تنظیم این متغیر محیطی روی عددی بالاتر از مقدار پیش‌فرض (20)، احتمال موارد مثبت کاذب را کاهش می‌دهد.

IPFIX_RECORDS_TO_CHECK

این متغیر محیطی تعداد رکوردهای IPFIX بررسی‌شده را هنگام تصمیم‌گیری درباره اینکه آیا فایل واقعاً در قالب IPFIX است یا خیر کنترل می‌کند. تنظیم این متغیر محیطی روی عددی بالاتر از مقدار پیش‌فرض (20)، احتمال موارد مثبت کاذب را کاهش می‌دهد.

WIRESHARK_ABORT_ON_DISSECTOR_BUG

در صورت تنظیم این متغیر محیطی، Rawshark هنگام برخورد با باگ در کالبدشکاف، abort(3) را فراخوانی می‌کند. فراخوانی abort(3) موجب خروج غیرعادی برنامه خواهد شد؛ اگر Rawshark را درون یک دیباگر اجرا می‌کنید، برنامه باید درون دیباگر متوقف شده و امکان بازرسی فرآیند را فراهم کند، و اگر آن را درون دیباگر اجرا نمی‌کنید، در برخی سیستم‌عامل‌ها (به شرط پیکربندی صحیح محیط شما) یک فایل core dump تولید خواهد شد. این امر می‌تواند برای توسعه‌دهندگانی که در تلاش برای عیب‌یابی مشکلی در یک کالبدشکاف پروتکل هستند مفید باشد.

WIRESHARK_ABORT_ON_TOO_MANY_ITEMS

در صورت تنظیم این متغیر محیطی، اگر کالبدشکاف تلاش کند موارد بیش از حدی را به یک درخت اضافه کند، Rawshark اقدام به فراخوانی abort(3) خواهد کرد (معمولاً این امر نشانه خارج نشدن به موقع کالبدشکاف از یک حلقه است). فراخوانی abort(3) موجب خروج غیرعادی برنامه خواهد شد؛ اگر Rawshark را درون یک دیباگر اجرا می‌کنید، برنامه باید درون دیباگر متوقف شده و امکان بازرسی فرآیند را فراهم کند، و اگر آن را درون دیباگر اجرا نمی‌کنید، در برخی سیستم‌عامل‌ها (به شرط پیکربندی صحیح محیط شما) یک فایل core dump تولید خواهد شد. این امر می‌تواند برای توسعه‌دهندگانی که در تلاش برای عیب‌یابی مشکلی در یک کالبدشکاف پروتکل هستند مفید باشد.

wireshark-filter(4), wireshark(1), tshark(1), editcap(1), pcap(3), dumpcap(1), text2pcap(1), pcap-filter(7) یا tcpdump(8)

این صفحه راهنما مربوط به Rawshark 4.7.3 است. Rawshark بخشی از توزیع Wireshark است. آخرین نسخه Wireshark را می‌توانید در اینجا بیابید: https://www.wireshark.org.

نسخه‌های HTML صفحات راهنمای پروژه Wireshark در این نشانی در دسترس هستند: https://www.wireshark.org/docs/man-pages.

Rawshark از همان کد کالبدشکافی بسته که در Wireshark وجود دارد استفاده می‌کند، همچنین از بسیاری از ماژول‌های دیگر Wireshark بهره می‌برد؛ برای مشاهده فهرست نویسندگان این کد، فهرست نویسندگان را در صفحه راهنمای Wireshark ببینید.

2026-09-03