Форум программистов, компьютерный форум CyberForum.ru

Мини-брутфорс - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
mabzZ
5 / 1 / 1
Регистрация: 28.03.2013
Сообщений: 13
29.07.2013, 21:20     Мини-брутфорс #1
Задан паттерн XXyyX, где Х может принимать следующие значения: D,J,K,L,L,X,Z, а Y - f,n,s.

Необходимо найти все возможные комбинации, при этом символы не должны повторяться, кроме L, так как он встречается два раза. Одна из этих комбинаций валидна и ссылка вида http://www.steamgifts.com/giveaway/+Валидная_комбинация должна привести на существующую страницу, если комбинация невалидна, то открывается страница, с указанием, что код неверен.

Я решил задачу, считывая полностью исходный код страницы и ища вхождение "Invalid" внутри него. Если строка отсутствует, то комбинация оказалась верной и в поле Edit1 возвращается итоговая ссылка.

Вопрос вот в чем: как обойтись без считывания всего исходного код страницы? Нельзя ли считать отдельно ТОЛЬКО заголовок страницы или определенные теги? Меня в принципе работа написанной мной программы устраивает, но хотелось бы все-таки довести до ума, так как постоянная подгрузка всего кода страницы при достаточно большом числе итераций - довольно серьезная затрата времени.

И да, если общий подход к решению или отрывок из программы этой задачи на ваш взгляд глуп или нерационален - обязательно сообщите мне! Так как я пока учусь, то хотелось бы знать наиболее оптимальные методы, а не те, которые кое-как, но работают. Но опять же по причине недостаточных знаний реализация такая, какая есть

Warning! Bydlo-code Inside!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
//---------------------------------------------------------------------------
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
 
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StartClick(TObject *Sender)
{
    int position,
        count=0;
    AnsiString searchText="Invalid",      //Искомая строка
               str="",
               mas1[7]={'D','J','K','L','L','X','Z'},
               mas2[3]={'f','n','s'};
    TStringList *sl,
                *s2;
 
    sl=new TStringList();
    s2=new TStringList();
 
    //------------------------------------------------------------------------
        for (int i = 0; i < 7; i++)
        {
            for (int j = 0; j < 7; j++)
            {
                for (int k = 0; k < 7; k++)
                {
                    for(int l = 0; l < 3; l++)
                    {
                        for (int m = 0; m < 3; m++)
                        {
                            if ((mas2[l]!=mas2[m]) &&
                            ((mas1[i]!=mas1[j]) || ((mas1[i]=='L') && mas1[j]=='L')) &&
                            ((mas1[i]!=mas1[k]) || ((mas1[i]=='L') && mas1[k]=='L')) &&
                            ((mas1[k]!=mas1[j]) || ((mas1[k]=='L') && mas1[j]=='L')))
                            {
                                str="http://www.steamgifts.com/giveaway/"+mas1[i]+mas1[j]+mas2[l]+mas2[m]+mas1[k];
                                //Запрос кода страницы и поиск в ней вхождения строки searchText="Invalid"
                                position=AnsiPos(searchText,IdHTTP1->Get(str));
                                // Дисконнект после каждого запроса для избежания Connection Closed Gracefully
                                IdHTTP1->Disconnect();
                                if (position==0)
                                {
                                    count++;
                                    Edit1->Text=str;
                                    s2->Add(str);
                                    s2->SaveToFile("good.txt");
                                    goto mark;
                                }
                                sl->Add(str);
                            }
                        }
                    }
                }
            }
        }
        mark:
        sl->SaveToFile("text.txt");
        delete sl;
        delete s2;
}
//---------------------------------------------------------------------------
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.07.2013, 21:20     Мини-брутфорс
Посмотрите здесь:

C++ мини- программы
C++ Мини база данных :)
Мини-игра C++
Мини-программа C++
C++ 2 мини задачки на массивы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,629
Записей в блоге: 17
30.07.2013, 02:24     Мини-брутфорс #2
Цитата Сообщение от mabzZ Посмотреть сообщение
Вопрос вот в чем: как обойтись без считывания всего исходного код страницы? Нельзя ли считать отдельно ТОЛЬКО заголовок страницы или определенные теги? Меня в принципе работа написанной мной программы устраивает, но хотелось бы все-таки довести до ума, так как постоянная подгрузка всего кода страницы при достаточно большом числе итераций - довольно серьезная затрата времени.
Используй Head- запрос, и смотри код ответа сервера

http://www.cyberforum.ru/blogs/13134...608.html#a_1.3
https://ru.wikipedia.org/wiki/HTTP#HEAD

Насчет подбора - где- то была тема на форуме с перебор с помощью булеана...
mabzZ
5 / 1 / 1
Регистрация: 28.03.2013
Сообщений: 13
30.07.2013, 03:02  [ТС]     Мини-брутфорс #3
Avazart, самое интересное, что тему просматривал, - оттуда про способ избежания Connection Gracefully Closed как раз и вычитал, но про Head не нашел, видимо, недостаточно внимательно читал

Добавлено через 34 минуты
Avazart,
В продолжение темы: код ответа всегда один - "HTTP/1.1 200 OK", что неудивительно, так как при неверной комбинации выдается не несуществующая страница, а лишь страница с сообщением, что код неверен, а потому проверка на существование немного не подходит. Под заголовком я имел ввиду тег <title>. Можно ли его подгрузить отдельно, не загружая весь html-документ? Быстрый гугло-поиск и переход по ссылкам в разделе литературы мне ничего не дал.
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,629
Записей в блоге: 17
30.07.2013, 03:04     Мини-брутфорс #4
По идее должно быть 404 http://ru.wikipedia.org/wiki/HTTP_404
mabzZ
5 / 1 / 1
Регистрация: 28.03.2013
Сообщений: 13
30.07.2013, 03:13  [ТС]     Мини-брутфорс #5
Avazart,
Да нет, страница существует. К примеру, тут страница, которая отображается, если подобранная комбинация невалидна. Эта страница является примером того, как должна выглядеть страница с валидной комбинацией. Можно заметить, что у любой невалидной тайтл всегда один, опираясь на это я и хотел сделать чекер валидности\невалидности.

Добавлено через 3 минуты
Первоначальная идея заключалась в поиске в теле страницы "Invalid", но это требует подгрузки всей страницы. Мне бы хотелось подгружать только тег <title> для экономии времени, существует ли такая возможность в принципе?
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
30.07.2013, 03:31     Мини-брутфорс #6
Цитата Сообщение от mabzZ Посмотреть сообщение
В продолжение темы: код ответа всегда один - "HTTP/1.1 200 OK", что неудивительно, так как при неверной комбинации выдается не несуществующая страница, а лишь страница с сообщением, что код неверен, а потому проверка на существование немного не подходит.
Подходит, просто если выдается другая страница, то значит код переадресации должен быть это или 301 или 302 я точно не помню.
mabzZ
5 / 1 / 1
Регистрация: 28.03.2013
Сообщений: 13
30.07.2013, 03:34  [ТС]     Мини-брутфорс #7
ninja2,
Так там редиректа не происходит. Это обычная страница, но в теле этой страницы уже пишется, что ошибка. Сама же страница фактически ничем не отличается от валидной.
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
30.07.2013, 03:37     Мини-брутфорс #8
Ну ладно мб оно просто сразу код проверяет и на этой же странице выводит сообщение без переадресации на страницу с сообщением, тогда 200 Ок, призабыл просто.

Добавлено через 2 минуты
Да наверно на скорость это не повлияет хоть ты будешь проверять содержание, хоть по коду. В любом случае ты делаешь запрос, сервер обработал и потом прислал токо ответ. Так что тут пофигу скорость будет одна и таже.
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,629
Записей в блоге: 17
30.07.2013, 03:40     Мини-брутфорс #9
Выложите сырую ссылку без тегов
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
30.07.2013, 03:45     Мини-брутфорс #10
Цитата Сообщение от mabzZ Посмотреть сообщение
Вопрос вот в чем: как обойтись без считывания всего исходного код страницы? Нельзя ли считать отдельно ТОЛЬКО заголовок страницы или определенные теги? Меня в принципе работа написанной мной программы устраивает, но хотелось бы все-таки довести до ума, так как постоянная подгрузка всего кода страницы при достаточно большом числе итераций - довольно серьезная затрата времени.
Я тебе отвечу на этот вопрос, нельзя, токо полностью будешь считывать, тут без вариантов. Это я тебе говорю как знаток HTTP протокола.

У меня комп 6 из 36 перебирает минуты 2-3, а если с подгрузкой, то это очень долго.
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,629
Записей в блоге: 17
30.07.2013, 03:45     Мини-брутфорс #11
Для ускорения gzip можно использовать и и развести по потокам.
mabzZ
5 / 1 / 1
Регистрация: 28.03.2013
Сообщений: 13
30.07.2013, 03:50  [ТС]     Мини-брутфорс #12
ninja2,
в исходном коде страницы около 44000 символов = 43КБ на один запрос, если запрашивать только <title>, то по идее это приведет к небольшому приросту скорости работу, ввиду меньшего трафика.
Avazart,
Код
http://www.steamgifts.com/giveaway/wAbSw - валид
http://www.steamgifts.com/giveaway/wAbS1 - невалид
Добавлено через 43 секунды
Цитата Сообщение от ninja2 Посмотреть сообщение
Я тебе отвечу на этот вопрос нельзя, токо полностью будешь считывать, тут без вариантов.
Понял. Спасибо. Это как раз и было интересно узнать.

Добавлено через 2 минуты
Avazart,
Цитата Сообщение от Avazart Посмотреть сообщение
Для ускорения gzip можно использовать и и развести по потокам.
На данный момент мне ни то, ни другое ни о чем не говорит. Так как программировать я только недавно начал, то и знаний практически никаких - одно лишь желание. Но информацию на заметку возьму обязательно и ознакомлюсь, как только подкоплю в своем багаже знаний поболее.
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,629
Записей в блоге: 17
30.07.2013, 03:53     Мини-брутфорс #13
Цитата Сообщение от mabzZ Посмотреть сообщение
если запрашивать только <title>
Да вроде в протоколе такого нет, но на всякий случае посмотрите другие методы.
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
30.07.2013, 03:57     Мини-брутфорс #14
Цитата Сообщение от mabzZ Посмотреть сообщение
ninja2,
в исходном коде страницы около 44000 символов = 43КБ на один запрос, если запрашивать только <title>, то по идее это приведет к небольшому приросту скорости работу, ввиду меньшего трафика.
Да такого нельзя сделать тебе по любом сервер полностью весь текст выдаст. Там так ты послал запрос, сервер тебе ответ ты запрос, тебе ответ. Я парсер на пхп писал, сначала считывал полностью страницу, а затем уже удалял хэдэры, теги и все лишнее, оставлял только заголовок и текст.
mabzZ
5 / 1 / 1
Регистрация: 28.03.2013
Сообщений: 13
30.07.2013, 04:04  [ТС]     Мини-брутфорс #15
ninja2,
Хорошо, буду знать тогда, что не стоит лишние ресурсы затрачивать на поиск в данном направлении.
В принципе мне это не важно, так как программу писал для себя и просто так, фактической пользы от нее нет, хотелось просто протестировать и попробовать ее написать. Потому к быстродействию программы никаких требований нет, но как всегда хочется, чтобы программа работала как можно лучше Теперь, зная, что это реализовать извлечение тайтла не получится, хотя бы не буду время на это тратить свое, а займусь чем-нибудь более полезным и продуктивным
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
30.07.2013, 04:07     Мини-брутфорс #16
Там на той странице к которой ты посылаешь запрос примерно такой код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
if(твой код == правильный код)
{
include "верхний шаблон";
//--
пойдет вывод кода страницы при правильном параметре.
//--
include "нижний шаблон";
}
else
{
include "верхний шаблон";
echo "Ошибка не правильно введен параметр";
include "нижний шаблон";
}
файлы верхний и нижний шаблон они от как раз и содержат всю ту кучу символов. И как тебе сервер отдаст кусочек со своего шаблона если там так сделано?
Если б там былоб в этой странице примерно отак
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
if(твой код == правильный код)
{
include "верхний шаблон";
//--
пойдет вывод кода страницы при правильном параметре.
//--
include "нижний шаблон";
}
else
{
//без шаблона просто голую строчку.
echo "Ошибка не правильно введен параметр";
}
Ты б получил бы меньше кода в ответ.
mabzZ
5 / 1 / 1
Регистрация: 28.03.2013
Сообщений: 13
30.07.2013, 04:19  [ТС]     Мини-брутфорс #17
ninja2,
Я преполагал, что тайтл можно запросить отдельно, то есть наличие фрагментации исходного кода и отдельный запрос отдельного фрагмента, но как видно ошибался.
Если бы это реализовывалось бы как-то, то мне достаточно было бы сравнивать уже не значение в теле страницы, а только в тайтле.

Добавлено через 4 минуты
Avazart, ninja2,
Спасибо вам за вашу помощь. Пополнили мою копилку знаний своими вкладами, образно говоря
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
30.07.2013, 04:21     Мини-брутфорс #18
mabzZ, Ты мог бы запросить отдельно, только если б этот скрипт обрабатывал твой запрос и уже выдавал бы тебе в ответ только title. Ну спрашивается нафига чуваку который делал тот скрипт выдавать в ответ title? Если б там скрипт был бы запрограммирован что если какая нить переменная которую ты передаешь в запросе, она проверяется на сервере пустая она или нет, она не пустая, то тебе выдали title, но такого делать никто не будет зачем? Так что в ответ то получишь что выдадут.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.07.2013, 04:22     Мини-брутфорс
Еще ссылки по теме:

Брутфорс WPA2 C++
C++ Брутфорс (brute force)
C++ Разработка мини игры)

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
mabzZ
5 / 1 / 1
Регистрация: 28.03.2013
Сообщений: 13
30.07.2013, 04:22  [ТС]     Мини-брутфорс #19
ninja2,
Ну вот я и рассчитывал на то, что скрипт может это отдельно выдавать Зачем? А вот для таких как я, а вдруг. Ну раз нет, то нет
Yandex
Объявления
30.07.2013, 04:22     Мини-брутфорс
Ответ Создать тему
Опции темы

Текущее время: 22:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru