Mattepuffo's logo
Leggere file KeePass in Java

Leggere file KeePass in Java

Utilizzo KeePass, nelle varie sue forme, da parecchio tempo.

Per sbaglio mi sono imbattuto in una libreria per Java che ci permette di "interagire" con un db compatibile con questo programma.

Visto KeePass c'è anche per il mobile, questa libreria può essere molto interessante.

Se usate Maven aggiungete questa dipendenza:

    <dependencies>
        <!-- https://mvnrepository.com/artifact/de.slackspace/openkeepass -->
        <dependency>
            <groupId>de.slackspace</groupId>
            <artifactId>openkeepass</artifactId>
            <version>0.8.2</version>
        </dependency>
    </dependencies>

A questo punto il codice Java:

import de.slackspace.openkeepass.KeePassDatabase;
import de.slackspace.openkeepass.domain.Entry;
import de.slackspace.openkeepass.domain.Group;
import de.slackspace.openkeepass.domain.KeePassFile;

import java.util.List;

public class Main {
    public static void main(String[] args) {
        KeePassFile database = KeePassDatabase
                .getInstance("C:\Users\admferrone\Desktop\MY_DB.kdbx")
                .openDatabase("qwyjkzx");

//        tutte(database);
//        perGruppo(database);
        perTitolo(database, "Twitter");
    }

    public static void tutte(KeePassFile database) {
        List<Entry> entries = database.getEntries();
        for (Entry entry : entries) {
            System.out.println("TITOLO: " + entry.getTitle());
            System.out.println("USERNAME: " + entry.getUsername());
            System.out.println("PASSWORD: " + entry.getPassword());
            System.out.println("----------");
        }
    }

    public static void perGruppo(KeePassFile database) {
        List<Group> keePassGroups = database.getTopGroups();
        for (Group group : keePassGroups) {
            System.out.println("GRUPPO: " + group.getName().toUpperCase());
            List<Entry> groupEntries = group.getEntries();
            for (Entry entry : groupEntries) {
                System.out.println("TITOLO: " + entry.getTitle());
                System.out.println("USERNAME: " + entry.getUsername());
                System.out.println("PASSWORD: " + entry.getPassword());
                System.out.println("----------");
            }
            System.out.println("FINE GRUPPO " + group.getName().toUpperCase());
        }
    }

    public static void perTitolo(KeePassFile database, String titolo) {
        List<Entry> entriesByTitle = database.getEntriesByTitle(titolo, false);
        for (Entry entry : entriesByTitle) {
            System.out.println("TITOLO: " + entry.getTitle());
            System.out.println("USERNAME: " + entry.getUsername());
            System.out.println("PASSWORD: " + entry.getPassword());
            System.out.println("----------");
        }
    }
}

Ci sono tre metodi:

  • uno che lista tutte le voci una di fila all'altra
  • uno che li visualizza per gruppo
  • uno che li visualizza per titolo; ho messo la variante che li visualizza per titoli simili

Enjoy!


Share this Post

Commentami!