rendered paste body/*
* Keygen for the second crackme by vhly[FR]
*
* Keygen by bredsaal, 2007
*
*/
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.security.MessageDigest;
import java.util.zip.CRC32;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class Keygen extends JFrame implements ActionListener {
private static JLabel label1 = new JLabel("Name");
private static JLabel label2 = new JLabel("S/N");
private static JTextField nameField = new JTextField();
private static JTextField digest = new JTextField();
private static JButton generate = new JButton("Generate");
static private int[][] n = new int[][]
{
{5,40,15},
{165,2},
{10}
};
public Keygen() {
super("Bredsaal's keygen!");
Container container = getContentPane();
container.setLayout(null);
label1.setBounds(n[0][0], n[0][0], n[0][1], n[0][1]/n[1][1]);
nameField.setBounds(n[0][0]*n[2][0], n[0][0], n[1][0], n[0][1]/n[1][1]);
label2.setBounds(n[0][0], (n[1][0]-n[0][2])/n[0][0], (n[1][1]*n[0][2])+(n[1][1]*n[0][0]), n[1][1]*n[1][1]*n[0][0]);
digest.setBounds(n[0][0]*n[0][1]-n[1][0]+n[0][2], n[0][2]*n[1][1], n[2][0]*n[0][2]-n[0][0]*n[0][2]+ ( n[1][1]+n[0][1]/n[2][0] )*n[0][2], n[0][0]+n[0][2]);
generate.setBounds(n[2][0]/n[1][1], n[0][2]*n[0][1]/(n[0][0]*n[1][1]), n[1][1]*n[1][0]-n[1][1]*n[0][2]-n[0][0]*n[2][0]-n[0][1], n[0][1]-n[2][0]);
generate.addActionListener(this);
container.add(label1);
container.add(nameField);
container.add(label2);
container.add(digest);
container.add(generate);
setDefaultCloseOperation(n[0][2]/n[0][0]);
setSize(n[1][1]*n[2][0]*n[0][0]*n[1][1]+n[1][1]*n[0][2]+n[0][0], n[1][0]-n[0][1]+n[0][0]);
setLocation(n[0][0]*n[0][1], n[0][0]*n[1][1]*n[2][0]);
setVisible(true);
}
public final void actionPerformed(ActionEvent actionevent) {
String name = nameField.getText();
if (name != null && name.length() > (n[0][0]-n[1][1])) {
byte[] is = null;
try {
MessageDigest messagedigest = MessageDigest.getInstance("MD5");
messagedigest.update(("vhly[FR]"+name).getBytes());
is = messagedigest.digest();
} catch (Exception exception) { }
CRC32 crc32 = new CRC32();
crc32.update(is);
digest.setText(Long.toString(crc32.getValue(),n[0][1]-n[1][1]*n[1][1]));
} else {
JOptionPane.showMessageDialog(this, "Your name is to short!");
}
}
public static final void main(String[] strings) {
new Keygen();
}
}