C++ Programmierer bekommt die Krise



  • Hallo Mitmenschen.

    Ich komme eigentlich aus dem C++/BCB Forum und springe mal kurz zu euch rüber.

    Folgendes Problem:
    Ich habe eine Jardatei. Diese habe ich decompiliert. Herauskamen drei Class-Dateien und ein "Meta-Inf"-Ordner. Die Class-Dateien kann ich wiederrum in *.java Dateien konvertieren.

    In der ?Main?javadatei ist der untenstehende Code. Im Prinzip ist das alles klar. Das einzige, was ich nicht ganz verstehe ist urlconnection.getHeaderField("Training-code"). Von C++ kenne ich es eigentlich so, dass damit irgendwie der HTTPStatus und der ErrorCode übergeben wird, also HTTP 1.1 200. Was hat es aber mit Training-code aufsich?

    Die Base64-Codierung funktioniert ebenfalls nicht, da in den *.java Dateien >sehr< viele Fehler auftreten. Ich habe irgendwo gelesen, dass die Decompilierung nicht perfekt funktioniert. Vielleicht könnte das die Fehler erklären. Die jar Datei war aber funktionstüchtig.

    Weiterhin habe ich nicht wirklich Ahnung von den IDEs. Ich nutze gerade MS J++. Doch dieses Tool hat sich bereits in die Top 10 meiner Hassprogramme hervorgearbeitet.

    Könnte mir hier irgendeiner das Compilieren, da ich mir durch die J++ Installation bereits meine C++ Compiler/Debugger Optionen zerschießen lassen habe. Oder irgendwie helfen, dieses Codefragment zu verstehen. Ich muss nur wissen, was in String s1 steht. Die Base64Codierung kann auch auf dem Papier lösen.

    Ich poste die Jar-Datei auf:
    http://mitglied.lycos.de/badprenzel/programmierung/7nf73b.jar

    die bereits decompilierten Classendateien auf:
    http://mitglied.lycos.de/badprenzel/programmierung/java.zip

    Falls es jemand interessiert. Das ganze ist Teil einer "Programmierrätselseite" namens Mod-x (http://www.mod-x.co.uk). Dort müssen verschiedenste Level gelöst werden. Mit C++ bin ich eigentlich weit gekommen. Nur bei Java stagniert es jetzt irgendwie.

    Hier der Code:

    public void actionPerformed(ActionEvent actionevent)
        {
            String s = code.getText();
            try
            {
                URL url = new URL("http://www.mod-x.co.uk/mod_x_LeV_2/M_LeVeL3_od/njk32rtraining.php");
                URLConnection urlconnection = url.openConnection();
                String s1 = urlconnection.getHeaderField("Training-code");
                if(s.equals(s1))
                {
                    String s2 = Base64.encodeString(s1);
                    code.setText(s2 + ".php");
                    answer.setText("Go to: " + s2 + ".php");
                } else
                {
                    answer.setText("Incorrect");
                }
            }
            catch(Exception exception)
            {
                showStatus("An error occured, please report this to the Mod-X admins");
            }
        }
    

    Ich danke Euch allen schon mal im Voraus und verbleibe mit Grüssen von Nebenan.
    Rostfrei[]



  • hah.. mod-x, da kommen erinnerungen hoch.
    war da damals auch agent. das beste spiel dieser art IMO.
    tolle story und abwechslungsreiche 'hackits'.

    also zu deinem problem: was ist dein problem?
    url.getHeaderField(bla) holt sich von der http-reponse das feld bla. das ist eigentlich doch alles was du wissen musst.



  • Hallo,

    Weiterhin habe ich nicht wirklich Ahnung von den IDEs. Ich nutze gerade MS J++. Doch dieses Tool hat sich bereits in die Top 10 meiner Hassprogramme hervorgearbeitet.

    Dann wird's höchste Zeit, auf Eclipse oder NetBeans umzusteigen. Einfach mal ausprobieren, man macht mit keiner was falsch.

    MfG

    GPC



  • schwaerm... schrieb:

    also zu deinem problem: was ist dein problem?
    url.getHeaderField(bla) holt sich von der http-reponse das feld bla. das ist eigentlich doch alles was du wissen musst.

    Was ist http-response? Ich dachte dass dies der Rückgabecode des Server wäre, also 200 bei ok oder 404 bei fehlen von Datei. Wieso wird dann noch der Parameter Training-code mitgegeben.

    Gebt mir bitte ein Beispiel von HTTP Response. Ich kenne das nur von Borland C++ mit TIdHTTP und da ist der Response anders, ohne Felder, aufgebaut.

    übrigens: NetBeans hat mir meine C++ IDE zerschossen



  • agent rostfrei[],
    was sie meinen ist der response code. die server antwort kann jedoch mehrere felder enthalten um z.b. caching zu steuern, dem client die codierung mitzuteilen usw.

    weitere infos kann ich ihnen hier nicht geben, dieser raum ist nicht sicher.
    setzen sie all ihr koennen ein, sie sind von nun auf sich allein gestellt.

    viel glueck.



  • eine Frage noch...
    Muss das mit Java gelöst werden, oder kann man bei VC++ mit TNMHTTP oder TIdHTTP bleiben?



  • agent rostfrei.
    so langsam fange ich an, an ihrer eignung zu zweifeln.

    lesen sie den code. verstehen sie das system!
    und vor allem: kiss.

    bitte ab jetzt keine kontaktaufname mehr.



  • Rostfrei[], wie hast du es geschafft einen isländischen Proxy aufzutreiben. Die einzigen die ich kenne (die google kennt) routen dich nur zum Codeen Netzwerk. Jetzt scan ich schon die ganze Nacht isländische Netze nach offenen Proxies. Ein Hinweis wäre sehr nett!



  • Rostfrei[] schrieb:

    übrigens: NetBeans hat mir meine C++ IDE zerschossen

    Huh? Wie das?



  • GPC schrieb:

    Rostfrei[] schrieb:

    übrigens: NetBeans hat mir meine C++ IDE zerschossen

    Huh? Wie das?

    Wenn ich das wüßte...

    Bei der Installation von NetBeans trat ein Fehler auf. Die Installtation wurde dann abgebrochen.
    Das Resultat davon war, dass ich im BCB nicht mehr debuggen konnte. Ich bin jetzt auf Eclipse umgestiegen. Das läuft wenigstens fehlerfrei - nicht wie MS J++

    Gruss und Danke für die Tipps



  • Mal ehrlich, das level ist so billig, dazu brauchst du nichtmal nen decompiler. Observation....Observation...ist gefordert



  • Blackhat schrieb:

    Mal ehrlich, das level ist so billig, dazu brauchst du nichtmal nen decompiler. Observation....Observation...ist gefordert

    Ich code lieber irgendwelche DeKryptAlgorithmen als mich mit HTTP und dessen Headeraufbau auseinanderzusetzen.



  • So löst du dieses Level nie. Viel Spass beim decrypten. Lass mich wissen wenns funktioniert hat *g*



  • Blackhat schrieb:

    So löst du dieses Level nie. Viel Spass beim decrypten. Lass mich wissen wenns funktioniert hat *g*

    Ich habe schon mitbekommen, dass zwischen lokal und global ein Unterschied besteht. Nur welcher...? Stichwort Sessions?!



  • Download doch einfach mal das http-live-headers plugin für firefox/mozilla.



  • Vielen, vielen Dank an Alle, die mir geholfen haben.

    Besonderer Dank geht an Blackhat.

    Es hat funktioniert; zwar nicht mit der Java-Version, aber egal.

    Aber irgendwie muss es doch gehen, das Headerfield auf normalen Wege auszulesen. Das Problem bestand darin, dass entweder ich keinen Zugriff bekam oder die Seite umgeleitet wurde. Unterm Strich ist es aber schon erschreckend, dass es weder mit C++/Visual C++, Java noch ActiveX möglich war, den Header auszulesen. Vermerk an mich selbst: HTTP Protokollaufbau auswändig lernen!

    Nochmals vielen Dank.

    Gruss Rostfrei[]



  • Das geht schon. Vermutlich hast du bei deinem GET-REQUEST vergessen den Cookie im Header zu setzen. Schau dir den Syntax einfach von den liveheaders ab, oder falls du UNIX nutzt hilft auch ein "man wget".



  • In Java geht das wohl so "irgendwie":

    urlConnection.setHeader("Cookie: Rostfrei SESSION_ID")
    

Anmelden zum Antworten