All pastes #610315 Raw Edit

Stuff

public text v1 · immutable
·published 2007-07-09 12:03 UTC
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();
    }
}