دوست عزیز. چرا مفید نیست در حالی که اگه بتوان این مورد را حذف کرد دیگه نرم افزار رفلکتور قادر به شناسایی این برنامه به عنوان برنامه تحت نت و نمایش کدهای آن نیست. لطفا دلیل تان را بیان نمایید.
Printable View
دلیل اول اینکه قابل بازسازی هست و دلیل دوم اینکه تنها نرم افزاری که این کار رو انجام میده , Reflector نیست و برنامه های دیگه ای هم وجود دارن که با این مورد مشکلی ندارن , از جمله Fox.
با سلام به همه اساتید
اول اینکه به نظر من بحث داره تا حدودی منحرف میشه وکاربر system32 که این تایپیکو تا اینجا خیلی خوب مدیریت کرده بهتره بیشتر دخالت کنه
دوم اینکه بهتره تمام توان رو در سر یک نرم افزار پیاده نکنیم
به نظر من نوعی اصولاً بخش امنیت و جلوگیری از انتشار سورس کدها تا حدود 90 درصد بسته به برنامه نویس داره
وقتی شما یک Total رو در یک سیستم اداری Run میکنید چه مواردی را برای امنیت برنامه در نظر میگیرید
ما احتیاج به فایروال داریم
اختیارات User را تا جای ممکن محدود کنیم
و...
تمام مواردیو که شما اشاره کردید مال زمانی هستش که شخص به سرور دسترسی داشته باشه
باید این بحث هم مطرح بشه که از راه دور یک شخص چگونه میتونه به سورس دسترسی پیدا کنه
و به نظر من یک تحقیق جامع در مورد شرکتهایی مانند هلو , سیب سبز و.. که نرم افزارهای حساب داری بسیار قوی نوشتن بشه تا ببینیم شرکتهای حرفه ای در این زمینه چه کاری رو انجام میدن
این سیستم ها با Delphi طراحی شدن و قضیه لو رفتن کد برای اینها منتفی هست.نقل قول:
و به نظر من یک تحقیق جامع در مورد شرکتهایی مانند هلو , سیب سبز و.. که نرم افزارهای حساب داری بسیار قوی نوشتن بشه تا ببینیم شرکتهای حرفه ای در این زمینه چه کاری رو انجام میدن
کراکر یک نسخه از نرم افزار رو میخره , یا میگیره از کسی و بعد میتونه کد رو ببینه , نیازی به فایروال و اینها نیست. منظورتون چی هست ؟نقل قول:
به نظر من نوعی اصولاً بخش امنیت و جلوگیری از انتشار سورس کدها تا حدود 90 درصد بسته به برنامه نویس داره
وقتی شما یک Total رو در یک سیستم اداری Run میکنید چه مواردی را برای امنیت برنامه در نظر میگیرید
ما احتیاج به فایروال داریم
اختیارات User را تا جای ممکن محدود کنیم
و...
سیب سبز با دات نت نوشته شده ولی نمیدونم با کدوم عضوش چون من با خوده مهندسشون صحبت کردم و برنامه رو وقتی در سرور راه اندازی شد دیدمنقل قول:
این سیستم ها با Delphi طراحی شدن و قضیه لو رفتن کد برای اینها منتفی هست.
در مورد امنیت شبکه هم این مسئله مهم هستش یک User بر فرض مثال در ناحیه DC عضو هستش و میتونه به سرور های مختلف در یک شبکه Log کنه حال در اینصورت شما چه کاری انجام میدی در یک شبکه یک User باید در یک سرور Admin باشه و در سرور دیگر Gost ؟؟؟نقل قول:
کراکر یک نسخه از نرم افزار رو میخره , یا میگیره از کسی و بعد میتونه کد رو ببینه , نیازی به فایروال و اینها نیست. منظورتون چی هست ؟
این مسئله با فایروآل البته نه اون فایروآلی که شما در ذهن دارید میسر میشه
من فکر کنم در تایپیک گذشته Delphi و دات نت رو به اندازه کافی بحث کردیم و متوجه شدیم که در Delphi هم امکان لو رفتن سورس وجود دارهنقل قول:
این سیستم ها با Delphi طراحی شدن و قضیه لو رفتن کد برای اینها منتفی هست.
بحث امنیت فقط مختص به C#.NET نیست و کلیه زبانهای دیگه هم حتی زبانهای سطح پایین قابل کرک شدن هستن
من کاملا با شما موافقم،
من هم همین را در پست شماره ۳۵ گفتم.
بحث امنیت با کرک شدن و با دیده شدن کد تفاوت دارد.
قبلا در مورد امنیت در داتنت که بسیار هم قوی هست لینک فرستاده بودم.
مشکل کرک شدن ربطی به این تالار و سیشارپ ندارد.
مشکل دیده شدن کد، ربطی به این تالار و سیشارپ ندارد.
مشکل کار کردن با امنیت در سیشارپ ربطی به این توپیک ندارد.
به تمام کسانی که میگند با فرلکتر میشه کد کامل را بدست آورد:
کد اینکه این بابا چطوری یک مساج باکس فارسی را ساخته و در همین تالار است را بزارید زیره توپیکش.
مسیج باکس تمام فارسی
https://barnamenevis.org/showthread.php?t=115092
لااقل یک فایدهای داشته باشید، به جایه اینکه فقط همه را بترسانید، و شدن یک کار خیلی ساده را نشان بدید، اگر هم که نه نمیتوانید...
دوستان سلام.
من قبلا عرض کردم که بحث در مورد راه های جلوگیری به کدها به پایان رسید و در این مورد دو نتیجه گرفته شد. پس دوستانی که می خواهند نتیجه را ببینید به اینجا مراجعه کنند. لطفا دیگر در مورد این موضوع بحث نشود چون احتمال زیادی دارد که این تاپیک توسط مدیر بخش به علت بی ارتباط بودن با بخش حذف گردد. اگه بیشتر از این می خواهید بدانید لطفا تاپیکی را در بخش امنیتی همین سایت ایجاد کرده وسوال خود را بپرسید. ممنون.
و اما یک سوال کلی دیگه:
سوال: دوستان چه پارامترهای دیگه ای برای برقراری امنیت نیاز هست؟ لطفا آن ها را به صورت عبارتی بیان کنید تا روی این موضوعات نیز بحث شود.
با سپاس فراوان از شما دوستان عزیز. :قلب:
کرک شدن یک بحث هست و دیده شدن سورس کد بحث دیگه , کسی نگفت کرک نمیشن گفتم سورشون دیده نمیشه , و در مورد این حرفم 100% مطمئن هستم. ( فقط این میون delphi.net استثناء هست که اون هم جزو زبانهای دات نت محسوب میشه و ربطی به win32 نداره ).نقل قول:
بحث امنیت فقط مختص به C#.NET نیست و کلیه زبانهای دیگه هم حتی زبانهای سطح پایین قابل کرک شدن هستن
این دومین باری است که دارید توهین میکنید !!!!! :عصبانی:نقل قول:
لااقل یک فایدهای داشته باشید، به جایه اینکه فقط همه را بترسانید، و شدن یک کار خیلی ساده را نشان بدید، اگر هم که نه نمیتوانید...
در مورد سورسی که هم خواستید , Reflector کار کردن باهاش زیاد سخت نیست , میتونید خودتون امتحان کنید.
میتونید مقاله ای رو که ضمیمه کردن مطالعه کنید , هر جا مشکلی بود میتونید در تالار امنیت در برنامه نوسی مطرح کنید تا جواب بدن بهتون .( چون خودم به خاطر مشکلی که در پیام خصوصی بهتون گفتم , مدتی حضور نخواهم داشت ).نقل قول:
سوال: دوستان چه پارامترهای دیگه ای برای برقراری امنیت نیاز هست؟ لطفا آن ها را به صورت عبارتی بیان کنید تا روی این موضوعات نیز بحث شود.
منظور من از کرک همون هک هستش(فکر کنم منظورمو بد رسوندم)نقل قول:
کرک شدن یک بحث هست و دیده شدن سورس کد بحث دیگه , کسی نگفت کرک نمیشن گفتم سورشون دیده نمیشه , و در مورد این حرفم 100% مطمئن هستم. ( فقط این میون delphi.net استثناء هست که اون هم جزو زبانهای دات نت محسوب میشه و ربطی به win32 نداره ).
یکبار من از استاد دانشگاهمون همچین سوالیرو کردم که یک فایل DLL داریم که با C#.NET نوشته شده و من میخوام سورس اونو در بیارم
استاد چند نرم افزارو معرفی کرد ولی گفت که دقیقاً مثل C#.NET در نمیاره و یک شبه کد به شما میده
در صورتی که شما اگه با زبانهای دیگری مانند C++ برنامه بنویسید میتونید تا حدود 90 درصد از کدهارو دربیاری
یک نکته دیگری درمورد دلفی
نرم افزار دلفی توسط ماکروسافت خریده شده و دیگر وژرنی از این نرم افزار به وجودنخواهد آمد
در ضمن ویژوآل استادیو دارای منبع هستش و شما همیشه میتوانید به این منابع دسترسی داشته باشی(منظور از منبع کمپانی سازنده میباشد)
در صورتی که این امر درمورد خیلی از زبانها وجود نداره
كرك يه چيزه و هك يه چيزه ديگه.نقل قول:
منظور من از کرک همون هک هستش
عبارت "هك" مختص برنامه های وب است.
امكان نداره بشه زبان دو دو یی رو به زبان های سطح بالا تبديل كرد. اين از نظر منطقی ثابت شده و چيزی نيست كه با پيشرفت علم امكان پذير بشه. ( البته اين يه تيكه رو از قول Inprise گفتم )نقل قول:
در صورتی که شما اگه با زبانهای دیگری مانند C++ برنامه بنویسید میتونید تا حدود 90 درصد از کدهارو دربیاری
حالا هم كه استاد شما اين حرف رو زده ازش بپرسيد چطوری بعد بيايد به ما هم بگيد. راستش من سورس ويندوز و ويژوال استاديو رو خيلی احتياج دارم. :قهقهه:
منکه گفتم منظورمو بد رسوندمنقل قول:
كرك يه چيزه و هك يه چيزه ديگه.
عبارت "هك" مختص برنامه های وب است
وقتی که به یک سورس یک برنامه دست پیدا میکنن در اصطلاح میگن هک شده من سالها کارم شبکه بوده پس حتماً بهتر از شما با واجه هک آشنا هستم
نشون به اون نشون که وقتی ویندوز های ماکروسافتو از حالت تریال در میارن بهش چه واجه ای رو نسبت میدن؟؟؟
مگه ویژوآل استادیو با C++ نوشته شده؟نقل قول:
حالا هم كه استاد شما اين حرف رو زده ازش بپرسيد چطوری بعد بيايد به ما هم بگيد. راستش من سورس ويندوز و ويژوال استاديو رو خيلی احتياج دارم.
شما که مدعی یکی از قدیمی ترین عضوهای این گروه هستید هنوز نمیدونید که یک زبان برنامه نویسیو چگونه ابداع میکنن؟؟؟
من درمورد سورس ویندوز صحبت نکردم
شما هنوز با مفهوم معماری نرم افزار هم آشنا نیستید
شما هنوز نمیدونید ویندوز رو با چه نرم افزارهایی نوشتن
پس برید هر وقت جوابی برای این سوال ها پیدا کردید تشریف بیاورید
در ضمن من اگر جای شما بودم هیچ وقت از یک استاد ایراد نمیگرفتم
یکبار دیگه برای دوستانی که منظورمو متوجه نشدن توضیح میدم
وقتی شما سورس یک فایل DLL که با C#.NET نوشته شده را بدست میارید یک شبه کد به شما میده که برای اجرا باید روی آن کار کنید
ولی وقتی سورس برنامه های نوشته شده با زبانهای دیگری مانند C++ را بدست میاورید کدهایی که به شما میده عین کدهایی که شما نوشتید نیست ولی همون کارو برای شما انجام میده
جای تاملنقل قول:
عبارت "هك" مختص برنامه های وب است
کدوم زبان دودویی را شما میگید؟؟؟نقل قول:
امكان نداره بشه زبان دو دو یی رو به زبان های سطح بالا تبديل كرد. اين از نظر منطقی ثابت شده و چيزی نيست كه با پيشرفت علم امكان پذير بشه
اگر منظورتون C++ هستش C++ یک زبان سطح بالاست نه دودویی
توهین؟ وقتی که یکی یک ادعایی میکنه ازش اثبات میخواهیم. شما میگید که بدست آوردن کد آسان است. اگر فرض کنیم که چیزی که شما میگی درست است، این یک مثال کوچیک که ادعایه که شما دنبالش را گرفتید را درست بودنش را به ما نشان بدید، من میگم سخت است، و برایه همین هم سعی نمیکنم. اگر شما نمیتونیند یک ذره کد یک مساج باکس فارسی را که در همین تالار دنبالش هستند را استخراج کنید، میشه بگید کجایه بدست آوردن کد آسان است؟
در ریاضیات وقتی که یکی یک ادعایی میکنه، باید اثبات هم انجام بده، درخواست اثبات توهین نیست. اینکه بدانه نشان دادن اثبات همینطوری به یک ایده پافشاری کنید تا موقعی که همه قبول کنند توهین به بقیه است.
حالا راستش را بگید، اگر بدست آوردن کد آسان است را شما نشان بدید، به اینکه بگ دیگران بگید با رفلکتر میشه و برو خودت اینکار را انجام بده جواب نیست، طفره رفتن است و اینکه آسان نیست را نشان میده
چرا که نه؟ ایراد به ایده و بحث را اگر درست نیست باید حتما گرفت.
به خاطر اینک یکی سالهایه بیشتری کاری را انجام میده دلیل بر اینکه همه چیزی که میگه درست باشد نیست!
تجربه و لقب کسی را غیره قابل انتقاد نمیکنه، اگر ایده و یا چیزی که میگند به نظر کامل و درست نیاد باید سوال بشه. اگر کسی واقعا استاد هست از اینکه یک چیزه جدید و درست یاد بگیره خوشحال میشه.
ر ثانی، فراموش نکنید که ما از یک شخص ایراد و انتقاد نمیکنیم، ما از ایدهها و مفهومات اشکال میگیریم. یک شخص کلی ایدهاهایه مختلف میتونه داشته باشد، بعضیهاش درست ، بعضیهاش اشتباه. از درستهاش یاد میگیریم، اشتباههاش را میشکافیم که درست را پیدا کنیم، همه یک انسانند مانند من و شما، هم درست فکر میکنند بعضا همم اشتباه بعضا.
آدمها فانی هستند ولی عقیدههایه درست را حتی میشه بعد از هزار سال ازشان استفاده کرد.
در ضمن اینکه استادتان گفته فقط یک شبه کد را میشه بدست آورد کاملا درست است. و این نه فقط به دات.نت ولی برایه تمام زبانهایه برنامه نویس صابق است.
واسه اينكه بحث موضوع تاپيك عوض نشه جواب آقای keivan mousavi رو در پيغام خصوصی دادم و جناب System32 هم درخواست كرك Xenocode رو كرده بودند. هر كی خواست پيغام خصوصی بده تا واسش ارسال كنم،
در مقاله ای كه جناب NimaNT گزاشته بودند ( كه خيلی هم خوب بود )، گفته بودن كه مقدار CRC و MD5 فايل Dll رو چك كنيم، در مورد CRC توضيح داده بودند ولی MD5 رو نگفتند چی هست و همچنين نگفتند گه چطوری CRC و MD5 فايل رو چك كنيم. ( البته گمونم خود دات نت فريم ورك اين كار رو انجام ميده ) حالا ممنون ميشم يكی توضيح بده كه چطوری اينكار رو انجام بديم؟
جدا جای تاسف داره که بعضی از دوستان فضای تاپیک را با مباحثی غیر از موضوع اصلی دارند پر می کنند. پیغام خصوصی را هشتند برای همین کارها. لطفا از مجادله های بی فایده اجتناب کنید. فکر کنم اگه اینطوری بخواد پیش بره به زودی این تاپیک توسط مدیر بخش قفل بشه.
سوالی را دوست عزیزمون جناب Armin060 پرسیدند که می تونه از حالا موضوع بحث باشه:
در مقاله ای كه جناب NimaNT گزاشته بودند ( كه خيلی هم خوب بود )، گفته بودن كه مقدار CRC و MD5 فايل Dll رو چك كنيم، در مورد CRC توضيح داده بودند ولی MD5 رو نگفتند چی هست و همچنين نگفتند گه چطوری CRC و MD5 فايل رو چك كنيم. ( البته گمونم خود دات نت فريم ورك اين كار رو انجام ميده ) حالا ممنون ميشم يكی توضيح بده كه چطوری اينكار رو انجام بديم؟
در ضمن دوستان دیگه هم اگه سوال امنیتی دارند می تونند بیان کنند که جواب داده بشه. (البته اگه بعضی از کاربران بزارند و با بحث های بی مورد باعث نشند تاپیک قفل بشه).
ممنون از همگی.
سلام دوستان
از حواشی به درو باشید.والا این تاپیک هم به سرنوشت بسیاری از تاپیک های دیگر دچار خواهد شد.حدود 70 پست ایجاد کرده اید که بسیاری ا آن ها فاید محتوای علمی و تنها کل کل کردن های بی مورد بوده که علاوه بر هدر دادن فضای سایت باعث هدر دادن وقت سایر کاربران نیز خواهد شد.
این اولین و آخرین اخطار بنده در مورد این تاپیک می باشد.
موفق باشید
با سلام مجدد
عنوان تاپیک "امنیت در سی #C" می باشد. این عنوان به نظر بنده بسیار کلی است(با توجه به ماهیت کلمه امنیت). به نظر من ابتدا می بایستی تعریفی جامع از امنیت ارائه می شد و پس از آن به بررسی روش ها و ابزارهای مورد نیاز در جهت رسیدن به امنیت بالاتر در برنامه ها بحث می شد.
این تاپیک می توانست با عنوانی مثلا" امنیت در برنامه های دات نت " و در بخش کلی تری مطرح گردد. چرا که چهارچوبه زبان های برنامه نویسی که بر پایه پلت فرم دات نت می باشند یکی است.
اما در متن تاپیک (اولین پست)، اشاره به این شده که به عنوان سوال اول، هدف جلوگیری از سورس شدن برنامه های دات نت می باشد.
دوستان می توانند در این باره بحث کنند و به یک نتیجه واحد برسند.که فکر می کنم به اندازه کافی در این مورد بحث شده. کاربر ایجاد کننده تاپیک می توانند یک نتیجه گیری کلی در مورد سوال اول انجام داده و نتیجه را به سمع و نظر کاربران برساند.
پس از آن می توانند به سوال دیگری بپردازند.
اما در هر صورت توجه به نکات زیر می تواند روند مثبت تری به تاپیک دهد:
1- پاسخ ها بدون تعصب نسبت به یک زبان، یک فریم ورک و ... باشند
2-پاسخ ها همراه با مدرک و سند قابل استناد باشند
3-از فرستادن پاسخ های نا مرتبط مثلا قرار دادن فایل های Crack Me و ... خودداری شود
4-از کل کل کردن پرهیز شود
5....
********
موفق باشید
پ و:
شاید در اینده ای نزدیک، بسته به روند تاپیک، تاپیک را به محل مناسب تری و با عنوان مناسب تری انتقال دهم
با تشکر از مدیر بخش:
لازم دانستم در تایید کلام ایشان سخنی بگویم:
اینجانب نیز در اولین پستم به کاربران عزیز گوشزد نمودم موضوع این تاپیک کلی است لذا ابتدا سوال راههای جلوگیری از نفوذ به کدها را بررسی می نماییم (که یک بحث کاملا مهم است) و سپس در ادامه دوستان سوالاتی در این زمینه دارند بیان کنند تا با بقیه کاربران به سوال این کاربر جواب داده شود. اولین سوال که پرسیده شد با استقبال کاربران مواجه گردید و در نهایت نیز به یک جمع بندی رسیدیم که دوستان می توانند در این صفحه جمع بندی انجام گرفته را مشاهده کنند. ولی متاسفانه بعضی دوستان با مجادله های بی مورد و بی فایده بحث را از موضوع اصلی دور کردند. که به تذکرات اینجانب و شما انجامید. حالا با این توصیفات از دوستان می خواهم در صورتی که سوال امنیتی دارند در این تاپیک بیان نمایند تا به آن پرداخته شود و کشمکش های خود را در پیام های خصوصی بیان نمایند. در ضمن از آقای کیانی خواهش می کنم اگر پستی با موضوع تاپیک بی ارتباط بود لطفا آن پست را حذف کنند تا تاپیک روند عادی خود را طی کند. و کاربر مربوطیه نیز از تکرار عمل خود جلوگیری کند.
با تشکر وسپاس فراوان از کلیه دوستان عزیز.
نتیجهگیریهایه که گرفته شد:
۱.نتیجه گیری اول بدست آوردن کدها را ساده جلوه میده، در حالی که که حتی یک نفر از کسانی که این نتیجه را قبول دارند نتوانستند کد یک تابع کوچک که در همین تالار فرستاده شده بود را دربیارند، پس نتیجه گیری را باید به این تغییر داد:
۱.با اینکه به هیچ وجه امکان ندارد که جلوی نفوذ به کدهایمان گرفته شود، اینکار کار آسانی نیست و یک پروژه کاملا را تبیدل به سورس نمیکنه، فقط یک شبه کد بدست میاد که بعدش هم باید با تلاش زیاد بشه ازش استفاده کرد.
سوال امنیتی همانطوری که گفته شد، ربطی به دسترسی و یا نرسی کد ندارد، اگر میخواهید واقعا برنامه نویسی با امنیتی با سیشارپ را بررسی کنید، یک توپیک جدید با عنوان درست و فقط برایه بررسی برنامهنویسی با امنیت در سیشارپ بپردازید.
نتیجیهگیرهایه که شده گمراه کننده هستند، تنها حسی که این نتیجیهگیرها به کاربران تازهوارد میده این است که یکی میتونه کد کامل پروژهشان را براحتی فقط با استفاده از رفلکتور کاملا بدست بیاره.
من تا حدود 90 درصد با دوست خوبم آقای آرژنگ موافق هستم
ولی مسئله ای که وجود داره راه برای بدست آوردن سورس وجود داره و ما فقط میتونیم مانند بیماری ایدز که راه درمان نداره و فقط میشه دوره نقاهدو به تاخیر انداخت ما هم دوره بدست آوردن سورسو به تاخیر بندازیم و کاری کنیم که شخص برای بدست آوردن سورس هزینه سربار زیادی بپردازه
چیزی که مسلم هستش این ایراد در نسخه های بعدی ویژوآل حل خواهد شد و ویژوآل پیشرفت خواهد کرد
کدوم ماست بندی هست که بگه ماست من شوره؟؟؟نقل قول:
من فکر میکنم این اتفاق نمی افته چون در هیچ منبعی از این خصوصیت به عنوان ایراد نام برده نشده.
من شخصاً تا به حال سراغ نداشتم که ماکروسافت به عیبی از نرم افزارهای خودش اعتراف کرده باشه
من در تایپیک گذشته گفتم که ماکروسافت حق امتیاز نرم افزار دلفی رو خریدنقل قول:
به نظر شما اگر این یک ایراد بود، از سال 2000 که برای اولین بار صحبت رسمی در مورد پلت فرم دات ن ت و زبان سی شارپ در کنفرانس PDC 2000 به میان آمد تا امروز که در حال ریلیز نسخه 4 از این پلت فرم هستند، نمی بایست حل می شد؟
به نظر من ادقام این دو نرم افزار باعث پیشرفت میشه
چیزی که در دنیای گرافیک شد یعنی خرید نرم افزار 3MAX از طرف شرکت MAYA
به نظر شما اگر این یک ایراد بود، از سال 2000 که برای اولین بار صحبت رسمی در مورد پلت فرم دات ن ت و زبان سی شارپ در کنفرانس PDC 2000 به میان آمد تا امروز که در حال ریلیز نسخه 4 از این پلت فرم هستند، نمی بایست حل می شد؟نقل قول:
Programs written for .NET are easy to reverse engineer. This is not in any way a fault in the design of .NET; it is simply a reality of modern, intermediate-compiled languages
یک سوال:
تا بحال چقدر در مورد این که اصلا چرا دات نت ظهور کرد تحقیق و فکر کردید؟منظورم شخص شما نیست. کلا دوستانی که ماهیت دات نت را با ایراداتی همچون مسائلی که در این تاپیک مطرح شده زیر سوال می برند.
قرار شد آف تاپیک نزنید.
مدیران هم می تونند آف بزنند؟
من تا بحال یاد ندارم که ایرادات و باگ های کوچکی در نرم افزارهای ماکروسافت بوده باشه، به آن ها اطلاع داده باشند و رفع نشده باشه.مگر اینکه ما اطلاعاتی در این مورد نداشته باشیم.مانند همین چند وقت پیش که یک دوستی از هیجان تا دم فوت رفته بود که باگی در excel پیدا کرده بود کلی هم ذوق کرده بود که اولین نفری است که این باگ را کشف کرده بود و ادعا می کرد که این باگ یک باگ حیاتی است و تمامی شرکت های استفاده کننده از excel منفجر خواهند شد!. در حالی که تنها یک باگ نمایشی بود و نه محاسباتی و جالب تر اینکه چند سال پیش گزارش شده بود و رفع شده بود!!!
حالا ....
اینکه دات نت در حال پیشرفت هست شکی توش نیست ولی این ربطی به مطلب شما در مورد ایرادی که بیان کردین نداره...
**********
دوستان خواهشا آف نزنید. گناه من هم گردن شماهاستا.
موفق باشید
در نسخه مرورگر وب ماکروسافت Internet Explore در نسخ 5 این نرم افزار حدود 26 نقطه نفوذ خطرناک پیدا کردن و تا به امروز که نسخه 7 این نرم افزار در بازار موجود هست این باگ برطرف نشدهنقل قول:
من تا بحال یاد ندارم که ایرادات و باگ های کوچکی در نرم افزارهای ماکروسافت بوده باشه، به آن ها اطلاع داده باشند و رفع نشده باشه.مگر اینکه ما اطلاعاتی در این مورد نداشته باشیم.مانند همین چند وقت پیش که یک دوستی از هیجان تا دم فوت رفته بود که باگی در excel پیدا کرده بود کلی هم ذوق کرده بود که اولین نفری است که این باگ را کشف کرده بود و ادعا می کرد که این باگ یک باگ حیاتی است و تمامی شرکت های استفاده کننده از excel منفجر خواهند شد!. در حالی که تنها یک باگ نمایشی بود و نه محاسباتی و جالب تر اینکه چند سال پیش گزارش شده بود و رفع شده بود!!!
پیشرفت ابزارهای برنامه نویسی و دستگاههای الکترونیکی (مثل تلفن همراه و PAD ها) مشکلات و نیازمندیهای جدیدی را به وجود آورد جامعیت قطعات نرم افزاری از زبانهای مختلف ثابت کرد که این دشواری و مشکلات نصب متداول بودند زیرا نسخه های جدید قطعات مشترک با نرم افزارهای قدیمی ناسازگار بودند توسعه دهندگان پی بردند که به کاربردهای وبی نیاز دارند که بتوانند از طریق اینترنت دستیابی داشته باشند به دلیل شهرت دستگاههای الکترونیکی سیار توسعه دهندگان نرم افزار پی بردند که Client ها لازم نیست کامپیوترهای رومیزی باشند به این ترتیب به وجود نرم افزاری پی بردن ه توسط هرکس و هر گونه دستگاهی قابل دسترسی باشد برای برآورده کردن این نیازها در سال 2000 میکروسافت زبان برنامه نویسی C# را اعلان کرد C# برای سکوی NET. فراهم شدنقل قول:
یک سوال:
تا بحال چقدر در مورد این که اصلا چرا دات نت ظهور کرد تحقیق و فکر کردید؟منظورم شخص شما نیست. کلا دوستانی که ماهیت دات نت را با ایراداتی همچون مسائلی که در این تاپیک مطرح شده زیر سوال می برند
سکوی NET. بسیاری از فن آوریهای پراکنده میکروسافت در کنار هم قرار داد برای مثال سرویس قطعات COM+ محیط کاری توسعه وب ASP تثبیت زبان XML و طراحی شیءگرا پشتیبانی از پروتکل های جدید وب سرویس مثل SOAP , WSDL , UDDI و تاکید بر اینترنت همگی در یک معماری گنجانده شده است سکوی NET. در اصل یک محیط کاری جدید است که یک واسطه برنامه نویسی کاربردی API جدید را برای سیستم عامل ویندوز فراهم میسازد
این نظر شخصی من و نوع دیگاه من نسبت به این قضیه بود چیزی که قبلاً مشابه اش رو دیده بودمنقل قول:
اینکه دات نت در حال پیشرفت هست شکی توش نیست ولی این ربطی به مطلب شما در مورد ایرادی که بیان کردین نداره...
بحث جالبیه لطفاً بهتر ادامش بدین و تخصصی تر بشه ما که داریم استفاده می کنیم. ممنونم
دوستان سلام.
این مطالبی که شما بیان می کنید با اینکه بسیار جالب هستند ولی ربطی به موضوع تاپیک نداره. اگه مایلید به مدیر بخش گفته شود تا موضوع تاپیک را تغییر دهند تا در بخش مناسبی قرار داده شود. و گرنه، لطفا مطالبی مرتبط با بخش بیان کنید و بحث های دیگر را در تاپیک های جداگانه بحث نمایید.
با سپاس از شما.
-------------------------------------------
رمضان، موسم عبادت است و عبادت غذای روح.
دوستان اینم یه نمونه سوال که می تونه راهنمای دوستان در زمینه بحث در این تاپیک باشه.
سوال: کسی راجع به X509Certificates که در فضای نام Security.Cryptography قرار داره می تونه یه سری اطلاعات در اختیار بقیه قرار بده. ممنون.
یه روش کلی برای غیر ممکن کردن دسترسی به برنامه از طریقه نرم افزارهای Restrator Hack که میان مثلا لوگو برنامه شما را عوض می کنند یا منو های شما و عکس ها را دستکاری می کنن اینه که شئ ها را در زمان اجرا ایجاد کنید یعنی به جای گذاشتن یک PictureBox در فرم ان را در کد نویسی ایجاد کنید.این خیلی مهمه و امنیت فوق العاده اپ می شه.
با سلام
خدا رو شکر عملم موفقیت آمیز بود و راحت شدم.
ولی در مورد جناب موسوی که گفته بودن وقتی ویندوز از حالت تریال در بیاد بهش میگن هک شد !
این برداشت اشتباه هست , اینجا میگن کرک شد , کرک و مهندسی معکوس دو علم هستن که به موازات هم گسترش پیدا کردن و چون اهدافشون 100% مخرب هست از شاخه هک جدا شدن , چرا که هک امکان مفید واقع شدن هم وجود داره.
و در مورد جناب ارژنگ خان , بنده ادعایی کردم و انجامش هم دادن , چند نمونه کرک می گذاشتند , کرک کردم و در مواردی سورس رو هم تحویل دادم ,حالا اگر شما مایل هستید که هنوز هم فکر کنید که سورس رو نمیشه در آورد یا اگر هم بشه کاربردی نیست , به خودتون مربوطه. ( البته منظورم همون آنپک می هاست )
در مورد سوال جناب System32 هم که در مورد md5 پرسیدن , میتونم بگم که md5 هم دقیقا" مثل crc عمل میکنه و کاربرد مشابهی دارن , در حالت کلی میتونم توصیه کنم که بیشتر به جای CRC از MD5 استفاده کنید.
كنترل ها در حالت عادی هم با كد درست ميشند.نقل قول:
یه روش کلی برای غیر ممکن کردن دسترسی به برنامه از طریقه نرم افزارهای Restrator Hack که میان مثلا لوگو برنامه شما را عوض می کنند یا منو های شما و عکس ها را دستکاری می کنن اینه که شئ ها را در زمان اجرا ایجاد کنید یعنی به جای گذاشتن یک PictureBox در فرم ان را در کد نویسی ایجاد کنید.این خیلی مهمه و امنیت فوق العاده اپ می شه.
و Nima NT جان، اگر ميشه بگيد چطوری بايد مقدار MD5 يا CRC فايل رو به دست بياريم؟
سلام
والا تو دات نت بلد نیستم این کار رو انجام بدم.
دوستان چند پست بالاتر یه سوال کردم اینم کمی اطلاعات که در این مورد بدست آوردم:
یک public-key certificate یک امضای دیجیتالی است که از سوی یک نهاد یا موسسه ارائه می گردد. بیشتر از این مورد در مرورگرهای اینترنتی که پروتوکل SSL را پشتیبانی می کنند استفاده می گردد.
X.509 تعیین می کند که چه اطلاعاتی به عنوان امضای دیجیتالی استفاده شود و چگونه آن ها باید نوشته شوند.
اگه دوستان مطلب دیگری درباره نحوه کدنویسی و کاربردهای این مورد می دانند لطفا از گفتن آن دریغ ننمایند. ممنون.
-----------------------------------
انسان مجموعه ای از آنچه دارد نیست، بلکه مجموعه ای است از آنچه هنوز ندارد، اما می تواند داشته باشد.
اینکه شبه کد راحت بدست میاد را کاملا قبول دارم، ولی این شبه کد تا چه حد برایه کارکردن باهاش سخت است (بدانه ابفسکیشن ) را میخواهم بدانم.
آیا قبول دارید که ادعا این بود:
"تبدیل به کد در داتنت آسان هست"؟
من گفتم اگر این ادعا درست است یک تابع را که در همین تالار وجود دارد و کاربران سورسش را میخواهند استخراج بشد و هم اینکه از این توپیک یک فایدهای در میامد.
بدست آوردن شبه کد با رفلکتر و کرک کردن و امنیت در داتنت مباحث مختلفی هستند و به هم ربط ندارند .نه اینکه هر کی در داتنت کد بنویسه یکی دیگر میتونه کدش را به راحتی بدست بیاره و پروژهاش را بدست بگیرد.
من به قابلیت کرک کردن شما سوالی نکردم، فقط گفتم اگر میگید کد بدست آوردن سادهاست با این مثال کوچیک اگر آسان بود من خودم انجام میدادم و از شما تقاضا نمیکردم.
درود بر نیمای عزیزم
خوشحالم که عملت به خوبی انجام شد و به این انجمن برگشتی
دوست عزیز من یک تعریفی از هک میکنم
هک در زبان انگلیسی به معنی کلنگ هستش و در کامپیوتر هر کاری که واسه خراب کاری باشه بهش هک مبگن
وقتی شما داری یک فایل رو مورد تغییرات انجام میدی به این عملیات هک میگن در واقع ویندوزی که من و شما داریم استفاده میکنیم حاصل دست رنج هکرهای چینی هستش
کرک اسم بسته نرم افزاری هستش که برای اعمال انجام تغییرات بروی اون نرم افزار انجام میشه
هک به معنی سمبل کردن هم میباشد، خیلیها کد هک میکنند، یعنی اینکه کد را به هم میبافند بدانه اینکه از اصول برنامه ریزی استفاده کنند، به شکل کلی هر کسی که کد سرهم کنه برنامهنویس (پروگرمر )نیست، کد هکر است.
برنامه نویس دیسیپلین میخواهد، هر کی که همینطوری فقط میافته به جان کد،کد هکر است.
هکر به معنی کسی که ته و تویه چیزها را درمیارد هم هست، لازم نیست که فقط برایه خراب کاری باشد، مثلا اگر پارامترهایی به جستوجیه گوگل اضافه کنند میشه نتیجههایه بخصوصی را بدست آورد، در این حالت با اینکه کاری که انجام شده برایه خراب کاری نبوده بهش هک کردن میگند (با هک کردن وب سایت فرق دارد).
دوستان اینم برای آخرین بار:
لطفا مباحث مربوط به هک و کرک را در بخش خودش بحث کنید یا به هم پیام بزنید. اینجا فقط روی مباحث مربوط به امنیت در #C صحبت کنید. اگه مدیر بخش اینجا را قفل کنه بهش حق می دم. دیگه با خودتون. بای
این تایپک هم داره به سرنوشت تایپیک قبلی که در همین زمینه بود دچار میشه با این تفاوت که این دفعه موضوع مشخصه مدیریت هم داره اعمال میشه ولی هنوز هم به جواب قطعی نرسیدیم
به نظر شما مشکل از کجاست؟؟؟
به نظر من به جای اینکه انقدر به مسائل حاشیه ای بپردازیم و اینقدر از هم ایراد بگیریم بهتره به فکر چاره ای باشیم
آیا این بهتر نیست؟؟؟
واقعاً جای تاسف داره در بزرگترین سایت برنامه نویسان ایران با وجود بزرگترین برنامه نویسان در زمینه OO هیچکس حرف کسیرو قبول نداره و هرکسی مدعی این هستش که حرف خودش درسته
امام علی در این زمینه میفرماید
آدم عاقل کسی هست که همیشه به حرف خودش شک کند
به راستی که اگر یک اجنبی بیاید و این تایپیکهارو ببیند پیش خودش چه فکری میکند؟؟؟
تا حالا دو سوال مطرح شده:
سوال: چکار کنیم تا جلوی نفوذ به کدهایمان گرفته شود؟
جواب و نتیجه: به نظر عده ای از دوستان نتیجه های زیر:
1- به هیچ وجه امکان ندارد که جلوی نفوذ به کدهایمان گرفته شود. فقط می توان کاری کرد که این کار سخت تر انجام شود.
2- شما می توانید بوسیله نرم افزارهای Obfuscator نفوذ به کدهایتان را مشکل نمایید. این کار با تغییر نام متغیرها و ... برنامه شما انجام می گیرد.
و به نظر عده ای دیگر در مقابل نتیجه گیری بالا:
۱.نتیجه گیری اول بدست آوردن کدها را ساده جلوه میده، در حالی که که حتی یک نفر از کسانی که این نتیجه را قبول دارند نتوانستند کد یک تابع کوچک که در همین تالار فرستاده شده بود را دربیارند، پس نتیجه گیری را باید به این تغییر داد:
۱.با اینکه به هیچ وجه امکان ندارد که جلوی نفوذ به کدهایمان گرفته شود، اینکار کار آسانی نیست و یک پروژه کاملا را تبیدل به سورس نمیکنه، فقط یک شبه کد بدست میاد که بعدش هم باید با تلاش زیاد بشه ازش استفاده کرد.
و حالا نتیجه گیری کلی با خودتون.
سوال دومی که پرسیده شد:
سوال: کسی راجع به X509Certificates که در فضای نام Security.Cryptography قرار داره می تونه یه سری اطلاعات در اختیار بقیه قرار بده.
جواب: به این صفحه مراجعه کنید. ولی در کل جواب خیلی ناقصه و هنوز نیازه روی آن کار بشه. لطفا دوستان با هم یه همکاری داشته باشین تا بتونیم برای این سوال هم یه جواب بگیریم.
ببینید دوستان روند تاپیک مشخصه.... من آخرین صحبت هام رو قبلا در این پست نوشتم. دیگه حرفی ندارم.
تا سوال بعدی بای.
با توجه به مطالبی که تا الان تو تاپیک خوندم یه زاه حلی که استفاده هم کردم و تا حد قابل قبولی کد ها رو امن نگه میداره اینه که برنامه رو از حافظه اجرا میکنیم نه از فایل؛ به این شکل:نقل قول:
سوال: چکار کنیم تا جلوی نفوذ به کدهایمان گرفته شود؟
1- ابتدا برنامه مورد نظر رو به شکل یک Exe کامپایل میکنیم.
2- حالا یه برنامه دیگه میسازیم که در نقش launcher عمل میکنه و کارش load کردن برنامه در حافظه و اجرای اون از حافظه هستش.
3- محتویات این فایل exe رو میخونیم و به شکل یکbyte[]که Encrypt میشه به resource های launcher اضافه میکنیم از نوع Embeded Resource
4- حالا تو launcher یه همچین کدی برای load کردن برنامه اصلی می نویسیم:
static void Main()
{
RunInternalExe("نام برنامه اصلی");
}
private static void RunInternalExe(string exeName)
{
//Get the current assembly
Assembly assembly = Assembly.GetExecutingAssembly();
//Get the assembly's root name
string rootName = assembly.GetName().Name;
//Get the resource stream
Stream resourceStream = assembly.GetManifestResourceStream(rootName + "." + exeName);
//Verify the internal exe exists
if (resourceStream == null)
return;
//Read the raw bytes of the resource
byte[] resourcesBuffer = new byte[resourceStream.Length];
resourceStream.Read(resourcesBuffer, 0, resourcesBuffer.Length);
resourceStream.Close();
//Load the bytes as an assembly
Assembly exeAssembly = Assembly.Load(resourcesBuffer);
//Execute the assembly
exeAssembly.EntryPoint.Invoke(null, null); //no parameters
}
با این کار برنامه ما از حافظه بصورت مستقیم اجرا میشه و چون حافظه در دات نت امنیت قابل قبولی داره خیلی کار سختی خواهد بود که بشه از تو حافظه کدهای برنامه رو درآورد. همچنین چون کد هارو بصورت encrypt شده در resource ها نگه داری میکنیم پس به این راحتی نمیشه از توی resource ها هم به کد برنامه اصلی دسترسی پیدا کرد.
با این روش اگر برای Encrypt و Decrypt کردن resource مون دقت لازم رو داشته باشیم و از روش های امن استفاده کنیم میتونیم نتیجه قابل قبولی از این روش بگیریم.
البته بزرگترین نقطه ضعفی که این روش داره اینه که اگر برنامه شما به چندین برنامه دیگه وابستگی داشته باشه و نیاز به تعامل با اونا داشته باشه کار خیلی سخت خواهد شد.
موفق باشید
با سلام و تشکر از کلیه دوستان که تا حالا توی بحث مشارکت داشتن لازم دیدم دیدگاه های خودم رو عنوان کنم
توی این فوروم جای این کار نیستنقل قول:
در حالی که که حتی یک نفر از کسانی که این نتیجه را قبول دارند نتوانستند کد یک تابع کوچک که در همین تالار فرستاده شده بود را دربیارند
کافی شما توی تالار مربوطه تاپیک crack me بگذارید و 30 دقیقه بعد مراجعه کنید تا نتیجه رو ببینید
__________________________________________________ _________________________________________
نکته قابل اغماض
هیچ گاه هیچ کرکری به همه کد های پروژه ما نیاز نداره پس هدف هیچ هکری این نیست که Solution پروژه رو برگردونه و یا کد های برنامه ما رو عین روز اولش بکنه فقط می خواهد بخشی که قرار قفل برنامه ما هست رو شناسایی بکنه و به نحوی در اون بخش اختلال ایجاد کنه
جناب Bermoda فكر كنم اين راهی كه گفتيد چندان هم خوب نباشه. فقط كافی هست كه برنامه آنپك بشه
و اين هم دو مثال از X509Certificate.
using System;
using System.Security.Cryptography;
using System.Security.Permissions;
using System.IO;
using System.Security.Cryptography.X509Certificates;
class CertInfo
{
//Reads a file.
internal static byte[] ReadFile (string fileName)
{
FileStream f = new FileStream(fileName, FileMode.Open, FileAccess.Read);
int size = (int)f.Length;
byte[] data = new byte[size];
size = f.Read(data, 0, size);
f.Close();
return data;
}
//Main method begins here.
static void Main(string[] args)
{
//Test for correct number of arguments.
if (args.Length < 1)
{
Console.WriteLine("Usage: CertInfo <filename>");
return;
}
try
{
X509Certificate2 x509 = new X509Certificate2();
//Create X509Certificate2 object from .cer file.
byte[] rawData = ReadFile(args[0]);
x509.Import(rawData);
//Print to console information contained in the certificate.
Console.WriteLine("{0}Subject: {1}{0}", Environment.NewLine,x509.Subject);
Console.WriteLine("{0}Issuer: {1}{0}", Environment.NewLine,x509.Issuer);
Console.WriteLine("{0}Version: {1}{0}", Environment.NewLine,x509.Version);
Console.WriteLine("{0}Valid Date: {1}{0}", Environment.NewLine,x509.NotBefore);
Console.WriteLine("{0}Expiry Date: {1}{0}", Environment.NewLine,x509.NotAfter);
Console.WriteLine("{0}Thumbprint: {1}{0}", Environment.NewLine,x509.Thumbprint);
Console.WriteLine("{0}Serial Number: {1}{0}", Environment.NewLine,x509.SerialNumber);
Console.WriteLine("{0}Friendly Name: {1}{0}", Environment.NewLine,x509.PublicKey.Oid.FriendlyNam e);
Console.WriteLine("{0}Public Key Format: {1}{0}", Environment.NewLine,x509.PublicKey.EncodedKeyValue .Format(true));
Console.WriteLine("{0}Raw Data Length: {1}{0}", Environment.NewLine,x509.RawData.Length);
Console.WriteLine("{0}Certificate to string: {1}{0}", Environment.NewLine,x509.ToString(true));
Console.WriteLine("{0}Certificate to XML String: {1}{0}", Environment.NewLine,x509.PublicKey.Key.ToXmlString (false));
//Add the certificate to a X509Store.
X509Store store = new X509Store();
store.Open(OpenFlags.MaxAllowed);
store.Add(x509);
store.Close();
}
catch (DirectoryNotFoundException)
{
Console.WriteLine("Error: The directory specified could not be found.");
}
catch (IOException)
{
Console.WriteLine("Error: A file in the directory could not be accessed.");
}
catch (NullReferenceException)
{
Console.WriteLine("File must be a .cer file. Program does not have access to that type of file.");
}
}
}
using System;
using System.Security.Cryptography.X509Certificates;
publicclassX509
{
publicstaticvoid Main()
{
// The path to the certificate.
string Certificate = "Certificate.cer";
// Load the certificate into an X509Certificate object.
X509Certificate cert = newX509Certificate(Certificate);
// Get the value.
string resultsTrue = cert.ToString(true);
// Display the value to the console.
Console.WriteLine(resultsTrue);
// Get the value.
string resultsFalse = cert.ToString(false);
// Display the value to the console.
Console.WriteLine(resultsFalse);
}
}
دوست عزیز Armin060 این دو مثال چه کاری می کنند. در ضمن می شه کمی درباره کارایی این فضای نام توضیح بدید. ممنون.
جناب برمودا , ره حل این برنامه ها استفاده از Generic Dumper ها هست که فایل رو تر و تمیز از رم بکشه بیرون. متاسفانه این کار امنیت نداره , مگر اینکه فایلی که قراره تو حافظه لود بشه , از پیش پک بشه.نقل قول:
با این کار برنامه ما از حافظه بصورت مستقیم اجرا میشه و چون حافظه در دات نت امنیت قابل قبولی داره خیلی کار سختی خواهد بود که بشه از تو حافظه کدهای برنامه رو درآورد.
من اين دو تا كد رو از تو MSDN كپی كردم، گفتم شايد به كار بياد.نقل قول:
دوست عزیز Armin060 این دو مثال چه کاری می کنند. در ضمن می شه کمی درباره کارایی این فضای نام توضیح بدید. ممنون.
http://msdn.microsoft.com/en-us/libr...rtificate.aspx
http://msdn.microsoft.com/en-us/libr...tificate2.aspx
اینم یک سری اطلاعات که از سایت های مختلف جمع آوری شده است:
Certificate يک فايل است که بر روي سرور وب نصب مي شود تا وب سايت را شناسايي کند اين روش براي شناساندن هويت يک شرکت يا تاجر به خريداران آنلاين کمک کرده تا به سايت اعتماد کنند براي بررسي صحت اين ادعا (براي اينکه باور کنيم آنچه ادعا مي کنند هستند ) شرکت ها و وب سايت هاي آنها توسط يک شرکت ثالث مانند Verisign و Thawte .
وقتي صحت ادعاي شرکت ها و وب سايت آنها مورد تأييد قرار گرفت آنها يک گواهينام? SSL ( به مبلغ چند صد دلار ) به آنها اعطا مي کنند . اين گواهينامه ديجيتال بر روي وب سرور آنها نصب شده و توسط کاربراني که وارد سايت مي شوند قابل ديدن است . شما با نگاه کردن آدرس وب سايت مي توانيد متوجه اين گواهينامه شويد . وب سايت هايي که داراي گواهينامه هستند با HTTPS شروع مي شوند . براي ديدن گواهينامه مي توانيد بر روي آيکون قفل در گوش? مرورگر خود کليک کنيد .
از آنجا که گواهينامه هاي ديجيتال وضعيت جاري يک شرکت را تأييد مي کنند اعتبار آنها دائمي نيست . گواهينامه هاي SSL معمولاً هر يک تا سه سال منقضي مي شوند . اگر Certificate در موئد مقرر تجديد نشود در حين مرور ، وب سايت شما با يک پيغام مبني بر اينکه گواهينام? اين وب سايت منقضي شده است مواجه مي شود اين خطا به شما و کامپيوتر شما مربوط نمي شود اما به معني آن است که وب سروري که شما به آن متصل شده ايد گواهينامه خود را تجديد نکرده است . هر چند که اين به معني اينکه وب سايت مذکور لزوماً کلاه بردار است ، نيست اما حداقل نشان دهند? آن است که وب سايت خيلي حرفه اي هم نيست . http://www.gamadirect.com/DicDef.aspx?ID=20
تضميني براي آنکه نرم افزار دريافتي از طريق اينترنت از يک منبع قابل اطمينان است. هر گواهينامه ديجتال اطلاعاتي درباره نرم افزار فراهم مي کند –مثلاً اطلاعات شناسايي تهيه کننده نرم افزار و تاريخ ثبت آن بوسيله مسئول صدور گواهينامه(CA)، و نيز ميزان مقاومت در برابر سرقت.
کارت شناسايي کاربر، يا " گواهينامه استفاده" در فضاي کامپيوتري. گواهينامه هاي ديجيتال که توسط مسئولين صدور گواهينامه صادر مي شوند، نوعي اعتبار الکترونيکي هستند که درستي و اعتبار يک کاربر را در اينترنت و اينترانت ها تائيد مي کنند. رسمي گواهينامه هاي ديجيتال با استفاده از تکنولوژي رمزگذاري عمومي، انتقال Online و قانوني اطلاعات محرمانه، پول يا ديگر اطلاعات حساس را تضمين مي کنند.
دارنده هر گواهينامه ديجيتال دو کليد دارد (رشته اي از اعداد): يک کليد خصوصي که تنها کاربر براي "امضاي" پيام هاي ارسالي و رمزگشايي پيام هاي دريافتي در دست دارد، و يک کليد عمومي براي استفاده اشخاص ديگر، جهت رمز گذاري داده ها به منظور ارسال به يک کاربر خاص. http://www.gamadirect.com/DicDef.aspx?ID=239
امضای دیجیتال
امضای دیجیتال ، ماحصل رمزنگاری مقدار Hash داده مبادله شده بوده و روشی ایمن به منظور امضای الکترونیکی اطلاعات با استفاده از کدها ویا علائمی است که از لحاظ الکترونیکی معادل یک امضای دستی می باشند. امضای دیجیتالی، مبتنی بر ترکیب ایده سنتی Hashing داده و رمزنگاری کلید عمومی است .یک مرکز معتبر صدور گواهینامه های دیجیتال ، گواهینامه های دیجیتالی صادرشده را به کلیدهای عمومی مربوط به هر یک نسبت می دهد . فرآیند امضاء ، مخالف فرآیند رمزنگاری است : از کلید خصوصی به منظور رمزنگاری Hash و از کلید عمومی برای بررسی صحت امضاء ( رمزگشائی ) استفاده می شود .
فرآیند امضای داده توسط فرستنده پیام :
•دریافت پیام اولیه و محاسبه یک مقدار Hash با استفاده از یک الگوریتم hashing
•رمزنگاری Hash توسط یک تابع رمزنگاری و اعمال کلید خصوصی توسط فرستنده پیام ( پیام اولیه به همراه مقدار Hash رمز شده ، یک پیام دیجیتالی امضاء شده را تشکیل می دهند ) .
•ارسال پیام دیجیتالی امضاء شده برای گیرنده
فرآیند بررسی صحت امضاء ارسالی همراه داده :
•پس از دریافت پیام توسط گیرنده ، در ابتدا ، Hash رمز شده با استفاده از کلید عمومی فرستنده رمزگشائی می گردد ( Hash رمزگشائی شده ) .
•محاسبه محلی مقدار Hash پیام ارسالی با استفاده از یک الگوریتم Hashing
•مقایسه نتایج بدست آمده در مراحل قبل : Hash رمزگشائی شده با مقدارمحلی Hash مقایسه و در صورتیکه نتیجه یکسان باشد ، صحت و اعتبار پیام ارسال شده توسط فرستنده تائید می گردد .
لازم است به این موضوع دقت شود که ضرورتی به رمزنگاری محتوی پیام وجود نداشته و صرفا" امضای دیجیتالی رمز می گردد( مگر اینکه شرایط خاصی در ارتباط با محرمانگی محتوی وجود داشته باشد که در چنین مواردی می بایست محتوی نیز رمزنگاری گردد ) . در صورتیکه به هر دلیلی محتوی پیام توسط افراد غیرمجاز تغییر داده شود ، Hash رمز شده اولیه با مقداری که بصورت محلی مجددا" محاسبه می گردد ، مطابقت نداشته و صحت امضای فرستنده تائید نمی گردد . همچنین ، ایجاد یک امضای تقلبی عملا" غیرممکن است ، چراکه افراد غیر مجاز آگاهی لازم در ارتباط با کلید خصوصی را دارا نمی باشند ( رمزنگاری مقدار محاسبه شده Hash با در نظر گرفتن کلید خصوصی فرستنده انجام خواهد شد ) .
یک گواهینامه چیست ؟
گواهیینامه دیجیتال ،رکوردی منحصربفرد مشتمل بر اطلاعاتی ضروری به منظور بررسی هویت یک فرد و یا یک سازمان می باشد . گواهینامه های دیجیتال از فرمت استاندارد X.509 تبعیت می نمایند . استاندارد فوق ، برخی از ملزومات موردنیاز گواهینامه را تشریح می نماید : فرمت نسخه استفاده شده توسط گواهینامه ، شماره سریال گواهینامه ، شناسه الگوریتم استفاده شده به منظور تائید گواهینامه ،مرکز صادرکننده گواهینامه ، تاریخ صدور و سررسید اعتبار گواهینامه ، مشخصات صاحب گواهینامه ، کلید عمومی صاحب گواهینامه ، امضای دیجیتال مرکز صادر کننده گواهینامه .
هر یک از فیلدهای اطلاعاتی فوق متناظر با فیلدهای خاصی در ساختار تعریف شده برای یک گواهنیامه می باشد. گواهینامه ها ، ممکن است شامل اطلاعات دیگری نظیر آدرس پستی ، آدرس پست الکترونیکی ، نام کشور ، سن ، جنسیت نیز باشند . اطلاعات اضافی فوق اختیاری بوده و بستگی به نوع خاص گواهینامه دارد .
مراکز صدور گواهینامه (CA:Certificate Authority
مراکز صدور گواهینامه که از آنان با عنوان CA نیز نام برده می شود ،مراکزی امین و معتبر بوده که مسئولیت تطبیق کلیدها ی عمومی به منظور شناسائی و تائید هویت را برعهده دارند. به عبارت دیگر ، مراکز فوق تعلق یک کلید عمومی خاص به یک کاربر معتبر را تائید می نمایند . مراکز CA ، مسئولیت صدور ، ابطال و تمدید یک گواهینامه را برعهده دارند. مراکز CA ،همچنین می بایست رویه های بسیار دقیق و سختگیرانه ای را به منظور تائید افراد و سازمان ها ئی که درخواست گواهنیامه می نمایند را نیز دنبال نمایند .بدین ترتیب ، پس از تائید یک فرد و یا سازمان توسط یک مرکز معتبر و امین CA ، امکان تطبیق کلید ( انطباق کلید عمومی با کلید خصوصی مرتبط با آن ) آنان از یک مرکز ایمن ، فراهم می گردد. عملکرد چنین مراکزی نظیر دفاتراسناد رسمی در اینترنت است .
در ساختار گواهینامه ، دو فیلد اطلاعاتی مرتبط با CA نیز وجود دارد : نام صادرکننده گواهینامه و امضای دیجیتالی صادرکننده . وجود فیلدهای فوق در گواهینامه صادر شده ، تضمین لازم در خصوص تعلق کلید عمومی به صاحب آن را ارائه می نماید.بدین ترتیب مسئله امین بودن از افراد به مراکز CA منتقل می گردد.وجود یک مرکز امین و معتبر ، از جمله مهمترین دلایل حضور CA ، محسوب می گردد . در حال حاضر ، سازمان های متعددی ، اقدام به صدور گواهینامه می نمایند و هر روز نیز تعداد آنان افزایش می یابد . زمانیکه دو کاربر و یا دو سازمان قصد مبادله گواهینامه را داشته باشند ، هر یک از آنان می تواند هویت طرف مقابل خود را با استفاده از تائیدیه مراکز CA و گواهینامه های صادرشده توسط مراکز CA ، انجام دهد. هر گواهینامه شامل کلید عمومی مربوط به خود نیز می باشد ، بنابراین می توان از آن به منظور رمزنگاری داده برای ارسال به صاحب گواهینامه استفاده نمود. گواهینامه ها همچنین شامل امضای دیجیتال مرکز CA صادرکننده گواهینامه نیز می باشند. یک امضای دیجیتال با استفاده از کلید خصوصی مولف سند ایجاد می گردد . بنابراین به منظور بررسی یک گواهینامه که توسط یک مرکز CA خاص تائید شده است ، به کلید عمومی مرکز CA نیز نیاز خواهد بود. کلید ها ی عمومی اکثر مراکز CA به همراه مرورگرها ، برنامه های پست الکترونیکی و سایر پکیج های نرم افراری توزیع می گردد .
نمایش محتویات یک Certificate:
شما بوسیله قطعه کد زیر می توانید محتویات یک فایل Certificate را مشاهده کنید:
string Certificate = "path";
// Load the certificate into an X509Certificate object.
X509Certificate cert = newX509Certificate(Certificate);
// Get the value.
string resultsTrue = cert.ToString(true);
// Display the value
MessageBox.Show(resultsTrue);
برای دریافت اطلاعات بیشتر می توانید از کلاس زیر استفاده نمایید:X509Certificate2
خوب فکر نکنم که کار سختی باشه که فایل pack شده را در resource ها نگهداری کنیم. اما خوب باز هم مثل این میمونه که یه مرحله دیگه به کرک کردن اضافه میشه و اگر برنامه Unpack بشه دوباه همون آش و همون کاسه!نقل قول:
متاسفانه این کار امنیت نداره , مگر اینکه فایلی که قراره تو حافظه لود بشه , از پیش پک بشه.
به همین خاطر بود که میگفتم Smart Assembly خوبه , چون این برنامه فایل رو هم پک میکنه هم رمزنگاری میکنه , و موقع لود کردن اون به حافظه Header رو حذف میکنه ؛ این کار باعث میشه وقتی شما فایل رو دامپ میکنن , یه فایل تخریب شده تحویل داده بشه , البته این برنامه یه نقطه ضعف هم داره و اون اینکه نسبت به رشته ها ضعیفه , بنابراین وقتی میخواهید از این برنامه استفاده کنید , خودتون رشته های موجود در برنامه خودتون رو , خودتون رمز کنید , تا اگر هم توسط ابزارهای De obfuscator رشته ها رمزنگاری شد ( از سیستم خود برنامه رد شد ) بازهم رشته های رمز شده استخراج بشن و نشه کاریشون کرد.