Advertisement
Guest User

Untitled

a guest
May 3rd, 2017
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.78 KB | None | 0 0
  1. import java.awt.*;
  2. import java.io.IOException;
  3. import java.math.BigInteger;
  4.  
  5. public abstract class Login extends SocketConnecter {
  6.  
  7. protected final void login(String user, String pass) {
  8. try {
  9. username = user;
  10. user = DataOperations.addCharacters(user, 20);
  11. password = pass;
  12. pass = DataOperations.addCharacters(pass, 20);
  13. if (user.trim().length() == 0) {
  14. loginScreenPrint("You must enter both a username", "and a password - Please try again");
  15. return;
  16. }
  17. loginScreenPrint("Please wait...", "Connecting to server");
  18. streamClass = new StreamClass(makeSocket(SERVER_IP, SERVER_PORT), this);
  19. streamClass.maxPacketReadCount = maxPacketReadCount;
  20. long l = DataOperations.stringLength12ToLong(user);
  21. streamClass.createPacket(32);
  22. streamClass.addByte((int) (l >> 16 & 31L));
  23. streamClass.addString(this.getClass().getName().toUpperCase());
  24. streamClass.finalisePacket();
  25. long sessionID = streamClass.read8ByteLong();
  26. if (sessionID == 0L) {
  27. loginScreenPrint("Login server offline.", "Please try again in a few mins");
  28. return;
  29. }
  30. System.out.print("Session ID: " + sessionID);
  31. int sessionRotationKeys[] = new int[4];
  32. sessionRotationKeys[0] = (int)(Math.random() * 99999999D);
  33. sessionRotationKeys[1] = (int)(Math.random() * 99999999D);
  34. sessionRotationKeys[2] = (int)(sessionID >> 32);
  35. sessionRotationKeys[3] = (int)sessionID;
  36. DataEncryption dataEncryption = new DataEncryption(new byte[500]);
  37. dataEncryption.offset = 0;
  38. dataEncryption.add4ByteInt(sessionRotationKeys[0]);
  39. dataEncryption.add4ByteInt(sessionRotationKeys[1]);
  40. dataEncryption.add4ByteInt(sessionRotationKeys[2]);
  41. dataEncryption.add4ByteInt(sessionRotationKeys[3]);
  42. dataEncryption.add4ByteInt(0); // UID
  43. dataEncryption.addString(user);
  44. dataEncryption.addString(pass);
  45. dataEncryption.encryptPacketWithKeys(key, modulus);
  46. streamClass.createPacket(0);
  47. streamClass.addByte(0);
  48. streamClass.add2ByteInt(26);
  49. streamClass.addBytes(dataEncryption.packet, 0, dataEncryption.offset);
  50. streamClass.finalisePacket();
  51. int loginResponse = streamClass.readInputStream();
  52. System.out.println(" - Login Response:" + loginResponse);
  53. sendPingPacketReadPacketData();
  54. if (loginResponse == 99) {
  55. reconnectTries = 0;
  56. return;
  57. }
  58. if (loginResponse == 0) {
  59. reconnectTries = 0;
  60. return;
  61. }
  62. if (loginResponse == 1) {
  63. reconnectTries = 0;
  64. return;
  65. }
  66. if (loginResponse == -1) {
  67. loginScreenPrint("Error unable to login.", "Server timed out");
  68. return;
  69. }
  70. // 0 = Valid
  71. // 1 = Reconnecting
  72. if (loginResponse == 2) {
  73. loginScreenPrint("Invalid username or password.", "Try again, or create a new account");
  74. return;
  75. }
  76. if (loginResponse == 3) {
  77. loginScreenPrint("That username is already logged in.", "Wait 60 seconds then retry");
  78. return;
  79. }
  80. if (loginResponse == 4) {
  81. loginScreenPrint("The client has been updated.", "Please download the newest one");
  82. return;
  83. }
  84. if (loginResponse == 5) {
  85. loginScreenPrint("Error unable to login.", "Server rejected session");
  86. return;
  87. }
  88. if (loginResponse == 6) {
  89. loginScreenPrint("Account disabled.", "Contact an admin for details");
  90. return;
  91. }
  92. if (loginResponse == 7) {
  93. loginScreenPrint("Error - failed to decode profile.", "Contact an admin");
  94. return;
  95. }
  96. if (loginResponse == 8) {
  97. loginScreenPrint("IP Already in use.", "You may only login once at a time");
  98. return;
  99. }
  100. if (loginResponse == 9) {
  101. loginScreenPrint("Account already in use.", "You may only login to one character at a time");
  102. return;
  103. }
  104. // 99 = Mod/Admin
  105. loginScreenPrint("Error unable to login.", "Unrecognised response code");
  106. return;
  107. }
  108. catch (Exception exception) {
  109. System.out.println(String.valueOf(exception));
  110. }
  111. if (reconnectTries > 0) {
  112. try {
  113. Thread.sleep(5000L);
  114. }
  115. catch (Exception _ex) {
  116. }
  117. reconnectTries--;
  118. login(username, password);
  119. }
  120. loginScreenPrint("Sorry! Unable to connect.", "Check internet settings or try another world");
  121. }
  122.  
  123. private void loginScreenPrint(String string, String string2) {
  124. System.out.println(string+" "+string2);
  125. }
  126.  
  127. protected final void sendPingPacketReadPacketData() {
  128. System.err.println(packetData[0] & 0xff);
  129. long l = System.currentTimeMillis();
  130. if (streamClass.containsData())
  131. lastPing = l;
  132. if (l - lastPing > 5000L) {
  133. lastPing = l;
  134. streamClass.createPacket(5);
  135. streamClass.formatPacket();
  136. }
  137. try {
  138. streamClass.writePacket(20);
  139. }
  140. catch (IOException _ex) {
  141. return;
  142. }
  143. int packetLength = streamClass.readPacket(packetData);
  144. if (packetLength > 0) {
  145. streamClass.createPacket(5);
  146. streamClass.formatPacket();
  147. }
  148. }
  149.  
  150. public Login() {
  151. username = "";
  152. password = "";
  153. packetData = new byte[5000];
  154. }
  155.  
  156. public static int maxPacketReadCount;
  157. String username;
  158. String password;
  159. public static String SERVER_IP = "127.0.0.1";
  160. public static int SERVER_PORT = 43594;
  161. public StreamClass streamClass;
  162. protected byte[] packetData;
  163. int reconnectTries;
  164. private static BigInteger key = new BigInteger("1370158896620336158431733257575682136836100155721926632321599369132092701295540721504104229217666225601026879393318399391095704223500673696914052239029335");
  165. private static BigInteger modulus = new BigInteger("1549611057746979844352781944553705273443228154042066840514290174539588436243191882510185738846985723357723362764835928526260868977814405651690121789896823");
  166. long lastPing;
  167.  
  168.  
  169.  
  170. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement