بایگانی برای اسفند, ۱۳۸۷

ماهیت و چگونگی کارکرد قفل سخت افزاری

جمعه, اسفند ۹م, ۱۳۸۷

اهمیت پیشگیری از استفاده غیرقانونی از نرم افزارها

پیشگیری از استفاده غیرقانونی از نرم افزارها (Piracy Prevention) و پیاده سازیه قانون نشر (Copyright) برای همه انواع ساخته های نرم افزاری از اهمیت بسیاری بالایی برخوردار است که همیشه با صرف هزینه های بالایی هم همراه بوده.

این موضوع که با مهندسی معکوس (Reverse Engineering) و نفوذ در نرم افزار (Cracking) رابطه نزدیکی دارد طبق یکی از تحقیقات قابل استناد موسسه IDC مبنی بر مطالعه آمار استفاده غیرقانونی از نرم افزارها در حدود ۳۰ میلیارد دلار نرم افزار به صورت غیرقانونی در سال ۲۰۰۳ در جهان یا به عبارتی ۳۶% از مجموع ساخته های نرم افزاری در این سال به صورت غیرقانونی مورد استفاده قرار گرفته , در یک مطالعه دیگه هم اینطور تخمین زده شده که اگر این میزان استفاده غیرقانونی از نرم افزار ۱۰% کاهش پیدا کند معادل ایجاد یک میلیون شغل جدید و ۴۰۰ میلیارد دلار رشد اقتصادی جهان خواهد بود.

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

قفل سخت افزاری:

قفل سخت افزاری (Hardware lock) در اصل سخت افزار یا رسانه قابل حمل بخصوص است که برای قفل گذاری و جلوگیری از نسخه برداری غیرمجاز نرم افزارها مورد استفاده قرار می گیرد.

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

نیاز به استفاده از قفل سخت افزاری:

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

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

خود برنامه اجرایی باید به طور صحیح روی لوح قرار گیرد و سیستم عامل ویندوز باید بتواند آنرا از روی این رسانه بخواند یا حداکثر باید بتواند در حافظه قرار گیرد , یک کرکر عادی نیز می تواند این برنامه را از حافظه RAM ‌خوانده و در جایی نسخه برداری کند البته معمولا کار به این پیچیدگی ها هم نیست و با نرم افزار های بازیابی اطلاعات می توان آنها را بازگرداند.

راه های دیگری مانند پنهان کردن (Encrypt) برنامه و راههای جلوگیری از اشکال زدایی (Debug) که بوسیله نرم افزارهای جانبی ارایه می شود نیز چندان مفید نبوده و کار کرکر را در پیدا کردن برنامه اصلی و اصطلاحا Dump کردن آن از حافظه RAM‌ بدون این محافظ های اضافی مشکل می کند.

استفاده از شماره سریال لوح سخت (Hard Disk) و … یا ترکیبی از آنها نیز مشکلاتی را دربر دارد که اولا در صورت تغییر سخت افزار ویندوز یا … برنامه شما از کار افتاده و کاربر را ناراضی می کند و یا حتی کاربر برای نصب این برنامه روی کامپیوتر دیگر به راحتی به دروغ به شما می گوید که به علت نصب دوباره ویندوز شماره سریالش از کار افتاده (یا مثلا عوض کردن لوح سخت) و نیاز به شماره سریال جدید دارد , در ضمن تغییر این شماره سریال ها هم احتمالا به راحتی امکان پذیر است مثلا بوسیله یک برنامه کوچک که به عنوان کرک همراه برنامه شما فرستاده می شود می توان شماره سریال لوح سخت را به عددی که با شماره سریال فرستاده همراه لوح فشرده برابر باشد عوض کرد یا اگر از DLL یا تابع خاصی برای این کار استفاده کرده باشید می توان آنرا طوری تغییر داد که همیشه یک عدد را برگرداند و بتوان آنرا روی هر کامپیوتری نصب کرد.

انواع گوناگون قفل سخت افزاری:

این قفل ها امکان داره به صورت یک لوح فشرده (Compact Disk:CD) یا لوح نرم (Flappy Disk) مورد استفاده قرار بگیرن که به سادگی قابل نسخه برداری نباشند , البته این از ساده ترین نوع قفل های سخت افزاری هست , قفل سخت افزاری ممکنه بصورت یک قطعه سخت افزاری خارجی و نصب شونده روی درگاه موازی (Parallel Port) که درگاه متعارف چاپگر LPT هست یا درگاه USB یا (USB Port) هم مورد استفاده قرار بگیره که قفل های USB بدلیل سرعت بالاتر و فن آوری جدیدتر بیشتر مورد استفاده قرار میگیرند.

حافظه قفل سخت افزاری و کارکرد آن:

بخش اصلی قفل از یک حافظه قابل پاک شدن تشکیل شده که با توجه به نوع و حجم اون دارای کارکردی متفاوت هست و عمدتا به یکی از دو روش زیر کار می کند:

روش اول قفل گذاری به این صورت است که تولید کننده نرم افزار یک یا چند بایت (Byte) از اطلاعات را در قفل نوشته و نرم افزار در هنگام اجرا آن را بررسی می کند , در صورتیکه قفل وجود داشته باشد نرم افزار به کار خود ادامه می دهد و اگر قفل وجود نداشته باشد و یا اطلاعات خوانده شده از روی قفل صحیح نباشد نرم افزار متوقف شده و با اعلام پیام خطا از اجرای صحیح خودداری می زند.

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

استفاده از این قفل ها بسیار ساده بوده و نیاز به تخصص خاصی ندارد , تنها کافیست که نرم افزار ویژه قفل را که بوسیله شرکت تولید کننده قفل ارائه شده اجرا نمود.

در ابتدا که قفل فاقد اطلاعات است اول یک کلمه دلخواه به عنوان گذرواژه درخواست کرده و سپس با توجه به نوع قفل یک یا چند کلمه اطلاعات را دریافت و در حافظه قفل ثبت کنید , در دفعات بعد می بایست گذرواژه ای که اولین بار ثبت شده وارد شود تا بتوان به اطلاعات درونی قفل دسترسی داشت , البته بعد از ورود به برنامه این واژه قابل تغییر است.

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

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

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

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

با اجرای نرم افزار ویژه قفل و وارد نمودن گذرواژه باید نام فایلی را که می خواهیم بر روی آن قفل بگذاریم مشخص کنیم تا بخشی از آن در قفل ثبت گردد.

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

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

ضمنا نوع دیگری از قفل ها هستند که هر دو روش فوق استفاده می کنند اما طرفدار چندانی ندارند.

بالا بردن امنیت قفل های سخت افزاری:

هیچ قفلی غیرقابل نفوذ نیست ولی می توان نفوذ به آن را تا حدی سخت کرد که هک کردن آن برای کسی بصرفه نباشد , در استفاده از قفل های سخت افزاری راهبردهای فراوانی وجود دارد که برای افزایش امنیت در نرم افزار مورد استفاده قرار میگرد.

قفل های سخت افزاری موجود در بازار و از نوع متصل شونده به درگاه موازی بیشتر با چاپگرها مشکل داشته و چون از فن آوری پایینی برخوردارند به راحتی قابل نسخه برداری هستند , حجم زیاد دارند و قدیمی نیز هستند , قفلهای USB موجود نیز بیشتر ساخت کشور چین هستند , قفلهای یک شرکت همگی دارای یک پروتکل می باشند که با کار کردن روی یکی از آنها می توان تمام انواع آنها را هک کرد و یکی از بزرگترین ایراداتی که به آنها وارد می شود این است که دقیقا همین قفلی که در اختیار شماست را هکر نیز می تواند با کتابچه راهنما و به قیمت پایینی تهیه کند تنها فرق آن نیز با قفل شما یک شماره سریال است که بوسیله نرم افزار خاصی بر روی آن قرار می گیرد و هکر نیز می تواند با فهمیدن پروتکل استفاده شده در آن به هر تعدادی از این قفل را تولید کند و به علت استفاده کردن از توابع ثابت نیازی به این کار هم نداشته و می تواند با نوشتن دوباره این توابع که دقیقا نیز در کتابچه راهنما توضیح داده شده قفل شما و همه قفلهای از این نوع را دور بزند.

مثلا با استفاده از EXE Protector امنیت نرم افزارهایتان را تا حد زیادی بالا برده و فایل .EXE خود را در مقابل روش های کرک محافظت نمایید.

برای استفاده از قفل های سخت افزاری معمولا از یک شی COM مثل DLL یا ActiveX استفاده میگردد بطوریکه در بخش های مختلف نرم افزار توسط روتین هایی که شی COM در اختیار برنامه نویس قرار میدهد میتواند از اطلاعاتی که پیشتر در قفل ذخیره شده است استفاده نموده یا آنها را بررسی کند , برای بالا بردن امنیت در نرم افزار روتین های بررسی قفل در بخش های مختلف نرم افزار قرار میگیرد.

استفاده از ActiveX و DLL ها برای راحتی کار شما کار کرکرها را نیز راحت تر می کند دقیقا دسترسی شما به هرکدام از این توابع به راحتی مشخص می شود و امکان تغییر هرکدام از این تابع ها هست پیچیده بودن قفل از معایب آن به شمار نمی رود.

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

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

در نگارش این نوشته مورد استفاده قرار گرفته:

آشنایی با خدمت همراه بانک ملی

پنجشنبه, اسفند ۸م, ۱۳۸۷

در راستای معرفی و بررسی خدمات نوین بانکداری یا به عبارتی بانکداری نوین امروز بر اون شدم تا یکی از خدمات بانک ملی ایران به نام همراه بانک ملی که مناسب برای استفاده روی دستگاه تلفن همراه و بوسیله سیستم اون هست رو معرفی کنم.

پیشتر تو بخشی از نوشته حکایت تلاش برای دریافت صورتحساب بانکی برنامه PecMP که برنامه پرداخت از طریق تلفن همراه Parsian e-Commerce تجارت الکترونیک پارسیان هست رو معرفی کرده بودم.

اگه به وب سایت رسمی بانک ملی ایران مراجعه کنین می تونین در قسمت پایین صفحه اصلی و در منوی خدمات و بخش الکترونیکی پیوندی رو با عنوان همراه بانک ملی ایران مشاهده کنین که می شه در اون از خدمات در حال انجام همراه بانک ملی و نکات ایمنی استفاده از اون اطلاعاتی کسب کنین یا آخرین نسخه فایل مربوط به گوشی های Nokia و گوشی های دارای سیستم عامل یا گوشی های Sony Ericsson سری K و W و البته فایل راهنمای برنامه رو دریافت کنین.

این خدمت بانک ملی که بوسیله بهره گیری از قابلیت ارسال و دریافت پیامک تلفن همراه کار می کنه

به منظور پرهیز از ارجاع مشتریان بانک به شعب و جهت پوشش هر چه فراگیر تر مشتریان ضمن رعایت جوانب امنیتی سیستم , جهت ثبت نامِ مشتریان استفاده کننده از سیستم , از رمز حساب که در سرویسهای تلفنی نیز قابل استفاده می باشد , کمک گرفته شده است.

ایجاد شده , به کاربر خودش امکان

  • مشاهده مانده حساب
  • مشاهده گردش حساب
  • انتقال وجه بین حسابهای دارای یک شماره مشتری
  • پرداخت قبض
  • خرید شارژ سیم کارت
  • دریافت اطلاعات شارژ سیم کارت

رو می ده.

همچنین به منظور استفاده مناسب و ایمن از سیستم همراه بانک ملی توجه به این نکته ها کارسازه:

  1. نرم افزار همراه بانک ملی را تنها از طریق مراجعه به وب سایت اینترنتی بانک ملی ایران www.bmi.ir دریافت نمایید.
  2. به هیچ عنوان نرم افرار را از روش های دیگر نظیر بلوتوث (Bluetooth ) , اینفرارد (Infrared ) , سایر سایتهای اینترنتی , پست الکترونیک و … دریافت ننمایید.
  3. به هیچ وجه رمزهای خود( رمز حساب , رمز اول و دوم کارت و رمز ورود به نرم افزار همراه بانک را در اختیار دیگران قرار ندهید و آنها را در فواصل زمانی تغییر دهید.
  4. در صورت مفقود شدن یا سرقت گوشی و یا سیم کارت تلفن همراه , بلافاصله رمز حساب و رمز دوم کارت خود را تغییر دهید.
  5. جهت افزایش ضریب امنیت و کارایی سیستم , بصورت دوره ای از طریق گزینه بازگشت به تنظیمات اولیه , تنظیمات برنامه را به حالت اولیه بازگردانید. توجه داشته باشید این عمل موجب از بین رفتن پیامهای دریافت شده موجود در صندوق پیامها و نیز اطلاعات ثبت نام حسابها و سرویس های یکطرفه می گردد , بهمین علت می باید پس از انجام این عمل حسابها و سرویس های خود را بروز رسانی نمایید.
  6. پیامهای دریافتی از این سیستم که در منوی صندوق پیامهای برنامه قرار می گیرند را پس از خواندن , حذف نمایید.
  7. پیش از واگذاری گوشی تلفن همراه خود ابتدا گزینه بازگشت به تنظیمات اولیه را انتخاب نموده و پس از آن برنامه را از روی گوشی حذف نمایید. با این کار کلیه اطلاعات حسابهای ثبت شده و نیز پیامهای دریافتی شما بر روی گوشی از بین می روند.
  8. پیش از واگذاری سیم کارت خود , چنانچه سیم کارت دیگری را جایگزین نمی نمایید باید حسابها و سرویس های یکطرفه ثبت نامی خود را حذف نمایید و در صورتی که از سیم کارت جایگزین استفاده می نمایید مطابق بند بعدی عمل نمایید.
  9. در صورتی که مایل باشید از سیم کارت دیگری در گوشی تلفن همراه خود استفاده نمایید پس از تعویض سیم کارت ابتدا گزینه بازگشت به تنظیمات اولیه را انتخاب نموده و پس از آن با استفاده از گزینه های انتقال حسابها به سیم کارت فعلی و انتقال سرویسها به سیم کارت فعلی ثبت نام حسابها و سرویس های یکطرفه خود را به سیم کارت جدید انتقال دهید.
  10. در زمان نصب نسخه جدید ابتدا نسخه قبلی را از گوشی خود حذف نموده و پس از آن , نسخه جدید را نصب نمایید.
  11. در صورت نیاز به نصب مجدد نرم افزار ( نسخه یکسان ) و درصورت تمایل به حفظ اطلاعات موجود بر روی گوشی , نرم افزار را بر روی برنامه قبلی نصب نموده و آن را جایگزین (replace )نمایید و به سوال نگهداری اطلاعات موجود , پاسخ مثبت دهید.

پی نوشت : شهادت امام رضا امام میهمان و میزبان ایرانیهارو خدمت دوستداران حضرتش تسلیت عرض می کنم.

حکایت افسانه جومانگ و بقراط خم نشین

چهارشنبه, اسفند ۷م, ۱۳۸۷

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

در جایی وقتی که جومانگ , سوسانو و پدرش برای عرض ارادت خدمت امپراطور رسیدن , امپراطور از جومانگ و بعد سوسانو پرسید اگه خواسته ای دارین بگین که هر خواسته ای باشه من انجام می دن.

اینجا بود که یکی از اطرافیان به شوخی گفت:

اگه بگه:

گنهم محو کن بیامرزم
کز گرانی چو کوه البرزم

چی می شه؟

شوخی جالبی بود و باعث خنده شد ولی خب این امپراطور هم نمی تونست چنین خواسته ای رو مثل سلطانی که بقراط ازش چنین درخواستی رو کرد برآورده کنه.

این بیت شعر که از حکایت بقراط خم نشین مربوط به حدیقة الحقیقه سنائی انتخاب و بیان شده به معانیه ریز و دقیقی از ناتوانیه مخلوق از انجام هرکاری در مقابل خالقش صحبت می کنه.

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

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

گفت بقراط حاجت اول
عملم هست یک به یک خلل

گنهم محو کن بیامرزم
کز گرانی چو کوه البرزم

سلطان گفت: این کار من نیست , کار خداوند است حاجت دوم را بخواه.

بقراط گفت: پیرم مرا جوان گردان
عجز و ضعف از نهاد من بستان

گفت: این از خدای باید خواست
از من این خواستن نیاید راست

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

بقراط گفت: عمر مرا زیاد کن و مرا از چنگ مرگ رها سازو سلطان

گفت: این نیز کرد نتوانم
مَلِکَم برجهان نه یزدانم

بقراط گفت: راهت را بگیر و برو و مرا اقلا از آفتان تابان بازمدار , میدانم که از درخت بید کسی خرما نخورده است.

حاجت از کردگار خواهم من
وز تو حالی بدو پناهم من

تو چو من عاجزی و مجبوری
وز بزرگی و برتری دوری

برتری مرخدای را زیباست
که به ملکت همیشه بی همتاست

در نگارش این نوشته مورد استفاده قرار گرفته: