هدفاز این پروژهی جذاب با آردوینو، ایناستکه یک برد آردوینو را به یک USB keyboard و یک پویشگر VGA مجهز کنیم تا برای شکستن رمز ورود یک BIOS از روش تست تعداد زیادی پسوردهای استفادهنماییم. در پروژهی موردنظرما ضمناینکه ورودی VGA را اسنیف میکنیم سعیمیکنیم از اینطریق متوجهبشیم پسورد واردشده به سیستم آیا توسط کامیپوتر پذیرفته شده یانه؟ و درصورت تایید آنرا بهعنوان پسورد سیستم درنظر میگیریم و نمایش میدهیم. هیچ مزیتی در استفاده از این روش وجودندارد. درواقع اینروش بسیارکند بوده و شما شاید حتی نتوانید به کلمهعبور دستیابید. اما ما همیشه کارهایمان را جهت سرگرمی انجام میدهیم. و ایدههای آن میتواند برای کارهای مشابه کاربرد پیدا کند و این تنها برای بهنمایش درآوردن یک تصویرکلی از این عملیات است. راههای متفاوت زیادی برای بازنشانی BIOS وجوددارد بخصوص اگر به سختافزارهای مناسب دسترسی داشتهباشید و البته این موضوعی است که شما باید راجع بهآن اطلاعاتی داشتهباشید زیرا ما داریم دررابطه با BIOS صحبت میکنیم و تاجاییکه ما میدانیم هیچگونه دسترسیاز راهدوری بهآن وجودندارد. در تئوری، شما میتوانید بهغیراز BIOS در دیگر برنامهها نیز از اینروش استفادهکنید، اما درصورتیکه شرایط لازم برقرارباشد.
بهعنوانمثال نرمافزاری که قصددارید عملیات را روی آن انجامدهید نباید پساز چند تلاش پیاپی بلاک شود. همچنین یکیدیگراز محدودیتها ایناست که ما قادربه خوانشو پردازش تمامی قاب VGA نیستیم. بههمیندلیل و بهجای اینکار، ما یک پیکسل واحد را از وسط صفحه جدا میکنیم و باتوجهبه رنگ آن مراحلبعد را پی میگیریم. بهعنوان مثال: پیکسل قرمز در وسط صفحه نشانگر این است که رمز ورودی اشتباه است. درحالیکه اگر پیکسل فوق آبی باشد، نشاندهنده صحت رمزعبور است و سیستم منتظر ادامه عملیات رمزنگاری خواهدبود.
شبیهسازی صفحهکلید USB توسط آردوینو
برای بخش صفحه کلید USB، از کد V-USB برای آردوینو سود بردیم که از کتابخانه V-USB مورداستفاده قرارمیگیرد. شما باید V-USB را برای آردینو نصبکنید تا بخش “pde” کارکند.
شماتیک مدار هک BIOS بایوس بااستفادهاز آردوینو
شیلد آردوینو برای این پروژه بسیارساده است، همچنین من بهجای استفادهاز یک کامپیوتر ثانویه از یک السیدی ساده جهت مشاهدهی روند پیشرفتو نتایجکار استفادهکردم. دو سر دیود Zener نیز برای ایجاد رابطه با USB صفحهکلید استفادهمیشود. (که این یکیاز پیشنهادات کتابخانه V-USB برای انجامکار است.)
یک دکمه نیز برای شروعو یا پایان عملیات وجوددارد. که اگر دکمهی فوق را 2ثانیه نگهدارید عملیات حمله مجدداً پایهریزی میشود.
اسنیفر Sniff the VGA – VGA :
برای دانستن رنگ پیکسل در میان صفحه، ما نیاز به خواننده سیگنال آنالوگ قرمز و همچنین پالسهای همگامسازی افقی و عمودی داریم تا زمانِ خوانشِ رنگقرمز را بدانیم. در اولین تلاشاز دستور attachInterrupt استفادهشد تا بهوسیلهی آن HSYNC و VSYNC ضبط شود اما مشکلاتی پیشآمد که باعث توقف صفحهکلید USB شد. بهنظرمیرسد استفادهاز دستوراتکلی ()ISR و ()SIGNAL در اینمورد بهترباشد.دراین صورت پالس VSYNC یک متغیر گلوبال که h_line نامیده میشود را بازنشانیکرده و درهمانحال HSYNC آنرا افزایش میدهد تا متوجهشود کدامیک از خطوط VGA ترسیم شدهاست. تابع waitWrongPassword تجزیهو تحلیل پیکسلها را انجام میدهد. چندثانیه طول میکشد تا پیکسل قرمز ظاهرشود و بهدنبال تطبیق خط برود. پساز شروع روند هنگامیکه به ۲۳۸# (تقریباً میانه عمودی در رزولوشن 480*640) میرسد. زمانبندی با یک تأخیرکوچک برای رسیدن به خطمیانیافقی روبرو میشود. و درنهایت ورودی آنالوگ خوانده میشود. سپس، بعداز خواندن ورودی آنالوگ قرمز، نتیجهی موردمقایسه قرارمیگیرد تا مشخصشود رمزورودی اشتباه است یا خیر. اگر (valueR > 140) باشد. شما احتمالا! باید براساس ترازکارت VGA این مقدار را تغییردهید.
دانلود کد برنامه :
شما باید مجموعه کاراکترهایی که میخواهید جهت عملیات از آنها استفادهکنید را از پیش تعیینکنید. جهت انجام اینکار، آرایه charset را با افزودن کدهای رمز USB (که میخواهید از آنها استفادهکنید) اصلاحکنید. درحالت پیشفرض تنها کدهای KEY_A، KEY_B، و KEY_C تعریفشدهاند. همچنین، شما باید آرایهی دومی که charset_log نامیده میشود را باتوجهبه طول آرایه اول اصلاح کنید. اما بهجای کدهای رمز آنرا با کاراکترهای نشاندهنده بایت پر کنید. چیزدیگری که باید تغییردهید، حداکثر طول رمزعبور است که درحالت پیشفرض با ۴ کاراکتر تنظیم شدهاست. برای مشخصکردن آن MAX_LEN را جستجو کنید. حالات مختلف، بهطور دورهای در قسمت EEPROM ذخیره میشود. بنابراین درصورت پیشآمدن مشکلی در سیستم، شما میتوانید از آخرین (یا نزدیکترین) گذرواژه تستشده کار را از سر بگیرید. در اینجا برخی تصاویر شیلد طراحی شده را میبینید:
منبع: سیسوگ