Ciao a tutti, ho trovato online un programmino in c++ che dovrebbe servire per generare wordlist per gli omonimi attacchi, quindi mi servirebbe che realizzasse tutte le possibili permutazioni. Purtroppo però non funziona come dovrebbe, ovvero dando come input "simboli da utilizzare" abcdefghijklmnopqrstuvwxyz e come input minimo e massimo di caratteri 8 8 effettua le permutazioni solo dei primi 8 caratteri, ignorando i seguenti. Eccovi il codice:
#include <iostream>
#include <stdlib.h>
#include <fstream>
#include <stdio.h>
using namespace std;
ofstream output;
bool doppio(char combinazione[],int n)
{
for(int i=0;i<n;i++)
for(int k=0;k<n;k++)
if(i!=k && combinazione[i]==combinazione[k])
return true;
return false;
}
void permutazioni(char caratteri[],int n)
{
int numero=0;
int conta[n];
char combinazione[n];
for(int i=0;i<n;i++)
conta[i]=0;
while(conta[0]!=n) {
for(int i=0;i<n;i++)
combinazione[i]=caratteri[conta[i]];
if(!doppio(combinazione,n)) {
for(int i=0;i<n;i++)
output << combinazione[i];
output << endl;
numero++;
}
conta[n-1]++;
for(int i=n-1;i>=1;i--) {
if(conta[i]==n)
{
conta[i]=0;
conta[i-1]++;
}
}
}
}
void usage()
{
cout << "EXAMPLE " << endl << "./generatore abcdefg 1 10\n";
exit(1);
}
int main(int argc,char *argv[])
{
getchar();
getchar();
if(argc!=4)
usage();
output.open("dizionario2.txt");
for(int i=atoi(argv[2]);i<=atoi(argv[3]);i++)
permutazioni(argv[1],i);
output.close();
system("pause");
return 0;
}
Consigli? Soluzioni?