一个applet程序写的网页密码框,通过这个程序找出密码,大家来试试!!还有分得哈!! 说明方法!!// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi
// Source File Name: Base64.javaimport java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FilterInputStream;
import java.io.FilterOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.Serializable;public class Base64
{
public static class OutputStream extends FilterOutputStream
{ private boolean encode;
private int position;
private byte buffer[];
private int bufferLength;
private int lineLength; public void write(int i)
throws IOException
{
buffer[position++] = (byte)i;
if(position >= bufferLength)
{
if(encode)
{
out.write(Base64.encode3to4(buffer, bufferLength));
lineLength += 4;
if(lineLength >= 76)
{
out.write(10);
lineLength = 0;
}
} else
{
out.write(Base64.decode4to3(buffer));
}
position = 0;
}
} public void write(byte abyte0[], int i, int j)
throws IOException
{
for(int k = 0; k < j; k++)
write(abyte0[i + k]); } public void flush()
throws IOException
{
if(position > 0)
if(encode)
out.write(Base64.encode3to4(buffer, position));
else
throw new IOException("Base64 input not properly padded.");
super.flush();
out.flush();
} public void close()
throws IOException
{
flush();
super.close();
out.close();
buffer = null;
out = null;
} public OutputStream(OutputStream outputstream)
{
this(outputstream, true);
} public OutputStream(OutputStream outputstream, boolean flag)
{
super(outputstream);
encode = flag;
bufferLength = flag ? 3 : 4;
buffer = new byte[bufferLength];
position = 0;
lineLength = 0;
}
} public static class InputStream extends FilterInputStream
{ private boolean encode;
private int position;
private byte buffer[];
private int bufferLength;
private int numSigBytes; public int read()
throws IOException
{
if(position < 0)
if(encode)
{
byte abyte0[] = new byte[3];
numSigBytes = 0;
for(int i = 0; i < 3; i++)
try
{
int k = in.read();
if(k >= 0)
{
abyte0[i] = (byte)k;
numSigBytes++;
}
continue;
}
catch(IOException ioexception)
{
if(i == 0)
throw ioexception;
} if(numSigBytes > 0)
{
Base64.encode3to4(abyte0, 0, numSigBytes, buffer, 0);
position = 0;
}
} else
{
byte abyte1[] = new byte[4];
int j = 0;
j = 0;
do
{
if(j >= 4)
break;
int l = 0;
do
l = in.read();
while(l >= 0 && Base64.DECODABET[l & 0x7f] < -5);
if(l < 0)
break;
abyte1[j] = (byte)l;
j++;
} while(true);
if(j == 4)
{
numSigBytes = Base64.decode4to3(abyte1, 0, buffer, 0);
position = 0;
}
}
if(position >= 0)
{
if(position >= numSigBytes)
return -1;
byte byte0 = buffer[position++];
if(position >= bufferLength)
position = -1;
return byte0;
} else
{
return -1;
}
} public int read(byte abyte0[], int i, int j)
throws IOException
{
int k;
for(k = 0; k < j; k++)
{
int l = read();
if(l < 0)
return -1;
abyte0[i + k] = (byte)l;
} return k;
} public InputStream(java.io.InputStream inputstream)
{
this(inputstream, false);
} public InputStream(java.io.InputStream inputstream, boolean flag)
{
super(inputstream);
encode = flag;
bufferLength = flag ? 4 : 3;
buffer = new byte[bufferLength];
position = -1;
}
}
public static final boolean ENCODE = true;
public static final boolean DECODE = false;
private static final int MAX_LINE_LENGTH = 76;
private static final byte EQUALS_SIGN = 61;
private static final byte NEW_LINE = 10;
private static final byte ALPHABET[] = {
65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
85, 86, 87, 88, 89, 90, 97, 98, 99, 100,
101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
121, 122, 48, 49, 50, 51, 52, 53, 54, 55,
56, 57, 43, 47
};
private static final byte DECODABET[] = {
-9, -9, -9, -9, -9, -9, -9, -9, -9, -5,
-5, -9, -9, -5, -9, -9, -9, -9, -9, -9,
-9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
-9, -9, -5, -9, -9, -9, -9, -9, -9, -9,
-9, -9, -9, 62, -9, -9, -9, 63, 52, 53,
54, 55, 56, 57, 58, 59, 60, 61, -9, -9,
-9, -1, -9, -9, -9, 0, 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, -9, -9, -9, -9, -9, -9, 26, 27, 28,
29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
49, 50, 51, -9, -9, -9, -9
};
private static final byte BAD_ENCODING = -9;
private static final byte WHITE_SPACE_ENC = -5;
private static final byte EQUALS_SIGN_ENC = -1;
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi
// Source File Name: Base64.javaimport java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FilterInputStream;
import java.io.FilterOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.Serializable;public class Base64
{
public static class OutputStream extends FilterOutputStream
{ private boolean encode;
private int position;
private byte buffer[];
private int bufferLength;
private int lineLength; public void write(int i)
throws IOException
{
buffer[position++] = (byte)i;
if(position >= bufferLength)
{
if(encode)
{
out.write(Base64.encode3to4(buffer, bufferLength));
lineLength += 4;
if(lineLength >= 76)
{
out.write(10);
lineLength = 0;
}
} else
{
out.write(Base64.decode4to3(buffer));
}
position = 0;
}
} public void write(byte abyte0[], int i, int j)
throws IOException
{
for(int k = 0; k < j; k++)
write(abyte0[i + k]); } public void flush()
throws IOException
{
if(position > 0)
if(encode)
out.write(Base64.encode3to4(buffer, position));
else
throw new IOException("Base64 input not properly padded.");
super.flush();
out.flush();
} public void close()
throws IOException
{
flush();
super.close();
out.close();
buffer = null;
out = null;
} public OutputStream(OutputStream outputstream)
{
this(outputstream, true);
} public OutputStream(OutputStream outputstream, boolean flag)
{
super(outputstream);
encode = flag;
bufferLength = flag ? 3 : 4;
buffer = new byte[bufferLength];
position = 0;
lineLength = 0;
}
} public static class InputStream extends FilterInputStream
{ private boolean encode;
private int position;
private byte buffer[];
private int bufferLength;
private int numSigBytes; public int read()
throws IOException
{
if(position < 0)
if(encode)
{
byte abyte0[] = new byte[3];
numSigBytes = 0;
for(int i = 0; i < 3; i++)
try
{
int k = in.read();
if(k >= 0)
{
abyte0[i] = (byte)k;
numSigBytes++;
}
continue;
}
catch(IOException ioexception)
{
if(i == 0)
throw ioexception;
} if(numSigBytes > 0)
{
Base64.encode3to4(abyte0, 0, numSigBytes, buffer, 0);
position = 0;
}
} else
{
byte abyte1[] = new byte[4];
int j = 0;
j = 0;
do
{
if(j >= 4)
break;
int l = 0;
do
l = in.read();
while(l >= 0 && Base64.DECODABET[l & 0x7f] < -5);
if(l < 0)
break;
abyte1[j] = (byte)l;
j++;
} while(true);
if(j == 4)
{
numSigBytes = Base64.decode4to3(abyte1, 0, buffer, 0);
position = 0;
}
}
if(position >= 0)
{
if(position >= numSigBytes)
return -1;
byte byte0 = buffer[position++];
if(position >= bufferLength)
position = -1;
return byte0;
} else
{
return -1;
}
} public int read(byte abyte0[], int i, int j)
throws IOException
{
int k;
for(k = 0; k < j; k++)
{
int l = read();
if(l < 0)
return -1;
abyte0[i + k] = (byte)l;
} return k;
} public InputStream(java.io.InputStream inputstream)
{
this(inputstream, false);
} public InputStream(java.io.InputStream inputstream, boolean flag)
{
super(inputstream);
encode = flag;
bufferLength = flag ? 4 : 3;
buffer = new byte[bufferLength];
position = -1;
}
}
public static final boolean ENCODE = true;
public static final boolean DECODE = false;
private static final int MAX_LINE_LENGTH = 76;
private static final byte EQUALS_SIGN = 61;
private static final byte NEW_LINE = 10;
private static final byte ALPHABET[] = {
65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
85, 86, 87, 88, 89, 90, 97, 98, 99, 100,
101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
121, 122, 48, 49, 50, 51, 52, 53, 54, 55,
56, 57, 43, 47
};
private static final byte DECODABET[] = {
-9, -9, -9, -9, -9, -9, -9, -9, -9, -5,
-5, -9, -9, -5, -9, -9, -9, -9, -9, -9,
-9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
-9, -9, -5, -9, -9, -9, -9, -9, -9, -9,
-9, -9, -9, 62, -9, -9, -9, 63, 52, 53,
54, 55, 56, 57, 58, 59, 60, 61, -9, -9,
-9, -1, -9, -9, -9, 0, 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, -9, -9, -9, -9, -9, -9, 26, 27, 28,
29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
49, 50, 51, -9, -9, -9, -9
};
private static final byte BAD_ENCODING = -9;
private static final byte WHITE_SPACE_ENC = -5;
private static final byte EQUALS_SIGN_ENC = -1;
{
} public static void main(String args[])
{
String s = "Hello, world";
s = "abcd";
byte abyte0[] = encodeString(s).getBytes();
byte abyte1[] = decode(abyte0, 0, abyte0.length);
System.out.println("\n\n" + s + ":" + new String(abyte0) + ":" + new String(abyte1));
try
{
FileInputStream fileinputstream = new FileInputStream("c:\\abcd.txt");
InputStream inputstream = new InputStream(fileinputstream, false);
for(int i = 0; (i = inputstream.read()) > 0;);
}
catch(Exception exception)
{
exception.printStackTrace();
}
} private static byte[] encode3to4(byte abyte0[])
{
return encode3to4(abyte0, 3);
} private static byte[] encode3to4(byte abyte0[], int i)
{
byte abyte1[] = new byte[4];
encode3to4(abyte0, 0, i, abyte1, 0);
return abyte1;
}
private static byte[] encode3to4(byte abyte0[], int i, int j, byte abyte1[], int k)
{
int l = (j <= 0 ? 0 : (abyte0[i] << 24) >>> 8) | (j <= 1 ? 0 : (abyte0[i + 1] << 24) >>> 16) | (j <= 2 ? 0 : (abyte0[i + 2] << 24) >>> 24);
switch(j)
{
case 3: // '\003'
abyte1[k] = ALPHABET[l >>> 18];
abyte1[k + 1] = ALPHABET[l >>> 12 & 0x3f];
abyte1[k + 2] = ALPHABET[l >>> 6 & 0x3f];
abyte1[k + 3] = ALPHABET[l & 0x3f];
return abyte1; case 2: // '\002'
abyte1[k] = ALPHABET[l >>> 18];
abyte1[k + 1] = ALPHABET[l >>> 12 & 0x3f];
abyte1[k + 2] = ALPHABET[l >>> 6 & 0x3f];
abyte1[k + 3] = 61;
return abyte1; case 1: // '\001'
abyte1[k] = ALPHABET[l >>> 18];
abyte1[k + 1] = ALPHABET[l >>> 12 & 0x3f];
abyte1[k + 2] = 61;
abyte1[k + 3] = 61;
return abyte1;
}
return abyte1;
} public static String encodeObject(Serializable serializable)
{
ByteArrayOutputStream bytearrayoutputstream;
OutputStream outputstream;
ObjectOutputStream objectoutputstream;
bytearrayoutputstream = null;
outputstream = null;
objectoutputstream = null;
IOException ioexception;
String s;
try
{
bytearrayoutputstream = new ByteArrayOutputStream();
outputstream = new OutputStream(bytearrayoutputstream, true);
objectoutputstream = new ObjectOutputStream(outputstream);
objectoutputstream.writeObject(serializable);
}
finally
{
try
{
objectoutputstream.close();
}
catch(Exception exception1) { }
try
{
outputstream.close();
}
catch(Exception exception2) { }
try
{
bytearrayoutputstream.close();
}
catch(Exception exception3) { }
}
break MISSING_BLOCK_LABEL_99;
ioexception;
ioexception.printStackTrace();
s = null;
return s;
return new String(bytearrayoutputstream.toByteArray());
} public static String encodeBytes(byte abyte0[])
{
return encodeBytes(abyte0, 0, abyte0.length);
} public static String encodeBytes(byte abyte0[], int i, int j)
{
int k = (j * 4) / 3;
byte abyte1[] = new byte[k + (j % 3 <= 0 ? 0 : 4) + k / 76];
int l = 0;
int i1 = 0;
int j1 = j - 2;
int k1 = 0;
while(l < j1)
{
encode3to4(abyte0, l, 3, abyte1, i1);
if((k1 += 4) == 76)
{
abyte1[i1 + 4] = 10;
i1++;
k1 = 0;
}
l += 3;
i1 += 4;
}
if(l < j)
{
encode3to4(abyte0, l, j - l, abyte1, i1);
i1 += 4;
}
return new String(abyte1, 0, i1);
} public static String encodeString(String s)
{
return encodeBytes(s.getBytes());
} private static byte[] decode4to3(byte abyte0[])
{
byte abyte1[] = new byte[3];
int i = decode4to3(abyte0, 0, abyte1, 0);
byte abyte2[] = new byte[i];
for(int j = 0; j < i; j++)
abyte2[j] = abyte1[j]; return abyte2;
}
{
if(abyte0[i + 2] == 61)
{
int k = (DECODABET[abyte0[i]] << 24) >>> 6 | (DECODABET[abyte0[i + 1]] << 24) >>> 12;
abyte1[j] = (byte)(k >>> 16);
return 1;
}
if(abyte0[i + 3] == 61)
{
int l = (DECODABET[abyte0[i]] << 24) >>> 6 | (DECODABET[abyte0[i + 1]] << 24) >>> 12 | (DECODABET[abyte0[i + 2]] << 24) >>> 18;
abyte1[j] = (byte)(l >>> 16);
abyte1[j + 1] = (byte)(l >>> 8);
return 2;
} else
{
int i1 = (DECODABET[abyte0[i]] << 24) >>> 6 | (DECODABET[abyte0[i + 1]] << 24) >>> 12 | (DECODABET[abyte0[i + 2]] << 24) >>> 18 | (DECODABET[abyte0[i + 3]] << 24) >>> 24;
abyte1[j] = (byte)(i1 >> 16);
abyte1[j + 1] = (byte)(i1 >> 8);
abyte1[j + 2] = (byte)i1;
return 3;
}
} public static byte[] decode(String s)
{
byte abyte0[] = s.getBytes();
return decode(abyte0, 0, abyte0.length);
} public static String decodeToString(String s)
{
return new String(decode(s));
} public static Object decodeToObject(String s)
{
byte abyte0[];
ByteArrayInputStream bytearrayinputstream;
ObjectInputStream objectinputstream;
abyte0 = decode(s);
bytearrayinputstream = null;
objectinputstream = null;
Object obj;
bytearrayinputstream = new ByteArrayInputStream(abyte0);
objectinputstream = new ObjectInputStream(bytearrayinputstream);
obj = objectinputstream.readObject();
try
{
bytearrayinputstream.close();
}
catch(Exception exception) { }
try
{
objectinputstream.close();
}
catch(Exception exception1) { }
return obj;
Object obj1;
obj1;
Object obj2;
((IOException) (obj1)).printStackTrace();
obj2 = null;
try
{
bytearrayinputstream.close();
}
catch(Exception exception2) { }
try
{
objectinputstream.close();
}
catch(Exception exception3) { }
return obj2;
obj1;
((ClassNotFoundException) (obj1)).printStackTrace();
obj2 = null;
try
{
bytearrayinputstream.close();
}
catch(Exception exception4) { }
try
{
objectinputstream.close();
}
catch(Exception exception5) { }
return obj2;
Exception exception6;
exception6;
try
{
bytearrayinputstream.close();
}
catch(Exception exception7) { }
try
{
objectinputstream.close();
}
catch(Exception exception8) { }
throw exception6;
} public static byte[] decode(byte abyte0[], int i, int j)
{
int k = (j * 3) / 4;
byte abyte1[] = new byte[k];
int l = 0;
byte abyte2[] = new byte[4];
int i1 = 0;
boolean flag = false;
boolean flag1 = false;
boolean flag2 = false;
for(int j1 = 0; j1 < j; j1++)
{
byte byte0 = (byte)(abyte0[j1] & 0x7f);
byte byte1 = DECODABET[byte0];
if(byte1 >= -5)
{
if(byte1 < -1)
continue;
abyte2[i1++] = byte0;
if(i1 <= 3)
continue;
l += decode4to3(abyte2, 0, abyte1, l);
i1 = 0;
if(byte0 == 61)
break;
} else
{
System.err.println("Bad Base64 input character at " + j1 + ": " + abyte0[j1] + "(decimal)");
return null;
}
} byte abyte3[] = new byte[l];
System.arraycopy(abyte1, 0, abyte3, 0, l);
return abyte3;
}
}
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi
// Source File Name: Base64.javaimport java.io.*;public static class InputStream extends FilterInputStream
{ private boolean encode;
private int position;
private byte buffer[];
private int bufferLength;
private int numSigBytes; public int read()
throws IOException
{
if(position < 0)
if(encode)
{
byte abyte0[] = new byte[3];
numSigBytes = 0;
for(int i = 0; i < 3; i++)
try
{
int k = in.read();
if(k >= 0)
{
abyte0[i] = (byte)k;
numSigBytes++;
}
continue;
}
catch(IOException ioexception)
{
if(i == 0)
throw ioexception;
} if(numSigBytes > 0)
{
Base64.access$000(abyte0, 0, numSigBytes, buffer, 0);
position = 0;
}
} else
{
byte abyte1[] = new byte[4];
int j = 0;
j = 0;
do
{
if(j >= 4)
break;
int l = 0;
do
l = in.read();
while(l >= 0 && Base64.access$100()[l & 0x7f] < -5);
if(l < 0)
break;
abyte1[j] = (byte)l;
j++;
} while(true);
if(j == 4)
{
numSigBytes = Base64.access$200(abyte1, 0, buffer, 0);
position = 0;
}
}
if(position >= 0)
{
if(position >= numSigBytes)
return -1;
byte byte0 = buffer[position++];
if(position >= bufferLength)
position = -1;
return byte0;
} else
{
return -1;
}
} public int read(byte abyte0[], int i, int j)
throws IOException
{
int k;
for(k = 0; k < j; k++)
{
int l = read();
if(l < 0)
return -1;
abyte0[i + k] = (byte)l;
} return k;
} public InputStream(InputStream inputstream)
{
this(inputstream, false);
} public InputStream(InputStream inputstream, boolean flag)
{
super(inputstream);
encode = flag;
bufferLength = flag ? 4 : 3;
buffer = new byte[bufferLength];
position = -1;
}
}
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi
// Source File Name: Base64.javaimport java.io.*;public static class OutputStream extends FilterOutputStream
{ private boolean encode;
private int position;
private byte buffer[];
private int bufferLength;
private int lineLength; public void write(int i)
throws IOException
{
buffer[position++] = (byte)i;
if(position >= bufferLength)
{
if(encode)
{
out.write(Base64.access$300(buffer, bufferLength));
lineLength += 4;
if(lineLength >= 76)
{
out.write(10);
lineLength = 0;
}
} else
{
out.write(Base64.access$400(buffer));
}
position = 0;
}
} public void write(byte abyte0[], int i, int j)
throws IOException
{
for(int k = 0; k < j; k++)
write(abyte0[i + k]); } public void flush()
throws IOException
{
if(position > 0)
if(encode)
out.write(Base64.access$300(buffer, position));
else
throw new IOException("Base64 input not properly padded.");
super.flush();
out.flush();
} public void close()
throws IOException
{
flush();
super.close();
out.close();
buffer = null;
out = null;
} public OutputStream(OutputStream outputstream)
{
this(outputstream, true);
} public OutputStream(OutputStream outputstream, boolean flag)
{
super(outputstream);
encode = flag;
bufferLength = flag ? 3 : 4;
buffer = new byte[bufferLength];
position = 0;
lineLength = 0;
}
}
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi
// Source File Name: Training.javaimport java.applet.Applet;
import java.applet.AppletContext;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;public class Training extends Applet
implements ActionListener
{ Label mylabel;
Label answer;
TextField code;
String infile;
String inpass;
Button mybutton;
InputStream countConn;
BufferedReader countData;
URL inURL; public void init()
{
add(mylabel);
add(code);
add(mybutton);
add(answer);
mybutton.addActionListener(this);
mylabel.setBackground(Color.white);
answer.setBackground(Color.white);
setBackground(Color.white);
setLayout(new BorderLayout());
add(mylabel, "West");
add(code, "Center");
add(mybutton, "East");
add(answer, "South");
try
{
inURL = new URL(getCodeBase(), infile);
}
catch(MalformedURLException malformedurlexception)
{
getAppletContext().showStatus("Bad Counter URL:" + inURL);
}
inFile();
} public void actionPerformed(ActionEvent actionevent)
{
String s = code.getText();
try
{
String s1 = Base64.encodeString(inpass);
if(s.equals(s1))
{
s1 = s1.replaceAll("=", "");
code.setText(s1 + ".htm");
answer.setText("Go to: " + s1 + ".htm");
} else
{
answer.setText("密码错误");
}
}
catch(Exception exception)
{
showStatus("验证失败!");
}
} public Training()
{
mylabel = new Label("请输入密码:");
answer = new Label("", 1);
code = new TextField(10);
mybutton = new Button("确定");
infile = "Color.jpg";
countConn = null;
countData = null;
inURL = null;
} public void inFile()
{
new StringBuffer();
try
{
countConn = inURL.openStream();
countData = new BufferedReader(new InputStreamReader(countConn));
String s;
if((s = countData.readLine()) != null)
inpass = s;
else
getAppletContext().showStatus("IO Error:");
}
catch(IOException ioexception)
{
getAppletContext().showStatus("IO Error:" + ioexception.getMessage());
}
try
{
countConn.close();
countData.close();
return;
}
catch(Exception exception)
{
answer.setText("网络错误,请确认网络连通");
}
}
}