Писал сам, так что не бейте), да и вообще это моя первая более менее полезная программка. Работает в двух режимах: простая генерация по диапозону, и генирирование по маскам xyza, xyz, xy. Написана на С++. (PS. Фильтрации нет так как пока это не изучил, и потому что вообщем-то делал для себя). Может кому пригодится (так же начинающим как и я). Сообственно код: Code: //Генератор 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 за советы и помощь в отладке.
Извини конечно, но зачем на сях, тем более на плюсах писать простой генератор? Имхо быстрее, удобнее и , тем более, кросс-платформеннее будет написать его на перле или питоне....
Если тебе надо - пожалуйста пиши и выкладывай, тебе будут благодарны) Я кроме бэйсика изучаемого в школе, и с++ изучаемого самостоятельно ничего не знаю, если бы знал и это было удобнее то конечно бы написал...
Vertexe, могу дать следующие ломашнее задание. Гненратор вида логин;пароль, здесь будет посложнее. Я серьезно.
Просто набор вида: Code: aaa:pass aab:pass aac:pass и так далее. Но вот так что бы длина логина хотя бы до 32. Смогешь?
хех, а символы в логине любые или только буквы? Вообщем уточни полностью задание со всеми нюансами, и я за него сразу приймусь, как изучу некоторые методы работы с массивами и как работать со строковыми данными.