Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it L'avatar di acquila
    Registrato dal
    Jan 2001
    Messaggi
    1,292

    Generatore di codici in automatico?

    Salve, non so se è il forum giusto...
    qualcuno conosce un applicativo che fornisce qualche migliaio di codici alfanumerici in automatico?
    Grazie.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    No ... non è il forum giusto ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    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

  4. #4
    Utente di HTML.it L'avatar di acquila
    Registrato dal
    Jan 2001
    Messaggi
    1,292
    non c'è una lunghezza precisa, solo alfanumerici e nonripetibili, me ne servono circa 60 mila.

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Qualsiasi linguaggio di programmazione ti consente di ottenere ciò che desideri.

    Ti posto una soluzione in powershell.

    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 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.

    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.

  6. #6
    Soluzione in C:
    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;    
    }
    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[].
    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.

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    358

    Terza soluzione

    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.

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923

    Re: Terza soluzione

    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 excel io risolverei così: dai componenti aggiuntivi abiliterei gli strumenti di analisi per poter utilizzare la funzione casuale.tra().

    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.

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    358
    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.

  10. #10
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.