FCRACKZIP(1) General Commands Manual FCRACKZIP(1)

fcrackzip - ابزاری آزاد و سریع برای شکستن گذرواژه‌های Zip

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...

دستور fcrackzip فایل‌های فشرده‌ی zip ارائه‌شده را برای یافتن فایل‌های رمزگذاری‌شده جستجو کرده و تلاش می‌کند تا گذرواژه‌ی آن‌ها را حدس بزند. تمامی فایل‌ها باید با یک گذرواژه‌ی یکسان رمزگذاری شده باشند؛ هر چه تعداد فایل‌های بیشتری ارائه دهید، نتیجه بهتر خواهد بود.

شماره‌ی نسخه و (امیدوارانه) راهنمایی‌های مفیدی را نمایش می‌دهد.
هر بار تکرار -v میزان جزئیات خروجی برنامه را افزایش می‌دهد.
حالت جستجوی فراگیر (brute force) را انتخاب می‌کند. در این حالت تمام ترکیب‌های ممکن از نویسه‌های مشخص‌شده بررسی می‌شوند.
حالت واژه‌نامه‌ای (dictionary) را انتخاب می‌کند. در این حالت، fcrackzip گذرواژه‌ها را از فایلی می‌خواند که باید در هر خط آن یک گذرواژه قرار داشته باشد و ترجیحاً بر اساس حروف الفبا مرتب شده باشد (مثلاً با استفاده از sort(1)).
نویسه‌های مورد استفاده در شکستن گذرواژه به روش جستجوی فراگیر را تعیین می‌کند. باید یکی یا ترکیبی از موارد زیر باشد:
a   شامل تمام نویسه‌های کوچک انگلیسی [a-z]
A   شامل تمام نویسه‌های بزرگ انگلیسی [A-Z]
1   شامل تمام ارقام [0-9]
!   شامل نویسه‌های [!:$%&/()=?{[]}+*~#]
:   نویسه‌های بعدی تا انتهای رشته‌ی تعریف، به مجموعه‌ی
    نویسه‌ها افزوده می‌شوند. به این ترتیب می‌توانید هر
    نویسه‌ای را به جز نال باینری (حداقل در یونیکس) لحاظ کنید.

برای نمونه، a1:$% نویسه‌های کوچک، ارقام، و علامت‌های دلار و درصد را انتخاب می‌کند.

گذرواژه‌ی اولیه (شروع) را برای جستجوی فراگیر روی string تنظیم می‌کند، یا از فایلی به نام string برای خواندن گذرواژه‌ها در جستجوی واژه‌نامه‌ای استفاده می‌کند.
یک گذرواژه‌ی اولیه با طول min تعیین کرده و تمام گذرواژه‌ها را تا حداکثر طول max (شامل خود آن) بررسی می‌کند. می‌توانید پارامتر max را حذف کنید.
تلاش می‌کند با فراخوانی unzip به همراه گذرواژه‌ی حدس‌زده‌شده، اولین فایل را از حالت فشرده خارج کند. این کار در مواردی که تعداد فایل‌ها کافی نباشد، موارد مثبت کاذب (حدس‌های اشتباه) را حذف می‌کند.
به جای روش پیش‌فرض شکستن گذرواژه، از روش با نام یا شماره‌ی "name" استفاده می‌کند. گزینه‌ی --help فهرستی از روش‌های موجود را نمایش می‌دهد. با استفاده از --benchmark بررسی کنید کدام روش بهترین کارایی را روی دستگاه شما دارد. مقدار name می‌تواند شماره‌ی روش مورد نظر نیز باشد.
-2, --modulo r/m
فقط r/m از گذرواژه را محاسبه می‌کند. هنوز پشتیبانی نمی‌شود.
یک بنچمارک کوچک اجرا می‌کند که خروجی آن تقریباً بی‌معنی است.
بررسی‌های اولیه‌ای انجام می‌دهد تا مشخص شود آیا برنامه به درستی کار می‌کند یا خیر.

آیا تا به حال هنگام استفاده از unzip گذرواژه‌ای را اشتباه وارد کرده‌اید؟ برنامه unzip بسیار سریع و بدون رمزگشایی کل فایل، خطای «incorrect password» را برمی‌گرداند. در حالی که الگوریتم رمزگذاری مورداستفاده در zip نسبتاً امن است، شرکت PK با قرار دادن قلاب‌هایی برای بررسی بسیار سریع گذرواژه در خود فایل zip، شکستن آن را آسان کرده است. درک این مفاهیم برای شکستن گذرواژه‌های zip حیاتی است:

برای هر گذرواژه‌ای که آزمایش می‌شود، دوازده بایت اول فایل رمزگشایی می‌گردد. بسته به نسخه‌ی zip مورداستفاده برای رمزگذاری فایل (که در ادامه بیشتر توضیح داده می‌شود)، ده یا یازده بایت اول تصادفی هستند و به دنبال آن‌ها یک یا دو بایت قرار دارند که مقادیرشان در جای دیگری از فایل zip ذخیره شده است؛ یعنی از قبل مشخص هستند. اگر این بایت‌های پایانی مقدار درست (شناخته‌شده) را نداشته باشند، گذرواژه قطعاً اشتباه است. اگر بایت‌ها مطابقت داشته باشند، گذرواژه ممکن است درست باشد، اما تنها راه اطمینان قطعی، استخراج فایل با unzip و مقایسه‌ی طول فایلِ غیرفشرده و مقادیر crc است.

نسخه‌های قدیمی‌تر pkzip (1.xx) (و به تبع آن بسیاری از شبیه‌سازهای zip در سایر سیستم‌عامل‌ها!) دو بایت شناخته‌شده را ذخیره می‌کردند؛ در نتیجه نرخ خطای شناسایی نادرست حدود ۱/۲^۱۶ = ۰٫۰۱٪ بود. شرکت PKWARE امنیت قالب خود را به اصطلاح «بهبود» داد (جالب است که صنعت چه چیزی را بهبود می‌نامد!) و تنها یک بایت را ذخیره کرد؛ بنابراین احتمال تأیید اشتباه گذرواژه‌های نادرست به ۰٫۴٪ افزایش یافت. متأسفانه راه مطمئنی برای تفکیک قالب‌های یک‌بایتی از دو‌بایتی وجود ندارد، بنابراین باید با احتیاط عمل کنیم.

به صورت پیش‌فرض، جستجوی فراگیر از گذرواژه‌ی ابتدایی مشخص‌شده آغاز می‌شود و تمام ترکیب‌ها را به صورت پیاپی تا پایان بررسی می‌کند؛ همچنین تمام گذرواژه‌های شناسایی‌شده را به همراه یک شاخص تقریبی صحت چاپ می‌کند.

گذرواژه‌ی ابتدایی که با گزینه‌ی -p مشخص می‌شود، طول گذرواژه را تعیین می‌کند. در حال حاضر fcrackzip طول گذرواژه را به صورت خودکار افزایش نمی‌دهد، مگر اینکه از گزینه‌ی -l استفاده شده باشد.

این حالت مشابه حالت جستجوی فراگیر است، اما به جای تولید گذرواژه‌ها با استفاده از یک مجموعه‌نویسه و طول مشخص، گذرواژه‌ها از فایلی خوانده می‌شوند که باید با گزینه‌ی -p آن را مشخص کنید.

ماسک CP روشی برای مبهم‌سازی تصاویر یا بخش‌هایی از تصاویر با استفاده از گذرواژه است. این تصاویر مبهم‌شده حتی پس از ذخیره شدن به صورت فایل‌های JPEG نیز قابل بازیابی هستند. در بیشتر این فایل‌ها گذرواژه در اصل پنهان شده و به سادگی قابل رمزگشایی است (با استفاده از نرم‌افزارهای نمایشگر و ماسک‌گذاری متعددی مانند xv). با این حال اگر فرمت تصویر را تبدیل کنید، گذرواژه از بین می‌رود. روش شکستن cpmask می‌تواند برای جستجوی فراگیر این تصاویر به کار رود. به جای فایل zip، بخش مبهم‌شده‌ی تصویر (و نه هیچ چیز دیگری) را در قالب تصویری PPM ارائه می‌دهید (xv و سایر نمایشگرها می‌توانند به راحتی این کار را انجام دهند).

روش cpmask تنها با گذرواژه‌هایی که از حروف بزرگ تشکیل شده‌اند کار می‌کند، بنابراین حتماً از گزینه‌ی --charset A یا معادل آن به همراه یک گذرواژه‌ی اولیه‌ی مناسب استفاده کنید.

فایل‌های رمزگذاری‌شده در sample.zip را برای یافتن گذرواژه‌های ۶ حرفی با تمام حروف کوچک (aaaaaa ... abaaba ... ghfgrg ... zzzzzz) بررسی می‌کند.
تصویر مبهم‌شده‌ی test.ppm را برای تمام گذرواژه‌های چهار حرفی بررسی می‌کند.
تمام گذرواژه‌های فهرست‌شده در فایل passwords.txt را بررسی می‌کند.

نرم‌افزار fzc که به طور گسترده به عنوان یک کرکر گذرواژه‌ی سریع استفاده می‌شود، ادعا می‌کند که در رایانه‌ی من ۲۰۴۵۷۰ بررسی در ثانیه انجام می‌دهد (اندازه‌گیری‌شده تحت داس ساده و بدون نرم‌افزار مدیریت حافظه).

برنامه‌ی fcrackzip از آنجا که به زبان C نوشته شده و نه به زبان اسمبلی، طبیعتاً کندتر است. در اندازه‌گیری روی یک سیستم یونیکس با بار کاری سبک (روی همان سخت‌افزار)، حدود ۱۲ درصد کندتر بود (کامپایلر مورد استفاده pgcc از وب‌سایت http://www.gcc.ml.org بود).

برای جبران این موضوع، بخش‌های کوچکی از هسته‌ی رمزگذاری را به زبان اسمبلی x86 تبدیل کردم (که البته همچنان روی معماری‌های غیر x86 نیز کامپایل می‌شود)، و اکنون حدود ۴ تا ۱۲ درصد سریع‌تر از fzc عمل می‌کند (مجدداً تأکید می‌شود که کارایی fcrackzip تحت یک سیستم‌عامل چندوظیفه‌ای اندازه‌گیری شده، بنابراین ناگزیر خطاهایی در اندازه‌گیری وجود دارد)؛ بنابراین دلیل وسوسه‌کننده‌ای برای روی آوردن به ابزارهای دیگر وجود ندارد.

قطعا بهبودهای بیشتری نیز امکان‌پذیر است: شکل‌گیری کامل fzc حدود ۴ سال زمان برد، در حالی که fcrackzip در کمتر از ۱۰ ساعت توسعه یافت. همچنین نباید فراموش کرد که شما کد منبع را در اختیار دارید، در حالی که برنامه‌های دیگر (مانند fzc) حتی به صورت یک فایل .exe رمزگذاری‌شده عرضه می‌شوند (شاید برنامه‌نویسان آن‌ها نگران بودند که دیگران نگاهی به ضعف مهارت برنامه‌نویسی‌شان بیندازند؟ کسی چه می‌داند...).

دلیل من برای نوشتن fcrackzip این نبود که سریع‌ترین کرکر zip موجود را بسازم، بلکه می‌خواستم یک شکننده‌ی گذرواژه‌ی zip چندسکویی، آزاد (و در نتیجه توسعه‌پذیر) و در عین حال سریع ارائه دهم. من از آن ابزارهای غیرقابل توسعه و ناکارآمد که یا کند بودند، یا محدودیت‌های زیادی داشتند، یا در پس‌زمینه (مثلاً در یونیکس) اجرا نمی‌شدند واقعاً به ستوه آمده بودم (ضمن اینکه نمی‌توانستید آن‌ها را روی پردازنده‌ی فوق‌سریع 600Mhz Alpha اجرا کنید).

بررسی خودکار با unzip وجود ندارد.

قابلیت توقف/ادامه (Stop/resume) وجود ندارد.

باید بتواند بین فایل‌هایی با مقادیر CRC شانزده‌بیتی و مقادیر CRC هشت‌بیتی تمایز قائل شود.

ابزار بنچمارک روی همه‌ی سیستم‌ها کار نمی‌کند.

برنامه هنوز در مراحل اولیه‌ی آزمایشی (آلفا) است.

روش "cpmask" فقط فایل‌های ppm را می‌پذیرد.

می‌تواند سریع‌تر باشد.

برنامه‌ی fcrackzip توسط Marc Lehmann <pcg@goof.com> نوشته شده است. صفحه‌ی اصلی fcrackzip در نشانی http://www.goof.com/pcg/marc/fcrackzip.html در دسترس است.

Free/Fast Zip Password Cracker