예제 #1
0
        public static async Task CheckUrlsWithHash(string base_Hash)
        {
            var startHash = GetStartHash(base_Hash);

            var hashsForCheck = await GetHashs(startHash);

            HttpBruteForce httpBruteForce = new HttpBruteForce(20000, "https://anonfile.com/");

            while (hashsForCheck.Count > 0)
            {
                Status?.Invoke($"{DateTime.Now} начало обработки {hashsForCheck.Count} хэшей");
                var lastHash = hashsForCheck.Peek();

                var firstHash = hashsForCheck.Last();

                await httpBruteForce.StartBruteForce(hashsForCheck)
                .ContinueWith((Task t) =>
                {
                    Status?.Invoke(message: $"{DateTime.Now} все хэши c '{firstHash}' по '{lastHash}' обработаны");
                });

                startHash     = GetStartHash(base_Hash);
                hashsForCheck = await GetHashs(startHash);
            }
        }
예제 #2
0
        public static async Task CheckUrlWithHash(string base_Hash, Int32 delta_Hash)
        {
            await Task.Run(async() =>
            {
                HttpBruteForce httpBruteForce = new HttpBruteForce(1000);
                var urls = new Stack <string>();     //стэк для хранения урлов


                if (!string.IsNullOrEmpty(base_Hash) || (File.Exists(System.IO.Directory.GetCurrentDirectory() + "/settings.txt")))             //либо данные в полях либо в файле настроек
                {
                    //если файл настроек не существует, СОЗДАЕМ и сохраняем начальные данные
                    if (!File.Exists(System.IO.Directory.GetCurrentDirectory() + "/settings.txt"))
                    {
                        int base_s0_index = 0;
                        for (Int32 i = 0; i < a_s0.Length; i++)
                        {
                            if (a_s0[i] == base_Hash.Substring(0, 1))
                            {
                                base_s0_index = i; continue;
                            }
                        }

                        int i0_start = base_s0_index - delta_Hash;
                        int i0_end   = base_s0_index + delta_Hash;
                        int i0_delta = delta_Hash;

                        Setting.f_save_settings(System.IO.Directory.GetCurrentDirectory() + "/settings.txt", base_Hash, i0_start, i0_end, i0_delta, 0, 0, 0, 0, 0, 0);
                    }

                    using (StreamWriter sw = new StreamWriter(System.IO.Directory.GetCurrentDirectory() + "/mutationString.txt", false, System.Text.Encoding.Default))
                    {
                        int i0_start = 0;              //!!!!! начали сразу с "A"   нет ерунда
                        int i0_end   = 0;
                        int i0_delta = 0;

                        //int base_s0_index = 0;
                        int i1_start = 0;
                        int i2_start = 0;
                        int i3_start = 0;
                        int i5_start = 0;
                        int i7_start = 0;
                        int i9_start = 0;

                        Setting.f_load_settings(System.IO.Directory.GetCurrentDirectory() + "/settings.txt", out base_Hash, out i0_start /*base_s0_index*/, out i0_end, out i0_delta, out i1_start, out i2_start, out i3_start, out i5_start, out i7_start, out i9_start);

                        // здесь постоянные символы на входе будут известны
                        string a_s2 = base_Hash.Substring(2, 1);          //не постоянное, но пока СЧИТАЕМ постоянным, потом для красоты 1 вниз и 1 вверх
                        string a_s4 = base_Hash.Substring(4, 1);
                        string a_s6 = base_Hash.Substring(6, 1);
                        string a_s8 = base_Hash.Substring(8, 1);

                        int i2 = 0;     //!!!!! временно

                        //для первого символа ищем базу
                        //base_s0_index = 0;                              //номер в массиве базового символа для первой позиции
                        //Int32 delta_s0 = arStr.Length / 2;            //половина диапазона который проверяем, для первой позиции   ЗДЕСЬ передаем из формы delta_Hash
                        //for (Int32 i = 0; i < a_s0.Length; i++) { if (a_s0[i] == base_Hash.Substring(0, 1)) { base_s0_index = i; continue; } }



                        string s_mut = "";
                        for (int i0 = i0_start; i0 < i0_end; i0++)                 //здесь перебирать не все, 7 вверх и 7 вниз
                        {
                            for (int i1 = i1_start; i1 < a_s1.Length; i1++)
                            {
                                for (int i3 = i3_start; i3 < a_s3.Length; i3++)
                                {
                                    for (int i5 = i5_start; i5 < a_s5.Length; i5++)
                                    {
                                        for (int i7 = i7_start; i7 < a_s7.Length; i7++)
                                        {
                                            for (int i9 = i9_start; i9 < a_s9.Length; i9++)
                                            {
                                                string a_si0 = "";
                                                if (i0 < i0_end - i0_delta)
                                                {
                                                    a_si0 = a_s0[i0 + i0_delta + 1];
                                                }
                                                if (i0 > i0_end - i0_delta)
                                                {
                                                    a_si0 = a_s0[(i0_end - i0_delta) - (i0 - (i0_end - i0_delta))];
                                                }
                                                if (i0 == i0_end - i0_delta)
                                                {
                                                    break;
                                                }


                                                s_mut = a_si0 /*a_s0[i0]*/ + a_s1[i1] + a_s2 /*константа*/ + a_s3[i3] + a_s4 /*константа*/ + a_s5[i5] + a_s6 /*константа*/ + a_s7[i7] + a_s8 /*константа*/ + a_s9[i9];

                                                sw.WriteLine(s_mut);
                                                sw.Flush();

                                                if (urls.Count < 1000)
                                                {
                                                    if (urls.Count == 0)
                                                    {
                                                        urls.Push("https://anonfile.com/" + base_Hash);
                                                    }                                                                                           //это проверочный существующий url
                                                    urls.Push("https://anonfile.com/" + s_mut);
                                                }
                                                else
                                                {
                                                    /*bool ok_optimization = */

                                                    await httpBruteForce.StartBruteForce(urls);

                                                    //проба оптимизации, необходимо выйти к верхнему уровню цикла
                                                    //if (true) { i9 = a_s9.Length; ...........}
                                                }


                                                //сохраняем в файл настроек прогресс
                                                Setting.f_save_settings(System.IO.Directory.GetCurrentDirectory() + "/settings.txt", base_Hash, i0, i0_end, i0_delta, i1, i2, i3, i5, i7, i9);
                                            }
                                            i9_start = 0;
                                        }
                                        i7_start = 0;
                                    }
                                    i5_start = 0;
                                }
                                i3_start = 0;
                            }
                            i1_start = 0;
                        }
                        //i0_start = 0;             //думаем что не нужно, уже завершение
                    }
                }
            });
        }