هک پروگرامر ST-Link: شکستن رمز و آپدیت برنامه

blog
۱۳۹۷-۰۵-۰۳
4 دقیقه

در مقاله قبل ( هک پروگرامر ST-Link نفوذ به بوت لودر ) ، با بررسی دیتاهای به دست آمده و آنالیز عملکرد به نتایج خوبی از هک پروگرامر رسیدیم ، نتایج حاکی از آن بود که فایل فریمور پروگرامر ST-Link احتمالا باید درون برنامه آپدیتر باشد و از طرفی به دلیل نمایش ورژن فریمور قابل آپدیت در نرم افزار احتمالا کلید آن باید جایی درون برنامه ذخیره شده باشد. در این قسمت به عنوان آخرین قسمت از سری مقالات هک پروگرامر St-Link قصد داریم نحوه استخراج کد را آموزش دهیم پس با سیسوگ همراه باشد.

 

دسترسی به سورس نرم افزار

نقص های امنیتی جاوا

برای استخراج کد از درون برنامه نیاز است که ابتدا سورس کد برنامه آپدیتر را به دست آوریم و بعد از آن با بررسی آن قادر خواهیم بود که کلید مورد نظر را از برنامه اسنخراج کنیم . همانطور که قبلا هم اشاره کردیم، Java یک زبان میانی است که توسط ماشین مجازی Java بر روی سیستم اجرا می شود ، همین قابلیت به برنامه هایی که با استقاده جاوا نوشته می شوند امکان میدهند که بر روی سیستم عامل های مختلف قابل اجرا باشند. البته به ما هم این امکان را می دهند که بتوانیم کدهای نوشته را از دل برنامه اجرایی استخراج کنیم !

برای استخراج کد از فایل اجرایی جاوا نرم افزار های زیادی وجود دارند ، ما از نرم افزار procyon decompiler استفاده کردیم.

شاید برای شما مفید باشد: همه چیز درباره دیکد نرم‌افزاری MP3 به کمک میکروکنترلر 

 

پیدا کردن کلید رمزگذاری پروگرامر ST-Link

کلید های رمزگذاری AES-128

برای پیدا کردن کلید رمز گذاری لازم است که کد های برنامه آپدیتر ST-Link را بررسی کنیم ، معمولا تمام برنامه های از تابع Main شروع به اجرا می کنند و این می‌شود سرنخ ؛ با بررسی و تحیلی کد Java که بسیار هم به زبان C شبیه است و شاید این هم از اقبال ماست .

بعد از بررسی های طولانی ، بلاخره کلید مذکور را در کد پیدا کردیم ، و کلید چیزی نیست جز “best performance” ، اما از کجا میتوانیم مطمئن باشیم که عبارت درستی را به عنوان کلید انتخاب کرده اینم !

قبلا اشاره کردیم که احتمالا کدگذاری بر اساس AES-128 انجام شده است ، اگر با این روش رمزگذاری آشنایی داشته باشید ، حتما میدانید که 128 بیت کلید برای رمز گذاری لازم است ، که در واقع 128 بیت معادل است با 16 بایت ، و جالب این است که واژه “best performance” نیز 16 بایت یا 128 بیت است.

پیدا کردن کلید رمزگذاری پروگرامر ST-Link

و البته تنها یک راه برای اطمینان کامل وجود دارد ، و آن هم دکد کردن فایل رمز گذاری شده است ، برای این کار لازم است از ابزار دکدر AES-128 لازم دارید. برای انجام این کار میتونید از ابزار (Sisoog_ST-Link_HackTools.7z) استفاده کنید.

این ابزار با استفاده از جاوا نوشته شده است که هم برای کد کردن و هم برای دکد کردن میتوان از آن استفاده کرد. برای دکد کردن به صورت زیر از آن استفاده خواهیم کرد.

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

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

محتوای فریمور ST-Link

 

پروگرامر ST-Link به جهان سلام کن !

بعد از کشف نوع و کلید رمز گذاری و همچنین محل قرارگیری برنامه در حافظه (استفاده از آدرس وکتور در فریمور (0x8004000) ) قصد داریم برنامه ای بنویسیم که با استفاده از پایه PA5 یک LED را چشمک زن کنیم. پایه SWD روی این پایه تعریف شده است.

اولین اقدام تنظیم لینکر است که با توجه به آدرس وکتور و مقدار RAM میکروکنترلر به صورت زیر تعریف می شود

و اما برنامه اصلی هم به صورت زیر خواهد بود

بعد از کامپایل ، یک فایل bin خواهیم داشت که باید قبل از انتقال به پروگرامر St-Link رمزگذای شود. برای رمزگذاری دستور زیر استفاده می کنیم :

بعد از کدکردن با کیلد مروبطه ، فایل جدید را درون برنامه جاوا بروز رسانی می کنیم و ST-Link را با اسنفاده از آن آپدیت می کنیم.

آپدیت پروگرامر ST-Link برد دیسکاوری

 

تکمیل فرایند هک پروگرامر ST-Link

تا اینجا از هک پروگرامر توانستیم قفل های موجود در نرم افزار را بشکنیم و برنامه دلخواه خود را بر روی سخت افزار آپدیت کنیم ! اما برای این که بتوانیم یک فریمور کاملا کلون بسازیم نیاز است که علاوه بر داشتن کد برنامه ، کد بوت لودر را نیز داشته باشیم . برای به دست آوردن کد بوت لودر به سادگی برنامه ای بنویسید که حافظه فلش میکروکنترلر را بخواند و داده ها را بر روی پورت سریال ارسال کند. به همین سادگی فرایند های قبل را در کامپایل کد کردن برنامه و آپدیت بر روی پروگرامر ST-Link اجرا کنید ، به محض روشن شد ، برنامه شروع به ارسال داده های (فایل باینری) بوت لودر خواهد کرد. به همین سادگی فرایند هک پروگرامر St-Link را کامل می کنیم.

نکته مهمی که همیشه در تولید یک محصول باید مورد توجه قرار دهید نکات امنیتی در خصوص هک شدن ، کپی شدن ، و… است؛ و این مسیر نمی شود مگر با تجربه و دقت در نکات امنیتی
اطلاعات
34
0
لینک و اشتراک
profile

Zeus ‌

متخصص الکترونیک

زئوس هستم ساکن المپ

مقالات بیشتر
slide

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند. فروش در پالت
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد. جستجو در آیسی
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
خانواده سیسوگ

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند.
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد.
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند.
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند.
family

دیدگاه ها

profile
میثم گفت :
۱۴۰۲-۰۲-۱۲ ۱۵:۰۲

سلام ، چند عدد از پروگرامر های st-link که مستقیم به usb میخوره را دارم که همشون بعد از 5 یا 6 روز از کار می افتند و هنگام اتصال خطای Not recignized میده ،
آیا راهی داره که اینها رو برگردونم؟

profile
Zeus ‌ گفت :
۱۴۰۲-۰۷-۰۷ ۱۶:۳۴

خود به خود این تفاق افتاده ؟
تست کنید اگر میکروشون پروگرام میشه که پروگرام کنید اگر نه که صدمه دیده و نمیشه کاریش کرد

profile
صدرا فاضلی فرد گفت :
۱۴۰۲-۰۲-۱۰ ۱۳:۴۳

سلام وقت بخیر مطالب بسیار عالی بودن مخصوصا اشاره مستقیم به توجه کردن در بحث امنیت محصولات. به نظر بنده اگر قسمت هایی با تحت عنواینی مثل تبدیل فایل باینری یا هگز به زبان هایی مثل C این سری مقالات تکمیل تر میشه. در کل خیلی عالی بود من که لذت بردم همیشه مطالب سیسوگ اموزنده و زیباس

profile
Zeus ‌ گفت :
۱۴۰۲-۰۷-۰۷ ۱۶:۲۱

سلام دوست عزیز
محدودیت هایی وجود داره که نگرانی های قانونی وجود در خصوص اون وجود داره

profile
Catalyst گفت :
۱۴۰۱-۰۴-۲۵ ۲۱:۵۳

ممنون از مطلب بسیار مفیدتون ، دست مریزاد. چند سوال برام ایجاد شد که همه را در یک پست می‌پرسم، هر زمان وقتتون اجازه داد ممنون میشم پاسخ بدید.
سوال اول: آدرس شروع برنامه را چطور پیدا کردید که 0x8004000 هست؟
سوال دوم: اگر فایل bin رمزگشایی شده را با یه پروگرمر دیگه بریزیم روی ST-Link جواب میده؟
سوال سوم: در بخش تکمیل فرایند هک پروگرامر ST-Link اشاره به خواندن کد بوت لودر کردید، میشه توضیح بدید بعد از استخراج بوت لودر چطوری باید با فایل bin دیکد شده ترکیبش کرد که بشه یک firmware کلون خوب؟
سوال چهارم: چرا اگر آدرس شروع برنامه درست باشه ولی فضای اختصاص داده شده به بوت لودر خالی باشه برنامه کار نمی‌کنه؟
سوال پنجم: نحوه کدنویسی برای اجرا در رم و خواندن فلش چطوریه؟ ممنون میشم در یه پست یک مثال واقعی را مطرح کنید.
سپاس بیکران.

profile
Zeus ‌ گفت :
۱۴۰۱-۰۴-۳۰ ۱۰:۳۸

سلام و درود بر شما
جواب یک: از آدرس وکتور اینتراپت که از خود فریمور قابل استخراجه و هم از طریق خود چیپ (یک بار میخواستم آموزش هک STM32 رو بذارم که منصرف شدم)
جواب دوم: اگر این کار رو بکنیم و در ادرس درست بریزیم و بوت لودر وجود داشته باشه بله کار میکنه بله خوبی
جواب سوم: بعد از استخراج محتوای بوت لودر اونو به شکل باینری ابتدای فایل فریمور قرار میدیم به همین سادگی
جواب چهارم: خیلی بستگی به فریمور داره معمولا فریمورها کار تنظیم آدرس وکتور رو به بوت لودر میسپارن اگر خودشون این کار رو انجام بدن و البته حافظه ابتدایی با NOP پر شده باشه مشکلی وجود نخواهد داشت.
سوال پنجم: اول که باید به کامپایلر بگید آدرس فانکشن ها رو برای فضای رم تعریف کنه، بعد با کپی کردن برنامه در رم میتونید اونها رو صدا بزنید.

profile
محمدرضا اطمینان راد گفت :
۱۴۰۰-۱۰-۱۳ ۲۰:۵۵

ایا امکان دراه راهی بگید بتونیم فریمور STLINKاپدیت کنیم و راهی هست مدلی که فریمورش پریده رو دوباره پروگرام و استفادش کنیم؟

profile
Zeus ‌ گفت :
۱۴۰۰-۱۱-۲۴ ۰۹:۵۲

خوب آپدیت کردن که خیلی راحت از طریق خود نرم افزار شرکت ST موجود هست و از منو های نرم افزار میتونید پیداش کنید
در خصوص این که اگه فریمور پریده باشه خیلی راحت الان با جستجو توی گیت هاب فایل هگزش هست که بتونید مجددا پروگرامش کنید.

profile
مریم ابراهیمی گفت :
۱۴۰۰-۰۲-۲۵ ۱۴:۱۴

سلام ، ممنون بابت مطالب خوبی که گذاشتید.
من هم مشکلی مثل مشکلی کاربری به نام احسان دارم.
برد دیسکاوری f7 دارم که به اشتباه برنامه ی stlink اونو پاک کردم.
برنامه جدید که میریزم پورت کام ( همون بخش سریال ) رو نداره.

به این روش میتنم از رو برد دیسکاوری مشابه دیگه ای بخونم برنامشو؟
یا راه دیگه ای هست؟

profile
zeus گفت :
۱۴۰۰-۰۳-۰۱ ۰۹:۵۲

اخرین آپدیت رو از سایت st دانلود کنید – آیا بعد از دریافت آپدیت هم همچنان همین مشکل هست ؟

profile
maryam گفت :
۱۴۰۰-۰۵-۱۹ ۰۹:۲۱

بله هست.

profile
zeus گفت :
۱۴۰۰-۰۵-۱۹ ۱۵:۰۲

فکر میکنم بله احتمالا بتونید بخونید و دیکدش رو انجام بدید

profile
مریم ابراهیمی گفت :
۱۴۰۰-۰۵-۱۹ ۱۶:۵۸

چطور باید بفهمم کدوم فایل ابدیت هست؟

profile
zeus گفت :
۱۴۰۰-۰۵-۲۰ ۰۹:۲۱

خوب ساده ترین راه سعی و خطا هست یا این که از اسمش تشخیص بدید
اگر از اسمش نتونستید متوجه بشید میتونید تک تک فایل ها رو تست کنید و ببینید کدوم پورت سریال هم داره و به برد شما میخوره 🙂

profile
مریم ابراهیمی گفت :
۱۴۰۰-۰۳-۰۱ ۱۰:۱۷

وقتی ابدیت میکنم همچنان فقط برنامه ساده ی stlink هست.
بخش ارتباط سریال نداره. ( برنامه stlink کلی هست نه مخصوص برد دیسکاوری)
همچنین قبلا برنامه اش جوری بود که تغذیه کل برد از همون کابل تامین میشد. ( یکی از پین های میکرو به عنوان en تغذیه خروجی و high شده بود) ولی در برنامه کلی stlink برای این پین عملکردی قرار داده نشده.

profile
VHD گفت :
۱۳۹۹-۰۷-۱۳ ۱۰:۰۰

سلام
با cubeIDE و پروگرمر st-link میخواستم برد bluepill رو پروگرم کنم. ولی cubeIDE خطا میده که چیپ اصلی نیست!
بنظرتون میشه کاریش کرد؟

profile
زئوس Zeus گفت :
۱۳۹۹-۰۷-۱۳ ۱۰:۲۵

سلام من این خطایی رو میگید تا حالا ندیدم – میشه متن کامل رو بذارید ؟
عجیبه برام

profile
VHD گفت :
۱۳۹۹-۰۷-۱۳ ۱۰:۴۲

اینجا هم نوشته که cubeIDE فقط با چیپ های اصلی کار میکنه:
https://community.st.com/s/question/0D50X0000BEY435/cannot-download-code-into-stm32f103-by-stlink-v2-in-stm32cubeide

profile
زئوس Zeus گفت :
۱۳۹۹-۰۸-۲۳ ۱۰:۲۸

جالبه تا قبل از این ساز و کار رو نداشت توی نرم افزار خودش حالا چس شده توی این نرم افزار اضافه کرده جالبه برام

profile
VHD گفت :
۱۳۹۹-۰۷-۱۳ ۱۰:۳۹

ببخشید همش بهم ریخت 🙂
یکی یکی میفرستم

profile
زئوس Zeus گفت :
۱۳۹۹-۰۸-۲۳ ۱۰:۲۰

جالبه من تا حالا با این خطا مواجه نشدم
ولی شما میتونید از openocd استفاده کنید برای دیباگ کردن

profile
wmp144 گفت :
۱۳۹۹-۰۷-۱۳ ۰۹:۵۵

سلام
امکانش هست که پروگرمرهای ST link فیک که‌ اکثرا از اون ها استفاده می کنند رو به J link تبدیل کرد؟
سایت شرکت segger میگه نمونه اصلی ST link رو میشه تبدیل کرد.
https://www.segger.com/products/debug-probes/j-link/models/other-j-links/st-link-on-board/

profile
زئوس Zeus گفت :
۱۳۹۹-۰۷-۱۳ ۱۰:۲۶

نمونه اصلی رو من این کار رو کردم و فکر نمیکنم با نمونه های فیک نشه این کار رو کرد !
احتمالا چون روشی برای تشخصی اصلی یا فیک بودن نداره – احتمالا بشه چنین کرد.

profile
wmp144 گفت :
۱۳۹۹-۰۷-۱۳ ۱۱:۰۹

طبق توضیحات سایت عمل کردم ولی در مرحله آخر موقعی که گذینه یک رو برای آپدیت انتخاب می کنم ، همون جا میمونه و جلوتر نمیره.

profile
امیر گفت :
۱۳۹۹-۰۲-۱۵ ۱۶:۳۹

وقت بخیر سلام
ممنون از پست خوبی که داشتید
راستش برای device هایی که frimware اونا تو ic لود شده و در دسترس نیست چه پیشنهادی دارید؟ سازنده device هم هیچ آپدیتی برای اون درنظر نگرفته.. چطور میشه به فریم ور دست یافت؟ و چطور میشه پسورد upload برنامه رو برداشت؟

profile
زئوس Zeus گفت :
۱۳۹۹-۰۲-۲۷ ۱۰:۰۸

خوب در واقع باید ببینید چه دسترسی هایی دارید ! و این قضیه برای هر چیپ میتونه متفاوت باشه – حتی هر طراحی !!!
شنیدم که شرکت هایی هستند که با تراشیدن چیپ سلیکون داده ها رو از توش در میارن !

profile
احسان گفت :
۱۳۹۷-۰۶-۱۴ ۱۴:۴۲

سلام
خیلی خیلی ممنون از این که پیگیر مشکل من هستید
یه دونه پروگمر آنبورد stm32f429zit هست

profile
زئوس Zeus گفت :
۱۳۹۷-۰۶-۱۸ ۰۹:۱۸

بله خواهش میکنم ، بررسی میکنم

profile
احسان گفت :
۱۳۹۷-۰۵-۳۱ ۰۰:۵۹

سلام ببخشید این سوال رو اینجا مینوسیم
من یه stm32f429i discovery دارم که متاسفانه در یک آپدیت پورت سریال مجازی که پروگرامرش میسازه واسه ارتباط یوزارت از کار افتاده یعنی تو برنامه آپدیتر خود st نیست راه حلی داره که درست بشه بتونم فرمور رو درست کنم که پورت سریال مجازی روی پروگرامر بودر دوباره فعال بشه
ممنون

profile
زئوس Zeus گفت :
۱۳۹۷-۰۶-۰۵ ۱۰:۲۸

سلام دوست عزیز خواهش میکنم ، احتمالا راهی وجود داره برای این خطایی که اتفاق افتاده ، قطعا شما بردتون رو با یک ورژن اشتباه بروز کردید
امکان درست کردنش از طریق هک وجود داره ولی بعید می دونم خود شرکت ST راهی براش نداشته باشه ، یک بار سعی کنید با استفاده از آپدیتر خود شرکت آپدیت کنید ببینید مشکل حل میشه یا نه !

profile
احسان گفت :
۱۳۹۷-۰۶-۰۸ ۲۰:۵۵

سلام
آپدیت کردم با برنامه خود st الان به روزترین برنامه روش هست ولی متاسفان پورت کام رو نداره

profile
زئوس Zeus گفت :
۱۳۹۷-۰۶-۰۹ ۱۹:۵۴

سلام
احتمالا قسمتی که نوع برد رو هم مشخص میکنه پاک شده – مدل بردتون چی بود ؟

profile
احسان گفت :
۱۳۹۷-۰۶-۱۷ ۲۳:۳۱

سلام
discovery stm32f429zi

profile
زئوس Zeus گفت :
۱۳۹۷-۰۶-۱۸ ۰۹:۱۸

سلام دوست عزیز
متاسفانه با سرچ هایی که انجام دادم به نتیجه ای نرسیدم و هیچ راهکاری برای حل این مشکل از سوی شرکت ST ارائه نشده ، به نظرم بهترین کار اینه که توی فروم های پشتیبانی ST مشکل رو مطرح کنید.

become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله