SHARKD(1)   SHARKD(1)

sharkd - تحلیل و تخلیه تعاملی ترافیک شبکه با استفاده از JSON-RPC

sharkd [ -a|--api <socket> ] [ --foreground ] [ -C|--config-profile <configuration profile> ]

sharkd -

sharkd -h|--help

sharkd -v|--version

Sharkd گونه‌ای دیمن (daemon) از Wireshark است که یک API مبتنی بر JSON را جهت انجام تحلیل پروتکل‌های شبکه فراهم می‌کند. این ابزار از همان موتور تشریح (dissection) موجود در Wireshark و TShark بهره می‌برد و دسترسی برنامه‌نویسی‌شده به قابلیت‌های تشریح بسته‌ها، فیلترسازی و تحلیل را میسر می‌سازد.

Sharkd می‌تواند در دو حالت فعالیت کند: حالت کنسول (console mode) و حالت دیمن (daemon mode).

در حالت کنسول، sharkd درخواست‌های JSON-RPC را از ورودی استاندارد خوانده و پاسخ‌ها را در خروجی استاندارد می‌نویسد. این حالت با ارسال - به عنوان آرگومان یا با اجرای sharkd بدون گزینه -a فعال می‌شود.

در حالت دیمن، sharkd روی یک Unix domain socket یا TCP socket به اتصالات ورودی گوش فرا می‌دهد و برای هر کلاینت یک فرایند نشست (session process) جدید ایجاد (fork) می‌کند. این حالت با مشخص کردن گزینه -a به همراه مشخصات سوکت فعال می‌شود.

درخواست‌ها و پاسخ‌ها به صورت اشیاء JSON کدگذاری می‌شوند، هر کدام در یک سطر. برای دیدن فهرست کامل فراخوانی‌های متد، بخش JSON-RPC METHODS را در ادامه ملاحظه کنید.

برای جزئیات کامل پیرامون JSON-RPC API، ببینید: https://wiki.wireshark.org/Development/sharkd.


هشدار

Sharkd نباید در معرض دسترسی کاربران غیرقابل‌اعتماد قرار گیرد.
دسترسی فیلترنشده به sharkd می‌تواند بالقوه منجر به افشای اطلاعات یا اجرای دستورات دلخواه شود.

-a <socket>, --api <socket>

گوش دادن روی سوکت مشخص‌شده برای اتصالات ورودی کلاینت به جای خواندن از کنسول. هنگام استفاده از این گزینه، sharkd به عنوان یک دیمن (daemon) اجرا می‌شود و برای هر اتصال کلاینت، یک فرایند نشست (session) جدید فورک (fork) می‌کند.

انواع سوکت‌های پشتیبانی‌شده:

unix:path

گوش دادن روی یک سوکت دامنه یونیکس (Unix domain socket) در path. برای مثال، unix:/tmp/sharkd.sock. در لینوکس، سوکت‌های انتزاعی (abstract sockets) با قرار دادن پیشوند @ در ابتدای نام پشتیبانی می‌شوند، مانند unix:@sharkd؛ سوکت‌های انتزاعی تنها از اتصال‌های همتایانی با UID مؤثر یکسان پشتیبانی می‌کنند. سوکت‌های دامنه یونیکس در ویندوز ۱۰ نسخه ۱۸۰۳ و بالاتر، از جمله Windows Server 2019 در دسترس هستند.

tcp:address:port

گوش دادن روی یک سوکت TCP متصل به address در port. برای مثال، tcp:127.0.0.1:4446. برای آدرس‌های IPv6، آدرس را داخل براکت قرار دهید، مانند tcp:[[::1]:5678. بنا بر دلایل امنیتی، سوکت‌های TCP به‌طور پیش‌فرض تنها در ساخت‌های ویندوز در دسترس هستند و فقط از آدرس‌های لوپ‌بک (loopback) پشتیبانی می‌شود، یعنی یک آدرس IPv4 در فضای آدرس 127.0.0.0/8 یا آدرس لوپ‌بک IPv6 به صورت ::1.

اگر هیچ گزینهٔ -a ارائه نشود، یا اگر sharkd - استفاده شود، sharkd دستورها را از طریق کنسول (ورودی استاندارد) می‌پذیرد.

--foreground

هنگام اجرا در حالت دیمن، از ترمینال کنترل‌کننده جدا نشود. به‌طور پیش‌فرض، زمانی که سوکتی با گزینهٔ -a مشخص شده باشد، sharkd به پس‌زمینه فورک می‌شود.

-C <configuration profile>, --config-profile <configuration profile>

شروع با نمایهٔ پیکربندی (configuration profile) مشخص‌شده.

-h, --help

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

-v, --version

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

--log-level <level>

تنظیم سطح فعال ثبت گزارش (log 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 در فایل مشخص‌شده.

Sharkd درخواست‌های JSON-RPC جداشده با خط جدید را می‌پذیرد. هر درخواست باید شامل فیلد jsonrpc با مقدار "2.0"، فیلد method و فیلد id باشد. متدهای زیر پشتیبانی می‌شوند:

analyse

تحلیل فایل ضبط بارگذاری‌شده و بازگرداندن اطلاعات خلاصه.

bye

پایان دادن به نشست.

check

بررسی یا کامپایل یک فیلتر نمایش (display filter).

complete

ارائه پیشنهادهای تکمیل نام فیلد.

download

دانلود داده‌های ضبط‌شده یا اشیاء بازسازی‌شده (reassembled).

dumpconf

تخلیه مقادیر فعلی ترجیحات (preferences).

field

دریافت اطلاعات درباره یک فیلد مشخص از فیلتر نمایش.

fields

فهرست کردن تمام فیلدهای موجود فیلتر نمایش.

follow

دنبال کردن یک جریان (TCP، UDP، HTTP و غیره).

frame

دریافت اطلاعات دقیق درباره یک فریم مشخص.

frames

دریافت فهرستی از فریم‌ها (بسته‌ها) از فایل ضبط بارگذاری‌شده.

info

دریافت اطلاعات درباره dissectorها، tapها و آمارهای موجود.

intervals

دریافت داده‌های بازه زمانی فریم برای فایل ضبط بارگذاری‌شده.

iograph

دریافت داده‌های نمودار I/O برای فایل ضبط بارگذاری‌شده.

load

بارگذاری یک فایل ضبط برای تحلیل.

setcomment

تنظیم یادداشت روی یک فریم مشخص.

setconf

تنظیم مقدار ترجیحات Wireshark.

status

دریافت وضعیت فایل ضبط بارگذاری‌شده فعلی.

tap

اجرای یک tap روی فایل ضبط بارگذاری‌شده.

برای اجرای sharkd در حالت کنسول:

sharkd -

برای اجرای sharkd به صورت یک دیمن که روی یک Unix domain socket گوش می‌دهد:

sharkd -a unix:/tmp/sharkd.sock

برای اجرای sharkd به صورت یک دیمن با یک نمایهٔ پیکربندی (profile) مشخص:

sharkd -a unix:/tmp/sharkd.sock -C myprofile

برای نگه داشتن دیمن در پیش‌زمینه جهت اشکال‌زدایی:

sharkd -a unix:/tmp/sharkd.sock --foreground

یک نمونه از نشست کنسول برای بارگذاری یک فایل و دریافت وضعیت آن:

$ echo '{"jsonrpc":"2.0","id":1,"method":"load","params":{"file":"/path/to/capture.pcapng"}}' | sharkd -
$ echo '{"jsonrpc":"2.0","id":2,"method":"status"}' | sharkd -

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 را وادار می‌کند تا برای تمامی تخصیص‌ها، بدون در نظر گرفتن اینکه معمولاً چه بک‌اندی توسط کد مشخص شده است، از بک‌اند تخصیص‌دهندهٔ (allocator backend) تعیین‌شده استفاده کند. این متغیر عمدتاً هنگام آزمایش یا اشکال‌زدایی برای توسعه‌دهندگان مفید است. برای جزئیات به README.wmem در توزیع کد منبع مراجعه کنید.

WIRESHARK_RUN_FROM_BUILD_DIRECTORY

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

WIRESHARK_DATA_DIR

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

WIRESHARK_EXTCAP_DIR

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

WIRESHARK_PLUGIN_DIR

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

ERF_RECORDS_TO_CHECK

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

IPFIX_RECORDS_TO_CHECK

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

WIRESHARK_ABORT_ON_DISSECTOR_BUG

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

WIRESHARK_ABORT_ON_TOO_MANY_ITEMS

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

WIRESHARK_LOG_LEVEL

این متغیر محیطی میزان پرگویی (verbosity) پیام‌های تشخیصی به کنسول را کنترل می‌کند. سطوح مختلف از کم‌گوترین تا پرگوترین عبارتند از: critical، warning، message، info، debug یا noisy. سطوح بالاتر از سطح کنونی نیز فعال هستند. سطوح critical و error همیشه فعال هستند.

WIRESHARK_LOG_FATAL

سطح لاگ مهلک (fatal) را تنظیم می‌کند. سطوح لاگ مهلک باعث خاتمهٔ غیرعادی و لغو (abort) برنامه می‌شوند. این سطح می‌تواند بر روی Error، critical یا warning تنظیم شود. سطح Error همیشه مهلک است و مقدار پیش‌فرض می‌باشد.

WIRESHARK_LOG_DOMAINS

این متغیر محیطی مشخص می‌کند کدام دامنه‌های ثبت گزارش (log domains) فعال باشند. این فیلتر به صورت فهرستی از موارد جداشده با کاما و بدون حساسیت به حروف بزرگ و کوچک ارائه می‌شود. در صورت تنظیم، تنها دامنه‌های گنجانده‌شده فعال خواهند شد. دامنهٔ پیش‌فرض همواره فعال تلقی می‌شود. برای معکوس کردن مفهوم تطبیق، می‌توان در ابتدای فهرست فیلتر دامنه از '!' استفاده کرد.

WIRESHARK_LOG_DEBUG

فهرستی از دامنه‌ها با سطح لاگ debug. این متغیر سطح دامنه‌های لاگ ارائه‌شده را تنظیم می‌کند و اولویت بالاتری نسبت به فیلتر دامنه‌های فعال دارد. در صورتی که پیش از آن '!' بیاید، به جای آن سطح debug غیرفعال می‌شود. WIRESHARK_LOG_NOISY
مشابه بالا، اما در عوض برای سطح لاگ noisy.

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

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

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

Sharkd توسط Jakub Zawadzki نوشته شده است. Sharkd از همان کد کالبدشکافی بسته‌ای که Wireshark استفاده می‌کند، به همراه بسیاری از ماژول‌های دیگر Wireshark بهره می‌برد؛ برای مشاهدهٔ فهرست نویسندگان آن کد، به فهرست نویسندگان در صفحهٔ راهنمای Wireshark مراجعه کنید.

2026-09-03