Advertisement
Guest User

Untitled

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