Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 30
  1. #1

    Proteggere un'applicazione swing

    Sto realizzando un software su swing e vorrei qualche consiglio su come proteggerne la proprietà intellettuale. Il programma non è molto complesso e non ho certo la pretesa di renderlo inpiratabile ma vorrei che almeno un sforzo venisse fatto per appropriarsene illegalmente.

    Ho a disposizione un dominio senza il supporto java ed il programma può funzionare anche solo quando l'utente ha a disposizione la connessione ad internet.

    Si accettano consigli, di qualsiasi genere.

  2. #2
    una password..

    il lupo perde il pelo ma non il vizio!
    http://www.pateam.eu
    http://pateam.altervista.org

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da giannino1995 Visualizza il messaggio
    come proteggerne la proprietà intellettuale [...] non ho certo la pretesa di renderlo inpiratabile
    Non vuoi "che qualcuno riottenga dei sorgenti facilmente usabili dal bytecode" ..... o non vuoi "che qualcuno installi il sw su una macchina per cui non avrebbe la licenza/permesso" ? Sono due livelli ben differenti.
    Nel primo caso già un buon "offuscatore" di codice rende la vita molto difficile (ma non impedisce la decompilazione), nel secondo caso si va dall'uso di numeri seriali fino a procedure più complesse che "legano" il software a qualche caratteristica della macchina.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Vorrei:

    1) Inserire una password per l'utilizzo dell'applicazione da digitare ogni volta che si decide di usare il programma (so come procedere ma non so come mascherare la password nel bytecode ma so che c'è un metodo)

    2) Vorrei che l'applicativo funzionasse se e solo se sul mio sito ci fosse un file con una precisa password al proprio interno (mi serve per rendere inutillizzabile il programma all'occorenza)

    3) Offuscare il codice del programma possibilmente mescolando librerie varie (in tot. ho circa 20MB di .jar)

    Non deve essere inespugnabile ma rendere ardua e faticosa la copia del codice.

    Mi affido alla vostra abilità...

    La mia idea e di mettere un metodo che viene richiamato ogni volta che il programma lancia un evento (pressione del tasto invio, pressione di un bottone, ecc...)

    E' chiaro che se uno esperto ci mettesse il grugno il mio lavoro sarebbe vano ma va detto che l'esperto probabilmente (e anche senza probabilmente) non lo farebbe perché sabrebbe rifare tutto molto meglio e con più cura della mia.
    Ultima modifica di giannino1995; 12-01-2014 a 00:31

  5. #5
    Ho un'ultima domanda:

    Come posso nascondere la password all'interno del codice?

    E' ovvio che se devo verificare che la password immessa sia identica a quella digitata in una JPasswordField devo scrivere:

    password_digitata.equals("questaèunapassword");

    però vorrei che "questaèunapassword" non fosse visibile nel file .class.

    So che esiste un metodo di java che permette di trasformare "questaèunapassword" in un'altra stringa ma non il viceversa. Non riesco a trovare questo benedetto comando, nè su google ne sul mio manuale... che nervoso... ricordo anche che esistono diverse tipologie di funzioni... a 32 o a 128bit... ecc... vi prego aiutatemi a ricordare questo codice...
    Più pratica in futuro...

  6. #6
    io ho fatto così
    codice:
        public void actionPerformed(ActionEvent e){
            String psswc="";
            String temp="";
            
            String user=text1.getText();
            String pssw=text2.getText();
            
            psswc=new MD5Encrypter().encrypt(pssw);
            
            LinkDB db=new LinkDB();
            
            temp=db.LoginSystem(user, psswc);
            db.closeConnection();
            if(!temp.isEmpty())
                //passi
            else
             //password sbagliata
      }
    il collegamento al DB vede se la password criptata è uguale a quella nel DB perché non può essere decriptata quindi encripto quella che immetto e la confronto a quella criptata nel DB

    Ciao
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  7. #7
    Grazie per il consiglio ma non è quello che cerco. Io devo fare qualcosa di molto più semplice ma di diverso. Devo impedire che possa essere usato un software java senza prima mettere una password nella GUI grafica.

    Ho provato il tuo sistema ma non mi sembra che sia quello giusto per il mio caso per 2 motivi:

    1) Sul mio java non funziona:

    codice:
    package prova;
    
    class Esempio {
        public static void main(String args[]) {
            String pssw = "kkk";
            System.out.println("kkk");
            String psswc = null;
            psswc = new MD5Encrypter().encrypt(pssw);
            System.out.println("psswc");
    
        }
    }
    2) E' possibile fare il passaggio inverso usando questi siti:

    http://www.md5encrypter.com/
    http://md5decryption.com/

    Quindi io scrivo nella JFrame "cb42e130d1471239a27fca6228094f0e" per nascondere la password "kkk" digitata nella GUI ma in realtà è inutile. Basta aprire il file .class andare sul sito scrivere "cb42e130d1471239a27fca6228094f0e" ed ottenere in poco tempo la password "kkk". Nulla di più semplice! Esiste un metodo, ne sono sicuro perché l'ho già usato in passato, che funziona come questo MD5Encrypter ma non permette di eseguire la decriptazione della stringa. Se non ricordo male è una decriptazione a 128bit la più potente e sicura ma potrei sbagliarmi e potrebbero essere uscite delle versioni più evolute 256 o 512... questo purtoppo non ricordo...
    Detto in altro modo vorrei che il pirata come minimo aprisse il codice offuscato e cancellasse il metodo che effettua il confronto della password inserita nella GUI, debitamente convertita, con la stringa decriptata presente del codice e ampiamente visibile.
    Ultima modifica di giannino1995; 23-01-2014 a 14:00
    Più pratica in futuro...

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Quote Originariamente inviata da giannino1995 Visualizza il messaggio
    Quindi io scrivo nella JFrame "cb42e130d1471239a27fca6228094f0e" per nascondere la password "kkk" digitata nella GUI ma in realtà è inutile. Basta aprire il file .class andare sul sito scrivere "cb42e130d1471239a27fca6228094f0e" ed ottenere in poco tempo la password "kkk". Nulla di più semplice! Esiste un metodo, ne sono sicuro perché l'ho già usato in passato, che funziona come questo MD5Encrypter ma non permette di eseguire la decriptazione della stringa. Se non ricordo male è una decriptazione a 128bit la più potente e sicura ma potrei sbagliarmi e potrebbero essere uscite delle versioni più evolute 256 o 512... questo purtoppo non ricordo...

    Fosse così facile... leggi bene cosa c'è scritto in quel sito:

    We have encrypted more than 105,300,000 words, phrases, acronyms, etc since 2006

    Significa che per "decriptare" usano un loro database di hash già fatti. E se uno fa l'encrypt usando proprio quel sito, lui se lo memorizza.

    Prova a decriptare questo HASH, se ci riesci:
    9b6a3ee871f17246b4b813c58f78cbab


    Ah, giusto per informazione... MD5 non è decriptabile... è una funzione di hashing unidirezionale: ciò significa che dato A puoi ottenere B, ma dato B non potrai mai riottenere A se non tramite "trucchetti" come quello usato dal sito (ovvero, se so già che dato A ottengo B, memorizzo questa informazione e quando mi chiedono B, io gli rispondo A), oppure tramite brute-force (che significa tentare e ri-tentare all'infinito finchè non si trova la parola giusta).


    Ciao.
    Ultima modifica di LeleFT; 23-01-2014 a 14:11
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Fosse così facile... leggi bene cosa c'è scritto in quel sito:




    Significa che per "decriptare" usano un loro database di hash già fatti. E se uno fa l'encrypt usando proprio quel sito, lui se lo memorizza.

    Prova a decriptare questo HASH, se ci riesci:
    9b6a3ee871f17246b4b813c58f78cbab


    Ah, giusto per informazione... MD5 non è decriptabile... è una funzione di hashing unidirezionale: ciò significa che dato A puoi ottenere B, ma dato B non potrai mai riottenere A se non tramite "trucchetti" come quello usato dal sito (ovvero, se so già che dato A ottengo B, memorizzo questa informazione e quando mi chiedono B, io gli rispondo A), oppure tramite brute-force (che significa tentare e ri-tentare all'infinito finchè non si trova la parola giusta).


    Ciao.
    Grazie mille LeleFT ero già in ansia!

    Sorry, this MD5 hash wasn't found in our database

    perfetto, allora è quello il metodo che cercavo!

    grazie mille

    A) C'è anche qualche sistema per fare l'encrypt del codice? (mi sa che la tua risposta sarà "magari" ma ci provo ugualmente...)
    B) Mi ricordavo però diverse varianti di questo metodo (128bit, 256 bit, ecc...)? Esiste sono una versione di MD5? Sono io che ho un ricordo sbagliato di questo metodo? Esiste solo l'MD5? Non so perché ma ricordo di aver letto molto tempo fa che era stata inventato un nuovo sistema più potente del precedente e che java lo aveva implementato e reso disponibile per gli sviluppatori... (ovviamente chi ha inventato l'MD5 lo sa anche decriptare ma chi se ne frega... quel programmatore non piraterà mai la mia misera applicazione... )
    Ultima modifica di giannino1995; 23-01-2014 a 14:32
    Più pratica in futuro...

  10. #10
    Quote Originariamente inviata da giannino1995 Visualizza il messaggio
    Grazie mille LeleFT ero già in ansia!
    ....
    Esiste solo l'MD5? Non so perché ma ricordo di aver letto molto tempo fa che era stata inventato un nuovo sistema più potente del precedente e che java lo aveva implementato e reso disponibile per gli sviluppatori... (ovviamente chi ha inventato l'MD5 lo sa anche decriptare ma chi se ne frega... quel programmatore non piraterà mai la mia misera applicazione... )
    no no prego...
    Ma se Lele ti ha già detto che è unidirezionale e te l'ho detto anch'io nel precedente post neanche chi l'ha inventato può decriptarlo se non per forza bruta come ti è stato detto.
    Io ho usatoo l'MD5 e mi sono trovato bene, ma sicuramente ne esisteranno una vagonata di altri...
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

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.