Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.08.25;
Скачать: [xml.tar.bz2];

Вниз

Прога типа брутфорсера (алгоритм)   Найти похожие ветки 

 
Delpher_Gray   (2003-08-09 20:17) [0]

Уважаемые Delph"еры !!
Помогите с алгоритмом программы типа брутфорсера...
Есть строка например из 3-х букв: ABC, нужно из них перебрать все комбинации.
Что-то вроде:

A
B
C
AA
AB
AC
BA
BB
BC
CA
CB
CC
AAA
AAB
AAC
ABA
ABB
ABC
...........

Ну и так далее...
Я скока голову не ломал, не могу предумать алгоритм =(


 
Омлет   (2003-08-09 20:57) [1]

Сочувствую.


 
TButton   (2003-08-09 21:05) [2]

забей. у мню тоже не получается


 
Омлет   (2003-08-09 21:12) [3]

Что же это...
Я боюсь за будущее!


 
SergP   (2003-08-09 21:25) [4]

Вот вам небольшой пример. Правда он перебирает немного не в том порядке. Пауру минут потратил чтобы написать и запостить, но щас занят другими делами. Сами уже надеюсь доработаете.
Вот этот кусок проги:

procedure tform1.perebor(const s:string; const n:byte);
var
i:char;
begin
if length(s)>0 then memo1.lines.add(s); // ... brutforce(s);
if length(s)<n then
for i:="A" to "C" do perebor(s+i,n);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
perebor("",3);
end;

Перебирает в такой последовательности
A
AA
AAA
AAB
AAC
AB
ABA
ABB
ABC
AC
ACA
ACB
ACC
B
BA
BAA
BAB
BAC
BB
BBA
BBB
BBC
BC
BCA
BCB
BCC
C
CA
CAA
CAB
CAC
CB
CBA
CBB
CBC
CC
CCA
CCB
CCC


 
Anatoly Podgoretsky   (2003-08-09 21:25) [5]

Будущее не предопределено. Терминатор


 
SergP   (2003-08-09 21:27) [6]


Кстати если есть не диапазон а именно строка с дозволенными символами, то я думаю переделать вам не составит труда.


 
SergP   (2003-08-09 21:47) [7]

Типа так:
procedure tform1.perebor(const s,c:string; const n:byte);
var
i:byte;
begin
if length(s)<n then
for i:=1 to length(c) do perebor(s+c[i],c,n)
else memo1.lines.add(s); // brutforce (s+i);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
z:byte;
begin
for z:=1 to 3
do begin
perebor("","ABC",z);
end;
end;


 
SergP   (2003-08-09 21:48) [8]

Типа так:
procedure tform1.perebor(const s,c:string; const n:byte);
var
i:byte;
begin
if length(s)<n then
for i:=1 to length(c) do perebor(s+c[i],c,n)
else memo1.lines.add(s); // brutforce (s+i);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
z:byte;
begin
for z:=1 to 3 do perebor("","ABC",z);
end;


 
Paul-M   (2003-08-10 11:24) [9]

Лови аналогию:
0123456789
abcdefghij

Если 0-9 это символы в системе счисления а вместо цифр ты ипользуешь буквы - то 10 это ba. Алгоритм перевода из десятичной системы счисления в 26-ричную аналогичен переводу из десятичной в двоичную.
Также перебираешь от 0 до бесконечности, только записываешь число буквами - вот и все комбинации


 
SergP   (2003-08-10 12:06) [10]


> Paul-M © (10.08.03 11:24)
> Лови аналогию:
> 0123456789
> abcdefghij
>
> Если 0-9 это символы в системе счисления а вместо цифр ты
> ипользуешь буквы - то 10 это ba. Алгоритм перевода из десятичной
> системы счисления в 26-ричную аналогичен переводу из десятичной
> в двоичную.
> Также перебираешь от 0 до бесконечности, только записываешь
> число буквами - вот и все комбинации


Только если в разных случаях используются разные наборы символов - то этотим методом будет очень трудно реализовать.


 
nikus   (2003-08-10 12:32) [11]

Я делал так:

есть строка chars = "0123456789ABCDEFGI...."; в которой включены все буквы для перебора.

var
c, counter, len : integer;
s : string;

counter := 0;
repeat
inc(counter);
c := counter;
s := "";
while c <> 0 do
begin
j := c mod len;
if j = 0 then j := len;
s := chars[j] + s;
c := c div len;
if j = len then c := c - 1;
end;
Form1.Caption := s;
( s)
Я делал так:

есть строка chars = "0123456789ABCDEFGI...."; в которой включены все буквы для перебора.

var
c, counter, len : integer;
s : string;

counter := 0;
repeat
inc(counter);
c := counter;
s := "";
while c <> 0 do
begin
j := c mod len;
if j = 0 then j := len;
s := chars[j] + s;
c := c div len;
if j = len then c := c - 1;
end;
Form1.Caption := s;
Application.ProcessMessages;
until length(s) > 5;



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.08.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.017 c
14-81919
Best Gun
2003-08-06 16:27
2003.08.25
уязвимость RPC интерфейса в Windows (823980)


1-81830
Алексей Петухов
2003-08-13 13:46
2003.08.25
TabOrder, SetFocus, ShowModal


1-81740
Abelisto
2003-08-13 23:06
2003.08.25
Спрятать главную форму


9-81519
Vorobei
2003-02-23 02:17
2003.08.25
Вопрос о создании игры типа


1-81609
kostya_iz_angren
2003-08-13 08:34
2003.08.25
Использовать компонент, не установленный в Delphi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский