Advertisement
Guest User

Untitled

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