Коллеги, здравствуйте. Прошу Вашей помощи, если возможно. Решил помаяться дурью и написать своего бота на Java.
Написал все до момента получения от сервера ответа на отправленный мной пакет RequestAuthLogin. (Т.е. до проверки сервером моего логина и пароля)...
Ниже лог работы программы, на двух серверах...на первом авторегистрация отключена, на втором включена.
Итог - на первом мне приходит сообщение о не верном логине или пароле (хотя я на 100% уверен что они верные).
На втором приходит ответ LoginOk.
Понимаю что скорее всего проблема в кодировке, но никак не могу понять что нужно изменить. Протокол и там и там c621. Логин и Пароль должны быть в кодироке ASCII, но что сделать нужно не понимаю, голова пухнет...может подскажите?
Код:
run:
l2jbotnew.connection.ConnectionData:: Получен пакет, id: 0, размером :184+2
l2jbotnew.connection.ConnectionData:: Содержание пакета: 0 6e bc fa 65 21 c6 0 0 b1 10 1d 78 85 33 1e 5d e4 6c 70 bc 6a 22 d7 c5 31 ad 69 ae db 1a 57 78 38 8c b4 fb 3e 12 cf a6 26 ee 15 24 c0 9c a0 e2 42 c8 33 ab 47 ce 62 4f 1d 8 7f 77 e4 c4 39 8b 2 7e 31 5c e 5b d 2f cf 9d 16 68 ca 3d 76 54 de fa 9a 15 ee f5 47 a9 b6 14 a0 fc 65 39 f5 af dd bf d7 1e ac aa 27 61 4a 8a 5e 7e 89 be 70 34 1e 1c 9b 8f d6 8b 17 b0 ef 7f c7 e4 fe f6 32 4c 5a 13 6e 4f 18 ee 4c 82 4e 95 dd 29 fc 9c c3 77 20 b6 ad 97 f7 e0 bd 7 ce 31 6a 59 e7 ff 9b 52 3 a5 ac 14 10 e6 e6 c9 0 64 26 9f 61 6a 88 e4 f1 d0 9c b1 7c 71 48
l2jbotnew.connection.ConnectionData:: Определен тип поступившего пакета: Init
l2jbotnew.connection.ConnectionData:: Текущий id сессии: 1710931054
l2jbotnew.connection.ConnectionData:: Текущий протокол сервера: c621
LoginIncomePacketHandler:: Исходящий пакет AuthGameGuard подготовлен к отправке
LoginIncomePacketHandler:: На сервер отправлен пакет, размером: 34+2
LoginIncomePacketHandler:: Содержимое пакета: 7 6e bc fa 65 4e 95 dd 29 fc 9c c3 77 20 b6 ad 97 f7 e0 bd 7 0 0 0 ac b e3 f4 0 0 0 0
l2jbotnew.connection.ConnectionData:: Получен пакет, id: 11, размером :32+2
l2jbotnew.connection.ConnectionData:: Содержание пакета: b 6e bc fa 65 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 71 d8 25 e0 63 c6 2f 8e 7c a2 f0
l2jbotnew.connection.ConnectionData:: Определен тип поступившего пакета: GGAuth
LoginIncomePacketHandler:: Исходящий пакет RequestAuthLogin подготовлен к отправке
LoginIncomePacketHandler:: На сервер отправлен пакет, размером: 170+2
LoginIncomePacketHandler:: Содержимое пакета: 0 cc c8 bb 68 de 99 af 81 15 54 dc 4 c 40 65 a4 25 93 be 8b 2f 57 c5 2a 4d c9 0 4f e6 46 2e c2 9a 97 de 6b 3a b4 dd 71 24 9e af 71 99 88 87 f1 c2 21 86 ed 15 57 9a ce c4 93 b8 d7 6a c0 42 17 40 90 58 cd 1b 20 83 f0 55 e4 95 49 d7 99 4b 94 29 72 7 9f 86 50 6 d1 d7 9c 2d e7 76 c1 c 99 67 95 5f fa c 75 ce 5 8c cd c1 ca 4b 4f 13 bf e2 d4 af 4c 2a b5 3b 93 70 f0 7d 96 97 2f a6 b4 6e bc fa 65 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 0 de fc cc e6 0 0 0 0
l2jbotnew.connection.ConnectionData:: Получен пакет, id: 1, размером :16+2
l2jbotnew.connection.ConnectionData:: Содержание пакета: 1 3 0 0 0 59 df ca 3e ac 64 76 3f f6 bb bc
l2jbotnew.connection.ConnectionData:: Определен тип поступившего пакета: LoginFail
LOGIN FAIL (USER OR PASSWORD IS WRONG)
Код:
run:
l2jbotnew.connection.ConnectionData:: Получен пакет, id: 0, размером :184+2
l2jbotnew.connection.ConnectionData:: Содержание пакета: 0 dc 0 ef a 21 c6 0 0 6d 6 36 4e 4a eb b6 90 9c dc ea 9b bf bc bb a6 8b c0 3b dc d0 d3 fc c7 bc e4 23 6f 77 85 e9 ae 4c 1c a7 56 d8 b8 77 a5 9f d5 73 dd 56 b2 ca 33 2c ef fb 8 6e 12 9c d8 a5 53 a1 9f 44 c2 2b 41 0 1 15 3b 7d a2 a4 8d 33 e2 7c 79 82 6f 7e 94 2e 2e 89 f b5 e7 80 41 dd d0 37 e c7 fc 35 81 c7 b6 fb 3d 1f 58 5d 80 a7 46 61 c5 f3 b 4e dd 7b 44 5b d0 86 77 a3 54 a9 b 1f cf fa a3 a5 92 4e 95 dd 29 fc 9c c3 77 20 b6 ad 97 f7 e0 bd 7 9a 4 d0 fa 79 e2 6e b7 ed 7b 5c 25 58 85 d2 40 0 a6 eb 34 e4 f3 8 85 d 96 56 bc f9 6f 84
l2jbotnew.connection.ConnectionData:: Определен тип поступившего пакета: Init
l2jbotnew.connection.ConnectionData:: Текущий id сессии: 183435484
l2jbotnew.connection.ConnectionData:: Текущий протокол сервера: c621
LoginIncomePacketHandler:: Исходящий пакет AuthGameGuard подготовлен к отправке
LoginIncomePacketHandler:: На сервер отправлен пакет, размером: 34+2
LoginIncomePacketHandler:: Содержимое пакета: 7 dc 0 ef a 4e 95 dd 29 fc 9c c3 77 20 b6 ad 97 f7 e0 bd 7 0 0 0 c3 b9 5f e1 0 0 0 0
l2jbotnew.connection.ConnectionData:: Получен пакет, id: 11, размером :32+2
l2jbotnew.connection.ConnectionData:: Содержание пакета: b dc 0 ef a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 da 28 a8 70 b9 72 41 71 bf 5a 6
l2jbotnew.connection.ConnectionData:: Определен тип поступившего пакета: GGAuth
LoginIncomePacketHandler:: Исходящий пакет RequestAuthLogin подготовлен к отправке
LoginIncomePacketHandler:: На сервер отправлен пакет, размером: 170+2
LoginIncomePacketHandler:: Содержимое пакета: 0 40 f2 83 e3 ec 91 9d ba 39 92 bc c9 c 85 d8 50 9 2e 3a 5e 7a 11 ed 75 1b 77 50 2c d5 80 3a ce f0 41 50 1f 3b 8c 37 b5 52 a9 a2 39 48 6 4a 56 12 95 f4 1e 36 9 d1 14 3f dd bf c4 f0 26 3c 3b f8 92 6d 24 f1 24 b0 44 79 3a 72 d7 19 8b 39 8b 1f ed 36 2b 7a 38 b2 8a 19 7 45 da 14 bb c6 50 5c e9 c9 2b de e1 73 98 7f e8 84 16 4b eb b5 b5 f3 c4 7a 81 8f d5 2a 9f 5 9a 1a a 89 34 c5 4d dc 0 ef a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 0 6d 8d 63 94 0 0 0 0
l2jbotnew.connection.ConnectionData:: Получен пакет, id: 3, размером :56+2
l2jbotnew.connection.ConnectionData:: Содержание пакета: 3 bc 80 73 57 e1 20 a5 2a 0 0 0 0 0 0 0 0 ea 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 20 48 7e b1 83 9e
l2jbotnew.connection.ConnectionData:: Получен пакет, id: 1, размером :8+2
l2jbotnew.connection.ConnectionData:: Содержание пакета: 1 4 c7 e4 1 4 c7 e4
l2jbotnew.connection.ConnectionData:: Определен тип поступившего пакета: LoginFail
LOGIN FAIL (UNKNOW)
Целый код на Java выкладывать не буду, объясню просто что делаю с логином и паролем:
В этом классе, помимо прочего устанавливается логин и пароль, а так же для удобства сразу переводится в байты в конструкторе
Код:
private String _loginstr = "***";
private String _passwordstr = "***";
private byte[] _login;
private byte[] _password;
public ConnectionData(){
crypt = new NewCrypt(true);
_login = _loginstr.getBytes();
_password = _passwordstr.getBytes();
}
Далее в классе пакета RequestAuthLogin при его формировании:
П.с. строка getClient().getConnection().getConnectionData().ge tLogin() - возвращает byte[] _login из предыдущего листинга/класса. Пароль аналогично.
Код:
byte byteLogin[] = getClient().getConnection().getConnectionData().getLogin();
byte bytePassword[] = getClient().getConnection().getConnectionData().getPassword();
int t = 98;
int pendolum = 14 - byteLogin.length;
for (int i = 0; i < byteLogin.length; i++) {
_raw[t] = byteLogin[i];
t++;
}
t = t + pendolum;
for (int i = 0; i < bytePassword.length; i++) {
_raw[t] = bytePassword[i];
t++;
}
try {
System.out.println(new String(_raw, 98, 14, StandardCharsets.UTF_8));
Cipher rsaCipher = Cipher.getInstance("RSA/ECB/nopadding");
rsaCipher.init(Cipher.ENCRYPT_MODE, getClient().getConnection().getConnectionData().getRSAKey());
encrypted = rsaCipher.doFinal(_raw, 0x00, 0x80 );
} catch (Exception e) {
e.printStackTrace();
}
Добавлено через 23 минуты
Вот так тоже пробовал...результат тот же
Код:
_login = _loginstr.getBytes("US-ASCII");
_password = _passwordstr.getBytes("US-ASCII");
Добавлено через 2 часа 49 минут
Ой, и еще в логе ошибка в выводе информации. Там длины пакетов на 2 больше чем на самом деле...т.е. все формируется верно, кратно 8. Просто по ошибке я добавлял в лог еще длину пакета и писал еще +2...
На самом деле исходящие пакеты длиной та что написана - 2. Просто ошибка в логике вывода инфы в лог.