Οι συνδέσεις αποθηκεύονται σε ένα ειδικό αρχείο ονόματι connections.xml και ορίζονται στο HOME του χρήστη. Στην έκδοση 2.1 του SQL Developer βρίσκονται στην διαδρομή $ΗΟΜΕ/.sqldeveloper/system2.1.0.63.73/o.jdeveloper.db.connection.11.1.1.2.36.55.30/connections.xml Ανοίγοντας αυτό το αρχείο, βρίσκουμε σε κρυπτογραφημένη μορφή (encrypted) τα passwords των συνδέσεων μας.
Προκειμένου να αποκωδικοποιήσουμε (decrypt) αυτό το password, υπάρχει μια θαυμάσια απάντηση στο stackoverflow.com (http://stackoverflow.com/questions/1032721/does-anybody-know-what-encrypting-technique-is-jdeveloper-sql-developer-using-to) που συνοψίζεται στην κατασκευή ενός προγράμματος, το οποίο περιμένει ως είσοδο ένα κρυπτογραφημένο password, και τυπώνει την αποκρυπτογραφημένη μορφή του. Ακολουθεί μια τροποποίηση του, ώστε να γίνει πιο γενικό.
import oracle.jdevimpl.db.adapter.DatabaseProviderHelper;
import java.io.*;
class Decode {
String pass = "";
public Decode() {
System.out.print("Please type encrypted password:");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {}
String encyptedPass = br.readLine();
pass = DatabaseProviderHelper.comingIn(encryptedPass);
System.out.println(pass);
} catch (IOException ioe) {
System.out.println("IO error trying to read encrypted password!");
System.exit(1);
}
public static void main(String[] args){
new Decode();
}
}
To πρόγραμμα που μόλις δημιουργήσαμε θα το κάνουμε compile:
javac -cp $SQL_DEVELOPER_HOME/modules/oracle.adf.model_11.1.1/db-ca.jar:$SQL_DEVELOPER_HOME/modules/oracle.ldap_11.1.1/ojmisc.jar Decode.java
και τελικά θα το τρέξουμε:
java -cp $SQL_DEVELOPER_HOME/modules/oracle.adf.model_11.1.1/db-ca.jar:$SQL_DEVELOPER_HOME/modules/oracle.ldap_11.1.1/ojmisc.jar:. Decode
Επειδή και ο JDeveloper χρησιμοποιεί τον ίδιο αλγόριθμο για να αποθηκεύει τα passwords των συνδέσεων, μπορούμε πάλι να χρησιμοποιήσουμε το ίδιο πρόγραμμα για να βρούμε την τιμή ενός password.
No comments:
Post a Comment