Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @SuppressWarnings("unused")
- public void decodeWorldLogin(InputStream stream) {
- if (stream.readInt() != Settings.CUSTOM_CLIENT_BUILD) {
- session.getLoginPackets().sendClientPacket(6);
- return;
- }
- boolean unknownEquals14 = stream.readUnsignedByte() == 1;
- int rsaBlockSize = stream.readUnsignedShort();
- if (rsaBlockSize > stream.getRemaining()) {
- session.getLoginPackets().sendClientPacket(10);
- return;
- }
- byte[] data = new byte[rsaBlockSize];
- stream.readBytes(data, 0, rsaBlockSize);
- InputStream rsaStream = new InputStream(Utils.cryptRSA(data, Settings.PRIVATE_EXPONENT, Settings.MODULUS));
- if (rsaStream.readUnsignedByte() != 10) {
- session.getLoginPackets().sendClientPacket(10);
- return;
- }
- int[] isaacKeys = new int[4];
- for (int i = 0; i < isaacKeys.length; i++) {
- isaacKeys[i] = rsaStream.readInt();
- }
- if (rsaStream.readLong() != 0L) { // rsa block check, pass part
- session.getLoginPackets().sendClientPacket(10);
- return;
- }
- String password = rsaStream.readString();
- if (password.length() > 30 || password.length() < 3) {
- session.getLoginPackets().sendClientPacket(3);
- return;
- }
- // byte[] encryptionBytes = new byte[rsaBlockSize];
- // IO.get(encryptionBytes);
- //IIOByteBuffer rsaBuffer = IIOByteBuffer.wrap(new BigInteger(encryptionBytes)
- // .modPow(124817005588125647809117879199397283083667705315564613156739994191947203087588178019274822899264375289256768279350707462323224935164397716960012839522284599403178354375756834439360773630557594779096198481616127809786280987566685808803846799010169706751282312593675029797179479247652299058331358912361126262897, 171286556844629909342424324163806347581597051809497205696615553727362352089772523878158470346736381333250011992457803357796285205851898845748442353241869611599214135325835472851718359527188905801813546788543324715344643940136495041853324603281930450207864590832776296691824830092881128505846445839702853787329).toByteArray());
- password = Encrypt.encryptSHA1(password);
- String unknown = Utils.longToString(rsaStream.readLong());
- rsaStream.readLong(); // random value
- rsaStream.readLong(); // random value
- stream.decodeXTEA(isaacKeys, stream.getOffset(), stream.getLength());
- boolean stringUsername = stream.readUnsignedByte() == 1; // unknown
- String username = Utils.formatPlayerNameForProtocol(stringUsername ? stream.readString() : Utils.longToString(stream.readLong()));
- //String mac = stream.readString();
- int displayMode = stream.readUnsignedByte();
- int screenWidth = stream.readUnsignedShort();
- int screenHeight = stream.readUnsignedShort();
- int unknown2 = stream.readUnsignedByte();
- stream.skip(24); // 24bytes directly from a file, no idea whats there
- String settings = stream.readString();
- int affid = stream.readInt();
- stream.skip(stream.readUnsignedByte()); // useless settings
- /*
- * if (stream.readUnsignedByte() != 6) { //personal data start
- * session.getLoginPackets().sendClientPacket(10); return; } int os =
- * stream.readUnsignedByte(); boolean x64Arch =
- * stream.readUnsignedByte() == 1; int osVersion =
- * stream.readUnsignedByte(); int osVendor = stream.readUnsignedByte();
- * int javaVersion = stream.readUnsignedByte(); int javaVersionBuild =
- * stream.readUnsignedByte(); int javaVersionBuild2 =
- * stream.readUnsignedByte(); boolean hasApplet =
- * stream.readUnsignedByte() == 1; int heap =
- * stream.readUnsignedShort(); int availableProcessors =
- * stream.readUnsignedByte(); int ram = stream.read24BitInt(); int
- * cpuClockFrequency = stream.readUnsignedShort(); int cpuInfo3 =
- * stream.readUnsignedByte(); int cpuInfo4 = stream.readUnsignedByte();
- * int cpuInfo5 = stream.readUnsignedByte(); String empty1 =
- * stream.readJagString(); String empty2 = stream.readJagString();
- * String empty3 = stream.readJagString(); String empty4 =
- * stream.readJagString(); int unused1 = stream.readUnsignedByte(); int
- * unused2 = stream.readUnsignedShort(); MachineInformation mInformation
- * = new MachineInformation(os, x64Arch, osVersion, osVendor,
- * javaVersion, javaVersionBuild, javaVersionBuild2, hasApplet, heap,
- * availableProcessors, ram, cpuClockFrequency, cpuInfo3, cpuInfo4,
- * cpuInfo5);
- */
- MachineInformation mInformation = null;
- int unknown3 = stream.readInt();
- long userFlow = stream.readLong();
- boolean hasAditionalInformation = stream.readUnsignedByte() == 1;
- if (hasAditionalInformation)
- {
- stream.readString(); // aditionalInformation
- }
- boolean hasJagtheora = stream.readUnsignedByte() == 1;
- boolean js = stream.readUnsignedByte() == 1;
- boolean hc = stream.readUnsignedByte() == 1;
- int unknown4 = stream.readByte();
- int unknown5 = stream.readInt();
- String unknown6 = stream.readString();
- boolean unknown7 = stream.readUnsignedByte() == 1;
- for (int index = 0; index < Cache.STORE.getIndexes().length; index++) {
- int crc = Cache.STORE.getIndexes()[index] == null ? -1011863738 : Cache.STORE.getIndexes()[index].getCRC();
- int receivedCRC = stream.readInt();
- if (crc != receivedCRC && index < 32) {
- session.getLoginPackets().sendClientPacket(6);
- return;
- }
- }
- String mac = stream.readString();
- System.out.println("mac:" + mac);
- stream.readInt();
- System.out.println("mac:" + mac);
- if (Utils.invalidAccountName(username)) {
- session.getLoginPackets().sendClientPacket(3);
- return;
- }
- if (World.getPlayers().size() >= Settings.PLAYERS_LIMIT - 10) {
- session.getLoginPackets().sendClientPacket(7);
- return;
- }
- if (World.containsPlayer(username)) {
- session.getLoginPackets().sendClientPacket(5);
- return;
- }
- if (AntiFlood.getSessionsIP(session.getIP()) > 10) {
- session.getLoginPackets().sendClientPacket(9);
- return;
- }
- if (GetRekt.isMacBanned(mac)) {
- session.getLoginPackets().sendClientPacket(26);
- System.out.println("Mac banned player trying to access server! ("+username+", "+mac+")");
- return;
- }
- Player player;
- if (!SerializableFilesManager.containsPlayer(username)) {
- player = new Player(password);
- player.setMacAddress(mac);
- } else {
- player = SerializableFilesManager.loadPlayer(username); // u derp, we didnt init the class
- if (player == null) {
- session.getLoginPackets().sendClientPacket(20);
- return;
- }
- if (player.getMacAddress() == null) {
- System.out.println("Setting mac address for "+username+": "+mac+"");
- player.setMacAddress(mac);
- } else {
- if (!mac.equalsIgnoreCase(player.getMacAddress())) {
- System.err.println("Mismatch Mac address for "+username+"! Updating! (Old: "+player.getMacAddress()+", New: "+mac+")");
- player.setMacAddress(mac);
- }
- }
- if (!SerializableFilesManager.createBackup(username)) {
- session.getLoginPackets().sendClientPacket(20);
- return;
- }
- if (username.toLowerCase().contains("dragonkk") || username.toLowerCase().contains("apache")) {
- session.getLoginPackets().sendClientPacket(5);
- return;
- }
- if (username.startsWith("mod") && !username.equalsIgnoreCase("mod_skyline")) {
- session.getLoginPackets().sendClientPacket(18);
- return;
- } //0-90-1B-8C-AB
- //E-7B-5E-87-5F
- // if (!player.getMacAddress().equals("") &&
- // !session.getIP().equals("127.0.0.1")
- // && !player.getMacAddress().equals("0-90-1B-8C-AB")
- // && !player.getMacAddress().equals("BC-EE-7B-5E-87-5F") &&
- // username.equalsIgnoreCase("hydrix")) {
- // session.getLoginPackets().sendClientPacket(22);
- // return;
- // }
- // if (!player.getMacAddress().equals("") &&
- // !session.getIP().equals("127.0.0.1")
- // && !player.getMacAddress().equals("0-90-1B-8C-AB")
- // && !player.getMacAddress().equals("7A-79-19-6A-C7-3A")
- // && username.equalsIgnoreCase("mod_skyline")) {
- // session.getLoginPackets().sendClientPacket(22);
- // return;
- // }
- if (!session.getIP().equals("127.0.0.1")) {
- if (!password.equals(player.getPassword())) {
- session.getLoginPackets().sendClientPacket(3);
- return;
- }
- }
- }
- if (player.isPermBanned() || player.getBanned() > Utils.currentTimeMillis()) {
- session.getLoginPackets().sendClientPacket(4);
- return;
- }
- player.init(session, username, displayMode, screenWidth, screenHeight, mInformation, new IsaacKeyPair(isaacKeys));
- session.getLoginPackets().sendLoginDetails(player);
- session.setDecoder(3, player);
- session.setEncoder(2, player);
- player.start();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement