.TH zzuf 1 "2015-01-06" "zzuf 0.15" .SH "نام (NAME)" zzuf \- فازر چندمنظوره .SH "خلاصه دستور (SYNOPSIS)" \fBzzuf\fR [\fB\-AcdimnqSvxX\fR] [\fB\-s\fR \fIseed\fR|\fB\-s\fR \fIstart:stop\fR] [\fB\-r\fR \fIratio\fR|\fB\-r\fR \fImin:max\fR] [\fB\-f\fR \fIfuzzing\fR] [\fB\-D\fR \fIdelay\fR] [\fB\-j\fR \fIjobs\fR] [\fB\-C\fR \fIcrashes\fR] [\fB\-B\fR \fIbytes\fR] [\fB\-t\fR \fIseconds\fR] [\fB\-T\fR \fIseconds\fR] [\fB\-U\fR \fIseconds\fR] [\fB\-M\fR \fImebibytes\fR] [\fB\-b\fR \fIranges\fR] [\fB\-p\fR \fIports\fR] [\fB\-P\fR \fIprotect\fR] [\fB\-R\fR \fIrefuse\fR] [\fB\-a\fR \fIlist\fR] [\fB\-l\fR \fIlist\fR] [\fB\-I\fR \fIinclude\fR] [\fB\-E\fR \fIexclude\fR] [\fB\-O\fR \fIopmode\fR] [\fIPROGRAM\fR [\fIARGS\fR]...] .br \fBzzuf \-h\fR | \fB\-\-help\fR .br \fBzzuf \-V\fR | \fB\-\-version\fR .SH "توضیحات (DESCRIPTION)" .PP برنامه \fBzzuf\fR یک ابزار فازینگ شفاف (transparent) برای ورودی برنامه‌ها است. این ابزار با رهگیری عملیات‌های مربوط به فایل و شبکه و تغییر تصادفی بیت‌ها در ورودی برنامه عمل می‌کند. رفتار \fBzzuf\fR معین و قطعی (deterministic) است که بازتولید باگ‌ها را آسان می‌سازد. .SH "نحوه استفاده (USAGE)" .PP ابزار \fBzzuf\fR برنامه مشخص‌شده در خط فرمان خود را یک یا چند بار، به همراه آرگومان‌های اختیاری اجرا کرده و رفتار مرتبط با آن برنامه را روی کانال خطای استاندارد گزارش می‌دهد؛ به عنوان مثال: .PP \fB zzuf cat /dev/zero\fR .PP پرچم‌هایی که پس از نام برنامه قرار می‌گیرند، آرگومان‌های برنامه مقصد محسوب می‌شوند و نه گزینه‌های \fBzzuf\fR. به عنوان مثال، در دستور زیر \fB\-v\fR یک آرگومان برای \fBcat\fR است: .PP \fB zzuf \-B 1000 cat \-v /dev/zero\fR .PP هنگامی که هیچ برنامه‌ای تعیین نشود، \fBzzuf\fR صرفاً ورودی استاندارد را فاز می‌کند؛ درست مانند اینکه ابزار \fBcat\fR فراخوانی شده باشد: .PP \fB zzuf < /dev/zero\fR .SH "گزینه‌ها (OPTIONS)" .SS "اطلاعات عمومی برنامه (Generic program information)" .TP \fB\-h\fR, \fB\-\-help\fR نمایش یک پیام راهنمای کوتاه و خروج. .TP \fB\-V\fR, \fB\-\-version\fR نمایش اطلاعات نسخه و خروج. .SS "حالت کاری (Operating mode)" .TP \fB\-f\fR, \fB\-\-fuzzing\fR=\fImode\fR انتخاب نحوه فاز شدن ورودی. مقادیر معتبر برای \fImode\fR عبارتند از: .RS .TP \fBxor\fR تنظیم و بازنشانی تصادفی بیت‌ها (0 به 1 و 1 به 0) .TP \fBset\fR تنها ۱ کردن بیت‌ها .TP \fBunset\fR تنها ۰ کردن بیت‌ها .RE .IP مقدار پیش‌فرض برای \fImode\fR برابر \fBxor\fR است. .TP \fB\-O\fR, \fB\-\-opmode\fR=\fImode\fR استفاده از حالت کاری \fImode\fR. مقادیر معتبر برای \fImode\fR عبارتند از: .RS .TP \fBpreload\fR بازنویسی توابع از طریق پیش‌بارگذاری libzzuf به داخل فایل اجرایی با استفاده از پیونددهنده پویای سیستم .TP \fBcopy\fR کپی موقت فایل‌هایی که باید فاز شوند .RE .IP مقدار پیش‌فرض برای \fImode\fR برابر \fBpreload\fR است. حالت \fBcopy\fR روی بسترهایی که از تزریق پیونددهنده پویا پشتیبانی نمی‌کنند، مثلاً هنگام فاز کردن یک برنامه Cocoa در Mac OS X، کاربرد دارد. .TP \fB\-s\fR, \fB\-\-seed\fR=\fIseed\fR .PD 0 .TP \fB\-s\fR, \fB\-\-seed\fR=\fIstart:\fR .PD 0 .TP \fB\-s\fR, \fB\-\-seed\fR=\fIstart:stop\fR .PD تعیین بذر تصادفی (seed) مورد استفاده برای فازینگ، یا بازه‌ای از بذرهای تصادفی. اجرای دوبار \fBzzuf\fR با یک بذر تصادفی یکسان، فایل‌ها را دقیقاً به همان روش فاز می‌کند؛ حتی اگر برنامه هدف متفاوت باشد. هدف از این قابلیت، استفاده از ابزارهای ساده‌ای مانند \fBcat\fR یا \fBcp\fR برای تولید فایلی است که موجب فروپاشی (crash) برنامه هدف می‌شود. اگر یک بازه مشخص شود، \fBzzuf\fR برنامه را چندین بار، هر بار با یک بذر متفاوت اجرا کرده و رفتار هر بار اجرا را گزارش می‌کند. اگر پس از علامت \(oq:\(cq هیچ مقدار \(oqstop\(cq تعیین نشود، \fBzzuf\fR مقدار بذر را تا بی‌نهایت افزایش می‌دهد. .TP \fB\-r\fR, \fB\-\-ratio\fR=\fIratio\fR .PD 0 .TP \fB\-r\fR, \fB\-\-ratio\fR=\fImin:max\fR .PD تعیین نسبت بیت‌هایی که باید به صورت تصادفی فاز شوند. مقدار 0 هیچ چیزی را فاز نمی‌کند. مقدار 0.05 به میزان ۵٪ از بیت‌های فایل‌های باز شده را فاز می‌کند. مقدار 1.0 یا بیشتر تمام بایت‌ها را فاز خواهد کرد که از نظر تئوری داده‌های فایل‌های ورودی را از داده‌های کاملاً تصادفی غیرقابل‌تشخیص می‌کند. نسبت پیش‌فرض فازینگ 0.004 است (فاز کردن ۰٫۴٪ از بیت‌های فایل‌ها). همچنین می‌توان یک بازه تعیین کرد. در این صورت، \fBzzuf\fR مقادیر نسبت را از درون بازه انتخاب خواهد کرد. این انتخاب قطعی است و تنها به حدود بازه و بذر فعلی بستگی دارد. .TP \fB\-A\fR, \fB\-\-autoinc\fR افزایش یک واحدی بذر تصادفی در هر بار باز شدن یک فایل جدید. این گزینه تنها زمانی لازم است که انتظار می‌رود یک نمونه از برنامه، یک فایل را چندین بار باز کند و شما بخواهید هر بار با یک بذر متفاوت آزموده شود..SS "خروجی (Output)" .TP \fB\-d\fR, \fB\-\-debug\fR فعال‌سازی نمایش پیام‌های اشکال‌زدایی (دیباگ). می‌تواند چندین بار برای افزایش پرگویی و جزئیات مشخص شود. .TP \fB\-q\fR, \fB\-\-quiet\fR پنهان کردن خروجی برنامه‌ی تحت فاز (fuzzed). این گزینه زمانی مفید است که برنامه خروجی بسیار پرحجمی دارد اما تنها کد خروج یا وضعیت سیگنال دریافت شده برای شما مفید است. .TP \fB\-v\fR, \fB\-\-verbose\fR چاپ اطلاعات در طول اجرا، مانند seed فعلی، اینکه چه فرایندهایی اجرا می‌شوند، وضعیت خروج آن‌ها، و غیره. .TP \fB\-m\fR, \fB\-\-md5\fR به جای نمایش \fIخروجی استاندارد\fR برنامه، تنها خلاصه (digest) ام‌دی۵ آن را در خروجی استاندارد \fBzzuf\fR چاپ می‌کند. کانال خطای استاندارد دست‌نخورده باقی می‌ماند. پرچم \fB\-X\fR را نیز ببینید. .TP \fB\-X\fR, \fB\-\-hex\fR تبدیل \fIخروجی استاندارد\fR برنامه‌ی تحت فاز به مبنای ۱۶ (هگزادسیمال). کانال خطای استاندارد دست‌نخورده باقی می‌ماند. پرچم \fB\-m\fR را نیز ببینید. .SS "کنترل فرایند (Process control)" .TP \fB\-B\fR, \fB\-\-max\-bytes\fR=\fIn\fR توقف خودکار پس از خروجی دادن \fIn\fR بایت. این گزینه یا فرایندهای فرزندی را که بیش از \fIn\fR بایت روی کانال‌های خروجی استاندارد و خطای استاندارد بنویسند پایان می‌دهد، یا در صورتی که برنامه‌ای تحت فاز نباشد، خواندن از ورودی استاندارد را متوقف می‌کند. این ویژگی برای تشخیص حلقه‌های بی‌نهایت مفید است. پرچم‌های \fB\-U\fR و \fB\-T\fR را نیز ببینید. .TP \fB\-C\fR, \fB\-\-max\-crashes\fR=\fIn\fR توقف ایجاد انشعاب (forking) هنگامی که دست‌کم \fIn\fR فرزند دچار فروپاشی (crash) شوند. مقدار پیش‌فرض ۱ است، به این معنی که \fBzzuf\fR به محض کرش کردن یک فرزند متوقف می‌شود. مقدار ۰ به \fBzzuf\fR می‌گوید که هرگز متوقف نشود. توجه داشته باشید که \fBzzuf\fR پس از رسیدن به \fIn\fR، فرزندان باقی‌مانده را از بین نمی‌برد. برای اطمینان از اینکه فرایندها تا ابد باقی نمانند، پرچم \fB\-U\fR را ببینید. فرایندی دچار کرش تلقی می‌شود که هر سیگنالی (مانند، اما نه محدود به، \fBSIGSEGV\fR) باعث خروج آن شده باشد. اگر پرچم \fB\-x\fR استفاده شود، این مورد فرایندهایی را که با وضعیت غیر صفر خارج می‌شوند نیز شامل خواهد شد. این گزینه تنها زمانی کاربرد دارد که پرچم \fB\-s\fR همراه با یک آرگومان بازه (range) استفاده شود. پرچم \fB\-t\fR را نیز ببینید. .TP \fB\-D\fR, \fB\-\-delay\fR=\fIdelay\fR بیش از یک فرایند در هر \fIdelay\fR ثانیه اجرا نشود. این گزینه باید همراه با \fB\-j\fR استفاده شود تا از بمب‌های فورک (fork bombs) جلوگیری به عمل آید. .TP \fB\-j\fR, \fB\-\-jobs\fR=\fIjobs\fR تعیین تعداد فرزندان همزمانی که می‌توانند اجرا شوند. به طور پیش‌فرض، \fBzzuf\fR در هر زمان تنها یک فرایند را اجرا می‌کند. این گزینه تنها زمانی کاربرد دارد که پرچم \fB\-s\fR همراه با یک آرگومان بازه استفاده شود. پرچم \fB\-D\fR را نیز ببینید. .TP \fB\-M\fR, \fB\-\-max\-memory\fR=\fImebibytes\fR تعیین حداکثر میزان حافظه بر حسب مبی‌بایت (۱ MiB = ۱٬۰۴۸٬۵۷۶ بایت) که فرزندان مجاز به تخصیص آن هستند. این گزینه برای تشخیص حلقه‌های بی‌نهایتی که حافظه زیادی مصرف می‌کنند مفید است. این مقدار باید به اندازه کافی بالا تنظیم شود تا تداخلی با عملکرد عادی برنامه نداشته باشد. به طور پیش‌فرض، برای جلوگیری از مبادله تصادفی و بیش از حد حافظه (excessive swapping)، روی 1024 MiB تنظیم شده است. برای غیرفعال کردن محدودیت، حداکثر مصرف حافظه را روی -1 قرار دهید. ابزار \fBzzuf\fR از فراخوانی \fBsetrlimit\fR() برای تنظیم محدودیت‌های مصرف حافظه استفاده می‌کند و به توانایی سیستم‌عامل در اعمال چنین محدودیت‌هایی متکی است. .TP \fB\-S\fR, \fB\-\-signal\fR جلوگیری از نصب گرداننده‌های سیگنال (signal handlers) توسط فرزندان برای سیگنال‌هایی که معمولاً باعث ایجاد core dump می‌شوند. این سیگنال‌ها عبارتند از: \fBSIGABRT\fR، \fBSIGFPE\fR، \fBSIGILL\fR، \fBSIGQUIT\fR، \fBSIGSEGV\fR، \fBSIGTRAP\fR و در صورت موجود بودن در بستری که برنامه اجرا می‌شود، \fBSIGSYS\fR، \fBSIGEMT\fR، \fBSIGBUS\fR، \fBSIGXCPU\fR و \fBSIGXFSZ\fR. برنامه به جای فراخوانی گرداننده سیگنال، به سادگی دچار کرش خواهد شد. اگر خواهان تخلیه حافظه (core dump) نیستید، باید با دستور \fBlimit coredumpsize\fR محدودیت‌های مناسب را تنظیم کنید. برای چگونگی تعیین این محدودیت‌ها، مستندات پوسته (shell) خود را ببینید. .TP \fB\-t\fR, \fB\-\-max\-time\fR=\fIn\fR توقف ایجاد انشعاب پس از \fIn\fR ثانیه. به طور پیش‌فرض، \fBzzuf\fR تا زمانی که به پایان بازه seed برسد اجرا می‌شود. توجه داشته باشید که \fBzzuf\fR پس از رسیدن به \fIn\fR ثانیه، فرزندان باقی‌مانده را از بین نمی‌برد. برای اطمینان از اینکه فرایندها تا ابد باقی نمانند، پرچم \fB\-U\fR را ببینید. این گزینه تنها زمانی کاربرد دارد که پرچم \fB\-s\fR همراه با یک آرگومان بازه استفاده شود. پرچم \fB\-C\fR را نیز ببینید. .TP \fB\-T\fR, \fB\-\-max\-cputime\fR=\fIn\fR پایان دادن خودکار به فرایندهای فرزندی که بیش از \fIn\fR ثانیه از زمان پردازنده (CPU time) استفاده می‌کنند. ابزار \fBzzuf\fR از فراخوانی \fBsetrlimit\fR() برای اعمال محدودیت‌های مصرف پردازنده استفاده می‌کند و به توانایی سیستم‌عامل در اعمال چنین محدودیت‌هایی متکی است. اگر سیستم سیگنال‌های \fBSIGXCPU\fR را ارسال کند و برنامه آن سیگنال را دریافت و مدیریت کند، پس از ۵ ثانیه یک سیگنال \fBSIGKILL\fR دریافت خواهد کرد. این گزینه دقیق‌تر از \fB\-U\fR است زیرا رفتار آن باید مستقل از بار سیستم باشد، اما فرایندهایی را که در فراخوانی‌های بی‌پایان \fBselect\fR() گیر افتاده‌اند تشخیص نمی‌دهد زیرا زمان پردازنده بسیار کمی مصرف می‌کنند. پرچم‌های \fB\-B\fR و \fB\-U\fR را نیز ببینید. .TP \fB\-U\fR, \fB\-\-max\-usertime\fR=\fIn\fR پایان دادن خودکار به فرایندهای فرزندی که بیش از \fIn\fR ثانیه اجرا شوند. این گزینه برای تشخیص حلقه‌های بی‌نهایت یا فرایندهای گیر افتاده در موقعیت‌های دیگر مفید است. پرچم‌های \fB\-B\fR و \fB\-T\fR را نیز ببینید. .TP \fB\-x\fR, \fB\-\-check\-exit\fR گزارش فرایندهایی که با وضعیتی غیر صفر خارج می‌شوند. به طور پیش‌فرض تنها فرایندهایی که به دلیل سیگنال دچار کرش شده‌اند گزارش می‌شوند..SS "پالایش (Filtering)" .TP \fB\-a\fR, \fB\-\-allow\fR=\fIlist\fR تنها ورودی شبکه را برای IPهای موجود در \fIlist\fR فاز می‌کند؛ \fIlist\fR فهرستی از آدرس‌های IP است که با کاما از یکدیگر جدا شده‌اند. اگر فهرست با \fB!\fR آغاز شود، مفهوم پرچم معکوس شده و تمام آدرس‌ها به‌جز موارد موجود در فهرست، فاز می‌شوند. در حال حاضر، این پرچم تنها آدرس‌های INET (IPv4) را پشتیبانی می‌کند. این گزینه مستلزم آن است که فازینگ شبکه با استفاده از \fB\-n\fR فعال شده باشد. .TP \fB\-b\fR, \fB\-\-bytes\fR=\fIranges\fR محدود کردن فازینگ به بایت‌هایی که آفست آن‌ها در فایل درون \fIranges\fR قرار دارد. مقادیر بازه از صفر آغاز می‌شوند و شامل دو سر بازه هستند. میان مقادیر بازه از خط پیوند و میان بازه‌ها از کاما استفاده کنید. اگر بخش سمت راست یک بازه حذف شود، به معنای انتهای فایل است. برای نمونه، جهت محدود کردن فازینگ به بایت‌های ۰، ۳، ۴، ۵ و همهٔ بایت‌های پس از آفست ۳۱، از \(oq\fB\-b0,3\-5,31\-\fR\(cq استفاده کنید. این گزینه برای دست‌نخورده نگه‌داشتن سرایندهای فایل یا خراب‌سازی کنترل‌شدهٔ تنها بخشی خاص از یک فایل کاربرد دارد. .TP \fB\-c\fR, \fB\-\-cmdline\fR تنها فایل‌هایی را فاز می‌کند که نام آن‌ها در خط فرمان برنامهٔ هدف مشخص شده باشد. این در اصل یک میانبر است تا از مشخص کردن دوبارهٔ آرگومان جلوگیری شود: \fB zzuf \-c cat file.txt\fR دارای همان اثری است که \fB zzuf \-I \(aq^file\\.txt$\(aq cat file.txt\fR برای اطلاعات بیشتر پیرامون محدود کردن فازینگ به فایل‌های مشخص، پرچم \fB\-I\fR را ببینید. .TP \fB\-E\fR, \fB\-\-exclude\fR=\fIregex\fR فایل‌هایی را که نام آن‌ها با عبارت باقاعدهٔ \fIregex\fR مطابقت دارد، فاز نمی‌کند. این گزینه نسبت به هر چیزی که توسط پرچم \fB\-I\fR تعیین شده باشد ارجحیت دارد. برای نمونه در حالتی از این گزینه استفاده کنید که مطمئن نیستید برنامه‌تان چه فایل‌هایی را خواهد خواند و نمی‌خواهید فایل‌های درون دایرکتوری \fB/etc\fR فاز شوند. می‌توان چندین پرچم \fB\-E\fR را مشخص کرد، که در این صورت فایل‌های منطبق با هر یک از عبارت‌های باقاعده نادیده گرفته خواهند شد. .TP \fB\-i\fR, \fB\-\-stdin\fR فاز کردن ورودی استاندارد برنامه. به‌طور پیش‌فرض، \fBzzuf\fR تنها فایل‌ها را فاز می‌کند. .TP \fB\-I\fR, \fB\-\-include\fR=\fIregex\fR تنها فایل‌هایی را فاز می‌کند که نام آن‌ها با عبارت باقاعدهٔ \fIregex\fR مطابقت دارد. برای نمونه هنگامی از این گزینه استفاده کنید که برنامهٔ شما در زمان راه‌اندازی فایل‌های پیکربندی را می‌خواند و تنها می‌خواهید فایل‌های مشخصی فاز شوند. می‌توان چندین پرچم \fB\-I\fR را مشخص کرد، که در این حالت فایل‌های منطبق با هر یک از عبارت‌های باقاعده فاز خواهند شد. همچنین پرچم \fB\-c\fR را ببینید. .TP \fB\-l\fR, \fB\-\-list\fR=\fIlist\fR انتخاب دست‌چین‌شدهٔ فهرستی از توصیف‌گرهای فایل (file descriptors) که فاز می‌شوند. توصیف‌گر Nام تنها در صورتی واقعاً فاز خواهد شد که N در \fIlist\fR باشد. مقادیر از ۱ آغاز می‌شوند و بازه‌ها فراگیر هستند. میان مقادیر از خط پیوند و میان بازه‌ها از کاما استفاده کنید. اگر بخش سمت راست یک بازه درج نشود، به معنای تمام توصیف‌گرهای فایل بعدی است. برای نمونه، جهت محدود کردن فازینگ به نخستین توصیف‌گر بازشده و تمام توصیف‌گرها از دهمی به بعد، از \(oq\fB\-l1,10\-\fR\(cq استفاده کنید. توجه داشته باشید که این گزینه تنها بر توصیف‌گرهای فایلی اثر می‌گذارد که در غیر این صورت فاز می‌شدند. حتی اگر در آغاز برنامه ۱۰ توصیف‌گر فقط‌نوشتنی (write-only) باز شوند، تنها توصیف‌گر بعدی دارای پرچم خواندن (read)، نخستین موردی خواهد بود که پرچم \fB\-l\fR آن را به شمار می‌آورد. .TP \fB\-P\fR, \fB\-\-protect\fR=\fIlist\fR محافظت از فهرستی از نویسه‌ها به گونه‌ای که اگر در داده‌های ورودی ظاهر شوند که معمولاً فاز می‌شدند، بدون تغییر باقی بمانند. نویسه‌ها در \fIlist\fR می‌توانند به صورت لفظی یا از طریق دنباله‌های گریز بیان شوند. دنباله‌هایی که توسط \fBzzuf\fR تفسیر می‌شوند عبارتند از: .RS .TP \fB\\n\fR سطر جدید .TP \fB\\r\fR بازگشت به ابتدای سطر .TP \fB\\t\fR فاصلهٔ زبانه (tabulation) .TP \fB\\\fR\fINNN\fR بایتی که مقدار هشت‌هشتی (octal) آن \fINNN\fR است .TP \fB\\x\fR\fINN\fR بایتی که مقدار شانزده‌شانزدهی (hexadecimal) آن \fINN\fR است .TP \fB\\\\\fR بک‌اسلش (\(oq\\\(cq) .RE .IP می‌توانید برای مشخص کردن بازه‌ها از \(oq\fB\-\fR\(cq استفاده کنید. برای نمونه، جهت محافظت از تمام بایت‌ها از \(oq\\001\(cq تا \(oq/\(cq، از \(oq\fB\-P\ \(aq\\001\-/\(aq\fR\(cq استفاده کنید. پیامد آماری این گزینه نباید نادیده گرفته شود: چنانچه نویسه‌ها محافظت شوند، اثر پرچم \(oq\fB\-r\fR\(cq بسته به داده‌هایی که فاز می‌شوند متغیر خواهد بود. برای نمونه، درخواست برای فاز کردن ۱٪ از بیت‌های ورودی (\fB\-r0.01\fR) و محافظت از نویسه‌های کوچک لاتین (\fB\-P\ a\-z\fR)، منجر به نسبت میانگین فازینگ واقعیِ ۰٫۹٪ برای داده‌های کاملاً تصادفی، ۰٫۳٪ برای داده‌های تصادفی ASCII و ۰٫۲٪ برای متن استاندارد انگلیسی خواهد شد. همچنین پرچم \fB\-R\fR را ببینید. .TP \fB\-R\fR, \fB\-\-refuse\fR=\fIlist\fR رد کردن فهرستی از نویسه‌ها از طریق فاز نکردن بایت‌هایی که در غیر این صورت به نویسه‌ای موجود در \fIlist\fR تبدیل می‌شدند. اگر بایت اصلی از ابتدا درون \fIlist\fR بوده باشد، این گزینه مانع از حضور آن نویسه در خروجی نمی‌شود. برای توضیحات مربوط به \fIlist\fR، گزینهٔ \fB\-P\fR را ببینید..SS "شبکه (Network)" .TP \fB\-n\fR, \fB\-\-network\fR ورودی شبکه برنامه را فاز (fuzz) می‌کند. به‌طور پیش‌فرض \fBzzuf\fR فقط فایل‌ها را فاز می‌کند. تنها اتصال‌های INET (IPv4) و INET6 (IPv6) فاز می‌شوند. سایر خانواده‌های پروتکل هنوز پشتیبانی نمی‌شوند. .TP \fB\-p\fR, \fB\-\-ports\fR=\fIranges\fR تنها پورت‌های شبکه‌ای را فاز می‌کند که در \fIranges\fR قرار دارند. به‌طور پیش‌فرض \fBzzuf\fR تمام پورت‌ها را فاز می‌کند. اگر سوکت در حال شنود (listening) باشد پورت در نظر گرفته‌شده پورت شنود است و اگر سوکت در حال اتصال (connecting) باشد پورت مقصد است؛ زیرا در اکثر مواقع نمی‌توان پورت مبدأ را پیش‌بینی کرد. مقادیر بازه از صفر آغاز می‌شوند و شامل خود مقادیر نیز هستند. از خط تیره بین مقادیر بازه و از ویرگول بین بازه‌ها استفاده کنید. اگر بخش سمت راست یک بازه حذف شود، به معنای انتهای فایل است. برای نمونه، جهت محدود کردن فازینگ به پورت‌های HTTP و HTTPS و تمام پورت‌های غیرممتاز (unprivileged)، از \(oq\fB\-p80,443,1024\-\fR\(cq استفاده کنید. این گزینه نیازمند فعال بودن فازینگ شبکه با استفاده از \fB\-n\fR است. .SH "خطاها (DIAGNOSTICS)" .PP در صورتی که هیچ فرآیند فرزندی دچار فروپاشی (crash) نشود، وضعیت خروج صفر است. اگر یک یا چند فرزند دچار فروپاشی شوند، \fBzzuf\fR با وضعیت ۱ خارج می‌شود. .SH "مثال‌ها (EXAMPLES)" .PP فاز کردن ورودی برنامه \fBcat\fR با استفاده از تنظیمات پیش‌فرض: .PP \fB zzuf cat /etc/motd\fR .PP فاز کردن ۱٪ از بیت‌های ورودی برنامه \fBcat\fR با استفاده از سید (seed) ۹۴۳۲۴: .PP \fB zzuf \-s94324 \-r0.01 cat /etc/motd\fR .PP فاز کردن ورودی برنامه \fBcat\fR بدون فاز کردن نویسه‌های خط جدید (newline) و جلوگیری از ظاهر شدن نویسه‌های غیر ASCII در خروجی: .PP \fB zzuf \-P \(aq\\n\(aq \-R \(aq\\x00\-\\x1f\\x7f\-\\xff\(aq cat /etc/motd\fR .PP فاز کردن ورودی برنامه \fBconvert\fR با استفاده از فایل \fBfoo.jpeg\fR به عنوان ورودی اصلی و مستثنی کردن فایل‌های \fB.xml\fR از فازینگ (زیرا \fBconvert\fR فایل‌های پیکربندی XML خود را نیز باز می‌کند و ما نمی‌خواهیم \fBzzuf\fR آن‌ها را فاز کند): .PP \fB zzuf \-E \(aq\\.xml$\(aq convert foo.jpeg \-format tga /dev/null\fR .PP فاز کردن ورودی VLC، با استفاده از فایل \fBmovie.avi\fR به عنوان ورودی اصلی و محدود کردن فازینگ به نام‌فایل‌هایی که در خط فرمان ظاهر می‌شوند (\fB\-c\fR)، و سپس تولید فایل \fBfuzzy\-movie.avi\fR که فایلی قابل خواندن توسط VLC برای بازتولید همان رفتار بدون استفاده از \fBzzuf\fR است: .PP \fB zzuf \-c \-s87423 \-r0.01 vlc movie.avi\fR .br \fB zzuf \-c \-s87423 \-r0.01 fuzzy\-movie.avi\fR .br \fB vlc fuzzy\-movie.avi\fR .PP فاز کردن بین ۰٫۱٪ و ۲٪ از بیت‌های ورودی MPlayer با (\fB\-r0.001:0.02\fR) با سیدهای ۰ تا ۹۹۹۹ (\fB\-s0:10000\fR)، حفظ سرایند (header) ۴ بایتی AVI با محدود کردن فازینگ به آفست‌های پس از ۴ (\fB\-b4\-\fR)، غیرفعال کردن پیام‌های خروجی استاندارد آن (\fB\-q\fR)، اجرای هم‌زمان حداکثر پنج فرآیند فرزند (\fB\-j5\fR) اما با حداقل نیم ثانیه انتظار میان اجراها (\fB\-D0.5\fR)، از بین بردن MPlayer اگر خواندن فایل بیش از یک دقیقه طول بکشد (\fB\-T60\fR) و غیرفعال کردن گرداننده سیگنال \fBSIGSEGV\fR آن (\fB\-S\fR): .PP \fB zzuf \-c \-r0.001:0.02 \-s0:10000 \-b4\- \-q \-j5 \-D0.5 \-T60 \-S \\\fR .br \fB mplayer \-benchmark \-vo null \-fps 1000 movie.avi\fR .PP یک مثال پیشرفته‌تر از فازینگ VLC، که فقط در اولین فروپاشی (crash) متوقف می‌شود: .PP \fB zzuf \-j4 \-vqc \-r0.000001:0.01 \-s0: vlc \-v \-I dummy movie.avi \\\fR .br \fB \-\-sout \(aq#transcode{acodec=s16l,vcodec=I420}:dummy\(aq vlc:quit .PP ایجاد یک فایل شبه‌HTML که تصویر یکسان \fBhello.jpg\fR را ۲۰۰ بار بارگذاری می‌کند و باز کردن آن در Firefox\(tm در حالت افزایش خودکار (\fB\-A\fR): .PP \fB seq \-f \(aq\(aq 1 200 > hello.html\fR .br (یا: \fBjot \-w \(aq\(aq 200 1 > hello.html\fR) .br \fB zzuf \-A \-I \(aqhello[.]jpg\(aq \-r0.001 firefox hello.html\fR .PP اجرای یک هدایت‌کننده (redirector) ساده HTTP روی میزبان محلی با استفاده از \fBsocat\fR و دستکاری هر اتصال شبکه (\fB\-n\fR) به شکلی متفاوت (\fB\-A\fR) پس از اینکه یک مگابایت داده روی آن دریافت شد (\fB\-b1000000\-\fR): .PP \fB zzuf \-n \-A \-b1000000\- \\\fR \fB socat TCP4\-LISTEN:8080,reuseaddr,fork TCP4:192.168.1.42:80\fR .PP وب‌گردی در اینترنت (\fB\-n\fR) با استفاده از Firefox\(tm بدون فاز کردن فایل‌های محلی (\fB\-E.\fR) یا اتصالات غیر HTTP با (\fB\-p80,8010,8080\fR)، با حفظ ابتدای داده‌های ارسال‌شده با هر پاسخ HTTP با (\fB\-b4000\-\fR) و استفاده از یک سید دیگر در هر اتصال (\fB\-A\fR): .PP \fB zzuf \-r 0.0001 \-n \-E. \-p80,8010,8080 \-b4000\- \-A firefox\fR.SH "محدودیت‌ها (RESTRICTIONS)" .PP به دلیل استفاده \fBzzuf\fR از پیش‌بارگذاری شیء مشترک (\fBLD_PRELOAD\fR، \fB_RLD_LIST\fR، \fBDYLD_INSERT_LIBRARIES\fR و غیره) برای اجرای فرآیندهای فرزند خود، در حضور هر سازوکاری که پیش‌بارگذاری را غیرفعال کند، با شکست مواجه خواهد شد. برای نمونه باینری‌های setuid root هنگام اجرا توسط یک کاربر فاقد امتیاز، فاز (fuzz) نخواهند شد. .PP به همین دلایل، \fBzzuf\fR با باینری‌های با پیوند ایستا (statically linked) نیز کار نخواهد کرد. هنگام استفاده از \fBzzuf\fR در پلتفرم OpenBSD، جایی که \fBcat\fR، \fBcp\fR و \fBdd\fR باینری‌های ایستا هستند، این نکته را در نظر داشته باشید. .PP اگرچه نهایت تلاش انجام شده است، رفتار یکسان در نسخه‌های مختلف \fBzzuf\fR تضمین نمی‌شود. بازتولیدپذیری برای فراخوانی‌های بعدی روی سیستم‌عامل‌های مختلف و با برنامه‌های هدف متفاوت، تنها زمانی تضمین می‌شود که از همان نسخه \fBzzuf\fR استفاده شود. .SH "گزارش باگ‌ها (BUGS)" .PP احتمالاً \fBzzuf\fR در مواجهه با آفست‌های ۶۴بیتی به درستی رفتار نمی‌کند. .PP هنوز امکان درج یا حذف بایت‌ها از ورودی، فاز کردن بر اساس ساختار فایل، جابه‌جایی بایت‌ها و غیره وجود ندارد. روش‌های فازینگ پیشرفته‌تری در برنامه‌ریزی قرار دارند. .PP در حال حاضر، \fBzzuf\fR واقعاً از برنامه‌های چندنخی (multithreaded) پشتیبانی نمی‌کند. رفتار آن در برنامه‌های چندنخی که در آن‌ها بیش از یک نخ عملیات توصیف‌کننده فایل (file descriptor) را انجام می‌دهد، تعریف‌نشده است. .SH "تاریخچه (HISTORY)" .PP \fBzzuf\fR فعالیت خود را در سال ۲۰۰۲ به عنوان ابزار \fBstreamfucker\fR آغاز کرد؛ یک خراب‌کننده کوچک جریان چندرسانه‌ای که برای یافتن باگ‌ها در VLC media player استفاده می‌شد. .SH "همچنین ببینید (SEE ALSO)" .PP \fBlibzzuf\fR(3)، \fBzzat\fR(1) .SH "نویسندگان (AUTHORS)" .PP کپی‌رایت \(co 2002\-2015 متعلق به Sam Hocevar است. .PP \fBzzuf\fR و این صفحه راهنما، نرم‌افزار آزاد هستند. آن‌ها تا جایی که قوانین مربوطه اجازه می‌دهند، بدون هیچ‌گونه ضمانتی ارائه می‌شوند. شما می‌توانید طبق شرایط مجوز Do What the Fuck You Want to Public License، نسخه ۲، همان‌طور که توسط WTFPL Task Force منتشر شده است، آن‌ها را بازتوزیع کرده یا تغییر دهید. برای اطلاعات بیشتر \fBhttp://www.wtfpl.net\fR را ببینید. .PP صفحه وب \fBzzuf\fR در نشانی \fBhttp://caca.zoy.org/wiki/zzuf\fR قابل دسترسی است. نمایی کلی از معماری و سازوکارهای داخلی در نشانی \fBhttp://caca.zoy.org/wiki/zzuf/internals\fR قرار دارد.