مشاهده نسخه کامل
: ایجاد لایسنس ، شماره سریال
shadmehrshadow1
13-07-2011, 20:59
سلام
من یه برنامه می خوام بنویسم و می خوام براش لایسنس یا یه کد فعال سازی بزارم چند مورد هست :
یکی اینکه چه روشی بهتر از همه هست .
اول اینکه چه جوری کد اول و چه جوری کد دوم رو که از سریال اول به دست میاد .
باید توجه داشت که می خوام مثلا فایل نصب برنامه توی هر سیستم دارای یه شماره سریال خاص باشه و وقتی که سریال دوم رو میدیم فقط روی همون سیستم جواب بده البته فکر کنم بهترین راه حل این باشه که شماره سریال اول از تلفیق شماره هارد و این چیزا به دست بیاد .
و یه چیزه دیگه فرض کنید کد تولید شده . حالا می خواهیم که مشتری پس از پرداخت مبلغی کد اول رو بده و کد دوم رو بگیره . می خوام ببینم میشه همه ی این کارا رو به صورت آنلاین انجام داد . از پرداخت مبلغ تا دریافت کد .
یه چیز دیگه که مثلا برنامه ۳۰ روزه باشه . روز شمار داشته باشه و نشون بده که چند روز باقی مانده . و اینکه بعد از حذف و نصب برنامه این تعداد روز ها از دست نره . همین طور بعد از عوض کردن ویندوز هم اگه بشه دیگه عالی میشه .
shadmehrshadow1
16-07-2011, 01:15
یعنی واقعا کسی بلد نیست؟!
shadmehrshadow1
22-07-2011, 12:20
خودمونیما یه سوال پرسیدیم یه هفته هست هیچکی بلد نیست
M.Hashemi
23-07-2011, 00:35
با سلام
داداش من در حدی نیستم که بتونم کامل جواب شما را بدم اما نظر خودم را میگم.
1- شما باید سریال هارد و ... را بگیرید(با استفاده از دستورات خود .net اگر در اینترنت بگردی پیدا می کنی).
2- با استفاده از کدهای بدست امده یک کد بسازید.
3- این سریال را رمز گذاری کنید
4- سپس مقدار رمز گذاری شده ی بدست امده را در یک فایل ذخیره کند و این فایل را از کاربر بگیرید
5- هال این مقدار رمز گذاری شده را به حالت اولیه برگردانید و به عنوان سریال به کاربر بدهید تا برنامه فعال شود.
----------
پس یعنی شما یک فایل از کاربر میگیرید و یک سریال به کاربر می دهید.
بازم حاضرم نظر بدم :31:
پیروز باشی
با تشکر
Bobby Sands
23-07-2011, 10:07
سلام دوست عزیز
ببین این چند مورد شاید به دردت بخوره
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
Payman_62
24-07-2011, 00:17
سلام.
شما قفل نرم افزاری رو هر چه قدر هم که بپیچونی باز امکان کرکش هست. هر چند ممکنه یه کرکر برای نرم افزار شما وقت نذاره. اما برای جلوگیری از این مشکل بهتره از ترکیبی از قفل نرم افزاری و سخت افزاری استفاده کنید.
اگه میخوای سریال نرم افزار فقط رو یه سیستم جواب بده میتونی از این روش استفاده کنی.
1- شما باید بر اساس سریال هارد و مادربرد کد رمزنگاری شده تولید کنی و به عنوان سریال به کاربر بدی.
2- هنگام رجیستر نرم افزار به صورت آنلاین و از طریق سرور چک کنی که قبلا این سریال در سیستم ثبت شده یا نه. تا اگه الگوریتم ساخت سریالت لو رفت فقط سریال های موجود در دیتابیس اکتیو بشن.
3- هنگام استفاده از نرم افزار چک کنی تا نرم افزار با 1 سریال رو 2 تا سیستم نصب نشده باشه (حالا به هر طریقی).
مراحل 2 و 3 واسه امنیت بیشتره و میتونی ازش صرف نظر کنی.
نسخه trial رو بعد از نصب ویندوز نمیتونی متوجه بشی که یه بار نرم افزار رو این سیستم نصب شده. اما میتونی برای فعال سازی نسخه trial هم به کاربر سریال بدی و نرم افزار با دیکد کردن سریال متوجه شه تاریخ کد 30 روزه به اتمام رسیده یا نه. اما اگه طرف تاریخ سیستمشو بکشه عقب باز به مشکل بر میخوری. برای حل این مشکل هم میتونی از اینترنت استفاده کنی و تاریخ رو از نت بگیری.
اما اینم بگم اگه نرم افزارت رو کرک کنن میتونن چک کردن سریال یا چک کردن تاریخ و ... رو دور بزنن تا نرم افزار کار کنه. اما اگه قفل سخت افزاری داشته باشه کار سخت تر میشه.
این رو هم بگم نرم افزارت باید ارزششو داشته باشه تا کرکرها روش وقت بذارن.
shadmehrshadow1
24-07-2011, 13:27
ساخت شماره سریال رو میشه یه کاریش کرد . مشکل اصلی اون 30 روز هست . یعنی روزشمار بزاری و اگه برنامه رو حذف و دوباره نصب و یا ویندوز رو عوض کنه این روزا از دست نره . اینترنت هم راه فرار داره میشه موقع کانکت شدن برنامه رو بست .
میشه نحوه به دست آوردن شماره سریال هارد به صورت سخت افزاری بگید . چون فکر کنم شماره سریال نرم افزاری هارد بعد عوض کردن ویندوز تغییر می کنه.
فکرنکنم کرکرها هم وقت نمیزارن که برای برنامه من کرک بسازن:31:
یه نگاه هم به این کد بکنید :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اولین مقدار مدل و دومی سریال.این سخت افزاری یا نرم افزاری؟
Payman_62
25-07-2011, 10:54
سلام.
تاریخ 30 روزه رو شما میتونی در رجیستری یا یه جای خاصی ذخیره کنی که فقط خودت اطلاع داشته باشی. اما ویندوز عوض کنه از دست میره. بعد از تعویض ویندوز هم تنها راهش استفاده از سریال وابسته به زمانه و برای جلوگیری از دستکاری تاریخ سیستم مجبوری از نت کمک بگیری.
کلاس System.Management مشخصات سخت افزاری قطعات رو میده. اصلا فکر نمیکنم هارد سریال نرم افزاری داشته باشه.
در کنار SerialNumber و model میتونی از signatur هم استفاده کنی و در تولید سریال ازش کمک بگیری. البته یه بررسی بکن که signatur تو هر هاردی یونیک باشه.
anvar.net
25-07-2011, 13:14
سلام
چندی پیش یه دوستی تو همین تالار این سوال رو کرده بود اما به نتیجه قطعی نرسید, در همون موقع تلاش مختصری کردم که روش مناسبی برای حل این مشکل که هم دنبالشن پیدا کنم. متاسفانه بدلیل ذیق وقت به اخر نرسید و به حال خود رها شد .... حالا دوباره همون سوال و همون مشکلات ... امروز که به این پست رسیدم به خودم گفتم دوباره موضوع رو از سر بگیرم انشاء الله این دفعه تکمیل بشه ... بار هم به دلیل کمبود وقت تا چند روزی نمی تونم براش وقت بذارم ولی تا 3 روز اینده سعی م یکنم روش کار و حل مشکلی که در این بین دیده میشد رو مطرح کنم شاید در کنار دوستان بتونیم به نتیجه قابل اطمینانی برسیم, یه راهنمای مختصری که قصد اتمام آنرا داشتم نیز نوشتم اما بنابه دلایل ذکر شده در بالا چندان جلو نرفت :41:............... اینها رو به عنوان مقدمه کار قرار می دم تا 3 روز دیگه بریم سر کدها و سایر مسائل
به امید خدا
راه حل های ثبت نرم افزار و صدور مجوز استفاده از نرم افزارها در VS.net
هدف از طراحی هر نرم افزار کوچک یا بزرگی استفاده از آن توسط کاربر یا کاربران نهایی است.در این میان استفاده رسمی از نرم افزار, مطلوب طراحان یا توزیع کنندگان اصلی بوده و ضعف در این زمینه می تواند منجر به فروپاشی تمامی طرح و برنامه های از پیش تعیین شده باشد. البته ذکر این نکته نیز قابل توجه است که امنیت مطلق برای هیچ سیستمی تعریف نشده است و رسیدن به آن در حال حاضر غیر ممکن است.
با توجه به بافت خاص فرهنگی و حقوقی که در ایران موجود است, پشتیبانی موثری در حوزه استیفای حقوق تولید کننده وجود ندارد و اگر هم اسما موجود باشد راه حل چندان مناسبی در شرایط فعلی نیست و بازدارندگی مطلوبی هم ندارد. لذا در مرحله اول بار پشتیبانی همچنان بر روی دوش طراحان و توسعه دهندگان نرم افزار است. عدم وجود قانون کپی رایت در کشور و ضعف های بیشمار اموزشی و فرهنگی در این امر توسعه دهندگان نرم افزار را وا می دارد تا تا با صرف هزینه های هنگفت حداقل امنیت لازم را فراهم آورند, در حالیکه کاملا واضح است که این رویکرد چندان موثر نیست. تفکیک نرم افزار به دو دسته داخلی و خارجی و صرفا حمایت از دسته داخلی نیز با شکست موجه شده است, چرا که اصل موضوع یکسان است و برای کسی که استفاده از نرم افزارهای خارجی را نیک می پندارد با گذشت زمان همین رویه را برای نرم افزارهای داخلی نیز بکار می گیرد. لذا توسعه حداقل امنیت, در دسترسی و استفاده از نرم افزارها حتی با وجود قانون کپی رایت کاملا منصفانه و منطقی است.
هدف اصلی از این نوشتار بررسی راهکارهای موجود و در حد توان ره یافت های مقابله با آنها است. البته دور از انتظار نیست که در این امر به نتیجه کاملا ایمنی نیز نرسیم اما سعی می شود از شرایط و امکانات موجود بهترین استفاده را ببیریم. گرچه این موضوع در حوزه تکنولوژی دات نت کاملا حجیم و می توان چندین کتاب در باب آن نوشت اما کمبود زمان و تجربه آنرا بسیار خلاصه می کند. در پایان از تمامی دوستانی که می توانند ایده های موثری در این زمینه داشته باشند تقاضا می شود میدان را خالی نگذارند تا همه بتوانیم از آن استفاده ببریم.
هدف کلی ما روش هایی برای محدود کردن کاربران غیر قانونی در استفاده از برنامه های نوشته شده در محیط ویژوال استدیو دات نت است, گرچه روشن است که تعریف امنیت فقط در این سطح کاملا سطحی است. همچنین در این راستا می توانیم برنامه های بسازیم که شمایی از برنامه اصلی هستند و صرفا برای مقاصد اموزشی و معرفی بکار می روند تا کاربران با امکانات و ابزارهای برنامه ما آشنا شوند. راهکارهای مناسبی نیز ارائه می شوند تا از استفاده کاربران غیر مجار جلوگیری کنیم و آنها را مجبور به ثبت نرم افزار کنیم.
حفظ امنیت در برنامه های تحت دات نت صرفا محدود به مباحث بالا نمی شود و ایجاد امنیت یکپارچه را باید در تمامی مسیر طراحی و توسعه رعایت کرد که در زمان حاضر بر روی آن بحث نمی کنیم, شاید در یک فرضت مناسب تر به گوشه های از آن اشاره کردم.
با توجه به در خواست یکی از دوستان همین انجمن که چند روز پیش نوشته بود و تقاضا داشت تا رویکردی برای ثبت نرم افزار در برنامه مورد نظر خودش داشته باشد, این بحث رو دنبال کردم تا سایرین نیز استفاده ببرند.
قبل از هر چیز لازم است نگاهی به تاریخچه کسب مجوز برای استفاده از نرم افزارها داشته باشیم تا روال کار بهتر قابل درک باشد. در روزهای اولی که تکنولوژیهای کامپیوتری پا به عرصه ظهور گذاشتند عملا هیچ گونه راهکاری برای مسئله کسب مجوز نبود, سیستم های کامپیوتری عمومی نبودند و کسانی هم که با آنها کار می کردند تکنسین های متخصص و دارای مجوز بودند که با دستگاههای بسیار بزرگ و حجیم سروکله می زدند, افراد عادی هم به این سیستم ها دسترسی نداشتند بنابراین عملا نیازی به صدور مجوز هم نداشتند. اما بعد از گذشت چندین سال, شرایط به کلی تغییر کرد. کامپیوترها به شرکت های ریز و درشت راه پیدا کردند و در اندک زمانی بسیاری از خانه ها صاحب یک کامپیوتر رومیزی شدند که نیاز اصلی آنها نرم افزارهای رنگ وارنگ برای کارهای مختلف بود. در این زمان کاربران نه تنها تکنسین نبودند بلکه قشر کثیری از آنها هم قانونا مجوز استفاده از بسیاری از نرم افزارها را نداشتند ............ توسعه دهندگان نرم افزار با این شرایط باید در فکر راه و چاره ای برای محدود کردن انتشار غیر قانونی و استفاده بدون مجوز توسط کاربران می شدند. به هر حال مسئله ای به اسم Licencing بوجود امد که معنای و مفهومش نیز همراه با ریشه کلماتش بود (برگرفته از کلمات Li به معنی دروغ گفتن و Cense که از کلمه سنت امریکایی گرفته شده است ) در مجموع معنای آن می شود دروغ گفتن درباره واحد بسیار کمی از پول.
در اولین و ساده ترین قدم فقط موافقت نامه هایی بین توزیع کنندگان نرم افزار و خریداران رد و بدل می شد که خریدار متعهد به رعایت مفاد موافقت نامه می گردید. با گذشت زمان مشخص شد که صرفا تائید لفظی یک نرم افزار چندان چاره ساز نیست لذا توسعه دهندگان نرم افزار راه حل جدیدی را برای تفکیک کاربران دارای مجوز و کاربران سارق پیدا کردند. یعنی اختصاص کلیدهای عبور منحصر به فرد برای هر کاربر. با این استراتژی تا حدودی شرایط بر وفق مراد توسعه دهندگان نرم افزار چرخید اما زیاد دوام نیاورد. اعجوبه های عجیب و غریبی که نام کرکر به خود گرفته بودند نرم افزارهای گران قیمت چند هزار دلاری را در چند سوت لخت نموده و در پناه دنیای وب در سراسر دنیا پخش می کردند. جدالی که هنوز هم پابرجاست و بازار نرم افزار کشورهای جهان سوم ( خودمان هم که مشتری پروپا قرص این کهنه بازار بوده و هستیم) به مدد آن دارای جنب و جوش خاصی شده است. گرچه این نفوذها همیشگی هستند اما دلیلی برای دنبال نکردن تکنولوژی های امنیتی نیست و ما در حد توان خود برای آن باید برنامه ریزی داشته باشیم. به قول ما ایرانی ها (کار از محکم کاری عیب نمی کند)
معمولی ترین حالت برای ثبت نرم افزارهایی که همه روزه از آنها استفاده می کنیم, بدین صورت است که پس از نصب نرم افزار بر روی سیستم, اولین قدم برای استفاده از برنامه داشتن یک کلید اجازه عمومی است که معمولا به آن کلید رمز یا Password می گوییم. در صورتی که کلید رمز ما معتبر باشد (یعنی بصورت قانونی یا غیر قانونی آنرا بدست آورده باشیم) مجوز استفاده از برنامه به ما داده می شود و در غیر اینصوت برنامه اصلا کار نمی کند یا بصورت دمو بوده و بسیاری از امکانات موجود را برای ما غیر فعال می کند و ممکن است حالت سومی نیز داشته باشد که تا دوره زمانی خاصی کار کند و پس از آن بصورت های مختلف اعلان اتمام زمان استفاده را بکند(مخل آرامش مغز).
در صورت استفاده از رویه بالا, تولید کنندگان نرم افزار نیاز به راهی برای تولید کلید رمز یکتا دارند. برای تولید کلیدهای رمز معمولا 3 روش دنبال می شود :
حالت اول : در این حالت صرفا یک کلید رمز با توالی خاصی تولید می شود که با شاخص های دیگری مانند ID محصول یا ورژن آن ترکیب می شود. مهمترین مزیت این نوع کلیدهای رمز راحتی فرایند ساخت انها است و برنامه نیز نیاز به منطق پیچیده ای برای سنجش اعتبار رمز ندارد, در واقع برنامه فقط فرمت صحیح کلید رمز را چک می کند. عیب اصلی این روش هم در این است که براحتی می توان فرمت تولید کلید های رمز را تشخیص داد و سریال های معتبر جدیدی مشابه با آن ساخت.
حالت دوم : استفاده از کلیدهای رمز هش شده که با استفاده از یک شماره سریال اصلی یا فرمول خاص ساخته میشوند. در این حالت منطق اعتبار سنجی کلیدهای رمز ورودی نیز پیجیده تر از حالت قبل است و در صورتی که به فرمول ساخت کلیدها دسترسی نداشته باشیم فهمیدن منطق آنها پیچیده می شود. با استفاده از یک الگوریتم هش خوب می توان کلیدهای رمز مناسبی با سطح وسیع تولید کرد. در این حالت نیز ممکن است کلید به همراه ترکیبی با سایر شماره ها باشد. مانند سریال بعضی محصولات مایکروسافت
حالت سوم : در این روش کلیدهای رمز بر اساس یک شماره سریال که معمولا در زمان اجرا بدست می آید ساخته می شوند. در واقع کلید رمز نهایی وابسته به کلید اولیه است. می توان شماره سریال سخت افزارهای کامپیوتر را نمونه ای از این دست دانست که نسبتا منحصر به فرد هستند و رمز تولید نیز یکتا باقی می ماند حالت دیگری نیز ممکن است مطرح شود, در این حالت ممکن است طراح نرم افزار از ما بخواهد از طریق کامیپوتری که قرار است برنامه نصب شود با اینترنت متصل شده و کلیدهای فعال سازی دریافت شود. در این حالت نیز تولید کلید ممکن است بر اساس IP یا سریال های سخت افزاری باشد..
گرچه تمامی روش های بالا در نهایت راهی برای دورزدن دارند اما ایجاد اختلال در راه رسیدن به آن و یا طولانی نمودن پروسه گذر از این مرحله می تواند نسبتا نقش موثری داشته باشد.
یک حالت دیگر برای حفظ امنیت نیز وجود دارد که کاربر برای فعال سازی و استفاده از برنامه ها نیاز به فلش مموری متصل به سیستم دارد تا برنامه بتواند اعتبار مجوز را با آن بسنجد, در ایران این سیستم بیشتر با نرم افزارهای مالی دیده می شود که از حوصله بحث ما خارج است و به آن نمی پردازیم.
نرم افزار ما که در محیط ویژوال استدیو نوشته شده (من از VB استفاده می کنم) فرم خاصی برای ثبت دارد که تا زمان ورود رمز صحیح از ورود کاربر به برنامه جلوگیری می کند. و بدون پشت سر گذاشتن آن راهی برای ورود به برنامه نیست.
خوب حال سوال این است که در پشت این فرم ها چه می گذرد و اعتبار سنجی چگونه صورت می گیرد, رمز ها چگونه و بر اساس چه اسلوبی تولید می شوند, پس از این که برنامه بصورت قانونی ثبت شد برنامه چگونه آنرا تشخیص بدهد. و در نهایت با چه رویکردی از آن حفاظت بعمل آید. به عبارتی باید دنبال این سوالات باشیم.
1 - رمز مورد نیاز کاربر را چگونه تولید کنیم که توسط برنامه معتبر تشخیص داده شود؟
2 - برنامه چگونه رمز ارسالی کاربر را اعتبار سنجی کند؟
3 - اگر رمز معتبر بود, چگونه به برنامه تفهیم کنیم که در مراجعات بعدی کاربر, از وی درخواست رمز نکند؟
در نهایت هم ممکن است سوال چهارمی پیش بیاید که :
اگر قرار است که برنامه ما بصورت زمانی کار کند چگونه گذشت زمان و رسیدن به نقطه پایانی را مشخص کنیم؟
حال که نیازهای ما مشخص شدند, به هر کدام می پردازیم
تولید رمز برای برنامه های نوشته شده تحت ویژوال استدیو دات نت (2005 تا 2010) : البته ذکر این نکته قابل توجه است که منظور ما از تولید کلید رمز صرفا تولید سریال رمز نیست بلکه تولید فایل های لایسنس هست که دربردارنده کلید رمز می باشند و برای فعال سازی برنامه بکار می روند و مستقیما هیچ کلید رمزی نمی سازیم.
فایل های لایسنس تولید شده بصورت فایل های xml هستند که بصورت مجزا در کنار برنامه اصلی قرار می گیرند و برنامه ما نیز با خواندن محتویات فایل های لایسنس اعتبار آنرا چک می کند. هر فایل لایسنس نیز شامل یک امضاء دیجیتال است. امضاء دیجیتال بر اساس رمزسازی کلید عمومی-اختصاصی (public-private key encryption) تولید می شود. با این حساب هر زمان که برنامه ما اجرا می شود مبادرت به خواندن فایل لایسنس می کند, اگر فایل لایسنس وجود نداشته باشد یا محتوی داده های غیر معتبر یا امضاء غیر معتبر باشد واکنش مناسب را از خود نشان خواهد داد.
نوع برنامه های که می خواهیم سیستم لایسنس را برای آن طراحی کنیم فرقی نمی کند چه باشد, به هر حال ما برنامه داریم به نام application که باید سیستم مناسبی برای لایسنس ان طراحی کنیم.
فایل لایسنس که در بالا اندکی در موردش نوشتیم بصورت فایل xml است که در قدم اول دربردارنده مشخصات عمومی است و شمای کلی آن بصورت زیر است. فرایندی که امضاء دیجیتال را نیز می سازد, امضاء را بصورت رمز شده در داخل همین فایل لایسنس قرار می دهد.
<?xml version="1.0"?><License> <Product>application</Product> <LicenseDate>1/1/2000</LicenseDate> <ExpireDate>12/31/2999</ExpireDate> <CoveredVersion>1.*</CoveredVersion> <Licensee>m anvar.net</Licensee> <SerialNumber>LIB-123456789</SerialNumber>
<Signature> Digital signature appears here (not shown) </Signature></License>
تگ های LicenseDate و ExpireDateابتدا و انتهای تاریخ معتبر لایسنس را مشخص می کنند, تگ Licensee مشخص کننده نام خریدار لایسنس است. تگ SerialNumber محتوای شماره سریال تعریف شده توسط فروشنده است که با این لایسنس یکتا همراه می شود. نگ CoveredVersion نیز مشخص کننده ورژن کنونی برنامه است که مشابه با اسمبلی تولید شده توسط ویژوال استدیو است, هر ورژن دارای 4 نقطه است که مشخص کننده چهار قسمت حائل می شود. مثلا ورژن 1.2.3.4 از سمت چپ به راست : عدد 4مشخص کننده ورژن عمده یا major, عدد 3 مشخص کننده ورژن کوچک تر یا minor , عدد 2 مشخص کننده توالی ساخت یا build و عدد 1 هم مشخص کننده ورژن تجدید نظر شده است. هر مولفه می تواند عددی بین 0 تا 9999 یا علامت * ستاره باشد. علامت ستاره مشخص می کند که مکان مورد نظر دارای مقادیر معتبر است.
قسمت Signature هم مکان امضاء دیجیتال تولید شده است, فرمت این قسمت وابسته به ابزارهای کریپتوگرافی xml در دات نت است که این قسمت را تولید می کنند. یعنی اگر برای تمامی فایل های لایسنس از یک برنامه تولید کننده فایل لایسنس استفاده کنیم فرمت امضاء دیجیتال همگی آنها مشابه هم خواهد بود. برنامه تولید کننده فایل لایسنس یک جفت کلید عمومی و اختصاصی می سازد که برای امضاء کردن دیجیتال بکار می روند. قسمت عمومی این کلید که بصورت فایل xml است باید بعنوان یک منبع (resource) با نام LicensePublicKey به برنامه اصلی اضافه شود. قسمت اختصاصی آن نیز باید بصورت خصوصی نگه داشته شود. برای مجکم کاری این جفت کلید ها باید تا زمان عمر برنامه اصلی نگهداری شوند. مکان فایل لایسنس را نیز می توان در بخش setting برنامه اصلی قرار داد تا بهتر بتوانیم انرا مدیریت کنیم. می توان برنامه اصلی را جوری نوشت که در صورت نیافتن فایل لایسنس در پوشه های برنامه به دنبال آن بگردد.
تولید فایل لایسنس
برای تولید فایل های لایسنس ما نیاز به برنامه مجزایی داریم که منحصرا کارش تولید فایل های لایسنس است و باید مستقل از برنامه اصلی باشد. برنامه تولید لایسنس دارای سه مولفه اصلی است :
کلیدهای عمومی و اختصاصی که در فرایند امضاء مورد استفاده قرار می گیرند را می سازد و مدیریت می کند
کاربر را برای تاریخ لایسنس, تاریخ انقضاء , ورژن برنامه, نام لایسنس و شماره سریال برای یک لایسنس واحد به فعالیت وا می دارد.يعني با توجه به ورودي هاي بالا كليدها را توليد مي كنيم.
فایل xml لایسنس را تولید کرده و با استفاده از کلید اختصاصی بصورت دیجیتالی آنرا امضاء می کند.
حال برنامه تولید لایسنس را می سازیم. این برنامه دو فرم دارد. فرم keyform برای تولید یا پیدا کردن کلیدهای عمومی- اختصاصی که در فرایند امضاء دیجیتال بکار می روند. فرم دوم LicenceGeneration است که فایل های لایسنس نهایی را برای مشتری تولید می کند.
فرم keyform وظیفه پیدا کردن مسیر یا ساختن کلیدهای عمومی اختصاصی را بر عهده دارد. فرم LicenceGeneration نیز وظیفه ساخت فایل لایسنس بر اساس جفت كليدهاي عمومي اختصاصي برای کاربر نهایی را بر عهده دارد. وظیفه این فرم در ابتدا مطمئن شدن از سالم بودن فایلهای کلید عمومی خصوصی و پس از ان اطمینان از صحت اطلاعات ورودی کاربر است.
ادامه دارد ....:27:
احمد دات
27-07-2011, 10:34
[QUOTE=shadmehrshadow1;6261368]سلام
من یه برنامه می خوام بنویسم و می خوام براش لایسنس یا یه کد فعال سازی بزارم چند مورد هست :
یکی اینکه چه روشی بهتر از همه هست .
سلام دوستان عزیز
خوب به نظر من برنامه های که ما می نویسیم یک قفل 90% هم داشته باشه کافی هست
خوب من به رندوم علاقه ای خاصی دارم بس یک قفل رندم ساده برای شما توضیح می دم و اگر هم خواستید در محیط vb.net براتون می نویسم
خوب شما یک برنامه می نویسید که این برنامه بعد از نسب یک رمز بصورت رندم بین 10000 تا 20000 می اندازه بعد این رمز رو به کاربر نمایش میده و از اون می خواد که به این شماره رمز رو sms کنه
حالا شما که این برنامه رو نوشتید این sms دریافت می کنید
خوب این sms یک شماره است که شما اونرو در فرمولی که خودتون ساختید و در برنامه هم گذاشتید یک شماره جدید ایجاد می کنید و به کاربر می دهید تا با آن وارد سیستم بشود
***** دوستان لطفا مطلب رو بخونید و اگر سوالی داشتید بپرسد چون من بعضی از قسمتها رو کامل نگفتم برای اینکه مطلب خیلی سنگین نشه ***********
shadmehrshadow1
27-07-2011, 17:07
ممنون دوست عزيز .
فقط مشكل اصلي چيز ديگه اي ميشه راحت كد رو ايجاد كرد .
اينكه اين كد براي هر سيستم منحصر به فرد باشه . كه اينم ميشه يكاريش كرد.
ميمونه اينكه چه طور اون محدوده ي 30 روزه رو تعيين كنيم و بعد اون برنامه از كار بيفته و درخواست كد كنه و نكته مهم اينه كه اگه 30 روز تموم شد ديگه با حذف و نصب دوباره ي برنامه اون 30 روز 0 نشه و يا بعد از نصب ويندوز
به نظرم به جای ۳۰ روز بهتره تعداد اجرای برنامه رو در نظر بگیری
یعنی بعد از ۱۰ بار اجرا شدن برنامه سریال بخواد
shadmehrshadow1
28-07-2011, 19:41
اصلا روش خوبی نیست ؛ حد اقل من برنامه ای رو ندیدم که اینطور باشه ممکنه سیستم طرف مشکل داشته باشه و هی ریست بشه که خود به خود برنامه رو باید اجرای دوباره کنه و ممکنه که اصلا تو 1 روز ۱۰ بار برنامه رو اجرا کنه که اونوقت تو یک روز استفاده مجبور میشه برنامه رو فعال کنه یا اینکه مثل برنامه آفیس یا وورد ممکنه بخواد تو یک ساعت ۱۰تا سند رو باز کنه و این خیلی بده .
در کل این تایپیک بیشتر توش بحث و نظر دهی بوده تا راه حل و راه حل ها هم فقط در حد بحث بوده .خواهشا این بحث رو به یه جایی برسونیم و به ایجاد یه کد و پروژه تا هرچه سریع تر هم کار من راه بیفته و هم بقیه استفاده ببرن .گرچه همین بحث و تبادل نظر هم باعث یادگیری میشه و خیلی خوبه .
من تو پست های قبل یه کد گذاشتم کسی نگاش کرد ؟
شما یه سرچ کن قبلا راه حل گقته شده در همین انجمن
نیازی به زدن تاپیک نبود
shadmehrshadow1
30-07-2011, 15:16
شما یه سرچ کن قبلا راه حل گقته شده در همین انجمن
نیازی به زدن تاپیک نبود
خوب چرا زود تر نگفتین که این تایبیک به خقول شما الگی دیگه ادامه دار نشه .
آدرس اون صفحه ای که گفتید راه حل توشه رو بزارید لطفا
و خداوند سرچ را آفرید
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
این تاپیک رو هم خودتون زدید!!!
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
با سلام
لطفا این نرم افزار رو دانلود کنین و ببینین یک همچین چیزی میخوایین.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
برنامه بصورت 15 روزه است و بعد از اون باید سریالش رو وارد کنین وگرنه قفل میشه.
البته قفل سخت افزاری نیست.چون نیازی به اون حد از کارها نیست.
یعنی کسی نمیاد برای استفاده 15 روزه از یک برنامه هی ویندوز عوض کنه(خیلی کم پیدا شه،اون هم در صورت نیاز اظطراری)
برای اجرای برنامه باید microsoft.net4 و access 2007 رو نصب کنین
با تشکر
shadmehrshadow1
10-08-2011, 16:45
ممنون
هنوز نگاش نكردم.
فقط يه چيزي .
سيستم كاربر هم بايد روش access 2007 نصب باشه؟
ممنون
هنوز نگاش نكردم.
فقط يه چيزي .
سيستم كاربر هم بايد روش access 2007 نصب باشه؟
با سلام
بله.چون دیتا بیس این برنامه روی اکسس هست.
با آرزوی موفقیت
shadmehrshadow1
11-08-2011, 18:02
با سلام
بله.چون دیتا بیس این برنامه روی اکسس هست.
با آرزوی موفقیت
آقا این که یه برنامه کامل هست و نمیشه هیچ استفاده ای ازش کرد.
برای تبلیغ گذاشتید؟
الآن من از توی ااین چه استفاده ای کنم؟
آقا این که یه برنامه کامل هست و نمیشه هیچ استفاده ای ازش کرد.
برای تبلیغ گذاشتید؟
الآن من از توی ااین چه استفاده ای کنم؟
با سلام دوباره
نه برای تبلیغ نیست.
اول بگم این برنامه به زبان سی شارپ هست.ولی الگوریتمی که برای تریال سازی استفاده شده است رو براتون شرح میدم.
اول باید تاریخ سیستم رو در دست داشته باشین که با متدهای متداول بدست اوردن روز و ماه و سال به راحتی بدست میاد.
مرحله بعدی ذخیره این تاریخ هست.این کار رو میشه با روشهای مختلفی انجام داد.ولی توی این برنامه از رجیستری استفاده شده که هم آسونتره و هم سرعت دسترسی برنامه بهش سریعتر.
اول باید اولین روزی که برنامه اجرا میشه رو توی رجیستری تو یه ادرسی ذخیره کنین.بعد از این کار باید هر بار که برنامتون اجرا میشه باید چک کنین که این مقدار یعنی مقدار روز سیستم شما تغییر کرده یا نه.اگه تغییر نکرده باشه هیچ اتفاقی نمیوفته وگرنه باید مقدار جدید رو توی رجیستری ثبت کنین و یک عدد به تعداد شمارنده ای که تعریف میکنین اضافه بکنین و همین تعداد رو هم دوباره توی رجیستری ثبت کنین.
در ادامه این رو تعریف میکنین که اگه مقداری که شمارنده توی رجیستری ثبت میکنه بیشتر از 15 یا 30 بشه برنامه قفل یا بسته بشه.
البته این الگوریتم ریزه کاریهایی هم داره که خوتون موقع کار میتونین اونها رو اضافه کنین.
برای ذخیره سازی مقادیر تعریف شده تو بالا میتونین از فایل ها هم استفاده کنین که زحمت و کارش زیاده ولی از لحاظ امنیت بهتره.چون اگه رجیستری رو کسی بگرده ممکنه کلیدهای برنامه رو پیدا و دست کاری کنه.
اما قسمت بعدی مربوط هست به اینکه مثلا ما سریال برنامه رو بدیم وبرنامه یک ساله کار کنه.
این هم مثل روش بالا با استفاده از رجیستری وقتی سریال اصلی برنامه داده شد میتونین مقدار مثلا 365 روز رو تو حافظه ذخیره کنین و هر روز یک واحد ازش کم کنین(برعکس هم میشه که میتونین -365 رو وارد کنین)تا وقتی که به یک مقدار معین برسه
البته برای تریال سازی روشهای دیگه ای هم هست ولی روش استفاده شده تو برنامه این بود
با تشکر
shadmehrshadow1
04-09-2011, 16:59
سلام .
من تونستم یه رشته درست کنم و الآن می خوام از اون رشته یه شماره سریال درست کنم . شما کدی رو ندارید که این کار و بکنه .
سلام .
من تونستم یه رشته درست کنم و الآن می خوام از اون رشته یه شماره سریال درست کنم . شما کدی رو ندارید که این کار و بکنه .
میشه کدتون رو بزارین تا بررسی بشه.
یعنی خودمون یه الگوریتم براش بسازیم.نیازی به کد خارجی شاید نباشه.
مرسی
shadmehrshadow1
07-09-2011, 19:58
من اون رشته رو تبدیل به شماره سریال زیر کردم ؛ حالا می خوام اینو تبدیل به یه سریال دیگه کنم
F3e4-4577-082c-2e54-6c82-7530-441a-9439
من اون رشته رو تبدیل به شماره سریال زیر کردم ؛ حالا می خوام اینو تبدیل به یه سریال دیگه کنم
F3e4-4577-082c-2e54-6c82-7530-441a-9439
سلام
باید یه الگویی خاص درست کنین.
اگه از رشته ها و کاراکترها بخایین استفاده کنین بهتره کار با رشته ها و آرایه ها رو تمرین کنین تا بتونین هر نوع الگوریتمی رو پیاده کنین ولی اگه از اعداد استفاده کنین این یه مثال ساده است که داخل if رو میتونین عوض کنین و بجای جمع از ضرب یا تفریق و ... استفاده کنین.یعنی اگر این ترتیب جمع یا ضرب و یا هرچی درست بود برنامه فعال بشه.
این روشهایی بود که الان به ذهنم رسید.بازم اگه اون چیزی نبود که مد نظر شما هست میشه روشهای دیگه هم پیاده کرد.
ولی اگه خودتون کار کنین بهتره یعنی مثل بازی کردنه و تغییراتی که ایجاد میکنین باعث افزایش مهارت شما میشه.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
سلام
این هم یه روش دیگه.این از قبلی یکم پیچیده تر شد ولی میشه بازم روش کار کرد.
بازم تو قسمت if شما خودتون میتونین اتصال رشته ها رو تغییر بدین.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
shadmehrshadow1
10-09-2011, 17:06
از همهدی دوستان متشکرم به خاطر کمکاشون .
فقط یه چیزی تو ذهنم اومد گفتم بگم .
اونم اینه که در یافت شماره سریال دوم به صورت آنلاین باشه . مثلا تو صفحه اول کاربر شماره سریال اول سیستمشو وارد میکنه . و بعد مثل دریافت کترت شارژ اینترنتی صفحه ی پرداخت الکترونیکی باز بشه دقیقا مثل خرید کارت شارژ و بعد از اتمام عملیات شماره سریال دوم داده بشه .
فکر نکنم بشه چون بانک ها همکاری نمی کنن در این رابطه اونم با افراد عادی مثل من.
shadmehrshadow1
14-09-2011, 19:38
سلام
من میخوام برای گذاشتن تعداد روز های فعال برنامه یه فایل درست کنم که توش تاریخ نصب و تاریخ غیر فعال شدن برنامه رو بزارم و
تعداد روز های باقی مانده . و به همین دلیل این فایل باید رمزگزاری شده باشه و یه جوری باشه که کسی نتونه توش دست ببره و عوض
کنه اطلاعاتش رو .
به نظرتون چی کار میشه کرد ؟
سلام.
با این روش ها برنامه شما به راحتی قابل کرک شدن هست....
البته اگه بخواین فقط کاربرای عادی و ساده استفاده کنن:31:.
سلام
من میخوام برای گذاشتن تعداد روز های فعال برنامه یه فایل درست کنم که توش تاریخ نصب و تاریخ غیر فعال شدن برنامه رو بزارم و
تعداد روز های باقی مانده . و به همین دلیل این فایل باید رمزگزاری شده باشه و یه جوری باشه که کسی نتونه توش دست ببره و عوض
کنه اطلاعاتش رو .
به نظرتون چی کار میشه کرد ؟
میتونید فایل رو Zip و پسورد گذاری کنید.یا براش سطح دستریسی تعیین کنید.
اونوقت اگه فایلتون حذف بشه چی؟
سعی کنید برنامتون رو از طریق اینترنت لایسنس گذاری کنید.
shadmehrshadow1
15-09-2011, 11:57
می دونم حق با شماست . ولی خوب فکر نکنم کسی وقت خودشو بزاره و بخواد برنامه فردی مثل من رو کرک کنه .
مشکل رمز گذاشتن فایل حالا گفتید با فایل زیپ ولی برنامه های زیادی هستند که پسوورد فایل های زیپ و رار رو در میارن . مشکل دیگه چه جوری خوندن اطلاعات از این فایل هاست .
روش اینترنتی هم مشکلات خاص خودشو داره . اومدیمو یکی زیاد از اینترنت استفاده نکرد و یا موقع اتصال به اینترنت برنامه رو بست . اونوقت تکلیف چیه .
به نطرم همون که یه فایل رو رمز نگاری کنیم بد نیست و با الگوریتم متن فایل رو رمزنگاری کنیم تا کسی چیزی ازش نفهمه .
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.