Advertisement
Guest User

Untitled

a guest
Aug 11th, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 29.97 KB | None | 0 0
  1. import org.rsbot.script.Script;
  2. import org.rsbot.script.ScriptManifest;
  3. import org.rsbot.script.wrappers.RSComponent;
  4. import org.rsbot.event.listeners.PaintListener;
  5. import org.rsbot.util.GlobalConfiguration;
  6.  
  7. import java.awt.*;
  8. import java.io.*;
  9. import java.awt.event.*;
  10. import javax.swing.*;
  11. import java.util.*;
  12.  
  13. @ScriptManifest(authors = "Pork",  name = "PINCracker", description = "Cracks bank PIN's.", version = 2.0)
  14. public class PINCracker extends Script implements PaintListener {
  15.  
  16.     private String username;
  17.     private String password;
  18.     private String pin;
  19.     private boolean logout;
  20.     private boolean useCommonPINs;
  21.     private boolean ascend;
  22.  
  23.     private String[] commonPINs = {"1950", "1951", "1952", "1953", "1954", "4970", "1955", "1956", "1957", "1958", "1959",
  24.                                    "1960", "1961", "1962", "1963", "1964", "1965", "1966", "1967", "1968", "1969",
  25.                                    "1970", "1971", "1972", "1973", "1974", "1975", "1976", "1977", "1978", "1979",
  26.                                    "1980", "1981", "1982", "1983", "1984", "1985", "1986", "1987", "1988", "1989",
  27.                                    "1990", "1991", "1992", "1993", "1994", "1995", "1996", "1997", "1998", "1999",
  28.                                    "2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009",
  29.                                    "2010", "2011", "2012", "2468", "1337", "0101", "0202", "0303", "0404", "0505",
  30.                                    "0606", "0707", "0808", "0909", "1010", "1212", "1313", "1414", "1515", "1616",
  31.                                    "1717", "1818", "1919", "2020", "2121", "2323", "2424", "2525", "2626", "2727",
  32.                                    "2828", "2929", "3030", "3131", "3232", "3434", "3535", "3636", "3737", "3838",
  33.                                    "3939", "4040", "4141", "4242", "4343", "4545", "4646", "4747", "4848", "4949",
  34.                                    "5050", "5151", "5252", "5353", "5454", "5656", "5757", "5858", "5959", "6060",
  35.                                    "6161", "6262", "6363", "6464", "6565", "6767", "6868", "6969", "7070", "7171",
  36.                                    "7272", "7373", "7474", "7575", "7676", "7878", "7979", "8080", "8181", "8282",
  37.                                    "8383", "8484", "8585", "8686", "8787", "8989", "9090", "9191", "9292", "9393",
  38.                                    "9494", "9595", "9696", "9797", "9898", "9119", "6667", "1800", "1000", "3000",
  39.                                    "4000", "5000", "6000", "7000", "8000", "9000", "1001", "1221", "1331", "1441",
  40.                                    "1551", "1661", "1771", "1881", "2112", "2332", "2442", "2552", "2662", "2772",
  41.                                    "2882", "2992", "3003", "3113", "3223", "3443", "3553", "3663", "3773", "3883",
  42.                                    "3993", "4004", "4114", "4224", "4334", "4554", "4664", "4774", "4884", "4994",
  43.                                    "5005", "5115", "5225", "5335", "5445", "5665", "5775", "5885", "5995", "6006",
  44.                                    "6116", "6226", "6336", "6446", "6556", "6776", "6886", "6996", "7007", "7117",
  45.                                    "7227", "7337", "7447", "7557", "7667", "7887", "7997", "8008", "8118", "8228",
  46.                                    "8338", "8448", "8558", "8668", "8778", "8998", "9009", "9119", "9229", "9339",
  47.                                    "9449", "9559", "9669", "9779", "9889", "0011", "0022", "0033", "0044", "0055",
  48.                                    "0066", "0077", "0088", "0099", "1100", "1122", "1133", "1144", "1155", "1166",
  49.                                    "1177", "1188", "1199", "2200", "2211", "2233", "2244", "2255", "2266", "2277",
  50.                                    "2288", "2299", "3300", "3311", "3322", "3344", "3355", "3366", "3377", "3388",
  51.                                    "3399", "4400", "4411", "4422", "4433", "4455", "4466", "4477", "4488", "4499",
  52.                                    "5500", "5511", "5522", "5533", "5544", "5566", "5577", "5588", "5599", "6600",
  53.                                    "6611", "6622", "6633", "6644", "6655", "6677", "6688", "6699", "7700", "7711",
  54.                                    "7722", "7733", "7744", "7755", "7766", "7788", "7799", "8800", "8811", "8822",
  55.                                    "8833", "8844", "8855", "8866", "8877", "8899", "9900", "9911", "9922", "9933",
  56.                                    "9944", "9955", "9966", "9977", "9988"};
  57.     private int state;
  58.     private int tried = 0;
  59.     private long banktimeout = 10;
  60.     private String startPIN = pin;
  61.     private boolean commonPINsFinished = true;
  62.     private String actualPIN = "";
  63.  
  64.     //Paint variables
  65.     public long startTime = 0;
  66.     public long millis = 0;
  67.     public long hours = 0;
  68.     public long minutes = 0;
  69.     public long seconds = 0;
  70.     public long last = 0;
  71.     public int totalTried = 0;
  72.     public int pinsPerHour = 0;
  73.     public String currentPIN;
  74.     public boolean pinIsCracked = false;
  75.  
  76.     //GUI variables
  77.     private final JFrame frame = new JFrame();
  78.     private javax.swing.JButton startButton;
  79.     private javax.swing.JCheckBox logoutCheckBox;
  80.     private javax.swing.JCheckBox ascendCheckBox;
  81.     private javax.swing.JCheckBox useCommonCheckBox;
  82.     private javax.swing.JLabel usernameLabel;
  83.     private javax.swing.JLabel titleLabel;
  84.     private javax.swing.JLabel passwordLabel;
  85.     private javax.swing.JLabel startPinLabel;
  86.     private javax.swing.JPanel accountInfoPanel;
  87.     private javax.swing.JPanel settingsPanel;
  88.     private javax.swing.JPasswordField passwordTextField;
  89.     private javax.swing.JTextField usernameTextField;
  90.     private javax.swing.JTextField startPinTextField;
  91.  
  92.     private Properties settings = new Properties();
  93.     private Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
  94.  
  95.     public boolean activateCondition() {
  96.     return interfaces.get(13).isValid() || interfaces.getComponent(14, 34).isValid();
  97.     }
  98.  
  99.     public long bankTimeout() {
  100.         return banktimeout;
  101.     }
  102.  
  103.     public void enterCode(final String aPin) {
  104.         if (!interfaces.get(13).isValid())
  105.             return;
  106.     final RSComponent[] children = interfaces.get(13).getComponents();
  107.     state = 0;
  108.     for (int i = 1; i < 5; i++) {
  109.             if (children[i].containsText("?"))
  110.                 state++;
  111.     }
  112.     state = 4 - state;
  113.         currentPIN = pin;
  114.     if (!interfaces.get(759).isValid())
  115.             return;
  116.     final RSComponent[] bankPin = interfaces.get(759).getComponents();
  117.     for (int i = 0; i < bankPin.length; i++) {
  118.             if (bankPin[i].containsText(aPin.substring(state, state + 1))) {
  119.                 actualPIN += bankPin[i].getText();
  120.                 bankPin[i].doClick();
  121.                 break;
  122.             }
  123.     }
  124.         if (state >= 3) {
  125.             tried++;
  126.             totalTried++;
  127.             log("Entered PIN: " + actualPIN);
  128.             if (tried == 2) {
  129.                 if(interfaces.get(762).isValid() || (interfaces.get(211).containsText("has been cancelled")))
  130.                     pinIsCracked();
  131.                 else
  132.                     sleep(11000);
  133.             }
  134.             else if(tried >= 3) {
  135.                 sleep(2000);
  136.                 if(interfaces.get(762).isValid() || (interfaces.get(211).containsText("has been cancelled")))
  137.                     pinIsCracked();
  138.                 else {
  139.                     sleep(14000);
  140.                     tried = 0;
  141.                     while(game.isLoggedIn())
  142.                         logout();
  143.                 }
  144.             }
  145.             try {
  146.                 BufferedWriter file = new BufferedWriter(new FileWriter(new File(GlobalConfiguration.Paths.getSettingsDirectory(), "\\" + username.toUpperCase().replaceAll(" ", "_") + " Progress.txt")));
  147.                 file.write("Username: " + username);
  148.                 file.newLine();
  149.                 file.write("Password: " + password);
  150.                 file.newLine();
  151.                 if (useCommonPINs && !commonPINsFinished)
  152.                     file.write("Last PIN attempted: " + currentPIN + " (From the common PIN list)");
  153.                 else
  154.                     file.write("Last PIN attempted: " + currentPIN);
  155.                 file.close();
  156.             }
  157.             catch (Exception e) {}
  158.             int temp = 0;
  159.             if (useCommonPINs && (totalTried <= commonPINs.length)) {
  160.                 if (totalTried >= commonPINs.length) {
  161.                     temp = Integer.parseInt(startPIN);
  162.                     commonPINsFinished = true;
  163.                 }
  164.                 else
  165.                     temp = Integer.parseInt(commonPINs[totalTried]);
  166.             }
  167.             else {
  168.                 temp = Integer.parseInt(pin);
  169.                 if (ascend) {
  170.                     if (Integer.parseInt(actualPIN) == temp)
  171.                         temp++;
  172.                     else
  173.                         log.warning("Entered wrong PIN... retrying...");
  174.                 }
  175.                 else {
  176.                     if (Integer.parseInt(actualPIN) == temp)
  177.                         temp--;
  178.                     else
  179.                         log.warning("Entered wrong PIN... retrying...");
  180.                 }
  181.                 if (useCommonPINs) {
  182.                     for (int i=0; i<commonPINs.length; i++) {
  183.                         if (temp == Integer.parseInt(commonPINs[i])) {
  184.                             if (ascend) {
  185.                                 if (Integer.parseInt(actualPIN) == temp)
  186.                                     temp++;
  187.                                 else
  188.                                     log.warning("Entered wrong PIN... retrying...");
  189.                             }
  190.                             else {
  191.                                 if (Integer.parseInt(actualPIN) == temp)
  192.                                     temp--;
  193.                                 else
  194.                                     log.warning("Entered wrong PIN... retrying...");
  195.                             }
  196.                         }
  197.                     }
  198.                 }
  199.             }
  200.             if (temp >= 0 && temp <= 9)
  201.                 pin = String.format("000%d", temp);
  202.             else if(temp >= 10 && temp <= 99)
  203.                 pin = String.format("00%d", temp);
  204.             else if(temp >= 100 && temp <= 999)
  205.                 pin = String.format("0%d", temp);
  206.             else if(temp >= 1000 && temp <= 9999)
  207.                 pin = "" + temp;
  208.             actualPIN = "";
  209.         }
  210.     }
  211.  
  212.     public void logout() {
  213.         if (game.isLoggedIn()) {
  214.             while (!game.isOnLogoutTab()) {
  215.                 mouse.click(755, 9, true);
  216.                 sleep(200, 800);
  217.             }
  218.             mouse.click(643, 375, true);
  219.             while (game.isLoggedIn()) {
  220.                 mouse.click(643, 375, true);
  221.                 sleep(500, 1200);
  222.             }
  223.         }
  224.     }
  225.     public void login() {
  226.         if (interfaces.get(906).containsText("account has not logged out") || interfaces.get(596).containsText("account has not logged out"))
  227.             mouse.click(382, 322, true);
  228.         else if(interfaces.get(596).containsText("Error connecting"))
  229.             mouse.click(382, 305, true);
  230.         else if(interfaces.get(906).isValid()) {
  231.             interfaces.get(906).getComponent(171).doClick();
  232.             while(interfaces.get(906).containsText("Entering game"))
  233.                 sleep(500);
  234.         }
  235.         else if (interfaces.get(596).isValid()) {
  236.             if(interfaces.get(596).getComponent(65).getText().length() == 0) {
  237.                 interfaces.get(596).getComponent(65).doClick();
  238.                 sleep(1000);
  239.                 keyboard.sendText(username, false);
  240.             }
  241.             if(interfaces.get(596).getComponent(71).getText().length() == 0) {
  242.                 interfaces.get(596).getComponent(71).doClick();
  243.                 sleep(1000);
  244.                 keyboard.sendText(password, false);
  245.             }
  246.             interfaces.get(596).getComponent(51).doClick();
  247.             sleep(3000);
  248.         }
  249.     }
  250.  
  251.     public void pinIsCracked() {
  252.         pinIsCracked = true;
  253.         log("PIN SUCCESSFULLY CRACKED!");
  254.         log.warning("PIN: " + currentPIN);
  255.         try {
  256.             BufferedWriter file = new BufferedWriter(new FileWriter(new File(GlobalConfiguration.Paths.getSettingsDirectory(), "\\" + username.toUpperCase().replaceAll(" ", "_") + " Progress.txt")));
  257.             file.write("Username: " + username);
  258.             file.newLine();
  259.             file.write("Password: " + password);
  260.             file.newLine();
  261.             file.write("CRACKED PIN: " + currentPIN);
  262.             log("Info wrote to " + GlobalConfiguration.Paths.getSettingsDirectory() + "\\" + username.toUpperCase().replaceAll(" ", "_") + " Progress.txt");
  263.             file.close();
  264.         }
  265.         catch (Exception e) {}
  266.         if (logout) {
  267.             log("Logging out...");
  268.             while(game.isLoggedIn())
  269.                 game.logout(false);
  270.             stopScript();
  271.         }
  272.         else {
  273.             log("Staying logged in...");
  274.             mouse.setSpeed(8);
  275.             while(true) {
  276.                 sleep(1000);
  277.                 if (random(0,60) == 50) {
  278.                     camera.setAngle(random(0,360));
  279.                     mouse.moveRandomly(300);
  280.                 }
  281.                 while(!game.isLoggedIn())
  282.                     login();
  283.             }
  284.         }
  285.     }
  286.  
  287.     @Override
  288.     public boolean onStart() {
  289.         startTime = System.currentTimeMillis();
  290.         mouse.setSpeed(1);
  291.         initGUI();
  292.         while (frame.isVisible())
  293.             sleep(500);
  294.         currentPIN = pin;
  295.         startPIN = pin;
  296.         if (useCommonPINs) {
  297.             pin = commonPINs[0];
  298.             currentPIN = commonPINs[0];
  299.             commonPINsFinished = false;
  300.         }
  301.         return true;
  302.     }
  303.  
  304.     @Override
  305.     public int loop() {
  306.         if (game.isLoggedIn()) {
  307.             if (interfaces.get(13).isValid()) {
  308.                 enterCode(pin);
  309.                 sleep(900, 1000);
  310.             }
  311.             else if(interfaces.get(762).isValid() || (interfaces.get(211).containsText("has been cancelled")))
  312.                 pinIsCracked();
  313.             else
  314.                 bank.open();
  315.         }
  316.         else
  317.             login();
  318.         return random(100, 300);
  319.     }
  320.  
  321.     public void onRepaint(Graphics g1) {
  322.         Graphics2D g = (Graphics2D)g1;
  323.  
  324.         millis = System.currentTimeMillis() - startTime;
  325.         hours = millis / (1000 * 60 * 60);
  326.         millis -= hours * (1000 * 60 * 60);
  327.         minutes = millis / (1000 * 60);
  328.         millis -= minutes * (1000 * 60);
  329.         seconds = millis / 1000;
  330.         String hoursString = "" + hours;
  331.         String minutesString = "" + minutes;
  332.         String secondsString = "" + seconds;
  333.         if (hours < 10)
  334.             hoursString = "0" + hours;
  335.         if (minutes < 10)
  336.             minutesString = "0" + minutes;
  337.         if (seconds < 10)
  338.             secondsString = "0" + seconds;
  339.  
  340.         if (!pinIsCracked) {
  341.             g.setColor(new Color(0,0,255,200));
  342.             int x = (int) mouse.getLocation().getX();
  343.             int y = (int) mouse.getLocation().getY();
  344.             g.drawLine(x, 0, x, game.getHeight());
  345.             g.drawLine(0,y,game.getWidth(),y);
  346.             if (commonPINsFinished) {
  347.                 g.setColor(new Color(0, 0, 255, 230));
  348.                 g.fillRect(5, 5, 190, 65);
  349.                 g.setFont(new Font("Arial", Font.BOLD, 15));
  350.                 g.setColor(Color.WHITE);
  351.                 g.drawString("Runtime: " + hoursString + ":" + minutesString + ":" + secondsString, 10, 20);
  352.                 g.drawString("# of PIN Attempts: " + totalTried, 10, 35);
  353.                 g.drawString("Current PIN Attempt: " + currentPIN, 10, 50);
  354.                 g.drawString("PINs/hour: " + ((totalTried) * 3600000 / (System.currentTimeMillis() - startTime)), 10, 65);
  355.             }
  356.             else {
  357.                 g.setColor(new Color(0, 0, 255, 230));
  358.                 g.fillRect(5, 5, 190, 75);
  359.                 g.setFont(new Font("Arial", Font.BOLD, 15));
  360.                 g.setColor(Color.WHITE);
  361.                 g.drawString("Runtime: " + hoursString + ":" + minutesString + ":" + secondsString, 10, 20);
  362.                 g.drawString("# of PIN Attempts: " + totalTried, 10, 35);
  363.                 g.drawString("Current PIN Attempt: " + currentPIN, 10, 50);
  364.                 g.setFont(new Font("Arial", Font.BOLD, 10));
  365.                 g.drawString("(Trying common PINs first: " + totalTried + "/" + commonPINs.length + ")", 10, 61);
  366.                 g.setFont(new Font("Arial", Font.BOLD, 15));
  367.                 g.drawString("PINs/hour: " + ((totalTried) * 3600000 / (System.currentTimeMillis() - startTime)), 10, 76);
  368.             }
  369.         }
  370.         else {
  371.             g.setColor(new Color(0, 255, 0, 230));
  372.             g.fillRect(5, 5, 190, 65);
  373.             g.setFont(new Font("Arial", Font.BOLD, 20));
  374.             g.setColor(Color.WHITE);
  375.             g.drawString("PIN CRACKED", 34, 25);
  376.             g.setFont(new Font("Arial", Font.BOLD, 40));
  377.             g.drawString(currentPIN, 56, 62);
  378.         }
  379.     }
  380.  
  381.     public void initGUI() {
  382.         try {
  383.           UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
  384.         }
  385.         catch (Exception e) {}
  386.  
  387.         titleLabel = new javax.swing.JLabel();
  388.         accountInfoPanel = new javax.swing.JPanel();
  389.         usernameTextField = new javax.swing.JTextField();
  390.         usernameLabel = new javax.swing.JLabel();
  391.         passwordLabel = new javax.swing.JLabel();
  392.         passwordTextField = new javax.swing.JPasswordField();
  393.         settingsPanel = new javax.swing.JPanel();
  394.         startPinLabel = new javax.swing.JLabel();
  395.         startPinTextField = new javax.swing.JTextField();
  396.         logoutCheckBox = new javax.swing.JCheckBox();
  397.         useCommonCheckBox = new javax.swing.JCheckBox();
  398.         ascendCheckBox = new javax.swing.JCheckBox();
  399.         ascendCheckBox = new javax.swing.JCheckBox();
  400.         startButton = new javax.swing.JButton();
  401.  
  402.         startPinLabel.setText("0000");
  403.         ascendCheckBox.setSelected(true);
  404.         try {
  405.             settings.load(new FileInputStream(GlobalConfiguration.Paths.getSettingsDirectory()+"\\PINCrackerSettings.ini"));
  406.             if (settings.getProperty("username").length() != 0)
  407.                 usernameTextField.setText(settings.getProperty("username"));
  408.             if (settings.getProperty("password").length() != 0)
  409.                 passwordTextField.setText(settings.getProperty("password"));
  410.             if (settings.getProperty("startpin").length() != 0)
  411.                 startPinTextField.setText(settings.getProperty("startpin"));
  412.             if (settings.getProperty("ascend").length() != 0)
  413.                 ascendCheckBox.setSelected(Boolean.parseBoolean(settings.getProperty("ascend")));
  414.             if (settings.getProperty("logout").length() != 0)
  415.                 logoutCheckBox.setSelected(Boolean.parseBoolean(settings.getProperty("logout")));
  416.             if (settings.getProperty("usecommon").length() != 0)
  417.                 useCommonCheckBox.setSelected(Boolean.parseBoolean(settings.getProperty("usecommon")));
  418.         }
  419.         catch (Exception e) {}
  420.         frame.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
  421.         frame.setTitle("Pork's PIN Cracker");
  422.         frame.setResizable(false);
  423.  
  424.         titleLabel.setFont(new java.awt.Font("Arial", 1, 24));
  425.         titleLabel.setForeground(new java.awt.Color(50, 50, 50));
  426.         titleLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
  427.         titleLabel.setText("Pork's PIN Cracker");
  428.  
  429.         accountInfoPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Login Details", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 11), new java.awt.Color(51, 51, 51)));
  430.  
  431.         usernameTextField.setFont(new java.awt.Font("Tahoma", 0, 12));
  432.  
  433.         usernameLabel.setFont(new java.awt.Font("Tahoma", 0, 12));
  434.         usernameLabel.setText("Username");
  435.  
  436.         passwordLabel.setFont(new java.awt.Font("Tahoma", 0, 12));
  437.         passwordLabel.setText("Password");
  438.  
  439.         passwordTextField.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
  440.  
  441.         javax.swing.GroupLayout accountInfoPanelLayout = new javax.swing.GroupLayout(accountInfoPanel);
  442.         accountInfoPanel.setLayout(accountInfoPanelLayout);
  443.         accountInfoPanelLayout.setHorizontalGroup(
  444.             accountInfoPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  445.             .addGroup(accountInfoPanelLayout.createSequentialGroup()
  446.                 .addContainerGap()
  447.                 .addGroup(accountInfoPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  448.                     .addComponent(usernameLabel)
  449.                     .addComponent(passwordLabel))
  450.                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  451.                 .addGroup(accountInfoPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  452.                     .addComponent(passwordTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 141, Short.MAX_VALUE)
  453.                     .addComponent(usernameTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 141, Short.MAX_VALUE))
  454.                 .addContainerGap())
  455.         );
  456.         accountInfoPanelLayout.setVerticalGroup(
  457.             accountInfoPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  458.             .addGroup(accountInfoPanelLayout.createSequentialGroup()
  459.                 .addGroup(accountInfoPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  460.                     .addComponent(usernameLabel)
  461.                     .addComponent(usernameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
  462.                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  463.                 .addGroup(accountInfoPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  464.                     .addComponent(passwordLabel)
  465.                     .addComponent(passwordTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
  466.                 .addContainerGap(6, Short.MAX_VALUE))
  467.         );
  468.  
  469.         settingsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Settings", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 11), new java.awt.Color(51, 51, 51)));
  470.  
  471.         startPinLabel.setFont(new java.awt.Font("Tahoma", 0, 12));
  472.         startPinLabel.setText("Starting PIN");
  473.  
  474.         startPinTextField.setFont(new java.awt.Font("Tahoma", 0, 12));
  475.         startPinTextField.setHorizontalAlignment(javax.swing.JTextField.CENTER);
  476.  
  477.         logoutCheckBox.setFont(new java.awt.Font("Tahoma", 0, 12));
  478.         logoutCheckBox.setText("Log out after PIN is cracked");
  479.  
  480.         useCommonCheckBox.setFont(new java.awt.Font("Tahoma", 0, 12));
  481.         useCommonCheckBox.setText("Try common PINs first");
  482.  
  483.         ascendCheckBox.setFont(new java.awt.Font("Tahoma", 0, 12));
  484.         ascendCheckBox.setLabel("Ascend");
  485.  
  486.         javax.swing.GroupLayout settingsPanelLayout = new javax.swing.GroupLayout(settingsPanel);
  487.         settingsPanel.setLayout(settingsPanelLayout);
  488.         settingsPanelLayout.setHorizontalGroup(
  489.             settingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  490.             .addGroup(settingsPanelLayout.createSequentialGroup()
  491.                 .addContainerGap()
  492.                 .addGroup(settingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  493.                     .addComponent(useCommonCheckBox)
  494.                     .addGroup(settingsPanelLayout.createSequentialGroup()
  495.                         .addComponent(startPinLabel)
  496.                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  497.                         .addComponent(startPinTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE)
  498.                         .addGap(18, 18, 18)
  499.                         .addComponent(ascendCheckBox))
  500.                     .addComponent(logoutCheckBox))
  501.                 .addContainerGap(14, Short.MAX_VALUE))
  502.         );
  503.         settingsPanelLayout.setVerticalGroup(
  504.             settingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  505.             .addGroup(settingsPanelLayout.createSequentialGroup()
  506.                 .addGroup(settingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  507.                     .addComponent(startPinLabel)
  508.                     .addComponent(startPinTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  509.                     .addComponent(ascendCheckBox))
  510.                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  511.                 .addComponent(logoutCheckBox)
  512.                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  513.                 .addComponent(useCommonCheckBox)
  514.                 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  515.         );
  516.  
  517.         startButton.setFont(new java.awt.Font("Tahoma", 0, 14));
  518.         startButton.setActionCommand("Cancel");
  519.         startButton.setLabel("Start");
  520.  
  521.         javax.swing.GroupLayout layout = new javax.swing.GroupLayout(frame.getContentPane());
  522.         frame.getContentPane().setLayout(layout);
  523.         layout.setHorizontalGroup(
  524.             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  525.             .addGroup(layout.createSequentialGroup()
  526.                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  527.                     .addGroup(layout.createSequentialGroup()
  528.                         .addContainerGap()
  529.                         .addComponent(settingsPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  530.                     .addGroup(layout.createSequentialGroup()
  531.                         .addContainerGap()
  532.                         .addComponent(accountInfoPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  533.                     .addGroup(layout.createSequentialGroup()
  534.                         .addContainerGap()
  535.                         .addComponent(startButton, javax.swing.GroupLayout.DEFAULT_SIZE, 231, Short.MAX_VALUE)))
  536.                 .addContainerGap())
  537.             .addGroup(layout.createSequentialGroup()
  538.                 .addGap(18, 18, 18)
  539.                 .addComponent(titleLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  540.                 .addGap(20, 20, 20))
  541.         );
  542.         layout.setVerticalGroup(
  543.             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  544.             .addGroup(layout.createSequentialGroup()
  545.                 .addContainerGap()
  546.                 .addComponent(titleLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 17, javax.swing.GroupLayout.PREFERRED_SIZE)
  547.                 .addGap(11, 11, 11)
  548.                 .addComponent(accountInfoPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 81, javax.swing.GroupLayout.PREFERRED_SIZE)
  549.                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  550.                 .addComponent(settingsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 98, javax.swing.GroupLayout.PREFERRED_SIZE)
  551.                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  552.                 .addComponent(startButton, javax.swing.GroupLayout.DEFAULT_SIZE, 35, Short.MAX_VALUE)
  553.                 .addContainerGap())
  554.         );
  555.         startButton.addActionListener(new ActionListener() {
  556.             public void actionPerformed(ActionEvent e) {
  557.                 boolean startPinIsValid = true;
  558.                 for (int i=0; i<startPinTextField.getText().length(); i++) {
  559.                     if (!Character.isDigit(startPinTextField.getText().charAt(i))) {
  560.                         startPinIsValid = false;
  561.                         break;
  562.                     }
  563.                 }
  564.                 if (startPinTextField.getText().length() != 4 || !startPinIsValid)
  565.                     JOptionPane.showMessageDialog(frame, "The starting PIN must be 4 digits.", "Pork's PIN Cracker", JOptionPane.ERROR_MESSAGE);
  566.                 else {
  567.                     settings.setProperty("username", usernameTextField.getText());
  568.                     settings.setProperty("password", passwordTextField.getText());
  569.                     settings.setProperty("startpin", startPinTextField.getText());
  570.                     settings.setProperty("ascend", String.valueOf(ascendCheckBox.isSelected()));
  571.                     settings.setProperty("logout", String.valueOf(logoutCheckBox.isSelected()));
  572.                     settings.setProperty("usecommon", String.valueOf(useCommonCheckBox.isSelected()));
  573.                     username = usernameTextField.getText();
  574.                     password = passwordTextField.getText();
  575.                     pin = startPinTextField.getText();
  576.                     ascend = ascendCheckBox.isSelected();
  577.                     logout = logoutCheckBox.isSelected();
  578.                     useCommonPINs = useCommonCheckBox.isSelected();
  579.                     frame.setVisible(false);
  580.                     try {
  581.                         settings.save(new FileOutputStream(GlobalConfiguration.Paths.getSettingsDirectory() + "\\PINCrackerSettings.ini"), "Settings for Pork's PIN Cracker");
  582.                     }
  583.                     catch (Exception f) {}
  584.                 }
  585.             }
  586.         });
  587.         frame.pack();
  588.         frame.setLocation((dim.width-frame.getSize().width)/2, (dim.height-frame.getSize().height)/2);
  589.         frame.setVisible(true);
  590.     }
  591. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement