Non sono entrato a capofitto mi sono però, preso la briga di analizzare il codice scritto da
@piergiac-1 che si ostiene a dire di aver trovato soluzione di fattorizzazione e bla bla bla.
Io faccio il developer sono un senior, lavoro da 13 anni nel settore, ho studiato all'università, ho preso 2 lauree, e non parlo tanto per dare fiato.
Voglio dare un suggerimento reale e formativo valido per tutti.
Parto con l'analisi del codice python fornito dove elenco tutte le criticità, mi sono preso un paio di ore, penso che con un altro paio di ore questo algoritmo lo cracco e ne faccio vedere l'instabilità (devo solo avere il tempo, ma con una bimba piccola ammalata è difficile).
Punto 1:
- codice scritto male ed italianizzato (concetto di programmazione assente). Un qualsiasi codice sorgente deve essere scritto in metodi, separato in classi etc , il suo è scritto tutto in un unico mappazzone privo di sintassi e logica. Che non si venga a dire è python si scrive cosi perchè non è vero e posso dimostrarlo con una mia repo github.
Punto 2:
- la gestione dei path dove ci sono righe come:
Python:
os.path.exists(f"{controllo1}")
permettono di fornire percorsi privi di sanitizzazione e quindi ottenere attacchi. Attacchi di che tipo?
- Attacchi di traversata del percorso: Se un utente malintenzionato può inserire un percorso relativo (ad esempio, ../../etc/passwd), potrebbe accedere a file al di fuori della directory prevista.
- Scrittura arbitraria di file: Il programma scrive dati di configurazione su file senza verificare che i percorsi siano sicuri o validi.
- Mancanza di validazione degli input: Non viene applicata alcuna validazione agli input dell'utente (come controllo1 e controllo2), il che potrebbe consentire l'elaborazione di dati imprevisti o dannosi, portando a potenziali problemi di sicurezza o stabilità.
Punto 3:
- Gestione insicura dei file: Quando si aprono file come CsCfg per la scrittura, il programma non verifica le autorizzazioni corrette o il rischio di sovrascrittura. Se l'applicazione viene eseguita con privilegi elevati, potrebbe sovrascrivere file sensibili.
Punto 4:
- Uso di eval o operazioni simili non sicure: Anche se non è chiaro dal frammento visibile, qualsiasi uso di eval, exec o funzioni simili per elaborare input dell'utente introdurrebbe seri rischi di sicurezza, consentendo l'esecuzione di codice arbitrario.
Punto 5:
- Nessuna gestione degli errori per le operazioni sui file: Operazioni come l'apertura e la scrittura di file non hanno gestione delle eccezioni. Ad esempio:
- Se il file non può essere scritto (ad esempio, per problemi di permessi), l'applicazione fallirà senza fornire un messaggio di errore chiaro.
- Operazioni crittografiche hardcoded: Il metodo di crittografia non è completamente visibile, ma se viene utilizzata una crittografia personalizzata (ad esempio, "Fermat 128bit/GC57" menzionata nell'interfaccia utente), potrebbe non essere sicura. Algoritmi di crittografia personalizzati o deboli possono portare a vulnerabilità, specialmente se non si basano su librerie crittografiche ben testate.
- Informazioni sensibili nei messaggi: Assicurati che i percorsi dei file o altri dati sensibili non vengano mostrati direttamente all'utente nei messaggi di errore.
Spero di essere stato un pò esaustivo su cosa non funziona in codesto algoritmo