PDA

View Full Version : مبتدی: رمزنگاری بر اساس تاریخ



booysusa
سه شنبه 13 آذر 1397, 20:41 عصر
درود بر همگی
من یک برنامه ساده نوشتم و میخوام طوری رمزنگاریش کنم که مثلا فقط یکسال قابل استفاده باشه و پس از گذشت یکسال دوباره سریال جدید بخواد
لطفا راهنمایی کنید
آموزش فرادرس خریدم ولی متاسفانه فایده ای نداشت و فقط فعالسازی رو آموزش داده بود، من میخوام برنامم یک سال یا مثلا 6 ماه پس از اولین استارت دوباره فعال سازی بخواهد


مشخصات برنامه من:
سی شارپ
ویژال استودیو 2015
دیتابیس اس کیو ال کامپکت
ویندوز فرم

mrbm_2007
یک شنبه 18 آذر 1397, 21:04 عصر
نرم افزار شما الان اصلا فعال سازی داره؟
چون فرض کنیم این کار رو انجام دادید، اگر بعد از یکسال طرف سیستم رو عوض کرد (روی یه سیستم جدید) یا مثلا ویندوز عوض کرد، اون وقت برنامه رو دوباره نصب کنه چی؟
مگر اینکه با چک کردن تاریخ روز، و تعیین تاریخ منقضی شدن نرم افزار، این کار انجام بشه و البته با فرض اینکه کاربر تاریخ سیستم رو عقب نکشه، (یعنی مثلا توی کد ست شده که تاریخ 20/01/2019 منقضی بشه)

mrbm_2007
یک شنبه 18 آذر 1397, 21:05 عصر
در مورد محافظت از کد ها هم باید دقت کنید، کد های سی شارپ اگر محافظت نشده باشند، به راحتی به سورس کد برگردونه می شوند و راحت قابل هک و دستکاری هستند

booysusa
دوشنبه 19 آذر 1397, 08:24 صبح
نرم افزار شما الان اصلا فعال سازی داره؟
چون فرض کنیم این کار رو انجام دادید، اگر بعد از یکسال طرف سیستم رو عوض کرد (روی یه سیستم جدید) یا مثلا ویندوز عوض کرد، اون وقت برنامه رو دوباره نصب کنه چی؟
مگر اینکه با چک کردن تاریخ روز، و تعیین تاریخ منقضی شدن نرم افزار، این کار انجام بشه و البته با فرض اینکه کاربر تاریخ سیستم رو عقب نکشه، (یعنی مثلا توی کد ست شده که تاریخ 20/01/2019 منقضی بشه)
من یک فیلم اموزشی از فرادرس خریدم، خوب نیست ولی خیلی خیلی هم بد نیست، کار راه انداز هست، برنامه من یک دیتابیس دارد، من میخوام مثلا برنامه پس از هر 30بار لود شدن از سایت time.com چک کنه ببینه لایسنس هنوز اعتبار داره یا خیر، اگر اعتبار داشت که ادامه بده اگرم نداشت خطای لایسنس بده اگرم اینترنت وصل نبود خطای وصل نشدن به اینترنت بده
یا اینکه کاربر پس از هر 30 بار نیاز به لاگین از طریق اتصال دیتابیس به وب داشته باشه (در جریانش نیستم)



در مورد محافظت از کد ها هم باید دقت کنید، کد های سی شارپ اگر محافظت نشده باشند، به راحتی به سورس کد برگردونه می شوند و راحت قابل هک و دستکاری هستند
بله مطالب شما رو قبلا در مورد محافظت از سورس کد خوندم و یادم هست چند سال پیش برنامه هایی نوشتید و از دوستان خواستید هکشون کنن، و عزیزان هم با سرعت هرچه بیشتر انجامش دادند:لبخند:
در این زمینه هنوز کاری انجام ندادم ولی امیدوارم با برنامه هایی مانند net reactor. بتونم از این کار تا حدودی جلوگیری کنم(مبتدی هستم و فقط توطس یکی از اساتید راهنمایی شدم به این برنامه)

خلاصه اینکه برنامه رو البته بصورت ساده شده، چون اصلش دیتابیس داره میزارم ببینید
دانلود (http://s8.picofile.com/file/8342861676/Test14.zip.html)

mrbm_2007
دوشنبه 19 آذر 1397, 13:32 عصر
اگر در مورد اتصال به اینترنت برای کاربران برنامه مشکلی ندارید (یعنی محدودیت قابل قبولی هست) توصیه میکنم بری سراغ اینکه یه سایت ساده یا به عبارت درست تر وب سرویس بنویسی که صحت دسترسی کلاینت ها رو چک کن، (که می تونی خیلی راحت با php یا asp بنویسی و هیچ طراحی UI ای هم لازم نداره)
مثلا یه سریال نامبر به فرد بدی که وارد کنه داخل نرم افزار، هر بار که مجدد نرم افزار باز شد (یا هر 30 بار مثلا که این قسمت می تونه پیچیدگی ایجاد کنه) اون سریال رو به وب سرویس بفرسته، سرور هم یک جواب بهش بده که معتبر بودن سریال نامبر و تاریخ رو چک کنه
فقط مطمئنا جواب سرور یه yes/no ساده نباید باشه، چون اینجوری به راحتی دور زده می شه، کلا تبدالات اطلاعات بین سرور و نرم افزار باید به همراه کد اعتبار سنجی باشه که الگوریتم اش رو فقط خودت بدونی
مثلا نرم افزار وقتی سریال نامبر فرستاد، همراه اش یه کد هم بفرسته که با تاریخ روز و سریال نامبر ارسال شده با یه فرمول مشخص ایجاد شده، سرور هم این کد رو با تاریخ و سریال نامبر تطابق بده، اگر درست بود جواب بده
و برای اینکه نرم افزار هم گول نخوره، مشابه سرور باید همین کار رو انجام بده و اینبار نرم افزار شما اون رو چک کنه

در مورد محافظت کد هم همون
net reactor. گزینه خوبیه، فقط حواست باشه، هیچ محافظتی 100 درصد نیست، وگر نه الان کرک همین net reactor. نباید وجود داشته باشه:متفکر:

booysusa
دوشنبه 19 آذر 1397, 19:01 عصر
اگر در مورد اتصال به اینترنت برای کاربران برنامه مشکلی ندارید (یعنی محدودیت قابل قبولی هست) توصیه میکنم بری سراغ اینکه یه سایت ساده یا به عبارت درست تر وب سرویس بنویسی که صحت دسترسی کلاینت ها رو چک کن، (که می تونی خیلی راحت با php یا asp بنویسی و هیچ طراحی UI ای هم لازم نداره)
مثلا یه سریال نامبر به فرد بدی که وارد کنه داخل نرم افزار، هر بار که مجدد نرم افزار باز شد (یا هر 30 بار مثلا که این قسمت می تونه پیچیدگی ایجاد کنه) اون سریال رو به وب سرویس بفرسته، سرور هم یک جواب بهش بده که معتبر بودن سریال نامبر و تاریخ رو چک کنه
فقط مطمئنا جواب سرور یه yes/no ساده نباید باشه، چون اینجوری به راحتی دور زده می شه، کلا تبدالات اطلاعات بین سرور و نرم افزار باید به همراه کد اعتبار سنجی باشه که الگوریتم اش رو فقط خودت بدونی
مثلا نرم افزار وقتی سریال نامبر فرستاد، همراه اش یه کد هم بفرسته که با تاریخ روز و سریال نامبر ارسال شده با یه فرمول مشخص ایجاد شده، سرور هم این کد رو با تاریخ و سریال نامبر تطابق بده، اگر درست بود جواب بده
و برای اینکه نرم افزار هم گول نخوره، مشابه سرور باید همین کار رو انجام بده و اینبار نرم افزار شما اون رو چک کنه

در مورد محافظت کد هم همون
net reactor. گزینه خوبیه، فقط حواست باشه، هیچ محافظتی 100 درصد نیست، وگر نه الان کرک همین net reactor. نباید وجود داشته باشه
:متفکر:

من واقعا گیج شدم
این اولین برنامه من هست
من میخوام کابران از برنامه استفاده کنند، هر کاربر مثلا یک لایسنس از من میخرد و این لایسنس یک سال بیشتر اعتبار ندارد
برنامه من یک دفترچه تلفن ساده هست، یک دیتابیس با دیتابیس اس کیو ال اکسپرس دارد
نمیدونم تونستم منظورمو برسونم یا نه
ممکن است من 300 مشتری یا 500 مشتری داشته باشم
منظور شما را از سایت فعال نمی دونم ولی اگر منظورتون یک هاست (سی پنل) و دامنه ir هست بله دارم

یک روش دیگه هم به ذهنم اومد، من یک تکست باکس مخفی درون برنامه بزارم مثلا زیر قسمت ورود به برنامه، هر30بار که کاربر وارد شد، دفعه 31 بار ورود که بزند اون تکست باکس اگر از هاست عدد000 را دریافت کرد وارد بشود، اگر عدد دریافت نکرد مثلا خطای آپدیت بدهد یا... (البته این کار خیلی مبتدی وارانه هست) ولی از رو ناچاری گفتم اینو

mrbm_2007
دوشنبه 19 آذر 1397, 20:36 عصر
منظور شما را از سایت فعال نمی دونم ولی اگر منظورتون یک هاست (سی پنل) و دامنه ir هست بله دارم

بله منظور همونه، یه سایت ساده که درخواست ها رو بررسی کنه



یک روش دیگه هم به ذهنم اومد، من یک تکست باکس مخفی درون برنامه بزارم مثلا زیر قسمت ورود به برنامه، هر30بار که کاربر وارد شد، دفعه 31 بار ورود که بزند اون تکست باکس اگر از هاست عدد000 را دریافت کرد وارد بشود، اگر عدد دریافت نکرد مثلا خطای آپدیت بدهد یا... (البته این کار خیلی مبتدی وارانه هست) ولی از رو ناچاری گفتم اینو

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