پاسخ : برای حفظ حقوق طراحان اسکریپت چی کار کنیم؟
این به شما مربوطه. تا حالا ۳ نمونه رو من دیدم:
۱. برنامه اجرا نمیشه و پیغام عدم لایسنس میده (مثل سی پنل)
۲. برنامه اجرا نمیشه و دیتابیس خودش رو پاک میکنه کاملا.
۳. برنامه اجرا میشه و دائما پیغام عدم لایسنس میده و به مرور زمان feature هاش از کار میافتند (مثل ویندوز)
پاسخ : برای حفظ حقوق طراحان اسکریپت چی کار کنیم؟
نقل قول:
نوشته اصلی توسط
camelian77
در این زمینه باید یه رساله نوشت.
به طور کلی کد رو باید encrypt کنید وگرنه از دست میره، اونم زبونهای اسکریپتی مثل php رو.
روش لایسنس سرور به طور کلی از این ایده استفاده میکنه که این زیر توضیح میدم. در این ضمن توجه کنید که تمام این قصه بر این پایه بنا شده که الگوریتم مورد استفادهی ما مخفی هست و برای کاربر نهایی غیر قابل تغییر.
۱. قبلش بگذارید روش های اولیه رو شرح بدیم. سیستمی مثل مثلا بازی Age of Empires اگه دیده بوده باشید، یه سریال نامبری داشت. اون رو وارد میکردیم و تمام! قفل باز میشد. اون سریال نامبر یک کلید هست که هر کسی داشته باشه میتونه قفل رو باز کنه و اگر چند نفر یک کلید رو داشته باشن همه قفل رو باز میکنن.
۲. بعد سیستمهایی اومد که با اینترنت اکتیویت میشدن. این مد نظر ما هست.
توی license server کاری که میکنیم این هست. اسکریپت شما به عنوان کلاینت یه مقداری اطلاعات از کاربر (مشتری شما) دریافت میکنه، مثلا یک کد اکتیویشن (Key-Eins) .
سپس خودش از محیط اش یه مقدار اطلاعات جمع آوری میکنه (Deployment Data) مثل آی پی و هاست نیم سرور (مثال: سی پنل با این دو کار میکنه)
داخل هر نسخهای که تحویل شده هم یک سریال منحصر به فرد وجود داره (Identification Key) . مجموعهی این اطلاعات تشکیل یک self-key رو میدن که کاملا یکتا و غیر بازگشتی هست و نوعی private key هست و سپس به سرور مرکزی شما license server فرستاده میشه تا بررسی شه.
داخل سرور شما یک پروسه تشخیص میده که آیا این self-key درست هست یا نه و این کار با روش مقایسه انجام میشه.
>>>> سرور از اطلاعات دریافت کرده رو دوباره پروسس میکنه (به روش قبل) تا یک کلید دیگه به دست بیاره یک نوع public key. سپس این دو کلید با هم به کلاینت فرستاده میشن و انجا بررسی میشن که آیا با هم برابر هستند یا نه؟ توجه کنید که این برابری چیزی غیر از A == B هست. !!
اگر برابری اتفاق افتاد برنامه شما اجرا میشه. اگر نیفتاد؟
بووم.
از توضیحاتتون ممنونم
1- ببخشید جسارتا اگه license server به هر دلیلی دان بشه یا از کار بیوفته اینجا دیگه اسکریپت کار نمی کنه؟
2- بعد هر بار چک کردن کد لایسنس این خللی رو در اسکریپت ایجاد نمی کنه؟ مثلا می تونه یکی از این موارد کاهش لود باشه (چون هر دفعه باید درخواست به یک سرور جداگانه ارسال بشه) ، اگر به این شکل هست آیا راهی هست که این رو برطرف کرد؟
3- و مورد سوم، این الگوریتم رو چطوری می خوایید در کدهاتون قرار بدید که به عنوان مثال خریدار متوجه نشه؟ با برداشتن اون چند خط کد چه اتفاقی می یوفته؟
4- و اینکه شما می تونید یک اسکریپتی که لایسنس داره رو غیرفعالش کنید؟ (یعنی بدون لایسنس بشه استفاده کرد)
با سپاس از راهنمایی شما
پاسخ : برای حفظ حقوق طراحان اسکریپت چی کار کنیم؟
نقل قول:
1- ببخشید جسارتا اگه license server به هر دلیلی دان بشه یا از کار بیوفته اینجا دیگه اسکریپت کار نمی کنه؟
2- بعد هر بار چک کردن کد لایسنس این خللی رو در اسکریپت ایجاد نمی کنه؟ مثلا می تونه یکی از این موارد کاهش لود باشه (چون هر دفعه باید درخواست به یک سرور جداگانه ارسال بشه) ، اگر به این شکل هست آیا راهی هست که این رو برطرف کرد؟
۱و ۲ --> ما هر بار که اسکریپت ران میشه کلید ها رو چک نمیکنیم. بلکه بار اول این کلید public از سرور مرکزی دریافت میشه، و یه مدت زمان زندگی داره (Time to Live TTL) . تا موقعی که زمان داره معتبر هست. مثلا ۱ ساعت یا ۲ روز یا یک هفته. این کلید رو درون کلاینت نگه میداریم که دائم متصل به لایسنس سرور نشیم.
ضمنا این time to live خودش یکی از پارامترهایی هست که key رو می سازه و به شکل مستقل در کد نمینویسینمش . یعنی کلید ها بعد از مدتی خودشون اکسپایر میشن. (مثلا اون کرک های احمقانه ویندوز که ۱۸۰ روز یه بار نابود میشن!)
نقل قول:
3- و مورد سوم، این الگوریتم رو چطوری می خوایید در کدهاتون قرار بدید که به عنوان مثال خریدار متوجه نشه؟ با برداشتن اون چند خط کد چه اتفاقی می یوفته؟
خریدار متوجه نشه؟ اگر کد اسکریپت هست که به صورت چند فایل include میشه داخلش دیگه. البته من تو برنامه نویسی همیشه فانکشن هاش و متغیر هاش و کلاس هاش رو با بقیه کد ها integrate می کنم که نشه جداش کرد.
با وجود encryption دیگه خریدار نمیتونه کد رو ادیت کنه که این خطوط رو برداره. دقت کنید که شرط برقراری تساوی بین کلید ها چیزی شبیه به این نیست:
کد PHP:
if ($A == $B)
\\code runs
و پیچیده تر از اینه !!
نقل قول:
4- و اینکه شما می تونید یک اسکریپتی که لایسنس داره رو غیرفعالش کنید؟ (یعنی بدون لایسنس بشه استفاده کرد)
این رو متوجه نشدم . منظورتون من نوعی هستم یا کلا سوال اینه که میشه غیر فعال کرد یا نه؟ در مورد دوم باید بگم نگاهی به اینجا بکنید: مرجع جدیدترین اسکریپت های روز دنیا - NuLLeR خوب معلومه دیگه. خیلی از برنامه ها هک میشن. البته عمدتا کار ایرانی ها نیست این مسائل. :دی
نقل قول:
با سپاس از راهنمایی شما
خواهش. گفتم که باید یه رساله نوشته شه در این مورد.
اینم بگم که یه مدت تو فکرم یه سیستم encryption رو به رایگان در اختیار بچه های اسکریپت نویس ایرانی بگذارم که یکم راحت تر باشن. اگر حس اش برگشت (عجب اصطلاح عجیبی) شما رو خبر میکنم.
پاسخ : برای حفظ حقوق طراحان اسکریپت چی کار کنیم؟
از اینکه پاسخم رو دادید ممنونم
در مورد سوم:
امکانش هست بیشتر توضیح بدید، نحوه کدنویسیش چطوری هست؟
من دقیقا احساس کردم از همون دستور if استفاده می شه، اگه امکانش هست ممنون می شم بیشتر توضیح بدید
در مورد چهارم هم: بله، منظورم شما هست.
یک اسکریپت خارجی هست قیمتش تقریبا 600 دلاری هست، با وضع موجود ایران ارزش خرید رو نداره
اگه انجام می دید بفرمایید تا آدرس اون اسکریپت رو پ خ کنم
با سپاس از راهنمایی شما
پاسخ : برای حفظ حقوق طراحان اسکریپت چی کار کنیم؟
نقل قول:
نوشته اصلی توسط
AriyaDownload
از اینکه پاسخم رو دادید ممنونم
در مورد سوم:
امکانش هست بیشتر توضیح بدید، نحوه کدنویسیش چطوری هست؟
من دقیقا احساس کردم از همون دستور if استفاده می شه، اگه امکانش هست ممنون می شم بیشتر توضیح بدید
با سپاس از راهنمایی شما
در این مورد باید کمی مطالعه کنم، اگر فوری هست از mzh_sohrabz در همین فروم بپرسید یا یک ایمیل بزنید به info@raypar.ir
به طور خلاصه، یک متن ساده قابل رمز گذاری دو طرفه با یک کلید هست. (دوطرفه = با همان کلیدی که قفل میشود باز هم میشود!) مثلا این تابع در پی اچ پی این کار رو میکنه:
PHP: mcrypt_encrypt - Manual
حالا فرض کنید که ما قسمت های خیلی مهم اسکریپت رو، اول خودمون بفرستیم توی این تابع. یک متن رمز گذاری شده به دست مییاد. حالا
کد PHP:
$to_be_run_code = 'alkjdnhalkdlajsdalkjdhnakjdnakjdnakdjakjdhnakdjakdjandkjand';
// this is the Key generated by license server, as described above
$key = 'we are great people!';
eval(mcrypt_decrypt($to_be_run_code, $key));
این جوری کد رمزگذاری شده بازگشایی شده و اجرا میشه. البته خیلی راه های دیگه هم هست. مثلا اینکه تعاریف رو، یا بخش لاگین رو، یا ... رمز کنیم با key گفته شده. ولی حتی اون if else هم با encryption که ترکیب بشه قوی خواهد بود.
نقل قول:
در مورد چهارم هم: بله، منظورم شما هست.
یک اسکریپت خارجی هست قیمتش تقریبا 600 دلاری هست، با وضع موجود ایران ارزش خرید رو نداره
اگه انجام می دید بفرمایید تا آدرس اون اسکریپت رو پ خ کنم
بفرستید حداقل نگاه کنم!