سلام. من یه فایل txt کنار برنامم دارم که برنامم یه اطلاعاتی رو از اون میحونه. ولی کاربر به راحتی میتونه این فایل رو باز کنه و اطلاعات برنامم رو بخونه. بهنظر شما چیکار کنم کنم که کاربر نتونه این فایل رو باز کنه؟
باتشکر
سلام. من یه فایل txt کنار برنامم دارم که برنامم یه اطلاعاتی رو از اون میحونه. ولی کاربر به راحتی میتونه این فایل رو باز کنه و اطلاعات برنامم رو بخونه. بهنظر شما چیکار کنم کنم که کاربر نتونه این فایل رو باز کنه؟
باتشکر
اگه فایل مخفی باشه میشه اطلاعاتشو تو برنامه خوند؟
این روش امنه؟
اگه فایل مخفی باشه میشه اطلاعات رو خوند توی برنامه . روش زیاد امنی هم نیست . چ.ن کاربر فقط کافیه اونو از حالت هیدن درش بیاره . اونوقته که همه چی لو میره
به نظر من اطلاعات رو کد شده باید توی فایل بنویسی و بخونی .
خودم از همین روش استفاده می کردم . اطلاعات رو به صورت AES اینکرایپت می کردم . بعدش هم موقع لود کردن Decrypt می کردمشون
\\\موفق باشید///
سلام
میتوانید فایل در resource برنامه قرار داده و به صورت مستقیم از داخل برنامه به آن دسترسی داشته باشید.
در این تاپیک یک مثال میبینید:
https://barnamenevis.org/showthread.p...دا-ساخت
چشم ظاهر گر نبیند عیب نیست چشم دل گر ننگرد باید گریست**********اَلسَّلامُ عَلَى الْحُسَيْنِ وَ عَلى عَلِىِّ بْنِ الْحُسَيْنِ وَ عَلى اَوْلادِ الْحُسَيْنِ وَ عَلى اَصْحابِ الْحُسَيْنِ
من خودم یه برنامه برای کدکردن متن نوشته بودم اما فارسی رو ساپورت نمی کرد که یکی از عزیزان زحمت کشید و درستش کرد . البته به زبان vb.net هستش . بر توی این تاپیک شاید بدردت خورد
\\\موفق باشید///
میشه اطلاعات رو بریزم داخل یه فایل DLL بعد بخونم؟ فکر کنم اینجوری امن تر باشه
آره . اینجوری میشه و هیچ مشکلی پیش نمیاد . اما درسته که امنیتش یکم بیشتر میشه ولی اگه طرف پسوند فایل رو به TXT تغییر بده دوباره همه چی لو میره
یه پیشنهاد دارم . پسوند فایلو یه چیز بزار که سخت بشه عوضش کرد . مثلا اگه پسوند های زیر رو بزاری طرف نمتونه پسوند فایلتو عوض کنه . یا اگرم بتونه باید آدم حرفه ای باشه
*.mag *.lnk
\\\موفق باشید///
خوب اگه پسوند فایل رو *.mag *.lnk بزارم چه تور باید تو برنامه بخونمش؟
در پست شماره 11:
مراحل زیر را دنبال کنید:
1- در Solution explorer رو نام پروژه راست کلیک کنید و از منوی add زیر منوی existing item را اجرا کنید.
2- به مسیر فایل در این مثال "C:\windows\media\notify.wav" رفته و فایل را اضافه کنید.
3- روی نام فایل در solution explorer راست کلیک کنید و properties را باز کنید.
4- گزینه build action را به embedded resource تغییر دهید و برنامه را rebuild کنید.
5- کد زیر را در فرم یا... قرار دهید و اجرا کنید:
namespaceWindowsFormsApplication1
{
//...
//..
(newSystem.Media.SoundPlayer(System.Reflection.Ass embl y.GetExecutingAssembly().GetManifestResourceStream ("WindowsFormsApplication1.notify.wav"))).Play( );
//..
شما میتوانید پس از گرفتن Stream از GetManifestResourceStream مستقیما به آن دسترسی داشته باشید.
تاپیکهای کاملتر فکر میکنم باشند ولی باید گشت.
چشم ظاهر گر نبیند عیب نیست چشم دل گر ننگرد باید گریست**********اَلسَّلامُ عَلَى الْحُسَيْنِ وَ عَلى عَلِىِّ بْنِ الْحُسَيْنِ وَ عَلى اَوْلادِ الْحُسَيْنِ وَ عَلى اَصْحابِ الْحُسَيْنِ
اگه پسوند فایلو .lnk بزاری . مثل همیشه که فایل رو توی برنامه لود می کردی . اون فایلو لود میکنی فقط اگه نام فایل data.txt ّود شما دیگه نام فایل رو به صورت data.lnk لود می کنید . خوبی این کار اینه که پسوند فایل از دید عوام مخفی میشه ولی شما توی برنامه با همین پسوند باید بخونینش
\\\موفق باشید///
ممنون. لطفا یه مثال از Encrypt کردن کد بزارید
از این 2 تا فانکشن استفاده کن برای انکرایپت و دیکرایپت . ببین میکلت حل میشه
public string AES_Encrypt(string input, string pass) {
System.Security.Cryptography.RijndaelManaged AES = new System.Security.Cryptography.RijndaelManaged();
System.Security.Cryptography.MD5CryptoServiceProvi Hash_AES = new System.Security.Cryptography.MD5CryptoServiceProvi ();
der;
string encrypted = "";
try {
byte[,] hash;
byte[] temp = Hash_AES.ComputeHash(System.Text.UTF8Encoding.UTF8 .GetBytes(pass));
Array.Copy(temp, 0, hash, 0, 16);
Array.Copy(temp, 0, hash, 15, 16);
AES.Key = hash;
AES.Mode = Security.Cryptography.CipherMode.ECB;
System.Security.Cryptography.ICryptoTransform DESEncrypter = AES.CreateEncryptor;
byte[] Buffer = System.Text.UTF8Encoding.UTF8.GetBytes(input);
encrypted = Convert.ToBase64String(DESEncrypter.TransformFinal , Block(Buffer, 0, Buffer.Length));
return encrypted;
}
catch (Exception ex) {
throw ex;
}
}
public string AES_Decrypt(string input, string pass) {
System.Security.Cryptography.RijndaelManaged AES = new System.Security.Cryptography.RijndaelManaged();
System.Security.Cryptography.MD5CryptoServiceProvi Hash_AES = new System.Security.Cryptography.MD5CryptoServiceProvi ();
der;
string decrypted = "";
try {
byte[,] hash;
byte[] temp = Hash_AES.ComputeHash(System.Text.UTF8Encoding.UTF8 .GetBytes(pass));
Array.Copy(temp, 0, hash, 0, 16);
Array.Copy(temp, 0, hash, 15, 16);
AES.Key = hash;
AES.Mode = Security.Cryptography.CipherMode.ECB;
System.Security.Cryptography.ICryptoTransform DESDecrypter = AES.CreateDecryptor;
byte[] Buffer = Convert.FromBase64String(input);
decrypted = System.Text.UTF8Encoding.UTF8.GetString(DESDecrypt , er.TransformFinalBlock(Buffer, 0, Buffer.Length));
return decrypted;
}
catch (Exception ex) {
throw ex;
}
}
\\\موفق باشید///
اگه هم نشد میتونی از کامپوننت های چیلکات استفاده کنی . طی یکی دو روز آینده آموزش کدکردن رشته ها به وسیله این کامپوننت رو توی این تاپیک میزارم
\\\موفق باشید///
بازم ممنون میشه در مورد ورودی های این دو تابع توضیح بدید؟
ارور میده:
Screenshot (1).png
الان دارم روی Chilkat کار می کنم . نتیجه شو اینجا اعلام می کنم وقتی تموم شد
\\\موفق باشید///
دوست عزیز اگه اطلاعات حجمش کمه و طولانی نیست از setting استفاده کنین.مثل رمز ورود و یا اطلاعاتی که نباید کاربر ببینه و شما پایگاه داده ندارین، دگ احتیاج به این همه سختی نیست....یه جستجو کنید طریقه استفادشو پبدا میکنی.
ستینگ هم مد نظر من بود . اما چون گفتن دیتاش توی فایل txt هستش این روش ها رو پیشنهاد کردم
در هر صورت \\\موفق باشید///
دوست عزیز برای اینکه فایلتون کلا دور از دست کاربر باشه شما یک فایل txt در ریسورس برنامه اضافه کنین.
شما میتونین این فایل رو به صورت زیر فراخوانی کنین و استفاده کنید.فرض کنین اسم فایل data باشه و پروژه شما هم اسمش test باشه :
test.Properties.Resources.data
خروجی از نوع string هس.
برای تغییر در این فایل شما ناچارا باید یک فایل جدید در یک مسیر که کاربر متوجه نشه بسازین ، اطلاعاتتونو موقتا در اون ذخیره کنید و با کد زیر فایل data رو بروز کنید :
File.WriteAllText("C:\\tempdata.txt", test.Properties.Resources.data);
حالا میتونین اون فایل ساخته شده و پاک کنید.شاید چند میلی ثانیه هم طول نکشه.
اینجوری هم فایل در دسترس نیست هم خطر پاک شدن در هنگام جابه جایی برنامه رو ندارین.
برای داده های غیر متنی مثل عکس و یا غیره هم میتونین از این روش استفاده کنین مثلا عکس :
Bitmap bitmap = Resources.MyImageResource;
bitmap.Save("filename.jpg", ImageFormat.Jpeg);
آیکن ها :
notifyIcon.Icon = Properties.Resources.myIcon;
من از همین روش برای استفاده از چند تابع که ناچارا در یک فایل جدا از برنامم بودن استفاده کردم و میخواستم سکرت باشه.خوب هم جواب داده،قابل دسترسی هم به هیچ عنوان نیس ، رمز گذاری هم لازم نداره ، سرعتشم بالاست...به نظرم خیلی خوبه.
بازم هرچی که صلاحتونه :)
نه دوستان این برنامه ای که میخوام بنویسم باید اطلاعات رو انکریپت کنه بعد ذخیره کنه و واسه خودم ایمیل کنه
میتونین اطلاعاتو از هر روشی که بخوای در قالب string بفرستی فرض کن تابع ارسالت senddata باشه :
SendData(test.Properties.Resources.data);
همه داده ها ارسال میشه.احتیاجی به کد و دیکد کردن نیس فایل ریسورست قابل مشاهده واسه کاربر نیست . فقط واسه اینکه اطلاعات این فایل تغییر کنه باید به صورت temp در سیستم ذخیره بشه و دوباره در ریسورس بریزی . شلید بشه بدونه ذخیره کردن موقت در سیستم هم همین اتراتژیو عملی کرد.من سرچ نکردم راستشو بخوای....
در solution xplorer روی نام پروژه راست کلیک کن.پروپرتیس رو انتخاب و تگ ریسورس رو انتخاب کنین.
حال نوع فایل رو other انتخاب کنید و یک فایل text که در ویندوز ذخیره کردین (مثلا data.txt) رو درون پنجره اضافه کنین.الان شما یک فایل متنی توی ریسورستون دارین.
میتونین اطلاعاتو ذخیره کنین.و هروقت بخواین میلش کنین.
میتونین اطلاعاتو از هر روشی که بخوای در قالب string بفرستی فرض کن تابع ارسالت senddata باشه :
SendData(test.Properties.Resources.data);
همه داده ها ارسال میشه.
احتیاجی به کد و دیکد کردن نیس فایل ریسورست قابل مشاهده واسه کاربر نیست . فقط واسه اینکه اطلاعات این فایل تغییر کنه باید به صورت temp در سیستم ذخیره بشه و دوباره در ریسورس بریزی . شاید بشه بدونه ذخیره کردن موقت در سیستم ،همین استراتژیو عملی کرد.من سرچ نکردم راستشو بخوای....
در solution xplorer روی نام پروژه راست ،پروپرتیس رو انتخاب و تگ ریسورس رو انتخاب کنین.
حال نوع فایل رو other انتخاب کنید و یک فایل text که در ویندوز ذخیره کردین (مثلا data.txt) رو درون پنجره اضافه کنین.الان شما یک فایل متنی توی ریسورستون دارین.
میتونین اطلاعاتو ذخیره کنین.و هروقت بخواین میلش کنین.