| zzuf(1) | General Commands Manual | zzuf(1) |
نام (NAME)
zzuf - فازر چندمنظوره
خلاصه دستور (SYNOPSIS)
zzuf [-AcdimnqSvxX] [-s seed|-s
start:stop] [-r ratio|-r min:max]
[-f fuzzing] [-D delay] [-j jobs]
[-C crashes] [-B bytes] [-t
seconds] [-T seconds] [-U seconds]
[-M mebibytes] [-b ranges] [-p
ports] [-P protect] [-R refuse]
[-a list] [-l list] [-I include]
[-E exclude] [-O opmode] [PROGRAM
[ARGS]...]
zzuf -h | --help
zzuf -V | --version
توضیحات (DESCRIPTION)
برنامه zzuf یک ابزار فازینگ شفاف (transparent) برای ورودی برنامهها است. این ابزار با رهگیری عملیاتهای مربوط به فایل و شبکه و تغییر تصادفی بیتها در ورودی برنامه عمل میکند. رفتار zzuf معین و قطعی (deterministic) است که بازتولید باگها را آسان میسازد.
نحوه استفاده (USAGE)
ابزار zzuf برنامه مشخصشده در خط فرمان خود را یک یا چند بار، به همراه آرگومانهای اختیاری اجرا کرده و رفتار مرتبط با آن برنامه را روی کانال خطای استاندارد گزارش میدهد؛ به عنوان مثال:
zzuf cat /dev/zero
پرچمهایی که پس از نام برنامه قرار میگیرند، آرگومانهای برنامه مقصد محسوب میشوند و نه گزینههای zzuf. به عنوان مثال، در دستور زیر -v یک آرگومان برای cat است:
zzuf -B 1000 cat -v /dev/zero
هنگامی که هیچ برنامهای تعیین نشود، zzuf صرفاً ورودی استاندارد را فاز میکند؛ درست مانند اینکه ابزار cat فراخوانی شده باشد:
zzuf < /dev/zero
گزینهها (OPTIONS)
اطلاعات عمومی برنامه (Generic program information)
- -h, --help
- نمایش یک پیام راهنمای کوتاه و خروج.
- -V, --version
- نمایش اطلاعات نسخه و خروج.
حالت کاری (Operating mode)
- -f, --fuzzing=mode
- انتخاب نحوه فاز شدن ورودی. مقادیر معتبر برای mode عبارتند از:
- مقدار پیشفرض برای mode برابر xor است.
- -O, --opmode=mode
- استفاده از حالت کاری mode. مقادیر معتبر برای mode عبارتند از:
- مقدار پیشفرض برای mode برابر preload است. حالت copy روی بسترهایی که از تزریق پیونددهنده پویا پشتیبانی نمیکنند، مثلاً هنگام فاز کردن یک برنامه Cocoa در Mac OS X، کاربرد دارد.
- -s, --seed=seed
- -s, --seed=start:
- -s, --seed=start:stop
- تعیین بذر
تصادفی (seed)
مورد
استفاده
برای
فازینگ، یا
بازهای از
بذرهای
تصادفی.
اجرای
دوبار zzuf با
یک بذر
تصادفی
یکسان،
فایلها را
دقیقاً به
همان روش
فاز
میکند؛
حتی اگر
برنامه هدف
متفاوت
باشد. هدف
از این
قابلیت،
استفاده از
ابزارهای
سادهای
مانند cat یا
cp برای
تولید
فایلی است
که موجب
فروپاشی (crash)
برنامه هدف
میشود.
اگر یک بازه مشخص شود، zzuf برنامه را چندین بار، هر بار با یک بذر متفاوت اجرا کرده و رفتار هر بار اجرا را گزارش میکند. اگر پس از علامت ‘:’ هیچ مقدار ‘stop’ تعیین نشود، zzuf مقدار بذر را تا بینهایت افزایش میدهد.
- -r, --ratio=ratio
- -r, --ratio=min:max
- تعیین نسبت
بیتهایی
که باید به
صورت
تصادفی فاز
شوند. مقدار
0 هیچ چیزی
را فاز
نمیکند.
مقدار 0.05 به
میزان ۵٪ از
بیتهای
فایلهای
باز شده را
فاز میکند.
مقدار 1.0 یا
بیشتر تمام
بایتها را
فاز خواهد
کرد که از
نظر تئوری
دادههای
فایلهای
ورودی را از
دادههای
کاملاً
تصادفی
غیرقابلتشخیص
میکند.
نسبت
پیشفرض
فازینگ 0.004
است (فاز
کردن ۰٫۴٪
از بیتهای
فایلها).
همچنین میتوان یک بازه تعیین کرد. در این صورت، zzuf مقادیر نسبت را از درون بازه انتخاب خواهد کرد. این انتخاب قطعی است و تنها به حدود بازه و بذر فعلی بستگی دارد.
- -A, --autoinc
- افزایش یک واحدی بذر تصادفی در هر بار باز شدن یک فایل جدید. این گزینه تنها زمانی لازم است که انتظار میرود یک نمونه از برنامه، یک فایل را چندین بار باز کند و شما بخواهید هر بار با یک بذر متفاوت آزموده شود..SS "خروجی (Output)"
- -d, --debug
- فعالسازی نمایش پیامهای اشکالزدایی (دیباگ). میتواند چندین بار برای افزایش پرگویی و جزئیات مشخص شود.
- -q, --quiet
- پنهان کردن خروجی برنامهی تحت فاز (fuzzed). این گزینه زمانی مفید است که برنامه خروجی بسیار پرحجمی دارد اما تنها کد خروج یا وضعیت سیگنال دریافت شده برای شما مفید است.
- -v, --verbose
- چاپ اطلاعات در طول اجرا، مانند seed فعلی، اینکه چه فرایندهایی اجرا میشوند، وضعیت خروج آنها، و غیره.
- -m, --md5
- به جای نمایش خروجی استاندارد برنامه، تنها خلاصه (digest) امدی۵ آن را در خروجی استاندارد zzuf چاپ میکند. کانال خطای استاندارد دستنخورده باقی میماند. پرچم -X را نیز ببینید.
- -X, --hex
- تبدیل خروجی استاندارد برنامهی تحت فاز به مبنای ۱۶ (هگزادسیمال). کانال خطای استاندارد دستنخورده باقی میماند. پرچم -m را نیز ببینید.
کنترل فرایند (Process control)
- -B, --max-bytes=n
- توقف
خودکار پس
از خروجی
دادن n
بایت.
این گزینه یا فرایندهای فرزندی را که بیش از n بایت روی کانالهای خروجی استاندارد و خطای استاندارد بنویسند پایان میدهد، یا در صورتی که برنامهای تحت فاز نباشد، خواندن از ورودی استاندارد را متوقف میکند.
این ویژگی برای تشخیص حلقههای بینهایت مفید است. پرچمهای -U و -T را نیز ببینید.
- -C, --max-crashes=n
- توقف ایجاد
انشعاب (forking)
هنگامی که
دستکم n
فرزند دچار
فروپاشی (crash)
شوند. مقدار
پیشفرض ۱
است، به این
معنی که zzuf
به محض کرش
کردن یک
فرزند
متوقف
میشود.
مقدار ۰ به
zzuf میگوید
که هرگز
متوقف نشود.
توجه داشته باشید که zzuf پس از رسیدن به n، فرزندان باقیمانده را از بین نمیبرد. برای اطمینان از اینکه فرایندها تا ابد باقی نمانند، پرچم -U را ببینید.
فرایندی دچار کرش تلقی میشود که هر سیگنالی (مانند، اما نه محدود به، SIGSEGV) باعث خروج آن شده باشد. اگر پرچم -x استفاده شود، این مورد فرایندهایی را که با وضعیت غیر صفر خارج میشوند نیز شامل خواهد شد.
این گزینه تنها زمانی کاربرد دارد که پرچم -s همراه با یک آرگومان بازه (range) استفاده شود. پرچم -t را نیز ببینید.
- -D, --delay=delay
- بیش از یک فرایند در هر delay ثانیه اجرا نشود. این گزینه باید همراه با -j استفاده شود تا از بمبهای فورک (fork bombs) جلوگیری به عمل آید.
- -j, --jobs=jobs
- تعیین
تعداد
فرزندان
همزمانی که
میتوانند
اجرا شوند.
به طور
پیشفرض،
zzuf در هر
زمان تنها
یک فرایند
را اجرا
میکند.
این گزینه تنها زمانی کاربرد دارد که پرچم -s همراه با یک آرگومان بازه استفاده شود. پرچم -D را نیز ببینید.
- -M, --max-memory=mebibytes
- تعیین
حداکثر
میزان
حافظه بر
حسب
مبیبایت (۱
MiB =
۱٬۰۴۸٬۵۷۶
بایت) که
فرزندان
مجاز به
تخصیص آن
هستند. این
گزینه برای
تشخیص
حلقههای
بینهایتی
که حافظه
زیادی مصرف
میکنند
مفید است.
این مقدار باید به اندازه کافی بالا تنظیم شود تا تداخلی با عملکرد عادی برنامه نداشته باشد. به طور پیشفرض، برای جلوگیری از مبادله تصادفی و بیش از حد حافظه (excessive swapping)، روی 1024 MiB تنظیم شده است. برای غیرفعال کردن محدودیت، حداکثر مصرف حافظه را روی -1 قرار دهید.
ابزار zzuf از فراخوانی setrlimit() برای تنظیم محدودیتهای مصرف حافظه استفاده میکند و به توانایی سیستمعامل در اعمال چنین محدودیتهایی متکی است.
- -S, --signal
- جلوگیری از نصب گردانندههای سیگنال (signal handlers) توسط فرزندان برای سیگنالهایی که معمولاً باعث ایجاد core dump میشوند. این سیگنالها عبارتند از: SIGABRT، SIGFPE، SIGILL، SIGQUIT، SIGSEGV، SIGTRAP و در صورت موجود بودن در بستری که برنامه اجرا میشود، SIGSYS، SIGEMT، SIGBUS، SIGXCPU و SIGXFSZ. برنامه به جای فراخوانی گرداننده سیگنال، به سادگی دچار کرش خواهد شد. اگر خواهان تخلیه حافظه (core dump) نیستید، باید با دستور limit coredumpsize محدودیتهای مناسب را تنظیم کنید. برای چگونگی تعیین این محدودیتها، مستندات پوسته (shell) خود را ببینید.
- -t, --max-time=n
- توقف ایجاد
انشعاب پس
از n ثانیه.
به طور
پیشفرض،
zzuf تا زمانی
که به پایان
بازه seed برسد
اجرا
میشود.
توجه داشته باشید که zzuf پس از رسیدن به n ثانیه، فرزندان باقیمانده را از بین نمیبرد. برای اطمینان از اینکه فرایندها تا ابد باقی نمانند، پرچم -U را ببینید.
این گزینه تنها زمانی کاربرد دارد که پرچم -s همراه با یک آرگومان بازه استفاده شود. پرچم -C را نیز ببینید.
- -T, --max-cputime=n
- پایان دادن
خودکار به
فرایندهای
فرزندی که
بیش از n
ثانیه از
زمان
پردازنده (CPU
time) استفاده
میکنند.
ابزار zzuf از فراخوانی setrlimit() برای اعمال محدودیتهای مصرف پردازنده استفاده میکند و به توانایی سیستمعامل در اعمال چنین محدودیتهایی متکی است. اگر سیستم سیگنالهای SIGXCPU را ارسال کند و برنامه آن سیگنال را دریافت و مدیریت کند، پس از ۵ ثانیه یک سیگنال SIGKILL دریافت خواهد کرد.
این گزینه دقیقتر از -U است زیرا رفتار آن باید مستقل از بار سیستم باشد، اما فرایندهایی را که در فراخوانیهای بیپایان select() گیر افتادهاند تشخیص نمیدهد زیرا زمان پردازنده بسیار کمی مصرف میکنند. پرچمهای -B و -U را نیز ببینید.
- -U, --max-usertime=n
- پایان دادن خودکار به فرایندهای فرزندی که بیش از n ثانیه اجرا شوند. این گزینه برای تشخیص حلقههای بینهایت یا فرایندهای گیر افتاده در موقعیتهای دیگر مفید است. پرچمهای -B و -T را نیز ببینید.
- -x, --check-exit
- گزارش فرایندهایی که با وضعیتی غیر صفر خارج میشوند. به طور پیشفرض تنها فرایندهایی که به دلیل سیگنال دچار کرش شدهاند گزارش میشوند..SS "پالایش (Filtering)"
- -a, --allow=list
- تنها ورودی
شبکه را
برای IPهای
موجود در list
فاز
میکند؛ list
فهرستی از
آدرسهای IP
است که با
کاما از
یکدیگر جدا
شدهاند.
اگر فهرست
با ! آغاز
شود، مفهوم
پرچم معکوس
شده و تمام
آدرسها
بهجز
موارد
موجود در
فهرست، فاز
میشوند.
در حال حاضر، این پرچم تنها آدرسهای INET (IPv4) را پشتیبانی میکند.
این گزینه مستلزم آن است که فازینگ شبکه با استفاده از -n فعال شده باشد.
- -b, --bytes=ranges
- محدود کردن
فازینگ به
بایتهایی
که آفست
آنها در
فایل درون
ranges قرار
دارد.
مقادیر بازه از صفر آغاز میشوند و شامل دو سر بازه هستند. میان مقادیر بازه از خط پیوند و میان بازهها از کاما استفاده کنید. اگر بخش سمت راست یک بازه حذف شود، به معنای انتهای فایل است. برای نمونه، جهت محدود کردن فازینگ به بایتهای ۰، ۳، ۴، ۵ و همهٔ بایتهای پس از آفست ۳۱، از ‘-b0,3-5,31-’ استفاده کنید.
این گزینه برای دستنخورده نگهداشتن سرایندهای فایل یا خرابسازی کنترلشدهٔ تنها بخشی خاص از یک فایل کاربرد دارد.
- -c, --cmdline
- تنها
فایلهایی
را فاز
میکند که
نام آنها
در خط فرمان
برنامهٔ
هدف مشخص
شده باشد.
این در اصل
یک میانبر
است تا از
مشخص کردن
دوبارهٔ
آرگومان
جلوگیری
شود:
zzuf -c cat file.txt
دارای همان اثری است که
zzuf -I '^file\.txt$' cat file.txt
برای اطلاعات بیشتر پیرامون محدود کردن فازینگ به فایلهای مشخص، پرچم -I را ببینید.
- -E, --exclude=regex
- فایلهایی
را که نام
آنها با
عبارت
باقاعدهٔ
regex مطابقت
دارد، فاز
نمیکند.
این گزینه
نسبت به هر
چیزی که
توسط پرچم
-I تعیین
شده باشد
ارجحیت
دارد. برای
نمونه در
حالتی از
این گزینه
استفاده
کنید که
مطمئن
نیستید
برنامهتان
چه
فایلهایی
را خواهد
خواند و
نمیخواهید
فایلهای
درون
دایرکتوری
/etc فاز شوند.
میتوان چندین پرچم -E را مشخص کرد، که در این صورت فایلهای منطبق با هر یک از عبارتهای باقاعده نادیده گرفته خواهند شد.
- -i, --stdin
- فاز کردن ورودی استاندارد برنامه. بهطور پیشفرض، zzuf تنها فایلها را فاز میکند.
- -I, --include=regex
- تنها
فایلهایی
را فاز
میکند که
نام آنها
با عبارت
باقاعدهٔ
regex مطابقت
دارد. برای
نمونه
هنگامی از
این گزینه
استفاده
کنید که
برنامهٔ
شما در زمان
راهاندازی
فایلهای
پیکربندی
را
میخواند و
تنها
میخواهید
فایلهای
مشخصی فاز
شوند.
میتوان چندین پرچم -I را مشخص کرد، که در این حالت فایلهای منطبق با هر یک از عبارتهای باقاعده فاز خواهند شد. همچنین پرچم -c را ببینید.
- -l, --list=list
- انتخاب
دستچینشدهٔ
فهرستی از
توصیفگرهای
فایل (file descriptors) که
فاز
میشوند.
توصیفگر
Nام تنها در
صورتی
واقعاً فاز
خواهد شد که
N در list باشد.
مقادیر از ۱ آغاز میشوند و بازهها فراگیر هستند. میان مقادیر از خط پیوند و میان بازهها از کاما استفاده کنید. اگر بخش سمت راست یک بازه درج نشود، به معنای تمام توصیفگرهای فایل بعدی است. برای نمونه، جهت محدود کردن فازینگ به نخستین توصیفگر بازشده و تمام توصیفگرها از دهمی به بعد، از ‘-l1,10-’ استفاده کنید.
توجه داشته باشید که این گزینه تنها بر توصیفگرهای فایلی اثر میگذارد که در غیر این صورت فاز میشدند. حتی اگر در آغاز برنامه ۱۰ توصیفگر فقطنوشتنی (write-only) باز شوند، تنها توصیفگر بعدی دارای پرچم خواندن (read)، نخستین موردی خواهد بود که پرچم -l آن را به شمار میآورد.
- -P, --protect=list
- محافظت از
فهرستی از
نویسهها
به گونهای
که اگر در
دادههای
ورودی ظاهر
شوند که
معمولاً
فاز
میشدند،
بدون تغییر
باقی
بمانند.
نویسهها در list میتوانند به صورت لفظی یا از طریق دنبالههای گریز بیان شوند. دنبالههایی که توسط zzuf تفسیر میشوند عبارتند از:
- \n
- سطر جدید
- \r
- بازگشت به ابتدای سطر
- \t
- فاصلهٔ زبانه (tabulation)
- \NNN
- بایتی که مقدار هشتهشتی (octal) آن NNN است
- \xNN
- بایتی که مقدار شانزدهشانزدهی (hexadecimal) آن NN است
- \\
- بکاسلش (‘\’)
- میتوانید
برای مشخص
کردن
بازهها از
‘-’
استفاده
کنید. برای
نمونه، جهت
محافظت از
تمام
بایتها از
‘\001’ تا ‘/’،
از ‘-P '\001-/'’
استفاده
کنید.
پیامد آماری این گزینه نباید نادیده گرفته شود: چنانچه نویسهها محافظت شوند، اثر پرچم ‘-r’ بسته به دادههایی که فاز میشوند متغیر خواهد بود. برای نمونه، درخواست برای فاز کردن ۱٪ از بیتهای ورودی (-r0.01) و محافظت از نویسههای کوچک لاتین (-P a-z)، منجر به نسبت میانگین فازینگ واقعیِ ۰٫۹٪ برای دادههای کاملاً تصادفی، ۰٫۳٪ برای دادههای تصادفی ASCII و ۰٫۲٪ برای متن استاندارد انگلیسی خواهد شد.
همچنین پرچم -R را ببینید.
- -R, --refuse=list
- رد کردن
فهرستی از
نویسهها
از طریق فاز
نکردن
بایتهایی
که در غیر
این صورت به
نویسهای
موجود در list
تبدیل
میشدند.
اگر بایت
اصلی از
ابتدا درون
list بوده
باشد، این
گزینه مانع
از حضور آن
نویسه در
خروجی
نمیشود.
برای توضیحات مربوط به list، گزینهٔ -P را ببینید..SS "شبکه (Network)"
- -n, --network
- ورودی شبکه
برنامه را
فاز (fuzz)
میکند.
بهطور
پیشفرض zzuf
فقط
فایلها را
فاز میکند.
تنها اتصالهای INET (IPv4) و INET6 (IPv6) فاز میشوند. سایر خانوادههای پروتکل هنوز پشتیبانی نمیشوند.
- -p, --ports=ranges
- تنها
پورتهای
شبکهای را
فاز میکند
که در ranges
قرار دارند.
بهطور
پیشفرض zzuf
تمام
پورتها را
فاز میکند.
اگر سوکت در
حال شنود (listening)
باشد پورت
در نظر
گرفتهشده
پورت شنود
است و اگر
سوکت در حال
اتصال (connecting)
باشد پورت
مقصد است؛
زیرا در
اکثر مواقع
نمیتوان
پورت مبدأ
را
پیشبینی
کرد.
مقادیر بازه از صفر آغاز میشوند و شامل خود مقادیر نیز هستند. از خط تیره بین مقادیر بازه و از ویرگول بین بازهها استفاده کنید. اگر بخش سمت راست یک بازه حذف شود، به معنای انتهای فایل است. برای نمونه، جهت محدود کردن فازینگ به پورتهای HTTP و HTTPS و تمام پورتهای غیرممتاز (unprivileged)، از ‘-p80,443,1024-’ استفاده کنید.
این گزینه نیازمند فعال بودن فازینگ شبکه با استفاده از -n است.
خطاها (DIAGNOSTICS)
در صورتی که هیچ فرآیند فرزندی دچار فروپاشی (crash) نشود، وضعیت خروج صفر است. اگر یک یا چند فرزند دچار فروپاشی شوند، zzuf با وضعیت ۱ خارج میشود.
مثالها (EXAMPLES)
فاز کردن ورودی برنامه cat با استفاده از تنظیمات پیشفرض:
zzuf cat /etc/motd
فاز کردن ۱٪ از بیتهای ورودی برنامه cat با استفاده از سید (seed) ۹۴۳۲۴:
zzuf -s94324 -r0.01 cat /etc/motd
فاز کردن ورودی برنامه cat بدون فاز کردن نویسههای خط جدید (newline) و جلوگیری از ظاهر شدن نویسههای غیر ASCII در خروجی:
zzuf -P '\n' -R '\x00-\x1f\x7f-\xff' cat /etc/motd
فاز کردن ورودی برنامه convert با استفاده از فایل foo.jpeg به عنوان ورودی اصلی و مستثنی کردن فایلهای .xml از فازینگ (زیرا convert فایلهای پیکربندی XML خود را نیز باز میکند و ما نمیخواهیم zzuf آنها را فاز کند):
zzuf -E '\.xml$' convert foo.jpeg -format tga /dev/null
فاز کردن ورودی VLC، با استفاده از فایل movie.avi به عنوان ورودی اصلی و محدود کردن فازینگ به نامفایلهایی که در خط فرمان ظاهر میشوند (-c)، و سپس تولید فایل fuzzy-movie.avi که فایلی قابل خواندن توسط VLC برای بازتولید همان رفتار بدون استفاده از zzuf است:
zzuf -c -s87423 -r0.01 vlc movie.avi
zzuf -c -s87423 -r0.01 <movie.avi >fuzzy-movie.avi
vlc fuzzy-movie.avi
فاز کردن بین ۰٫۱٪ و ۲٪ از بیتهای ورودی MPlayer با (-r0.001:0.02) با سیدهای ۰ تا ۹۹۹۹ (-s0:10000)، حفظ سرایند (header) ۴ بایتی AVI با محدود کردن فازینگ به آفستهای پس از ۴ (-b4-)، غیرفعال کردن پیامهای خروجی استاندارد آن (-q)، اجرای همزمان حداکثر پنج فرآیند فرزند (-j5) اما با حداقل نیم ثانیه انتظار میان اجراها (-D0.5)، از بین بردن MPlayer اگر خواندن فایل بیش از یک دقیقه طول بکشد (-T60) و غیرفعال کردن گرداننده سیگنال SIGSEGV آن (-S):
zzuf -c -r0.001:0.02 -s0:10000 -b4- -q -j5 -D0.5 -T60 -S \
mplayer -benchmark -vo null -fps 1000 movie.avi
یک مثال پیشرفتهتر از فازینگ VLC، که فقط در اولین فروپاشی (crash) متوقف میشود:
zzuf -j4 -vqc -r0.000001:0.01 -s0: vlc -v -I dummy movie.avi
\
--sout '#transcode{acodec=s16l,vcodec=I420}:dummy' vlc:quit
ایجاد یک فایل شبهHTML که تصویر یکسان hello.jpg را ۲۰۰ بار بارگذاری میکند و باز کردن آن در Firefox™ در حالت افزایش خودکار (-A):
seq -f '<img src="hello.jpg#%g">' 1 200 >
hello.html
(یا: jot -w '<img src="hello.jpg#%d">' 200 1
> hello.html)
zzuf -A -I 'hello[.]jpg' -r0.001 firefox hello.html
اجرای یک هدایتکننده (redirector) ساده HTTP روی میزبان محلی با استفاده از socat و دستکاری هر اتصال شبکه (-n) به شکلی متفاوت (-A) پس از اینکه یک مگابایت داده روی آن دریافت شد (-b1000000-):
zzuf -n -A -b1000000- \ socat TCP4-LISTEN:8080,reuseaddr,fork TCP4:192.168.1.42:80
وبگردی در اینترنت (-n) با استفاده از Firefox™ بدون فاز کردن فایلهای محلی (-E.) یا اتصالات غیر HTTP با (-p80,8010,8080)، با حفظ ابتدای دادههای ارسالشده با هر پاسخ HTTP با (-b4000-) و استفاده از یک سید دیگر در هر اتصال (-A):
zzuf -r 0.0001 -n -E. -p80,8010,8080 -b4000- -A firefox.SH "محدودیتها (RESTRICTIONS)"
به دلیل استفاده zzuf از پیشبارگذاری شیء مشترک (LD_PRELOAD، _RLD_LIST، DYLD_INSERT_LIBRARIES و غیره) برای اجرای فرآیندهای فرزند خود، در حضور هر سازوکاری که پیشبارگذاری را غیرفعال کند، با شکست مواجه خواهد شد. برای نمونه باینریهای setuid root هنگام اجرا توسط یک کاربر فاقد امتیاز، فاز (fuzz) نخواهند شد.
به همین دلایل، zzuf با باینریهای با پیوند ایستا (statically linked) نیز کار نخواهد کرد. هنگام استفاده از zzuf در پلتفرم OpenBSD، جایی که cat، cp و dd باینریهای ایستا هستند، این نکته را در نظر داشته باشید.
اگرچه نهایت تلاش انجام شده است، رفتار یکسان در نسخههای مختلف zzuf تضمین نمیشود. بازتولیدپذیری برای فراخوانیهای بعدی روی سیستمعاملهای مختلف و با برنامههای هدف متفاوت، تنها زمانی تضمین میشود که از همان نسخه zzuf استفاده شود.
گزارش باگها (BUGS)
احتمالاً zzuf در مواجهه با آفستهای ۶۴بیتی به درستی رفتار نمیکند.
هنوز امکان درج یا حذف بایتها از ورودی، فاز کردن بر اساس ساختار فایل، جابهجایی بایتها و غیره وجود ندارد. روشهای فازینگ پیشرفتهتری در برنامهریزی قرار دارند.
در حال حاضر، zzuf واقعاً از برنامههای چندنخی (multithreaded) پشتیبانی نمیکند. رفتار آن در برنامههای چندنخی که در آنها بیش از یک نخ عملیات توصیفکننده فایل (file descriptor) را انجام میدهد، تعریفنشده است.
تاریخچه (HISTORY)
zzuf فعالیت خود را در سال ۲۰۰۲ به عنوان ابزار streamfucker آغاز کرد؛ یک خرابکننده کوچک جریان چندرسانهای که برای یافتن باگها در VLC media player استفاده میشد.
همچنین ببینید (SEE ALSO)
نویسندگان (AUTHORS)
کپیرایت © 2002-2015 متعلق به Sam Hocevar <sam@hocevar.net> است.
zzuf و این صفحه راهنما، نرمافزار آزاد هستند. آنها تا جایی که قوانین مربوطه اجازه میدهند، بدون هیچگونه ضمانتی ارائه میشوند. شما میتوانید طبق شرایط مجوز Do What the Fuck You Want to Public License، نسخه ۲، همانطور که توسط WTFPL Task Force منتشر شده است، آنها را بازتوزیع کرده یا تغییر دهید. برای اطلاعات بیشتر http://www.wtfpl.net را ببینید.
صفحه وب zzuf در نشانی http://caca.zoy.org/wiki/zzuf قابل دسترسی است. نمایی کلی از معماری و سازوکارهای داخلی در نشانی http://caca.zoy.org/wiki/zzuf/internals قرار دارد.
| 2015-01-06 | zzuf 0.15 |