PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++ wordlist generator



]=-antr4xx-=[
17.04.2010, 23:49
Mein selbst programmierter Wordlist-Generator in C++.
Ist das C++-pendant zu diesem Thread: http://free-hack.com/perl/52676-perl-wordlist-generator.html

Hier noch einmal im Pastebin:
C++ | #include <iostream> #include - C++ wordlist generator - yiJ6jffj - Pastebin.com (http://pastebin.com/yiJ6jffj)


#include <iostream>
#include <fstream>
#include <string>
#include <cstring>
#include <cstdlib>

int number_of_chars;
char chars_to_use[200];

using namespace std;

ofstream out;

void outputcout(string x, int number_of_chars_left, string separator) {

char c;

if(number_of_chars_left==0) {
cout << x << separator;
return;
}

else {
for(c=0; c<number_of_chars; c++) {
outputcout(x+chars_to_use[c], number_of_chars_left-1, separator);
}
}
}

void output(string x, int number_of_chars_left, string separator) {

char c;

if(number_of_chars_left==0) {
out << x << separator;
return;
}

else {
for(c=0; c<number_of_chars; c++) {
output(x+chars_to_use[c], number_of_chars_left-1, separator);
}
}
}

void usage() {
cerr << "usage: wlg (-l|-w) (no_chars) (chars) [output file]" << endl;
exit(1);
}


int main(int argc, char *argv[]) {

int how_many;
string separator;

if(argc<4)
usage();

if(!strcmp(argv[1], "-l"))
separator="\n";
else if(!strcmp(argv[1], "-w"))
separator="\r\n";

how_many=atoi(argv[2]);
strcpy(chars_to_use, argv[3]);
number_of_chars=strlen(chars_to_use);

if(argc==4)
outputcout("", how_many, separator);

if(argc==5) {
out.open(argv[4]);
output("", how_many, separator);
out.close();
}



}

blackberry
18.04.2010, 00:51
Nach Sourcecodes verschoben.

cTPu1bjo
18.04.2010, 01:00
Congratulations for coding a Buffer Overflow...

]=-antr4xx-=[
18.04.2010, 08:19
Meinst du hier:


strcpy(chars_to_use, argv[3]);?

Wenn man das durch
strncpy(chars_to_use, argv[3], 199); ersetzt, ist imo der Overflow weg?

luxury11
30.05.2010, 20:58
Damit der BufferOverflow nicht ensteht:


strncpy((char*)chars_to_use,(const char*)argv[3],(size_t)strlen((const char*)argv[3])-1)
Zusätzlich:


char chars_to_use[200] = {0};