Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.25;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.031 c
14-81945
Nucl
2003-08-06 23:57
2003.08.25
Обновления на Delphi 7


1-81781
revo
2003-08-14 11:41
2003.08.25
Как архивировать файлы из Delphi


1-81639
xn0bys
2003-08-12 15:07
2003.08.25
Как сделать кнопку к новой форме (Child) на панели задач.


7-81987
rex007
2003-06-11 13:44
2003.08.25
Io.sys что за монстр


1-81828
Miralex
2003-08-13 10:32
2003.08.25
Цвет в treeview