[ StratOS @ 24.09.2003. 11:40 ] @
Posto ne znam javu ni c jezik molio bi da mi malo pokazete sto ovo radi :
Radi se o dekompilaciji fajla joylock.class

Evo dekompila toga :
Code:

// Decompiled by DJ v3.5.5.77 Copyright 2003 Atanas Neshkov  Date: 24.9.2003 12:15:45
// Home Page : http://members.fortunecity.com/neshkov/dj.html  - Check often for new version!
// Decompiler options: packimports(3) 
// Source File Name:   joylock.java

import java.applet.Applet;
import java.applet.AppletContext;
import java.awt.*;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.StringTokenizer;

public class joylock extends Applet
{

    public void init()
    {
        super.init();
        int i = size().width - 80;
        StringTokenizer stringtokenizer = new StringTokenizer(getParameter("GENERAL"), "|", false);
        numUsers = Integer.parseInt(stringtokenizer.nextToken());
        if(Integer.parseInt(stringtokenizer.nextToken()) == 11)
            registered = true;
        else
        if(getDocumentBase().toString().startsWith("file"))
            registered = true;
        if(registered)
        {
            bkColor = new Color(Integer.parseInt(stringtokenizer.nextToken(), 16));
            textColor = new Color(Integer.parseInt(stringtokenizer.nextToken(), 16));
            linkURL = stringtokenizer.nextToken();
            if(!linkURL.equalsIgnoreCase(" "))
                decript(linkURL, 0, 0, 0, 0, 0, false);
            linkFrame = stringtokenizer.nextToken();
            loginText = stringtokenizer.nextToken();
            preLoginMessage = stringtokenizer.nextToken();
            reLinkURL = stringtokenizer.nextToken();
            reLinkFrame = stringtokenizer.nextToken();
            username = new String[numUsers];
            password = new String[numUsers];
            urls = new String[numUsers];
            frames = new String[numUsers];
            for(int j1 = 0; j1 < numUsers; j1++)
            {
                StringTokenizer stringtokenizer1 = new StringTokenizer(getParameter(Integer.toString(j1)), "|", false);
                int j = Integer.parseInt(stringtokenizer1.nextToken());
                int k = Integer.parseInt(stringtokenizer1.nextToken());
                int l = Integer.parseInt(stringtokenizer1.nextToken());
                int i1 = Integer.parseInt(stringtokenizer1.nextToken());
                String s = stringtokenizer1.nextToken();
                decript(s, j1, j, k, l, i1, true);
            }

            setBackground(bkColor);
            setLayout(null);
            loginButton = new Button();
            loginButton.setLabel("Login");
            loginButton.reshape(8, size().height - 30, size().width - 16, 24);
            loginButton.setBackground(new Color(0xc0c0c0));
            add(loginButton);
            lUsername = new Label("Username:");
            lUsername.reshape(8, size().height - 88, 64, 24);
            lUsername.setForeground(textColor);
            add(lUsername);
            lPassword = new Label("Password:");
            lPassword.reshape(8, size().height - 60, 64, 24);
            lPassword.setForeground(textColor);
            add(lPassword);
            eUsername = new TextField();
            eUsername.reshape(72, size().height - 88, i, 24);
            eUsername.setBackground(new Color(0xffffff));
            add(eUsername);
            ePassword = new TextField();
            ePassword.setEchoCharacter('*');
            ePassword.reshape(72, size().height - 60, i, 24);
            ePassword.setBackground(new Color(0xffffff));
            add(ePassword);
            textArea = new TextArea(preLoginMessage);
            textArea.reshape(8, 6, size().width - 16, size().height - 98);
            textArea.setBackground(new Color(0xffffff));
            textArea.setEditable(false);
            add(textArea);
        }
    }

    public void paint(Graphics g)
    {
        if(!registered)
        {
            g.drawString("You have the unregistered", 0, 10);
            g.drawString("version of this program", 0, 20);
            g.drawString("You need the registered version", 0, 30);
            g.drawString("for this Applet to work on the internet", 0, 40);
            g.drawString("Click HERE for registration instructions", 0, 50);
        }
    }

    void clickLoginButton(Event event)
    {
        for(int i = 0; i < numUsers; i++)
        {
            if(username[i].equalsIgnoreCase(eUsername.getText()) && password[i].equalsIgnoreCase(ePassword.getText()))
            {
                try
                {
                    URL url;
                    if(!urls[i].equalsIgnoreCase(""))
                        url = new URL(getDocumentBase(), urls[i]);
                    else
                        url = new URL(getDocumentBase(), linkURL);
                    String s;
                    if(!frames[i].equalsIgnoreCase(""))
                        s = frames[i];
                    else
                        s = linkFrame;
                    if(s != null && !s.equalsIgnoreCase(" "))
                        getAppletContext().showDocument(url, s);
                    else
                        getAppletContext().showDocument(url);
                }
                catch(MalformedURLException _ex) { }
                textArea.setText(loginText);
                return;
            }
            if(i == numUsers - 1)
            {
                eUsername.setText("");
                ePassword.setText("");
                textArea.setText("Incorrect Username or Password.");
                if(reLinkURL != null && !reLinkURL.equalsIgnoreCase(" ") && numWrongPass == 2)
                {
                    numWrongPass = 0;
                    try
                    {
                        URL url1 = new URL(getDocumentBase(), reLinkURL);
                        if(reLinkFrame != null && !reLinkFrame.equalsIgnoreCase(" "))
                            getAppletContext().showDocument(url1, reLinkFrame);
                        else
                            getAppletContext().showDocument(url1);
                    }
                    catch(MalformedURLException _ex) { }
                } else
                {
                    numWrongPass++;
                }
            }
        }

    }

    public boolean handleEvent(Event event)
    {
        if(event.key == 10 || event.target == loginButton && event.id == 1001)
        {
            clickLoginButton(event);
            return true;
        } else
        {
            return super.handleEvent(event);
        }
    }

    public boolean mouseUp(Event event, int i, int j)
    {
        if(!registered)
            try
            {
                URL url = new URL(getDocumentBase(), "http://www.coffeecup.com/");
                getAppletContext().showDocument(url);
            }
            catch(MalformedURLException _ex) { }
        return true;
    }

    final void decript(String s, int i, int j, int k, int l, int i1, boolean flag)
    {
        String s1 = "";
        String s2 = s.substring(0, 26);
        String s3 = s.substring(26, s.length());
        String as[] = new String[52];
        for(int j1 = 0; j1 < 52; j1++)
            as[j1] = "";

        as[0] = as[0] + s2.charAt(alphabet.indexOf("a"));
        as[1] = as[1] + s2.charAt(alphabet.indexOf("b"));
        as[2] = as[2] + s2.charAt(alphabet.indexOf("c"));
        as[3] = as[3] + s2.charAt(alphabet.indexOf("d"));
        as[4] = as[4] + s2.charAt(alphabet.indexOf("e"));
        as[5] = as[5] + s2.charAt(alphabet.indexOf("f"));
        as[6] = as[6] + s2.charAt(alphabet.indexOf("g"));
        as[7] = as[7] + s2.charAt(alphabet.indexOf("h"));
        as[8] = as[8] + s2.charAt(alphabet.indexOf("i"));
        as[9] = as[9] + s2.charAt(alphabet.indexOf("j"));
        as[10] = as[10] + s2.charAt(alphabet.indexOf("k"));
        as[11] = as[11] + s2.charAt(alphabet.indexOf("l"));
        as[12] = as[12] + s2.charAt(alphabet.indexOf("m"));
        as[13] = as[13] + s2.charAt(alphabet.indexOf("n"));
        as[14] = as[14] + s2.charAt(alphabet.indexOf("o"));
        as[15] = as[15] + s2.charAt(alphabet.indexOf("p"));
        as[16] = as[16] + s2.charAt(alphabet.indexOf("q"));
        as[17] = as[17] + s2.charAt(alphabet.indexOf("r"));
        as[18] = as[18] + s2.charAt(alphabet.indexOf("s"));
        as[19] = as[19] + s2.charAt(alphabet.indexOf("t"));
        as[20] = as[20] + s2.charAt(alphabet.indexOf("u"));
        as[21] = as[21] + s2.charAt(alphabet.indexOf("v"));
        as[22] = as[22] + s2.charAt(alphabet.indexOf("w"));
        as[23] = as[23] + s2.charAt(alphabet.indexOf("x"));
        as[24] = as[24] + s2.charAt(alphabet.indexOf("y"));
        as[25] = as[25] + s2.charAt(alphabet.indexOf("z"));
        as[26] = as[26] + s2.charAt(alphabet.indexOf("a"));
        as[27] = as[27] + s2.charAt(alphabet.indexOf("b"));
        as[28] = as[28] + s2.charAt(alphabet.indexOf("c"));
        as[29] = as[29] + s2.charAt(alphabet.indexOf("d"));
        as[30] = as[30] + s2.charAt(alphabet.indexOf("e"));
        as[31] = as[31] + s2.charAt(alphabet.indexOf("f"));
        as[32] = as[32] + s2.charAt(alphabet.indexOf("g"));
        as[33] = as[33] + s2.charAt(alphabet.indexOf("h"));
        as[34] = as[34] + s2.charAt(alphabet.indexOf("i"));
        as[35] = as[35] + s2.charAt(alphabet.indexOf("j"));
        as[36] = as[36] + s2.charAt(alphabet.indexOf("k"));
        as[37] = as[37] + s2.charAt(alphabet.indexOf("l"));
        as[38] = as[38] + s2.charAt(alphabet.indexOf("m"));
        as[39] = as[39] + s2.charAt(alphabet.indexOf("n"));
        as[40] = as[40] + s2.charAt(alphabet.indexOf("o"));
        as[41] = as[41] + s2.charAt(alphabet.indexOf("p"));
        as[42] = as[42] + s2.charAt(alphabet.indexOf("q"));
        as[43] = as[43] + s2.charAt(alphabet.indexOf("r"));
        as[44] = as[44] + s2.charAt(alphabet.indexOf("s"));
        as[45] = as[45] + s2.charAt(alphabet.indexOf("t"));
        as[46] = as[46] + s2.charAt(alphabet.indexOf("u"));
        as[47] = as[47] + s2.charAt(alphabet.indexOf("v"));
        as[48] = as[48] + s2.charAt(alphabet.indexOf("w"));
        as[49] = as[49] + s2.charAt(alphabet.indexOf("x"));
        as[50] = as[50] + s2.charAt(alphabet.indexOf("y"));
        as[51] = as[51] + s2.charAt(alphabet.indexOf("z"));
        for(int k1 = 26; k1 < 51; k1++)
            as[k1] = as[k1].toUpperCase();

        for(int l1 = 0; l1 < s3.length(); l1++)
            switch(s3.charAt(l1))
            {
            case 65: // 'A'
                s1 = s1 + as[26];
                break;

            case 66: // 'B'
                s1 = s1 + as[27];
                break;

            case 67: // 'C'
                s1 = s1 + as[28];
                break;

            case 68: // 'D'
                s1 = s1 + as[29];
                break;

            case 69: // 'E'
                s1 = s1 + as[30];
                break;

            case 70: // 'F'
                s1 = s1 + as[31];
                break;

            case 71: // 'G'
                s1 = s1 + as[32];
                break;

            case 72: // 'H'
                s1 = s1 + as[33];
                break;

            case 73: // 'I'
                s1 = s1 + as[34];
                break;

            case 74: // 'J'
                s1 = s1 + as[35];
                break;

            case 75: // 'K'
                s1 = s1 + as[36];
                break;

            case 76: // 'L'
                s1 = s1 + as[37];
                break;

            case 77: // 'M'
                s1 = s1 + as[38];
                break;

            case 78: // 'N'
                s1 = s1 + as[39];
                break;

            case 79: // 'O'
                s1 = s1 + as[40];
                break;

            case 80: // 'P'
                s1 = s1 + as[41];
                break;

            case 81: // 'Q'
                s1 = s1 + as[42];
                break;

            case 82: // 'R'
                s1 = s1 + as[43];
                break;

            case 83: // 'S'
                s1 = s1 + as[44];
                break;

            case 84: // 'T'
                s1 = s1 + as[45];
                break;

            case 85: // 'U'
                s1 = s1 + as[46];
                break;

            case 86: // 'V'
                s1 = s1 + as[47];
                break;

            case 87: // 'W'
                s1 = s1 + as[48];
                break;

            case 88: // 'X'
                s1 = s1 + as[49];
                break;

            case 89: // 'Y'
                s1 = s1 + as[50];
                break;

            case 90: // 'Z'
                s1 = s1 + as[51];
                break;

            case 97: // 'a'
                s1 = s1 + as[0];
                break;

            case 98: // 'b'
                s1 = s1 + as[1];
                break;

            case 99: // 'c'
                s1 = s1 + as[2];
                break;

            case 100: // 'd'
                s1 = s1 + as[3];
                break;

            case 101: // 'e'
                s1 = s1 + as[4];
                break;

            case 102: // 'f'
                s1 = s1 + as[5];
                break;

            case 103: // 'g'
                s1 = s1 + as[6];
                break;

            case 104: // 'h'
                s1 = s1 + as[7];
                break;

            case 105: // 'i'
                s1 = s1 + as[8];
                break;

            case 106: // 'j'
                s1 = s1 + as[9];
                break;

            case 107: // 'k'
                s1 = s1 + as[10];
                break;

            case 108: // 'l'
                s1 = s1 + as[11];
                break;

            case 109: // 'm'
                s1 = s1 + as[12];
                break;

            case 110: // 'n'
                s1 = s1 + as[13];
                break;

            case 111: // 'o'
                s1 = s1 + as[14];
                break;

            case 112: // 'p'
                s1 = s1 + as[15];
                break;

            case 113: // 'q'
                s1 = s1 + as[16];
                break;

            case 114: // 'r'
                s1 = s1 + as[17];
                break;

            case 115: // 's'
                s1 = s1 + as[18];
                break;

            case 116: // 't'
                s1 = s1 + as[19];
                break;

            case 117: // 'u'
                s1 = s1 + as[20];
                break;

            case 118: // 'v'
                s1 = s1 + as[21];
                break;

            case 119: // 'w'
                s1 = s1 + as[22];
                break;

            case 120: // 'x'
                s1 = s1 + as[23];
                break;

            case 121: // 'y'
                s1 = s1 + as[24];
                break;

            case 122: // 'z'
                s1 = s1 + as[25];
                break;

            case 91: // '['
            case 92: // '\\'
            case 93: // ']'
            case 94: // '^'
            case 95: // '_'
            case 96: // '`'
            default:
                s1 = s1 + s3.charAt(l1);
                break;
            }

        if(flag)
        {
            username[i] = s1.substring(0, j);
            password[i] = s1.substring(j, j + k);
            urls[i] = s1.substring(j + k, j + k + l);
            frames[i] = s1.substring(j + k + l, s1.length());
            return;
        } else
        {
            linkURL = s1;
            return;
        }
    }

    public joylock()
    {
        alphabet = "abcdefghijklmnopqrstuvwxyz";
        registered = false;
    }

    Label lUsername;
    Label lPassword;
    TextArea textArea;
    Button loginButton;
    TextField ePassword;
    TextField eUsername;
    int numUsers;
    int numWrongPass;
    String loginText;
    String linkURL;
    String linkFrame;
    String preLoginMessage;
    String reLinkURL;
    String reLinkFrame;
    String username[];
    String password[];
    String urls[];
    String frames[];
    String alphabet;
    Color textColor;
    Color bkColor;
    boolean registered;
}


a dio sorcea na page-u izgleda ovako :
Code:

<APPLET CODE="joylock.class" WIDTH=342 HEIGHT=140>
<PARAM NAME="GENERATOR" VALUE="CREATED WITH THE APPLET PASSWORD WIZARD WWW.COFFEECUP.COM">
<PARAM NAME="GENERAL" VALUE="2|11|005BB7|FFFFFF|pocjviszudnfyqbmtgewlkxarhzqqa://ufrzqkfkr.aybzbgqfkr.cbp/~qzsrxps/usesu-5/ruxj2ci.zqpu| |Yes, that's it !|Can you get past this one ?| | |">
<PARAM NAME="0" VALUE="7|12|61|0|mxupwnkazfstdqhljorvgyeibclowuhawuwlk_lrcuowsolld://pxuolfxfu.dsrorklxfu.zra/~lowuhaw/pwtwp-5/uphm2zc.olap">
<PARAM NAME="1" VALUE="7|12|61|0|pedjwcigosrbtuhmyanfkxlzqvorfubkjeoisbbcjmobpomma://wghomsgsh.akioijmgsh.fip/~mobhrpb/wbzbw-5/hwrc2fn.ompw">
</APPLET>


Vidim da se radi o nekakvom parsingu parametra i alphabeta, zato bih molio da mi tko napise sta se step by step desava kad stisnemo na 'Login' dugme.

Radi se o jednoj igri ... opet
naci cete ju ovdje :http://lightning.prohosting.com/~thegame/level-5/roman_V.html
[ StratOS @ 24.09.2003. 11:52 ] @
Ah, tipichna substitucija ..

ufrzqkfkr.aybzbgqfkr.cbp/~qzsrxps/usesu-5/ruxj2ci.zqpu
lightning.prohosting.com/~thegame/level-5/glaJ2cI.html

'j' i 'i' su ?

pxuolfxfu.dsrorklxfu.zra/~lowuhaw/pwtwp-5/uphm2zc.olap
lightning.prohosting.com/~thegame/level-5/glaM2cC.html

treba jos naci u sto idu 'm' i 'c'

i
wghomsgsh.akioijmgsh.fip/~mobhrpb/wbzbw-5/hwrc2fn.ompw
lightning.prohosting.com/~thegame/level-5/glaC2cN.html

a ovdje 'c' i 'n'

izgleda da cita username i password sa tih lokacija
[ anon676 @ 24.09.2003. 12:18 ] @
Da ti neko procita i objasni svaku liniju koda?!?
malo teze...nadj language reference i citaj, pa gde zapnes pitaj...
[ StratOS @ 24.09.2003. 12:20 ] @
Pa, nesto bas znam
Ta java ima svoje funkcije, to je malo teze, no nije opet tako tezko