Du bist nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Banana-Coding.com - Java Knuddels Emulator. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

1

Samstag, 24. März 2012, 14:37

[TUT] [ADVANCED?] Huffman einbauen

ACHTUNG: Dieses Tutorial hat keinen Sinn! Bitte nicht nachmachen, nur zum Testen! Und selbst dann nicht, wenn ihr nicht wisst, was ihr tut.

Moin Jungs,

Knuddels verwendet offiziell - sollte bekannt sein - die Huffmankomprimierung. Flav hat diese aus dem Bananachat entfernt, weil sie noch nicht reversed werden konnte.
Auch jetzt ist der Verwendungszweck mir nicht genau bekannt, aber okay. Keiner und Keiner hatten versucht, die Huffmankomprimierung einzubauen, erhielten dann aber nur noch "unbekannte operatorcodes".
Ich möchte euch kurz erläutern, wie ich es gemacht habe.

Vorraussetzungen:
- Netbeans
- knuddels.jar von Flav aka. Dustin (http://www.file-upload.net/download-4147…uddels.jar.html)

Hinzufügen der knuddels.jar:

1. Netbeans öffnen
2. Euer Projekt öffnen
3. Im "Projects"-Explorer befindet sich das Symbol Libraries (unter Source Packages). Rechtsklick drauf und "Add Jar/Folder".
4. Fügt die runtergeladene knuddels.jar hinzu.

Abändern des Sources:
1. Ab in die SessionHandler.java (run-Methode)! Folgendes wird umgeändert:

PHP-Quelltext

1
2
3
4
while (run) {
                    byte[] buffer Protocol.decode(in);
                    validSocket true;
                    String[] tokens = new String(buffer"UTF8").split("\u0000");

Hier müssen wir die Huffman-Dekomprimierung einbauen, denn wie ihr seht wird bei dieser Methode aus einem Byte-Array einfach ein String gebastelt,
ohne das die Huffman-Decomprimierung benutzt wird. So...

PHP-Quelltext

1
2
3
4
while (run) {
                    byte[] buffer Protocol.decode(in);
                    validSocket true;
                    String[] tokens knuddels.Huffman.decode(buffer).split("\0");

Euer Server kann jetzt schonmal das gesendete lesen, nur noch nicht richtig senden! Wird sofort geändert:
2.Ab in die Client.java (Send-Methode):

PHP-Quelltext

1
2
3
4
5
6
7
if (socket != null && socket.isConnected()) {
            try {
                out.write(Protocol.encode(message.getBytes("UTF8")));
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

Hier das selbe: Flav generiert aus der eigentlichen Nachricht ein Byte-Array und sendet dies dann. Die Huffman-Komprimierung wird eingesetzt:

PHP-Quelltext

1
2
3
4
5
6
7
if (socket != null && socket.isConnected()) {
            try {
                out.write(Protocol.encode(Huffman.encode(message)));
            } catch (Exception e) {
                e.printStackTrace();
            }
        }


That's it. Wie kann ich testen, ob alles geklappt hat? Lade dir ein unmanipuliertes Knuddels-Applet runter und lass dieses zu deinem Server verbinden.
Es sollten keine Fehler auftreten - außer, dass du dich nicht einloggen kannst. Dies liegt daran, dass dein Passwort anders gehasht wird.
Das muss man dementsprechend umändern. Ich würde so weit gehen und das Passwort ungehast verschicken, denn selbst das sollte nun einigermaßen sicher sein!
Ich werde gleich mal ein Applet von Knuddels manipulieren, so dass das PasswortHashing nicht mehr stattfindet.

Javassist code:
(Entnommen aus den bereitgestellten Applets, die hier veröffentlicht wurden)


MfG Mentos

Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von »Mentos« (8. Dezember 2012, 01:40)


Es haben sich bereits 6 registrierte Benutzer bedankt.

Benutzer, die sich für diesen Beitrag bedankt haben:

Fif, Spectra, Diebspiel, wishdream, Steelix2011, Gangstersheep

2

Samstag, 24. März 2012, 15:42

Vorraussetzungen:
- knuddels.jar von Flav aka. Dustin

Hinzufügen der knuddels.jar:
Was für eine Knuddels.jar? Wo findet man die?
Hab grad keine Glaskugel da :(

3

Samstag, 24. März 2012, 15:46

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Mentos« (24. März 2012, 16:20)


Es hat sich bereits 1 registrierter Benutzer bedankt.

Benutzer, die sich für diesen Beitrag bedankt haben:

Steelix2011