.\" تمام محتوا، به استثنای بخش‌هایی از توضیحات فیلتر bpf، متعلق به: .\" .\" Copyright (c) 2025 Jordan Ritter .\" .\" Please refer to the LICENSE file for more information. .TH NGREP 8 "فوریه 2026" *nux "راهنمای کاربران" .SH "نام (NAME)" ngrep \- ابزار grep برای شبکه (network grep) .SH "خلاصه دستور (SYNOPSIS)" .B ngrep <-hNXViwqpevxlDtTRMCu> <-IO .I pcap_dump .B > < -n .I num .B > < -d .I dev .B > < -A .I num .B > < -s .I snaplen .B > < -S .I limitlen .B > < -W .I normal|byline|single|none .B > < -c .I cols .B > < -P .I char .B > < -F .I file .B > < .I match expression .B > < .I bpf filter .B > .SH "توضیحات (DESCRIPTION)" ابزار ngrep تلاش می‌کند تا بیشتر قابلیت‌های رایج GNU grep را ارائه داده و آن‌ها را در لایه شبکه اعمال کند. ngrep ابزاری سازگار با pcap است که به شما امکان می‌دهد عبارات منظم توسعه‌یافته (extended regular expressions) را برای تطبیق با بار مفید داده (payload) بسته‌ها مشخص کنید. این ابزار در حال حاضر پروتکل‌های TCP، UDP و ICMP را روی رابط‌های Ethernet، PPP، SLIP، FDDI و رابط‌های null تشخیص می‌دهد و منطق فیلتر bpf را همانند ابزارهای رایج‌تر شنود بسته (packet sniffing) مانند .BR tcpdump (8) و .BR snoop (1) درک می‌کند. .SH "گزینه‌ها (OPTIONS)" .IP -h نمایش اطلاعات راهنما و نحوه استفاده. .IP -N نمایش شماره زیرپروتکل به همراه شناسه تک‌کاراکتری (هنگام مشاهده پروتکل‌های خام یا ناشناخته مفید است). .IP -X در نظر گرفتن عبارت تطبیق به عنوان یک رشته هگزادسیمال (شانزده‌شانزدهی). توضیح \fIعبارت تطبیق\fP را در ادامه مشاهده کنید. .IP -V نمایش اطلاعات نسخه. .IP -i صرف‌نظر کردن از بزرگ و کوچک بودن حروف در عبارت باقاعده (regex). .IP -w تطبیق عبارت باقاعده به عنوان یک کلمه کامل. .IP -q حالت بی‌صدا؛ عدم چاپ هرگونه اطلاعات به جز سرایند بسته‌ها و بارهای مفید آن‌ها (در صورت مرتبط بودن). .IP -p رابط شبکه در حالت بی‌قید (promiscuous mode) قرار داده نشود. .IP -e نمایش بسته‌های خالی. به طور معمول بسته‌های خالی نادیده گرفته می‌شوند زیرا بار مفیدی برای جستجو ندارند. در صورت تعیین این گزینه، بسته‌های خالی بدون توجه به عبارت باقاعده مشخص‌شده نمایش داده خواهند شد. .IP -v معکوس کردن تطبیق؛ فقط بسته‌هایی که مطابقت ندارند نمایش داده شوند. .IP -x تخلیه (dump) محتویات بسته به هر دو فرمت هگزادسیمال و ASCII. .IP -l بافر کردن خروجی استاندارد (stdout) به صورت سطری (line buffered). .IP -C رنگی کردن موارد منطبق در خروجی محتویات بسته. .IP -u نمایش نویسه‌های UTF-8 در خروجی محتویات بسته. .IP -D هنگام خواندن فایل‌های pcap_dump، بازپخش آن‌ها با همان فواصل زمانی ثبت‌شده انجام شود (شبیه‌سازی زمان واقعی). .IP -t چاپ برچسب زمانی به شکل YYYY/MM/DD HH:MM:SS.UUUUUU در هر بار که بسته‌ای مطابقت پیدا می‌کند. .IP -T چاپ برچسب زمانی به صورت +S.UUUUUU که نشان‌دهنده اختلاف زمانی (دلتا) بین موارد تطبیق بسته‌ها است. مشخص کردن دوباره این گزینه اختلاف زمانی را از زمان اولین تطبیق بسته نشان می‌دهد. .IP -R تلاش برای لغو امتیازات دسترسی به کاربر DROPPRIVS_USER (که در زمان ساخت مشخص شده است) صورت نگیرد. ابزار ngrep تلاشی برای اعتبارسنجی ورودی‌های منابع زنده یا آفلاین انجام نمی‌دهد، زیرا بیشتر بر کارایی و پردازش حجم بالایی از داده‌ها متمرکز است تا صحت پروتکل، که در اغلب موارد فرض معقولی است. با این حال، گاهی اوقات این موضوع اهمیت پیدا می‌کند و بنابراین ngrep طبق یک قاعده سعی می‌کند حالت تدافعی داشته باشد و هرگونه امتیاز ریشه (root) را که ممکن است داشته باشد رها کند. سناریوهایی وجود دارند که در آن‌ها این رفتار می‌تواند به یک مانع تبدیل شود؛ بنابراین این گزینه برای کاربران نهایی فراهم شده است که می‌خواهند این ویژگی را غیرفعال کنند، اما باید با درک خطرات دست به این کار بزنند. بسته‌ها می‌توانند به طور تصادفی معیوب باشند یا حتی به طور خاص برای سرریز کردن ابزارهای شنود (sniffers) و به دست گرفتن کنترل آن‌ها طراحی شده باشند، و لغو امتیازات دسترسی ریشه در حال حاضر تنها روش کاهش خطری است که ngrep در برابر چنین حملاتی به کار می‌گیرد. استفاده از این گزینه و خاموش کردن این قابلیت با مسئولیت خودتان است. .IP "-c cols" به‌طور صریح پهنای کنسول را برابر با ``cols'' قرار می‌دهد. توجه داشته باشید که این مقدار پهنای کنسول است، نه پهنای کامل آنچه ngrep به عنوان بار مفید چاپ می‌کند؛ بسته به حالت خروجی، ممکن است ngrep کمتر از ``cols'' بایت در هر سطر چاپ کند (به دلیل تورفتگی). .IP "-F file" خواندن فیلتر bpf از نام فایل مشخص‌شده. این یک گزینه سازگاری برای کاربرانی است که با tcpdump آشنایی دارند. لطفاً توجه داشته باشید که تعیین گزینه «-F» هر فیلتر bpf مشخص‌شده در خط فرمان را لغو (override) خواهد کرد. .IP "-P char" تعیین نویسه‌ای جایگزین برای نمایش نویسه‌های غیرقابل‌چاپ. مقدار پیش‌فرض «.» است. .IP "-K num" قطع کردن اتصالات TCP منطبق (مانند tcpkill). آرگومان عددی مشخص می‌کند که چه تعداد قطعه (segment) حاوی پرچم RST ارسال شود. .IP "-W normal|byline|single|none" تعیین شیوه‌ای جایگزین برای نمایش بسته‌ها، هنگامی که در حالت هگزادسیمال قرار ندارد. حالت «byline» شکست خطوط جاسازی‌شده را رعایت می‌کند و متن را تنها زمانی به سطر بعدی می‌برد که با یک کاراکتر خط جدید (linefeed) روبرو شود (برای نمونه، جهت مشاهده تراکنش‌های HTTP مفید است). حالت «none» تحت هیچ شرایطی متن را نمی‌شکند (کل بار مفید در یک سطر نمایش داده می‌شود). حالت «single» از نظر مفهومی همانند «none» است، با این تفاوت که تمام اطلاعات از جمله IP و اطلاعات سرایند مبدا/مقصد همه در یک سطر قرار می‌گیرند. «normal» حالت پیش‌فرض است و فقط برای جامعیت آورده شده است. این گزینه با «-x» ناسازگار است. .IP "-s snaplen" تنظیم مقدار caplen برای bpf بر روی snaplen (پیش‌فرض 65536 است). .IP "-S limitlen" تنظیم حد بالا برای اندازه بسته‌هایی که ngrep به آن‌ها نگاه می‌کند. برای بررسی تنها N بایت اول بسته‌ها بدون تغییر مقدار BPF snaplen مفید است. .IP "-I pcap_dump" خواندن فایل pcap_dump به عنوان ورودی ngrep. با هر قالب فایل dump سازگار با pcap کار می‌کند. این گزینه برای جستجوی طیف گسترده‌ای از الگوهای مختلف روی یک جریان بسته یکسان مفید است. .IP "-O pcap_dump" خروجی دادن بسته‌های منطبق در یک فایل dump سازگار با pcap. این قابلیت تداخلی با خروجی عادی در stdout ایجاد نمی‌کند. .IP "-n num" فقط با مجموع .I \fInum\fP بسته تطبیق داده شود و سپس برنامه خارج شود. .IP "-d dev" به‌طور پیش‌فرض ngrep یک رابط پیش‌فرض را برای شنود انتخاب می‌کند. از این گزینه برای اجبار ngrep به شنود روی رابط \fIdev\fP استفاده کنید. .IP "-A num" تخلیه (dump) تعداد \fInum\fP بسته از بافت تعقیب‌کننده (trailing context) پس از تطبیق با یک بسته. .IP -r تفکیک نشانی‌های IP کانتینر به نام‌های کانتینر Docker یا Podman آن‌ها. هنگام فعال بودن، نشانی‌های IP به صورت .I container_name(ip_address) در خروجی بسته‌ها نمایش داده می‌شوند. در صورتی که سوکت Docker یا Podman در دسترس باشد، ngrep از Events API برای ردیابی بلادرنگ کانتینر استفاده می‌کند. در غیر این صورت، به روش نظرسنجی دوره‌ای (polling) مبتنی بر CLI با زمان حیات کش (cache TTL) ۳۰ ثانیه‌ای بازمی‌گردد. این ویژگی را می‌توان در زمان ساخت با .BR --disable-container-resolution حذف کرد. .SH "عبارت‌های تطبیق و فیلتر (MATCH AND FILTER EXPRESSIONS)" .IP "\fI match expression\fP" یک عبارت تطبیق، یا یک عبارت منظم توسعه‌یافته (extended regular expression) است، یا در صورتی که گزینه \fI-X\fP مشخص شده باشد، رشته‌ای است که بیانگر یک مقدار هگزادسیمال می‌باشد. یک عبارت منظم توسعه‌یافته از قوانینی که توسط .B GNU regex .BR library پیاده‌سازی شده است پیروی می‌کند. عبارات هگزادسیمال می‌توانند به صورت اختیاری با `0x' شروع شوند؛ مانند `DEADBEEF' یا `0xDEADBEEF'. .IP "\fI bpf filter\fP" فیلتری را انتخاب می‌کند که مشخص می‌سازد چه بسته‌هایی تخلیه (dump) شوند. اگر هیچ \fIbpf filter\fP تعیین نشود، تمام بسته‌های IP مشاهده‌شده روی رابط انتخابی تخلیه خواهند شد. در غیر این صورت، تنها بسته‌هایی که \fIbpf filter\fP برای آن‌ها `true' (درست) ارزیابی شود تخلیه می‌شوند. .LP فیلتر \fIbpf filter\fP از یک یا چند .I عبارت پایه (primitive) تشکیل شده است. عبارت‌های پایه معمولاً شامل یک .I شناسه (id) (نام یا شماره) هستند که یک یا چند توصیف‌کننده (qualifier) پیش از آن‌ها قرار می‌گیرد. سه نوع مختلف از توصیف‌کننده‌ها وجود دارد: .IP \fItype\fP توصیف‌کننده‌های نوع (type) مشخص می‌کنند که نام یا شماره شناسه به چه نوع موجودیتی اشاره دارد. انواع ممکن عبارتند از: .BR host ، .B net و .BR port . برای نمونه، `host blort'، `net 1.2.3'، `port 80'. اگر توصیف‌کننده نوع مشخص نشود، .B host فرض می‌شود. .IP \fIdir\fP توصیف‌کننده‌های جهت (dir) یک جهت انتقال خاص را به سمت و/یا از سمت .I id مشخص می‌کنند. جهت‌های ممکن عبارتند از: .BR src ، .BR dst ، .B "src or dst" و .B "src and" .BR dst . برای نمونه، `src foo'، `dst net 1.2.3'، `src or dst port ftp-data'. اگر توصیف‌کننده جهت مشخص نشود، .B "src or dst" فرض می‌شود. برای لایه‌های پیوند «null» (مانند پروتکل‌های نقطه به نقطه نظیر slip)، توصیف‌کننده‌های .B inbound و .B outbound می‌توانند برای تعیین جهت مورد نظر استفاده شوند. .IP \fIproto\fP توصیف‌کننده‌های پروتکل (proto) به پروتکل‌های فقط-IP محدود هستند. پروتکل‌های ممکن عبارتند از: .B tcp ، .B udp و .BR icmp . برای نمونه، `udp src foo' یا `tcp port 21'. اگر هیچ توصیف‌کننده پروتکلی وجود نداشته باشد، تمام پروتکل‌های سازگار با آن نوع فرض می‌شوند. برای نمونه، `src foo' به معنی `ip and ((tcp or udp) src foo)'، عبارت `net bar' به معنی `ip and (net bar)' و `port 53' به معنی `ip and ((tcp or udp) port 53)' است. .LP علاوه بر موارد فوق، چند کلیدواژه ویژه «پایه» وجود دارند که از این الگو پیروی نمی‌کنند: .BR gateway ، .BR broadcast ، .BR less ، .B greater و عبارات حسابی (arithmetic expressions). تمام این موارد در ادامه شرح داده شده‌اند. .LP عبارت‌های فیلتر پیچیده‌تر با استفاده از کلمات .BR and ، .B or و .B not برای ترکیب عبارت‌های پایه ساخته می‌شوند. برای نمونه، `host blort and not port ftp and not port ftp-data'. برای صرفه‌جویی در تایپ، می‌توان فهرست‌های توصیف‌کننده یکسان را حذف کرد. برای نمونه، `tcp dst port ftp or ftp-data or domain' دقیقاً معادل با `tcp dst port ftp or tcp dst port ftp-data or tcp dst port domain' است. .LP عبارت‌های پایه مجاز عبارتند از: .IP "\fBdst host \fIhost\fR" درست است اگر فیلد مقصد IP بسته برابر با \fIhost\fP باشد، که می‌تواند یک نشانی یا یک نام باشد. .IP "\fBsrc host \fIhost\fR" درست است اگر فیلد مبدا IP بسته برابر با \fIhost\fP باشد. .IP "\fBhost \fIhost\fP" درست است اگر مبدا یا مقصد IP بسته برابر با \fIhost\fP باشد. هر یک از عبارت‌های host بالا می‌توانند با کلیدواژه‌های \fBip\fP، \fBarp\fP یا \fBrarp\fP همراه شوند؛ مانند: .in +.5i .nf \fBip host \fIhost\fR .fi .in -.5i که معادل است با: .in +.5i .IP "\fBether dst \fIehost\fP" درست است اگر نشانی مقصد اترنت برابر با \fIehost\fP باشد. \fIEhost\fP می‌تواند یک نام از /etc/ethers یا یک شماره باشد (برای قالب عددی به .IR ethers (3N) مراجعه کنید). .IP "\fBether src \fIehost\fP" درست است اگر نشانی مبدا اترنت برابر با \fIehost\fP باشد. .IP "\fBether host \fIehost\fP" درست است اگر نشانی مبدا یا مقصد اترنت برابر با \fIehost\fP باشد. .IP "\fBgateway\fP \fIhost\fP" درست است اگر بسته از \fIhost\fP به عنوان دروازه (gateway) استفاده کرده باشد. یعنی نشانی مبدا یا مقصد اترنت \fIhost\fP بوده باشد اما نه مبدا IP و نه مقصد IP هیچ‌کدام \fIhost\fP نبوده باشند. \fIHost\fP باید یک نام باشد و باید در هر دوی /etc/hosts و /etc/ethers یافت شود. (یک عبارت معادل عبارت است از: .in +.5i .nf \fBether host \fIehost \fBand not host \fIhost\fR .fi .in -.5i که می‌توان آن را هم با نام‌ها و هم با شماره‌ها برای \fIhost / ehost\fP استفاده کرد.) .IP "\fBdst net \fInet\fR" درست است اگر نشانی مقصد IP بسته دارای شماره شبکه \fInet\fP باشد. \fINet\fP می‌تواند یک نام از /etc/networks یا یک شماره شبکه باشد (برای جزئیات به \fInetworks(4)\fP مراجعه کنید). .IP "\fBsrc net \fInet\fR" درست است اگر نشانی مبدا IP بسته دارای شماره شبکه \fInet\fP باشد. .IP "\fBnet \fInet\fR" درست است اگر نشانی مبدا یا مقصد IP بسته دارای شماره شبکه \fInet\fP باشد. .IP "\fBnet \fInet\fR \fBmask \fImask\fR" درست است اگر نشانی IP با \fInet\fR و با ماسک شبکه (netmask) مشخص‌شده مطابقت داشته باشد. می‌تواند با \fBsrc\fR یا \fBdst\fR توصیف شود. .IP "\fBnet \fInet\fR/\fIlen\fR" درست است اگر نشانی IP با \fInet\fR و با یک ماسک شبکه به پهنای \fIlen\fR بیت مطابقت داشته باشد. می‌تواند با \fBsrc\fR یا \fBdst\fR توصیف شود. .IP "\fBdst port \fIport\fR" درست است اگر بسته ip/tcp یا ip/udp باشد و مقدار پورت مقصد آن برابر با \fIport\fP باشد. مقدار \fIport\fP می‌تواند یک شماره یا یک نام استفاده‌شده در /etc/services باشد (به .IR tcp (4P) و .IR udp (4P) مراجعه کنید). اگر از یک نام استفاده شود، هم شماره پورت و هم پروتکل بررسی می‌شوند. اگر از یک شماره یا نام مبهم استفاده شود، فقط شماره پورت بررسی می‌شود (برای نمونه، \fBdst port 513\fR هم ترافیک tcp/login و هم ترافیک udp/who را چاپ می‌کند، و \fBport domain\fR هم ترافیک tcp/domain و هم udp/domain را چاپ می‌کند). .IP "\fBsrc port \fIport\fR" درست است اگر مقدار پورت مبدا بسته برابر با \fIport\fP باشد. .IP "\fBport \fIport\fR" درست است اگر پورت مبدا یا مقصد بسته برابر با \fIport\fP باشد. هر یک از عبارت‌های پورت بالا می‌توانند با کلیدواژه‌های \fBtcp\fP یا \fBudp\fP همراه شوند؛ مانند: .in +.5i .nf \fBtcp src port \fIport\fR .fi .in -.5i که تنها با بسته‌های tcp که پورت مبدا آن‌ها \fIport\fP است مطابقت دارد. .IP "\fBless \fIlength\fR" درست است اگر طول بسته کمتر یا مساوی با \fIlength\fP باشد. این معادل است با: .in +.5i .nf \fBlen <= \fIlength\fP. .fi .in -.5i .IP "\fBgreater \fIlength\fR" درست است اگر طول بسته بزرگتر یا مساوی با \fIlength\fP باشد. این معادل است با: .in +.5i .nf \fBlen >= \fIlength\fP. .fi .in -.5i .IP "\fBip proto \fIprotocol\fR" درست است اگر بسته یک بسته ip باشد (به .IR ip (4P) مراجعه کنید) با نوع پروتکل \fIprotocol\fP. مقدار \fIProtocol\fP می‌تواند یک شماره یا یکی از نام‌های \fItcp\fP، \fIudp\fP یا \fIicmp\fP باشد. توجه داشته باشید که شناسه‌های \fItcp\fP و \fIudp\fP نیز کلیدواژه هستند و باید با یک بک‌اسلش (\\) اسکیپ شوند، که در C-shell به صورت \\\\ است. .IP "\fBip broadcast\fR" درست است اگر بسته یک بسته پخشی (broadcast) از نوع IP باشد. این عبارت هر دو قرارداد پخشی تمام‌صفر و تمام‌یک را بررسی می‌کند و ماسک زیرشبکه (subnet mask) محلی را جستجو می‌کند. .IP "\fBip multicast\fR" درست است اگر بسته یک بسته چندپخشی (multicast) از نوع IP باشد. .IP "\fBip\fR" مخففی است برای: .in +.5i .nf \fBether proto ip\fR .fi .IP "\fBtcp\fR, \fBudp\fR, \fBicmp\fR" مخفف‌هایی هستند برای: .in +.5i .nf \fBip proto \fIp\fR .fi .in -.5i که در آن \fIp\fR یکی از پروتکل‌های بالا است. .IP "\fIexpr relop expr\fR" درست است اگر این رابطه برقرار باشد، که در آن \fIrelop\fR یکی از عملگرهای >، <، >=، <=، =، != است، و \fIexpr\fR یک عبارت حسابی متشکل از ثابت‌های صحیح (بیان‌شده در نحو استاندارد زبان C)، عملگرهای دودویی عادی [+, -, *, /, &, |]، عملگر طول و دسترسی‌دهنده‌های داده‌های ویژه بسته است. برای دسترسی به داده‌های درون بسته، از نحو زیر استفاده کنید: .in +.5i .nf \fIproto\fB [ \fIexpr\fB : \fIsize\fB ]\fR .fi .in -.5i مقدار \fIProto\fR یکی از \fBip، tcp، udp\fR یا \fBicmp\fR است و لایه پروتکل را برای عملیات شاخص‌گذاری مشخص می‌کند. آفست بایتی نسبت به لایه پروتکل مشخص‌شده با \fIexpr\fR داده می‌شود. مقدار \fISize\fR اختیاری است و تعداد بایت‌های فیلد مورد نظر را نشان می‌دهد؛ می‌تواند یک، دو یا چهار باشد و پیش‌فرض آن یک است. عملگر طول که با کلیدواژه \fBlen\fP مشخص می‌شود، طول بسته را برمی‌گرداند. برای نمونه، `\fBether[0] & 1 != 0\fP' تمام ترافیک چندپخشی (multicast) را دریافت می‌کند. عبارت `\fBip[0] & 0xf != 5\fP' تمام بسته‌های IP دارای گزینه‌ها (options) را می‌گیرد. عبارت `\fBip[6:2] & 0x1fff = 0\fP' تنها دیتاگرام‌های قطعه‌بندی‌نشده (unfragmented) و قطعه صفر از دیتاگرام‌های قطعه‌بندی‌شده را دریافت می‌کند. این بررسی به طور ضمنی روی عملیات شاخص‌گذاری \fBtcp\fP و \fBudp\fP اعمال می‌شود. برای نمونه، \fBtcp[0]\fP همیشه به معنی اولین بایت از \fIسرایند\fP TCP است و هرگز به معنای اولین بایت از یک قطعه میانی نیست. .LP عبارت‌های پایه می‌توانند با استفاده از موارد زیر ترکیب شوند: .IP یک گروه پرانتزدار از عبارت‌های پایه و عملگرها (پرانتزها برای شل معنای خاص دارند و باید اسکیپ شوند). .IP نقیض (`\fB!\fP' یا `\fBnot\fP'). .IP عطف / ترکیب عطفی (`\fB&&\fP' یا `\fBand\fP'). .IP فصل / ترکیب فصلی (`\fB||\fP' یا `\fBor\fP'). .LP نقیض بالاترین اولویت را دارد. فصل و عطف اولویت یکسانی دارند و از چپ به راست ارزیابی می‌شوند. توجه داشته باشید که اکنون نشانه‌های صریح \fBand\fR برای الحاق الزامی هستند و کنار هم قرار دادن ساده مجاز نیست. .LP اگر یک شناسه بدون کلیدواژه داده شود، جدیدترین کلیدواژه فرض می‌شود. برای نمونه: .in +.5i .nf \fBnot host vs and ace\fR .fi .in -.5i کوتاه‌شده عبارت زیر است: .in +.5i .nf \fBnot host vs and host ace\fR .fi .in -.5i که نباید با عبارت زیر اشتباه گرفته شود: .in +.5i .nf \fBnot ( host vs or ace )\fR .fi .in -.5i .LP آرگومان‌های عبارت می‌توانند به صورت یک آرگومان واحد یا چندین آرگومان به ngrep پاس داده شوند، هرکدام که راحت‌تر باشد. به طور کلی، اگر عبارت شامل نویسه‌های متا (metacharacters) شل باشد، انتقال آن به عنوان یک آرگومان واحد درون علامت نقل قول (کوتیشن) آسان‌تر است. چندین آرگومان قبل از پردازش، با فاصله به یکدیگر متصل می‌شوند. .SH "عیب‌یابی (DIAGNOSTICS)" خطاهای مربوط به .B ngrep، libpcap و .B GNU regex library همگی در stderr خروجی داده می‌شوند. .SH "وضعیت خروج (EXIT STATUS)" ابزار ngrep با یکی از مقادیر زیر خارج می‌شود: 0 یک یا چند فریم مطابقت یافتند. 1 هیچ فریمی مطابقت نیافت. 2 خطایی رخ داد. 3+ جهنم در حال یخ زدن است، فرار کنید! .SH "نویسنده (AUTHOR)" نوشته‌شده توسط Jordan Ritter . .SH "گزارش باگ‌ها (REPORTING BUGS)" لطفاً باگ‌ها را به ردیاب باگ GitHub ابزار ngrep گزارش دهید: http://github.com/jpr5/ngrep/issues بازخوردهای عمومی که گزارش باگ یا درخواست قابلیت جدید نیستند باید مستقیماً از طریق ایمیل به نویسنده ارسال شوند. .SH "نکات (NOTES)" ALL YOUR BASE ARE BELONG TO US.