سلام . در واقع توی این مقاله 3 مبحث رو با هم دنبال می کنیم :

1. آشنایی با master password در فایرفاکس

2. برنامه ای برای کرک master پسورد فایرفاکس

3. نحوه ی نوشتن اسکریپتی کوچیک برای کرک master پسورد فایرفاکس

 

1. آشنایی با master password در فایرفاکس :

یکی از ویژگی های فایرفاکس master password است که امکان پسورد گذاری روی پسورد های ذخیره شده در فایرفاکس را می دهد . به این صورت که برای دیدن پسورد های ذخیره شده بایستی ابتدا یک پسورد master را وارد کنیم تا به کل پسورد های ذخیره شده دسترسی داشته باشیم .

برای ریکاوری کردن پسورد master ابزار های بسیار خوب و با سرعتی بالا حتی در سیستم عامل ویندوز وجود دارد . اما ما در ادامه یک اسکریپت پایتون را معرفی می کنیم و در ادامه یک اسکریپ به زبان bash می نویسیم و به عنوان یک پچ از آن جهت پیدا کردن master پسورد فایرفاکس استفاده می کنیم .

2. برنامه ای برای کرک master پسورد فایرفاکس :

ابتدا لازم به ذکر است برای استفاده از اسکریپت زیر به فایل key3.db و signons.sqlite ( جهت خارج کردن پسورد ها و یوزرنیم ها و …  ) لازم است .

ابتدا اسکریپ پایتون زیر رو نگاه کنید :

https://github.com/lclevy/firepwd

اگر یک help از این اسکریپت بگیرید می بینید که به صورت زیر عمل می کند :

همان طور که مشاهده می کنید از سویچ p- برای مشخص کردن پسورد احتمالی استفاده می کنیم و  از سویچ d- برای مشخص کردن دایرکتوری ای که دو فایل key3.db و signons.sqlite درون آن قرار دارد استفاده کردیم .

توجه داشته باشید که mozilla_db مثال می باشد و ما می تونیم آدرس کامل این دو فایل از سیستم خودمون رو بدیم و یا این که دو فایل key3.db و signons.sqlite رو در دایرکتوری جاری کپی کنیم و در آخر به صورت زیر سویچ d- رو تعریف کنیم :

توجه داشته باشید که نقطه به معنی جای دایرکتوری ای که در آن هستیم است .

پس از اجرای اسکریپت در صورتی که پسورد درست باشید خروجی ای مبنی بر decrypting login/password pairs خواهید گرفت و اگر پسورد درست نباشد اروری مبنی بر password check error می گیرید .

 

02


خوب پس ما می تونیم با دستورات و برنامه های خود خط فرمان لینوکس , یک اسکریپت بسیار ساده و کوچیک به زبان bash تهیه کنیم که همین روند رو برای ما انجام بده .

یعنی پسورد های احتمالی ما رو از داخل یک فایل خوانده و در جلوی سویچ p- در برنامه جایگذاری کند .

 

3. نحوه ی نوشتن اسکریپتی کوچیک برای کرک master پسورد فایرفاکس :

تذکر : الگوریتم استفاده شده در این اسکریپت بسیار ضعیف بوده چرا که هدف آشنا کردن با اسکریپت نویسی با استفاده از دستورات لینوکس به زبان bash است نه صرفا ساخت برنامه ای با سرعتی بالا جهت کرک master password

 

مرحله ی اول :

در مرحله ی اول تعداد خطوط فایل پسورد لیست را پیدا می کنیم . یعنی تعداد پسورد ها را در داخل لیست خودمون مشخص می کنیم . ( در هر سطر یک پسورد )

برای این منظور از 2 دستور cat و wc استفاده می کنیم . به این صورت :

خروجی دستور بالا یک عدد است , پس آن را به صورت زیر داخل یک متغیر می ریزیم :

 

مرحله ی دوم :

در این مرحله از یک حلقه به دفعات تعداد خطوط پسورد لیست خودمون استفاده می کنیم . مثلا اگه پسورد لیست ما حاوی 50  پسورد احتمالی باشه , یک حلقه با تعداد دفعات 50 بار خواهیم داشت .

یکی از فرم های استفاده از حلقه در bash به صورت زیر است :

که اعمالی که قرار است انجام دهیم در بین do و done قرار می گیرد . در مرحله ی اول تعداد خطوط یعنی همان تعداد دفعات تکرار حلقه را مشخص کردیم و آن را در داخل متغیری با نام lines ریختیم . پس برای استفاده از این متغیر به این صورت در داخل حلقه ی خودمون استفاده می کنیم :

 

مرحله ی سوم :

این قسمت در داخل حلقه قرار دارد و قرار است در این مرحله سطر به سطر پسورد لیست رو بخونیم و آن را داخل برنامه ی اصلی در جلوی سویچ p- قرار دهیم . برای این که سطر  به سطر فایل پسورد لیست رو بخونیم از 3 ابزار cat و head و tail به صورت مشترک استفاده می کنیم . به این صورت :

نکته : با استفاده از دستور head , ابتدا فایل پسورد لیست رو می خونیم و برای مشخص کردن تعداد سطر های خوانده شده از سویچ n- استفاده می کنیم .

نکته : با استفاده از دستور tail , آخر فایل رو می خونیم که با استفاده از سویچ n- و مقدار 1 تعریف کردیم که همیشه آخرین سطر را بخواند

نکته : در داخل حلقه متغیری تعریف کردیم به نام i که از 1 تا مقدار خطوط پسورد لیست , شروع به شمارش می کند .

در آخر دستور بالا یک خروجی به ما می دهد , پس آن را داخل یک متغیر ذخیره می کنیم . یعنی :

 

مرحله ی چهارم :

این مرحله در واقع مهم ترین بخش است چرا که وظیفه ی تست پسورد های احتمالی را بر عهده دارد .

خب پس کافیست برنامه اصلی رو به فرم زیر اجرا کنیم !

در ابتدا برنامه رو اجرا کردیم سپس همان طور که گفته شد با سویچ p- پسورد رو مشخص می کنیم که پسورد احتمالی ما از داخل متغیر tail خوانده می شود و چون این عمل در داخل حلقه است , هر بار یک پسورد در داخل خود دارد .

در ادامه هم با استفاده از سویچ d- دایرکتوری ای که 2 فایل key3.db و signons.sqlite قرار دارند رو مشخص کردیم .

همان طور که قبلا گفته شد , در صورتی که پسورد درست باشد , برنامه خروجی ای مشخص برای ما چاپ می کند . در داخل این خروجی عبارت pairs یکتا و ثابت است پس در نتیجه با grep کردن این عبارت می تونیم پی به این که پسورد درست است یا نه ببریم .

توجه داشته باشید که از سویچ o- برای مشخص کردن این که دقیقا دنبال این عبارت بگردد و اگر وجود داشت چاپش کند , استفاده کردیم .

این نکته رو به یاد داشته باشید که در صورتی که پسورد درست نباشد , دستور grep فاقد خروجی است , (فرضا) این بعدا می تونه برای ما مشکل ساز بشه , پس برای حل این مشکل از echo استفاده کردیم . در آخر برای این که خروجی کارمون رو داخل یک متغیر ذخیره کنیم به این شکل عمل می کنیم :

نکته : متغیر firepwd می تواند دو حالت زیر را داشته باشد :

الف : error

ب : pairs error

 

مرحله ی پنجم :

گفتیم که متغییر firepwd دو حالت می تونه داشته باشه , پس برای پالایش کردن این متغیر به صورت زیر عمل می کنیم :

اگه متغیر firepwd حاوی عبارت error باشه که باز 5 کارکتر اول توسط دستور head جدا میشه و در داخل متغیر cout ریخته میشه .

اما اگه متغیر firepwd حاوی عبارت pairs error باشه , با استفاده از دستور head , پنچ کارکتر اول آن یعنی pairs خوانده شده و در داخل متغیر cout ریخته میشه .

پس در نهایت متغیر cout می تونه 2 حالت داشته باشه : الف) error ب) pairs

 

مرحله ششم :

خب حالا که به دو حالت error و pairs در اجرای اسکریپت پایتون اصلیمون رسیدیم , می تونیم با استفاده از شرط گذاری خروجی مناسبی برای اسکریپت در نظر بگیریم . یعنی :

همان طور که در شرط بالا مشخص است , اگر مقدار متغییر cout برابر با pairs باشه , برنامه خروجی ای مبنی بر بدست آمدن پسورد چاپ می کند و سپس از برنامه خارج می شود .

اما اگر این طور نبود برنامه خروجی ای مبنی بر پسورد احتمالی تست شده چاپ کرده و سپس به ابتدای حلقه باز می گردد تا همین روند ( 6 مرحله‌ ) از اول تکرار شود .

 

مرحله ی هفتم :

حالا کافیست دستوراتی که در هر مرحله گفتیم رو در قالب یک فایل متنی با پسوند sh ذخیره کنیم . یعنی :

جهت اجرا کافیست پرمیشن اجرا به فایل بدیم برای این منظور از chmod +x استفاده می کنیم و در نهایت اسکریپت خودمون رو به شکل زیر اجرا می کنیم :

 

01

نویسنده : E2MA3N

منبع : او اس لرن دات آی آر | http://OSLearn.ir

 

از این مطلب راضی هستید ؟ می خواهید به سایت کمک کنید ؟ رضایت خودتون رو با دونیت به ما اعلام کنید . برای دونیت روی خرید کلیک کنید . با تشکر

[parspalpaiddownloads id=”8″]

درباره نویسنده :

ایمان همایونی هستم، از سال 2009 با گنو لینوکس فعالیت خودم رو در زمینه ی کامپیوتر و IT شروع کردم و تا الان موفق به گذروندن دوره هایLPIC 1 / LPIC 2 / VCP5-DCV / MCITP / CCNA / MTCNA شدم . مدتی در زمینه امنیت فعالیت هایی داشتم اما در حال حاضر تمرکز خودم رو بر روی مجازی سازی و لینوکس گذاشته ام .

تمام پست های من - وب سایت من