.TH FCRACKZIP 1 "Free/Fast Zip Password Cracker" .SH "نام (NAME)" fcrackzip \- ابزاری آزاد و سریع برای شکستن گذرواژه‌های Zip .SH "خلاصه دستور (SYNOPSIS)" .B fcrackzip [-bDBchVvplum2] [--brute-force] [--dictionary] [--benchmark] [--charset characterset] [--help] [--validate] [--verbose] [--init-password string/path] [--length min-max] [--use-unzip] [--method name] [--modulo r/m] file... .SH "توضیحات (DESCRIPTION)" دستور .I fcrackzip فایل‌های فشرده‌ی zip ارائه‌شده را برای یافتن فایل‌های رمزگذاری‌شده جستجو کرده و تلاش می‌کند تا گذرواژه‌ی آن‌ها را حدس بزند. تمامی فایل‌ها باید با یک گذرواژه‌ی یکسان رمزگذاری شده باشند؛ هر چه تعداد فایل‌های بیشتری ارائه دهید، نتیجه بهتر خواهد بود. .SS "گزینه‌ها (OPTIONS)" .TP .B \-h, \--help شماره‌ی نسخه و (امیدوارانه) راهنمایی‌های مفیدی را نمایش می‌دهد. .TP .B \-v, \--verbose هر بار تکرار \-v میزان جزئیات خروجی برنامه را افزایش می‌دهد. .TP .B \-b, \--brute-force حالت جستجوی فراگیر (brute force) را انتخاب می‌کند. در این حالت تمام ترکیب‌های ممکن از نویسه‌های مشخص‌شده بررسی می‌شوند. .TP .B \-D, \--dictionary حالت واژه‌نامه‌ای (dictionary) را انتخاب می‌کند. در این حالت، fcrackzip گذرواژه‌ها را از فایلی می‌خواند که باید در هر خط آن یک گذرواژه قرار داشته باشد و ترجیحاً بر اساس حروف الفبا مرتب شده باشد (مثلاً با استفاده از \fBsort(1)\fR). .TP .B \-c, \--charset characterset-specification نویسه‌های مورد استفاده در شکستن گذرواژه به روش جستجوی فراگیر را تعیین می‌کند. باید یکی یا ترکیبی از موارد زیر باشد: .nf a شامل تمام نویسه‌های کوچک انگلیسی [a-z] A شامل تمام نویسه‌های بزرگ انگلیسی [A-Z] 1 شامل تمام ارقام [0-9] ! شامل نویسه‌های [!:$%&/()=?{[]}+*~#] : نویسه‌های بعدی تا انتهای رشته‌ی تعریف، به مجموعه‌ی نویسه‌ها افزوده می‌شوند. به این ترتیب می‌توانید هر نویسه‌ای را به جز نال باینری (حداقل در یونیکس) لحاظ کنید. .fi برای نمونه، a1:$% نویسه‌های کوچک، ارقام، و علامت‌های دلار و درصد را انتخاب می‌کند. .TP .B \-p, \--init-password string گذرواژه‌ی اولیه (شروع) را برای جستجوی فراگیر روی \fIstring\fR تنظیم می‌کند، یا از فایلی به نام \fIstring\fR برای خواندن گذرواژه‌ها در جستجوی واژه‌نامه‌ای استفاده می‌کند. .TP .B \-l, \--length min[-max] یک گذرواژه‌ی اولیه با طول min تعیین کرده و تمام گذرواژه‌ها را تا حداکثر طول max (شامل خود آن) بررسی می‌کند. می‌توانید پارامتر max را حذف کنید. .TP .B \-u, \--use-unzip تلاش می‌کند با فراخوانی unzip به همراه گذرواژه‌ی حدس‌زده‌شده، اولین فایل را از حالت فشرده خارج کند. این کار در مواردی که تعداد فایل‌ها کافی نباشد، موارد مثبت کاذب (حدس‌های اشتباه) را حذف می‌کند. .TP .B \-m, \--method name به جای روش پیش‌فرض شکستن گذرواژه، از روش با نام یا شماره‌ی "name" استفاده می‌کند. گزینه‌ی \fB--help\fR فهرستی از روش‌های موجود را نمایش می‌دهد. با استفاده از \fB--benchmark\fR بررسی کنید کدام روش بهترین کارایی را روی دستگاه شما دارد. مقدار \fBname\fR می‌تواند شماره‌ی روش مورد نظر نیز باشد. .TP .B \-2, \--modulo r/m فقط r/m از گذرواژه را محاسبه می‌کند. هنوز پشتیبانی نمی‌شود. .TP .B \-B, \--benchmark یک بنچمارک کوچک اجرا می‌کند که خروجی آن تقریباً بی‌معنی است. .TP .B -V, \--validate بررسی‌های اولیه‌ای انجام می‌دهد تا مشخص شود آیا برنامه به درستی کار می‌کند یا خیر. .SH "مبانی گذرواژه زیپ (ZIP PASSWORD BASICS)" آیا تا به حال هنگام استفاده از unzip گذرواژه‌ای را اشتباه وارد کرده‌اید؟ برنامه unzip بسیار سریع و \fIبدون\fR رمزگشایی کل فایل، خطای «incorrect password» را برمی‌گرداند. در حالی که الگوریتم رمزگذاری مورداستفاده در zip نسبتاً امن است، شرکت PK با قرار دادن قلاب‌هایی برای بررسی بسیار سریع گذرواژه در خود فایل zip، شکستن آن را آسان کرده است. درک این مفاهیم برای شکستن گذرواژه‌های zip حیاتی است: برای هر گذرواژه‌ای که آزمایش می‌شود، دوازده بایت اول فایل رمزگشایی می‌گردد. بسته به نسخه‌ی zip مورداستفاده برای رمزگذاری فایل (که در ادامه بیشتر توضیح داده می‌شود)، ده یا یازده بایت اول تصادفی هستند و به دنبال آن‌ها یک یا دو بایت قرار دارند که مقادیرشان در جای دیگری از فایل zip ذخیره شده است؛ یعنی از قبل مشخص هستند. اگر این بایت‌های پایانی مقدار درست (شناخته‌شده) را نداشته باشند، گذرواژه قطعاً اشتباه است. اگر بایت‌ها مطابقت داشته باشند، گذرواژه \fIممکن است\fR درست باشد، اما تنها راه اطمینان قطعی، استخراج فایل با unzip و مقایسه‌ی طول فایلِ غیرفشرده و مقادیر crc است. نسخه‌های قدیمی‌تر pkzip (1.xx) (و به تبع آن بسیاری از شبیه‌سازهای zip در سایر سیستم‌عامل‌ها!) دو بایت شناخته‌شده را ذخیره می‌کردند؛ در نتیجه نرخ خطای شناسایی نادرست حدود ۱/۲^۱۶ = ۰٫۰۱٪ بود. شرکت PKWARE امنیت قالب خود را به اصطلاح «بهبود» داد (جالب است که صنعت چه چیزی را بهبود می‌نامد!) و تنها یک بایت را ذخیره کرد؛ بنابراین احتمال تأیید اشتباه گذرواژه‌های نادرست به ۰٫۴٪ افزایش یافت. متأسفانه راه مطمئنی برای تفکیک قالب‌های یک‌بایتی از دو‌بایتی وجود ندارد، بنابراین باید با احتیاط عمل کنیم. .SH "حالت جستجوی فراگیر (BRUTE FORCE MODE)" به صورت پیش‌فرض، جستجوی فراگیر از گذرواژه‌ی ابتدایی مشخص‌شده آغاز می‌شود و تمام ترکیب‌ها را به صورت پیاپی تا پایان بررسی می‌کند؛ همچنین تمام گذرواژه‌های شناسایی‌شده را به همراه یک شاخص تقریبی صحت چاپ می‌کند. گذرواژه‌ی ابتدایی که با گزینه‌ی \fI-p\fR مشخص می‌شود، طول گذرواژه را تعیین می‌کند. در حال حاضر fcrackzip طول گذرواژه را به صورت خودکار افزایش نمی‌دهد، مگر اینکه از گزینه‌ی \fI-l\fR استفاده شده باشد. .SH "حالت واژه‌نامه‌ای (DICTIONARY MODE)" این حالت مشابه حالت جستجوی فراگیر است، اما به جای تولید گذرواژه‌ها با استفاده از یک مجموعه‌نویسه و طول مشخص، گذرواژه‌ها از فایلی خوانده می‌شوند که باید با گزینه‌ی \fI-p\fR آن را مشخص کنید. .SH "ماسک سی‌پی (CP MASK)" ماسک CP روشی برای مبهم‌سازی تصاویر یا بخش‌هایی از تصاویر با استفاده از گذرواژه است. این تصاویر مبهم‌شده حتی پس از ذخیره شدن به صورت فایل‌های JPEG نیز قابل بازیابی هستند. در بیشتر این فایل‌ها گذرواژه در اصل پنهان شده و به سادگی قابل رمزگشایی است (با استفاده از نرم‌افزارهای نمایشگر و ماسک‌گذاری متعددی مانند xv). با این حال اگر فرمت تصویر را تبدیل کنید، گذرواژه از بین می‌رود. روش شکستن \fBcpmask\fR می‌تواند برای جستجوی فراگیر این تصاویر به کار رود. به جای فایل zip، بخش مبهم‌شده‌ی تصویر (و نه هیچ چیز دیگری) را در قالب تصویری \fBPPM\fR ارائه می‌دهید (\fBxv\fR و سایر نمایشگرها می‌توانند به راحتی این کار را انجام دهند). روش \fBcpmask\fR تنها با گذرواژه‌هایی که از حروف بزرگ تشکیل شده‌اند کار می‌کند، بنابراین حتماً از گزینه‌ی \fB--charset A\fR یا معادل آن به همراه یک گذرواژه‌ی اولیه‌ی مناسب استفاده کنید. .SH "مثال‌ها (EXAMPLES)" .TP .B fcrackzip -c a -p aaaaaa sample.zip فایل‌های رمزگذاری‌شده در sample.zip را برای یافتن گذرواژه‌های ۶ حرفی با تمام حروف کوچک (aaaaaa ... abaaba ... ghfgrg ... zzzzzz) بررسی می‌کند. .TP .B fcrackzip --method cpmask --charset A --init AAAA test.ppm تصویر مبهم‌شده‌ی \fBtest.ppm\fR را برای تمام گذرواژه‌های چهار حرفی بررسی می‌کند. .TP .B fcrackzip -D -p passwords.txt sample.zip تمام گذرواژه‌های فهرست‌شده در فایل \fBpasswords.txt\fR را بررسی می‌کند. .SH "کارایی (PERFORMANCE)" نرم‌افزار \fIfzc\fR که به طور گسترده به عنوان یک کرکر گذرواژه‌ی سریع استفاده می‌شود، ادعا می‌کند که در رایانه‌ی من ۲۰۴۵۷۰ بررسی در ثانیه انجام می‌دهد (اندازه‌گیری‌شده تحت داس ساده و بدون نرم‌افزار مدیریت حافظه). برنامه‌ی \fIfcrackzip\fR از آنجا که به زبان C نوشته شده و نه به زبان اسمبلی، طبیعتاً کندتر است. در اندازه‌گیری روی یک سیستم یونیکس با بار کاری سبک (روی همان سخت‌افزار)، حدود ۱۲ درصد کندتر بود (کامپایلر مورد استفاده \fIpgcc\fR از وب‌سایت \fBhttp://www.gcc.ml.org\fR بود). برای جبران این موضوع، بخش‌های کوچکی از هسته‌ی رمزگذاری را به زبان اسمبلی x86 تبدیل کردم (که البته همچنان روی معماری‌های غیر x86 نیز کامپایل می‌شود)، و اکنون حدود ۴ تا ۱۲ درصد سریع‌تر از \fIfzc\fR عمل می‌کند (مجدداً تأکید می‌شود که کارایی \fIfcrackzip\fR تحت یک سیستم‌عامل چندوظیفه‌ای اندازه‌گیری شده، بنابراین ناگزیر خطاهایی در اندازه‌گیری وجود دارد)؛ بنابراین دلیل وسوسه‌کننده‌ای برای روی آوردن به ابزارهای دیگر وجود ندارد. قطعا بهبودهای بیشتری نیز امکان‌پذیر است: شکل‌گیری کامل \fIfzc\fR حدود ۴ سال زمان برد، در حالی که fcrackzip در کمتر از ۱۰ ساعت توسعه یافت. همچنین نباید فراموش کرد که شما کد منبع را در اختیار دارید، در حالی که برنامه‌های دیگر (مانند \fIfzc\fR) حتی به صورت یک فایل \fI.exe رمزگذاری‌شده\fR عرضه می‌شوند (شاید برنامه‌نویسان آن‌ها نگران بودند که دیگران نگاهی به ضعف مهارت برنامه‌نویسی‌شان بیندازند؟ کسی چه می‌داند...). .SH "دلایل ساخت (RATIONALE)" دلیل من برای نوشتن \fIfcrackzip\fR این \fBنبود\fR که سریع‌ترین کرکر zip موجود را بسازم، بلکه می‌خواستم یک شکننده‌ی گذرواژه‌ی zip \fIچندسکویی\fR، \fIآزاد\fR (و در نتیجه \fIتوسعه‌پذیر\fR) و در عین حال \fIسریع\fR ارائه دهم. من از آن ابزارهای غیرقابل توسعه و ناکارآمد که یا کند بودند، یا محدودیت‌های زیادی داشتند، یا در پس‌زمینه (مثلاً در یونیکس) اجرا نمی‌شدند واقعاً به ستوه آمده بودم (ضمن اینکه نمی‌توانستید آن‌ها را روی پردازنده‌ی فوق‌سریع 600Mhz Alpha اجرا کنید). .SH "گزارش باگ‌ها (BUGS)" بررسی خودکار با unzip وجود ندارد. .PP قابلیت توقف/ادامه (Stop/resume) وجود ندارد. .PP باید بتواند بین فایل‌هایی با مقادیر CRC شانزده‌بیتی و مقادیر CRC هشت‌بیتی تمایز قائل شود. .PP ابزار بنچمارک روی همه‌ی سیستم‌ها کار نمی‌کند. .PP برنامه هنوز در مراحل اولیه‌ی آزمایشی (آلفا) است. .PP روش "cpmask" فقط فایل‌های ppm را می‌پذیرد. .PP می‌تواند سریع‌تر باشد. .SH "نویسندگان (AUTHORS)" برنامه‌ی \fIfcrackzip\fR توسط Marc Lehmann نوشته شده است. صفحه‌ی اصلی \fIfcrackzip\fR در نشانی \fBhttp://www.goof.com/pcg/marc/fcrackzip.html\fR در دسترس است.