[JAVA] Wireshark, jzlib en Java

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 11-09 20:27

Matis

Rubber Rocket

Topicstarter
Beste Devvers,

misschien een wat cryptische titel, maar ik kon niet veel beters bedenken :p

Momenteel zit ik wat te capturen in communicatie tussen een (Apache Tomcat) webserver en een Java-applicatie.
De communicatie ziet er (versimpeld) zo uit:
Client (Java) stuurt een HTTP chunked request naar de webserver.
De webserver stuurt een HTTP chuncked request terug naar de client.

Deze pakketten zie ik ook netjes verschijnen in de log van Wireshark. Wireshark detecteert ook dat de data die overgezonden wordt gecomprimeerd is conform zlib (jzlib verzorgt dit voor Java), echter kan hij de data niet decompressen. Waarom is me onduidelijk want er wordt geen melding gegeven met de reden van het falen.

Omdat ik graag wil weten wat er in de body van de request zit, heb ik een datadump gemaakt van het geassembleerde pakket;
Deze data probeerde ik eerst middels PHP in te lezen en daarna te deflaten, echter is de uitkomst van de decompressie nagenoeg hetzelfde als het origineel.
Omdat ik PHP niet vertrouwde, heb ik daarna jzlib gedownload en een eenvoudige Java-applicatie geschreven, welke de datadump van de HTML-body inleest en deflate. Echter zijn de resultaten van deze actie hetzelfde als de uitkomst van PHP. De decompressed binary is nagenoeg hetzelfde als de compressed binary.

Ik heb JZlib (1.1.0) gedownload van http://www.jcraft.com/jzlib/ en het volgende (vereenvoudigde) voorbeeld gebruikt:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
            int err;
            int comprLen = 40000;
            byte[] compr = new byte[comprLen];

            File in = new File("zlib.bin");
            byte[] hello2 = new byte[(int) in.length()];
            FileInputStream fis = new FileInputStream(in);
            fis.read(hello2);

            Deflater deflater = null;

            deflater = new Deflater(JZlib.Z_BEST_SPEED);

            deflater.setInput(hello2);
            deflater.setOutput(compr);

            while (deflater.total_in != hello2.length
                    && deflater.total_out < comprLen) {
                deflater.avail_in = deflater.avail_out = 1;
                err = deflater.deflate(JZlib.Z_NO_FLUSH);
            }

            while (true) {
                deflater.avail_out = 1;
                err = deflater.deflate(JZlib.Z_FINISH);
                if (err == JZlib.Z_STREAM_END)
                    break;
            }
            err = deflater.end();

            System.out.println(new String(hello2));
            System.out.println("==");
            System.out.println(new String(compr));
            File out = new File("zlib_dec.bin");

            FileOutputStream fos = new FileOutputStream(out);
            fos.write(compr);

De input (in hex) is al volgt:
*niet meer relevant*

Ikzelf kan er geen chocolade van maken. Wie kan mij helpen?

[ Voor 10% gewijzigd door Matis op 30-10-2011 21:35 ]

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • Raynman
  • Registratie: Augustus 2004
  • Laatst online: 11:02
Matis schreef op zondag 30 oktober 2011 @ 20:22:
Omdat ik graag wil weten wat er in de body van de request zit, heb ik een datadump gemaakt van het geassembleerde pakket;
Deze data probeerde ik eerst middels PHP in te lezen en daarna te deflaten, echter is de uitkomst van de decompressie nagenoeg hetzelfde als het origineel.
Als je deflate ben je (nogmaals) aan het comprimeren, dus dat is niet zo gek. Probeer eens te inflaten :P

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 11-09 20:27

Matis

Rubber Rocket

Topicstarter
Raynman schreef op zondag 30 oktober 2011 @ 21:14:
Als je deflate ben je (nogmaals) aan het comprimeren, dus dat is niet zo gek. Probeer eens te inflaten :P
Je hebt gelijk |:(

* Matis :')

Edit; Ik weet eigenlijk niet waarom het inflate heet, het geeft mij het gevoel om iets te verkleinen, terwijl deflate mij het gevoel geeft dat iets groter wordt. Decompress == deflate dacht ik, niet dus :P

Toch bedankt :D

[ Voor 33% gewijzigd door Matis op 30-10-2011 21:38 ]

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 10:03

Creepy

Tactical Espionage Splatterer

Haal "inflate" eens door google translate, dan zie je dat er iets als "opblazen" uitkomt ;) En deflate is iets leeg laten lopen (dus verkleinen)

[ Voor 23% gewijzigd door Creepy op 30-10-2011 22:12 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 11-09 20:27

Matis

Rubber Rocket

Topicstarter
Creepy schreef op zondag 30 oktober 2011 @ 21:58:
Haal "inflate" eens door google translate, dan zie je dat er iets als "opblazen" uitkomt ;) En deflate is iets leeg laten lopen (dus verkleinen)
Ja, daar was ik nu ook al achter. Maar zolang je denkt te weten hoe het zit, ga je in ieder geval in die hoek niet zoeken.
Toch bedankt voor de reacties, ik krijg nu netjes alle xlm-rpc communicatie te zien :)

If money talks then I'm a mime
If time is money then I'm out of time