Author Topic: [TOOL] Keygenerator.cxx  (Read 2889 times)

Offline NebulasIT

[TOOL] Keygenerator.cxx
« on: November 20, 2016, 02:59:05 PM »
GENERATORE DI PASSWORD


Un semplicissimo Tool che ho programmato che ha la funzione di generare delle password "sicure" per le nostre registrazioni,poi vi parlerò meglio in un'altro topic come tenere delle informazioni a prova di sicurezza intesa come anonimizzazione e criptazione/decriptazione.
Code: You are not allowed to view links. Register or Login
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

static const char alphanum[] =
"0123456789"
"!@#&$%^?*"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz";
int size= sizeof(alphanum)-1;

int main(){
  system("clear");
  int lunghezza=0;
  cout<<"PASSWORD GENERATOR\n\n";
  cout<<"Inserire la lunghezza: ";
  cin>>lunghezza;
  cout<<"Password: "<<endl;
  srand(time(0));
  for (int i=0; i<lunghezza; i++){
    cout<< alphanum[rand() % size];
  }
  cout<<"\n\n\n";
  return 0;
}

Github:You are not allowed to view links. Register or Login

Ho intenzione di migliorarlo salvando la password in un file e altre migliorie, dove la fantasia mi porti...  :)
Website:  You are not allowed to view links. Register or Login
Email: [email protected]
 

Offline g

Re:[TOOL] Keygenerator.cxx
« Reply #1 on: November 20, 2016, 03:04:40 PM »
 

Offline lynx

Re:[TOOL] Keygenerator.cxx
« Reply #2 on: November 20, 2016, 06:26:41 PM »
Bene, è da apprezzare lo spirito di inventiva, soprattutto se semplifica le cose e serve a far pratica.

Una mia considerazione (non vuole essere una critica)
Usare la libreria rand() per generare una password non è il metodo migliore perché produce risultati pseudo-casuali.
Si è vero, può essere più sicuro della fantasia umana, ma dal punto di vista matematico, non sarebbe impossibile reversare l'algoritmo.
In pratica, se leggi You are not allowed to view links. Register or Login , restituisce un intero tra 0 e RAND_MAX (32767)
qui spiega la logica You are not allowed to view links. Register or Login
Persino µzozz raccomanda l'uso della criptazione con rand_s()  :P

Altro accorgimento, salvare una password in un file in chiaro, non è una grande idea.
 

Offline NebulasIT

Re:[TOOL] Keygenerator.cxx
« Reply #3 on: November 20, 2016, 07:52:46 PM »
Accetto volentieri le vostre critiche in quanto sono molto produttive, quindi ti ringrazio moltissimo della tua critica ne farò tesoro!  ;D
Il fatto della password nel file, dato che le password potrebbero essere molto lunghe vorrei creare un file criptato etc.. ho idee in testa un po' confusionarie, una volta messo a posto quelle posso fare un generatore di password che genera un file criptato che puoi importare su un programma che si chiama generalmente "password e chiavi", non so se  questo sia il nome, insomma è un insieme di funzioni PGP/GPG
« Last Edit: November 20, 2016, 07:57:35 PM by NebulasIT »
Website:  You are not allowed to view links. Register or Login
Email: [email protected]
 

Offline g

Re:[TOOL] Keygenerator.cxx
« Reply #4 on: November 20, 2016, 09:10:51 PM »
Al limite puoi fare 1 XOR del random con il tempo reale ;)
Così ti diventa - matematicamente reversibile sebbene la cosa sia già informaticamente implausibile
 

Offline CrashTest

Re:[TOOL] Keygenerator.cxx
« Reply #5 on: November 21, 2016, 02:10:51 PM »
Io lo farei in una maniera abbastanza diversa e sfrutterei molto di più il C++ (usando una piccola parte di quello che offre) xD. Scusa la critica, (non me ne volere) ma un programma fatto in questo modo mi sembra più un programma C "con cin e cout" che un programma in C++. Innanzitutto terrei in considerazione fattori non poco trascurabili: l'entropia e la distribuzione (di simboli, caratteri e numeri). Se sei interessato ti propongo del materiale che ti può aiutare a capire qualcosa di più:
- You are not allowed to view links. Register or Login
- You are not allowed to view links. Register or Login

Scarterei quindi rand() e srand() basati su <ctime>. Detto questo userei la librerie standard
Code: You are not allowed to view links. Register or Login
<random>
Per la generazione della password mi servirei della classe
Code: You are not allowed to view links. Register or Login
std::random_deviceUna classe che mi permette di generare numeri casuali uniformemente distribuiti secondo You are not allowed to view links. Register or Login. Una volta generato questo numero lo darei in pasto alla classe:
Code: You are not allowed to view links. Register or Login
std::mt19937 Questa classe si basa sul Mersenne Twister Engine, un engine per la generazione di numeri pseudo-casuali basato sul You are not allowed to view links. Register or Login. Il suo nome deriva dal fatto che fa utilizzo dei numeri primi detti: You are not allowed to view links. Register or Login. Una volta fatto questo stabilirei un campo di distribuzione usando:
Code: You are not allowed to view links. Register or Login
std::uniform_int_distributionQuesta mi genera dei numeri secondo una distribuzione discreta uniforme in un determinato intervallo. Esempio:
Code: You are not allowed to view links. Register or Login
std::uniform_int_distribution<int> dNum(0, 9); //Distanza dei numeri (10-1)
std::uniform_int_distribution<int> dLet(0, 25); //Distanza delle lettere (sono 26 lettere quindi partendo da 0 la distanza è 26-1)
std::uniform_int_distribution<int> dSim(0, 13); //Distanza tra i simboli, considerandone 14 (14-1)

char letMin[26] = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' };
char letMai[26] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' };
char simboli[14] = { '!', '#', '@', '~', '$', '^', '.', ',', '-', '+', '%', '?', '*', '=' };

Questo è solo un esempio di come si potrebbe usare meglio il C++ per creare un programma del genere. Ovviamente non devi basarti per forza su quello che ho scritto io, il mio era solo un esempio. Ho fatto un programma del genere come esercizio, se non vuoi spoiler te lo carico su Git così puoi vederlo :D
Email: [email protected]
Website: You are not allowed to view links. Register or Login
 

Offline NebulasIT

Re:[TOOL] Keygenerator.cxx
« Reply #6 on: November 21, 2016, 03:20:14 PM »
Per me va bene! Come detto sopra accetto sempre i consigli, in quanto ho molto da imparare (e ne ho voglia), quindi se lo posti su Github, mi studio il codice  ;D
Website:  You are not allowed to view links. Register or Login
Email: [email protected]
 

Offline CrashTest

Re:[TOOL] Keygenerator.cxx
« Reply #7 on: November 21, 2016, 03:39:07 PM »
You are not allowed to view links. Register or Login
Per me va bene! Come detto sopra accetto sempre i consigli, in quanto ho molto da imparare (e ne ho voglia), quindi se lo posti su Github, mi studio il codice  ;D
Va bene xD Appena posso te lo posto, non lo faccio subito perchè l'ho sul PC a Taranto, il tempo che me lo faccio mandare e lo carico. Magari lo commento un po' in modo da far capire meglio la logica che ho seguito anche se era molto semplice ;D
Email: [email protected]
Website: You are not allowed to view links. Register or Login
 

Offline NebulasIT

Re:[TOOL] Keygenerator.cxx
« Reply #8 on: November 21, 2016, 04:00:09 PM »
Va bene grazie  ;)
Website:  You are not allowed to view links. Register or Login
Email: [email protected]
 

Offline CrashTest

Re:[TOOL] Keygenerator.cxx
« Reply #9 on: November 29, 2016, 11:53:02 AM »
Comunque non me ne sono scordato eh, ultimamente sono molto impegnato causa esami e quindi non ho il tempo di revisionarlo e commentarlo. Appena riesco te lo posto. Nel frattempo tu hai fatto qualcosa?
Email: [email protected]
Website: You are not allowed to view links. Register or Login
 

Offline NebulasIT

Re:[TOOL] Keygenerator.cxx
« Reply #10 on: November 29, 2016, 12:53:34 PM »
Si, mi sono dedicato al python e rust ahaha  ;D
Website:  You are not allowed to view links. Register or Login
Email: [email protected]
 

Offline CrashTest

Re:[TOOL] Keygenerator.cxx
« Reply #11 on: December 01, 2016, 04:20:22 PM »
You are not allowed to view links. Register or Login
Si, mi sono dedicato al python e rust ahaha  ;D
Capito, pensavo avessi lavorato a questo xD
Email: [email protected]
Website: You are not allowed to view links. Register or Login
 

Offline davenull

  • Administrator
  • Sr. Member
  • *****
  • Posts: 321
  • Thanked: 13 times
  • Gender: Male
  • JonixLug Co-Founder & Administrator
    • View Profile
    • davenull's blog
Re:[TOOL] Keygenerator.cxx
« Reply #12 on: January 04, 2017, 03:31:10 AM »
potresti utilizzare la rand unita ad una specie di salt come fa wordpress per generare le password, sono md5 + salt, infatti in un altro post feci vedere un sito dove digiti una password, te la cripta per wordpress, poi se la ricripti ancora esce fuori un hash diverso. così eviti la pseudocasualità del salt, se no vai di gpg ed entropia e vai a colpo sicuro!!! :D
E-Mail: [email protected]
Website: You are not allowed to view links. Register or Login

You are not allowed to view links. Register or Login
 

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40