نرم افزار کدباز چیست و و ویژگی های مهم آن کدامست؟

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

تا حالا بارها پیش اومده که تو همین وبلاگ از نرم افزارهایی موسوم به نرم افزارهای کدباز (open source) صحبت شده باشه , حالا این نرم افزارهای کدباز یا بقولی بازمتن چه نرم افزارهایی هستن و چه ویژگی هایی دارن مطلبی هست که ادامه بهش پرداخته می شه.

open-source-initiative-logo

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

همچنین هر کاربری برای گسترش بیشتر اون می تونه بدون زیر پا گذاشتن قانون نشرش , اون رو نسخه برداری کرده و منتشر کنه.

در مقابل این دسته نرم افزارها دسته ای دیگه موسوم به نرم افزارهای کدبسته (closed source) توسعه پیدا کردن که شرکت ها و تولیدکننده های اونها هیچ کدی رو از منبعشون منتشر نمی ‌کنن تا دیگران بوسیله اون کدهای منتشر شده نتونن نرم افزار مشابهی رو تولید کنن.

پس نرم افزارهای کدباز دارای ویژگی های مهمی به این شرح هستن:

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

در حال حاضر نرم افزارهای کدباز زیادی برای دریافت و استفاده در اختیار کاربر قرار دارن که از اون جمله می شه به انواع سیستم عامل های بر پایه لینوکس , نرم افزار انجام کارهای دفتری چون Open Office , مرورگر اینترنت چون Mozilla Firefox , برنامه نویسی چون PHP و پایگاه داده چون MySQL و خیلی نرم افزارهای نام آشنای دیگه اشاره کرد.

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

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

ترجمه:

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

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

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

پیشگیری از استفاده غیرقانونی از نرم افزارها (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 ها برای راحتی کار شما کار کرکرها را نیز راحت تر می کند دقیقا دسترسی شما به هرکدام از این توابع به راحتی مشخص می شود و امکان تغییر هرکدام از این تابع ها هست پیچیده بودن قفل از معایب آن به شمار نمی رود.

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

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

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

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

سه شنبه, بهمن ۲۲م, ۱۳۸۷

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

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

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

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

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

تو تصویر زیر می تونین نوار کناری دوتا از این وب سایت ها که مربوط به هزینه درج آگهی ویژه در اونها هست رو ببینین و با هم مقایسه کنین.

costs-in-two-different-classified-ads-websites

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

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