Показать сообщение отдельно
Старый 23.05.2012, 12:31  
demo
Читер со стажем
Аватар для demo
OFFLINE
Регистрация: 03.08.2007
Возраст: 36
Сообщений: 481
Благодарностей:
727 всего
Мнения: + 4318
Репутация: 3122
Отправить сообщение для demo с помощью ICQ

и да, дарк, по сути ОГ, но без возможности чего либо кроме как писать в чат. Пишу в софтину то я для себя, чтоб пока еду с работы на работу сидеть болтать с ги, учитывая что самое интересное пропускаю именно когда еду с работы))) Прога на что-то серьёзное не расчитана, тупо ловить 1 - 2 пакета, и отправлять 1-2 пакета (не считая тика пинг понга авторизации и тд). Вот и всё))) поэтому хочется получить небольшую помощь :)

Сервак 2.1.1, старый рус оф, защита только на серве, от дюпов, клиент-серверной защиты нету... поэтому по идее под такой серв должно быть не самый геморрой писать... а ведь всё равно загеморроился)))

Добавлено через 5 минут
Там в ла2 это извращение, там блоуфиш + рса. и в итоге встал тоже на шифровании логина и пароля, но оно там дальше чем в рфке, в рфке это почти самое начало

А по поводу того как я делаю строку с логином и пассом в рф (тестирую сначала на си шарпе, потом буду переписывать под андрюшу):

Код:
public static byte[] CryptLoginPassword(string login, string passowrd, byte aPlusKey, byte aXORKey) {
			int maxPasswordLength = 13;
			byte MyByte = 0;
			byte[] resylt1 = new byte[13];
			byte[] resylt2 = new byte[13];
			
			for (int i = 0; i < maxPasswordLength; i++) {
				if (i < login.Length) { 
					MyByte = OrdToHex(ORD(login[i]));
					Console.Write("\n"+MyByte+"\n");
				} else {
					MyByte = 0;
				}
				
				MyByte = MyByte + aPlusKey;
				MyByte = MyByte ^ aXORKey;
				resylt1[i] = Convert.ToByte(MyByte);
			}
			
			for (int i = 0; i < maxPasswordLength; i++) {
				if (i < passowrd.Length) { 
					MyByte = OrdToHex(ORD(passowrd[i]));
				} else {
					MyByte = 0;
				}
				
				MyByte = MyByte + aPlusKey;
				MyByte = (MyByte) ^ (aXORKey);
				resylt2[i] = Convert.ToByte(MyByte);
			}
			
			byte[] resultfinal = new byte[26];
			resylt1.CopyTo(resultfinal, 0);
			resylt2.CopyTo(resultfinal, resylt1.Length);
			return resultfinal;
			
		}
В 2.1.1 (это самый древний ап, напомниаю) ключ приходит приблизительно такой: 0x07 0x00 0x15 0x0D 0x04 0xFF 0x03
Из него я беру только 5 и 6 байты, 04- это плюс ключ, фф - это ключ для ксора... если я правильно всё понял. однако не понятно нужно ли использовать 7 байт. Во всех статьях 7 байт не используется, а в впф он совмещён с 6 в дворд.

Судя по тому что ты сказал, дарк, я не правильно вообще всё сделал... :(

Добавлено через 12 минут
по идее в результате я должен получить пакет вот такой:
1F 00 размер (не меняется)
15 03 тип пакета
68 75 6E 76 7D 07 07 07 07 07 07 07 07 - логин (5 символов)
74 7E 68 75 7B 7B 7C 3E 3E 07 07 07 07 - пароль (9 символов)
00 - завершающий нулевой байт (корейцы любят траву)

однако даже близко не могу приблизиться... у меня логин и пароль не хотят получаться такими же (я жёстко забил логин и пароль, и ключи в константы для тестов).

Добавлено через 24 минуты
А какашки в ответ на неправильный логин пароль мне серв шлёт такие:

0E 00 15 04 1C CC CC CC CC 00 00 00 00 CC

Последний раз редактировалось demo; 23.05.2012 в 12:56. Причина: Добавлено сообщение

Попробуй убей меня тут!

Приложение для андроид для игроков руоффа: https://market.android.com/details?i...rfstatuserfree
 
Ответить с цитированием