PDA

Просмотр полной версии : Исходник генератора uin;pass


VERte][
15.08.2007, 23:52
Писал сам, так что не бейте), да и вообще это моя первая более менее полезная программка. Работает в двух режимах: простая генерация по диапозону, и генирирование по маскам xyza, xyz, xy. Написана на С++.
(PS. Фильтрации нет так как пока это не изучил, и потому что вообщем-то делал для себя). Может кому пригодится (так же начинающим как и я).

Сообственно код:
//Генератор uin;pass
#include<iostream>
#include<fstream>
#include<cstdlib>
#include<iomanip>
using namespace std;

void diapoz(char pass[], int& uin_start, int& uin_fin, ofstream& outs);
void xyza(char pass[], int& uin_start, int& uin_fin, ofstream& outs);
void xyz(char pass[], int& uin_start, int& uin_fin, ofstream& outs);
void xy(char pass[], int& uin_start, int& uin_fin, ofstream& outs);
void input(char pass[],int& uin_start, int& uin_fin);

int main()
{
int uin_start, uin_fin, select1, select2;
char pass[9], select;
ofstream outs;

//Открываем файл
outs.open("list.txt");

if (outs.fail())
{
cout<<"Output file opening failed.";
exit(1);
}
//Закрываем файл
outs.close();


//Выбор метода генерирования
cout<<"Select generic type:"<<endl;
cout<<":::1)Range of uins"<<endl<<":::2)Masks (xyza, xyz, xy)"<<endl<<">";
cin>>select1;

switch (select1)
{
case 1:
{
input(pass, uin_start, uin_fin);
diapoz(pass, uin_start, uin_fin, outs);
break;
}
case 2:
{
cout<<setw(8)<<"1)xyza"<<endl<<setw(7)<<"2)xyz"<<endl<<setw(6)<<"3)xy"<<endl<<">";
cin>>select2;

if (select2==1)
{
input(pass, uin_start, uin_fin);
xyza(pass, uin_start, uin_fin, outs);
}
if (select2==2)
{
input(pass, uin_start, uin_fin);
xyz(pass, uin_start, uin_fin, outs);
}

if (select2==3)
{
input(pass, uin_start, uin_fin);
xy(pass, uin_start, uin_fin, outs);
}
break;
}
}
return (0);
}

//Ввод данных
void input(char pass[], int& uin_start, int& uin_fin)
{
cout<<"Input password: ";
cin>>pass;
cout<<"Input first uin: ";
cin>>uin_start;
cout<<"Input last uin: ";
cin>>uin_fin;
}

//Генерирование по диапазону
void diapoz(char pass[], int& uin_start, int& uin_fin, ofstream& outs)
{
outs.open("list.txt");
if (outs.fail())
{
cout<<"Output file opening failed.";
exit(1);
}
do
{
outs<<uin_start<<";"<<pass<<endl;
uin_start++;
} while (uin_start<=uin_fin);
outs.close();
}

//Генерирование по маске xyza
void xyza(char pass[], int& uin_start, int& uin_fin, ofstream& outs)
{

int count(0), i, uin[10]={0,0,0,0,0,0,0,0,0,0} , numb, delit(100000000);

outs.open("list.txt");
if (outs.fail())
{
cout<<"Output file opening failed.";
exit(1);
}

for (uin_start; uin_start<=uin_fin ;uin_start++)
{
while(delit>=10)
{
numb=uin_start/delit;
delit/=10;
if (numb>0)
{
uin[numb]++;
break;
}
}

while(delit>=1)
{
numb=(uin_start/delit)%10;
delit/=10;
uin[numb]++;
}

for (i=0; i<10; i++)
{
if (uin[i]>0)
count++;
}

if ((count==4)||(count==3)||(count==2) || (count==1))
{
outs<<uin_start<<";"<<pass<<endl;
}

count=0;
delit=100000000;
for (i=0; i<10; i++)
{
uin[i]=0;
}
}
outs.close();
}

//Генерирование по маске xyz
void xyz(char pass[], int& uin_start, int& uin_fin, ofstream& outs)
{

int count(0), i, uin[10]={0,0,0,0,0,0,0,0,0,0} , numb, delit(100000000);

outs.open("list.txt");
if (outs.fail())
{
cout<<"Output file opening failed.";
exit(1);
}

for (uin_start; uin_start<=uin_fin ;uin_start++)
{
while(delit>=10)
{
numb=uin_start/delit;
delit/=10;
if (numb>0)
{
uin[numb]++;
break;
}
}

while(delit>=1)
{
numb=(uin_start/delit)%10;
delit/=10;
uin[numb]++;
}

for (i=0; i<10; i++)
{
if (uin[i]>0)
count++;
}

if ((count==3)||(count==2) || (count==1))
{
outs<<uin_start<<";"<<pass<<endl;
}

count=0;
delit=100000000;
for (i=0; i<10; i++)
{
uin[i]=0;
}
}
outs.close();
}

//Генерирование по маске ху
void xy(char pass[], int& uin_start, int& uin_fin, ofstream& outs)
{
int count(0), i, uin[10]={0,0,0,0,0,0,0,0,0,0} , numb, delit(100000000);
outs.open("list.txt", ios::app);
if (outs.fail())
{
cout<<"Output file opening failed.";
exit(1);
}

for (uin_start; uin_start<=uin_fin ;uin_start++)
{
while(delit>=10)
{
numb=uin_start/delit;
delit/=10;
if (numb>0)
{
uin[numb]++;
break;
}
}

while(delit>=1)
{
numb=(uin_start/delit)%10;
delit/=10;
uin[numb]++;
}

for (i=0; i<10; i++)
{
if (uin[i]>0)
count++;
}

if ((count==2) || (count==1))
{
outs<<uin_start<<";"<<pass<<endl;
}

count=0;
delit=100000000;
for (i=0; i<10; i++)
{
uin[i]=0;
}
}
outs.close();
}

Сама программка: http://stream.ifolder.ru/3017783
PS. Огромное спаcибо AdvLamer'y за советы и помощь в отладке.

biophreak
16.08.2007, 13:52
Извини конечно, но зачем на сях, тем более на плюсах писать простой генератор?
Имхо быстрее, удобнее и , тем более, кросс-платформеннее ;) будет написать его на перле или питоне....

VERte][
16.08.2007, 16:07
Если тебе надо - пожалуйста пиши и выкладывай, тебе будут благодарны) Я кроме бэйсика изучаемого в школе, и с++ изучаемого самостоятельно ничего не знаю, если бы знал и это было удобнее то конечно бы написал...

Lesnoy_chelovek
16.08.2007, 17:19
Vertexe, могу дать следующие ломашнее задание. Гненратор вида логин;пароль, здесь будет посложнее. Я серьезно.

VERte][
16.08.2007, 17:27
В смысле??? а что меняется? к одному логину несколько паролей из файла?

Lesnoy_chelovek
16.08.2007, 22:35
Просто набор вида:
aaa:pass
aab:pass
aac:pass
и так далее.
Но вот так что бы длина логина хотя бы до 32. Смогешь?

VERte][
16.08.2007, 22:42
хех, а символы в логине любые или только буквы?
Вообщем уточни полностью задание со всеми нюансами, и я за него сразу приймусь, как изучу некоторые методы работы с массивами и как работать со строковыми данными.

Lesnoy_chelovek
16.08.2007, 22:58
ну, пусть будут любые (: