Salve, non so se è il forum giusto...
qualcuno conosce un applicativo che fornisce qualche migliaio di codici alfanumerici in automatico?
Grazie.
Salve, non so se è il forum giusto...
qualcuno conosce un applicativo che fornisce qualche migliaio di codici alfanumerici in automatico?
Grazie.
No ... non è il forum giusto ...
No MP tecnici (non rispondo nemmeno!), usa il forum.
Scusa, solo per curiosità: quanto devono essere lunghe le stringhe? I caratteri devono essere tutti random?
Perchè avevo scritto anni fa un sw simile..
Ciao![]()
non c'è una lunghezza precisa, solo alfanumerici e nonripetibili, me ne servono circa 60 mila.
Qualsiasi linguaggio di programmazione ti consente di ottenere ciò che desideri.
Ti posto una soluzione in powershell.
Il mio esempio genererà un file di testo di 60000 righe. Ciascuna stringa sarà lunga 10 caratteri e i caratteri ammessi saranno quelli che ho definito a inizio script.codice:$caratteri = "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","1","2","3","4","5","6","7","8","9","0","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” 1..60000 | % {$str = ''; 1..10 | % {$str+= get-random -InputObject $caratteri}; add-Content "c:\stringhe.txt" -value $str}
Il codice non garantisce l'unicità delle stinghe.
Per sapere quanti sono i valori unici, ti basterà fare
(gc c:\stringhe.txt | sort-Object | get-unique).count
Se il valore restituito sarà pari a 60000 significa che non sono stati generati doppioni.
In caso contrario puoi ottenere le stringhe uniche così
gc c:\stringhe.txt | sort-Object | get-unique | out-File c:\unici.txt
Se disponi di windows 7 la powershell è già integrata e richiamabile da esegui digitando powershell. In caso contrario la puoi scaricare.
In questa sezione del forum trovi diverse discussioni a riguardo relative all'installazione e al suo utilizzo.
Soluzione in C:
Consente di generare codici di lunghezza arbitraria (decisa a runtime) con al massimo 36 simboli (lettere+numeri), limite che è comunque modificabile semplicemente aggiungendo altri caratteri all'array values[].codice:#include <stdio.h> #include <stdlib.h> #define ARRSIZE(arr) (sizeof(arr)/sizeof(*(arr))) int main() { const char values[]= {'0','1','2','3','4','5','6','7','8','9','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 * buffer=NULL; int * stack=NULL; int combinationLength=-1; int valuesNumber=-1; int curPos=0; fprintf(stderr, "%s", "Length of a combination: "); if(scanf("%d", &combinationLength)!=1 || combinationLength<1) { fputs("Invalid value.\n",stderr); return 1; } fprintf(stderr, "%s (%lu max): ", "Possible digit values",(long unsigned)ARRSIZE(values)); if(scanf("%d", &valuesNumber)!=1 || valuesNumber<1 || (size_t)valuesNumber>ARRSIZE(values)) { fputs("Invalid value.\n", stderr); return 1; } buffer=(char *)malloc(combinationLength); stack=(int *)malloc(combinationLength*sizeof(*stack)); if(buffer==NULL || stack==NULL) { fputs("Cannot allocate memory.\n", stderr); free(buffer); free(stack); return 2; } /* Combinations generator */ for(;;) { /* If we reached the last digit symbol... */ if(stack[curPos]==valuesNumber) { /* ...get back to the previous position, if we finished exit */ if(--curPos==-1) break; /* Repeat this check */ continue; } buffer[curPos]=values[stack[curPos]]; /* If we are in the most inner fake-cycle write the combination */ if(curPos==combinationLength-1) puts(buffer); stack[curPos]++; /* If we aren't on the last position, start working on the next one */ if(curPos<combinationLength-1) { curPos++; stack[curPos]=0; } } /* Cleanup */ free(buffer); free(stack); return 0; }
I codici generati sono univoci e ordinati (00000, 00001, 00002, ... zzzzy, zzzzz); il programma è pensato per scrivere tutte le combinazioni data una lunghezza della chiave e il numero di simboli, ma si può facilmente modificare per elaborarne solo un tot.
Sulla mia macchina attuale (andando su singolo core e senza considerare l'IO) macina circa 30 milioni di combinazioni al secondo.
Amaro C++, il gusto pieno dell'undefined behavior.
Terza soluzione:Excell.
Generare numeri casuali su più colonne e su altre caratteri alfa.... poi concatena
Si può anche fare più complicato a seconda dell'uso.
E' "terra terra" non sarà il.... massimo ma funziona alla grande.
Ho generato alcune centinaia di pw
Ciao
So inserire la spina del pc nella presa, so spolverare il pc, sto cercando di capire a cosa serve la tastiera:vado lento ma qualcosa la sto imparando anch'io.
In excel io risolverei così: dai componenti aggiuntivi abiliterei gli strumenti di analisi per poter utilizzare la funzione casuale.tra().Originariamente inviato da simieri
Terza soluzione:Excell.
Generare numeri casuali su più colonne e su altre caratteri alfa.... poi concatena
Si può anche fare più complicato a seconda dell'uso.
E' "terra terra" non sarà il.... massimo ma funziona alla grande.
Ho generato alcune centinaia di pw
Ciao
In una cella inserirei tutti i caratteri ammessi, tipo
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwx yz0123456789
e poi concatenerei x volte la formula
=STRINGA.ESTRAI($A$1;CASUALE.TRA(1;LUNGHEZZA($A$1) );1)
quanti sono i caratteri che voglio assegnare alla stringa da generare.![]()
Compatta la prima, piena di testosterone la seconda... terra terra la terza
Professionali la prima, la seconda e la terza rieditata: complimenti a MItaly e a nicola75ss...simieri è ancora impegnato a capire come funziona la tastiera
![]()
ps. nella mia soluzione originale era ininfluente la ricorrenza di qualche codice uguale per l'uso che si faceva (nomeutente + PW) anche perchè la pw doveva contenere come primi due caratteri le iniziali di nome e cognome (nessun vantaggio per l'hacker... due caratteri su 12). Nella terza soluzione corretta da nicola, su 60000 codici sarebbe scarsamente probabile la ripetizione dello stesso codice ma sarebbe opportuno filtrare i dati ottenuti ed eliminare i doppioni: e allora?
Grazie a Mitaly e a nicola... terrò gli script incollati sotto la tastiera a portata di mano![]()
So inserire la spina del pc nella presa, so spolverare il pc, sto cercando di capire a cosa serve la tastiera:vado lento ma qualcosa la sto imparando anch'io.
Amaro C++, il gusto pieno dell'undefined behavior.