[Point Blank] Проблема в пакете не знаю что делать(((( - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Сообщество Календарь
Вернуться   Форум администраторов игровых серверов > MMO > Point Blank (Piercing Blow)

Point Blank (Piercing Blow)
Общие вопросы по написанию эмулятора. General questions on developing emulator. При поддержке: Lucera 2 - разработка Java Interlude

Ответ
Опции темы
Непрочитано 06.08.2017, 21:55   #1
Пользователь

Автор темы (Топик Стартер) Проблема в пакете не знаю что делать((((

Когда клиент запрашивает авторизацию (4game)
/*
 * Java Server Emulator Project Blackout / PointBlank
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * Authors: DarkSkeleton, sjke, Felixx
 * Copyright (C) 2013 PBDev&#195;&#162;&#226;€&#382;&#194;&#162;
 */
 
package ru.pb.auth.network.client.packets.client;
 
import ru.pb.auth.controller.AccountController;
import ru.pb.auth.network.client.packets.ClientPacket;
import ru.pb.auth.network.client.packets.server.SM_LOGIN_AUTH;
import ru.pb.auth.network.client.packets.server.SM_UNK_545;
import ru.pb.global.dao.impl.MissionDaoImpl;
import ru.pb.global.enums.LoginAccess;
import ru.pb.global.enums.State;
import ru.pb.global.utils.NetworkUtil;
 
/**
 * &#195;&#65533;&#197;&#184;&#195;&#65533;&#194;°&#195;&#65533;&#194;&#186;&#195;&#65533;&#194;µ&#195;‘&#226;€&#353; &#195;&#65533;&#194;»&#195;&#65533;&#194;&#190;&#195;&#65533;&#194;&#179;&#195;&#65533;&#194;&#184;&#195;&#65533;&#194;&#189;&#195;&#65533;&#194;° &#195;&#65533;&#194;&#190;&#195;‘&#226;€&#353; &#195;&#65533;&#194;&#186;&#195;&#65533;&#194;»&#195;&#65533;&#194;&#184;&#195;&#65533;&#194;µ&#195;&#65533;&#194;&#189;&#195;‘&#226;€&#353;&#195;&#65533;&#194;°
 *
 * @author sjke
 */
public class CM_LOGIN extends ClientPacket {
 
	private String login, password;
	private int loginLength, passwordLength;
 
	public CM_LOGIN(int opcode) {
    super(opcode);
	}
	private int error;
	@Override
	public void readImpl() {
		/*//readC();
		//readH();
		//error = readH();
		//readC();
		loginLength = readC();
		passwordLength = readC();
		login = readS(loginLength).trim();
		password = readS(passwordLength).trim();
		getConnection().setMac(NetworkUtil.parseMac(readB(6)));
		//readH();
		//readC();
		//readB(4);
		//readQ();
		//readB(32);*/
		readH();
		readC();
		readB(5);
		loginLength = readC();
		passwordLength = readC();
		login = readS(loginLength);
		password = readS(passwordLength);
		getConnection().setMac(NetworkUtil.parseMac(readB(6)));
		readH();
		readC();
	}
 
	@Override
	public void runImpl() 
	{
		State state = getConnection().getAccount() == null ? AccountController.getInstance().accountLogin(login, password,getConnection()) : State.AUTHED;
		switch (state) 
			{
			case INVALID: 
			{
			sendPacket(new SM_LOGIN_AUTH(LoginAccess.EVENT_ERROR_LOGIN, getConnection().getAccount()));
			break;
			}	
			case BLOCKED: {
				sendPacket(new SM_LOGIN_AUTH(LoginAccess.EVENT_ERROR_EVENT_LOG_IN_BLOCK_ACCOUNT, getConnection().getAccount()));
				break;
			}
			case IP_BLOCKED: {
				sendPacket(new SM_LOGIN_AUTH(LoginAccess.EVENT_ERROR_EVENT_LOG_IN_TIME_OUT2, getConnection().getAccount()));
				break;
			}
			case ERROR_AUTH: {
				sendPacket(new SM_LOGIN_AUTH(LoginAccess.EVENT_ERROR_EVENT_LOG_IN_INVALID_ACCOUNT, getConnection().getAccount()));
				break;
			}
			case ALREADY_EXIST: {
				sendPacket(new SM_LOGIN_AUTH(LoginAccess.EVENT_ERROR_EVENT_LOG_IN_ALEADY_LOGIN, getConnection().getAccount()));
				break;
			}
			case REGION_BLOCKED: {
				sendPacket(new SM_LOGIN_AUTH(LoginAccess.EVENT_ERROR_EVENT_LOG_IN_REGION_BLOCKED, getConnection().getAccount()));
				break;
			}
			case AUTHED: 
			{
				MissionDaoImpl.getInstance().updateDB("accounts", "mac", getConnection().getMac(), "id", String.valueOf(getConnection().getAccount().getId()), null, null);
				sendPacket(new SM_LOGIN_AUTH(LoginAccess.EVENT_ERROR_SUCCESS, getConnection().getAccount()));
				MissionDaoImpl.getInstance().updateDB("accounts", "ip", getConnection().getIp(), "id", String.valueOf(getConnection().getAccount().getId()), null, null);
				break;
			}
		}
		sendPacket(new SM_UNK_545());
	}
}
 
Code: Java
PHP код:
[InfoMissing S for: [C0xA03 CM_LOGIN
java
.lang.IndexOutOfBoundsExceptionreaderIndex(119) + length(110exceeds writerIndex(155): UnpooledHeapByteBuf(ridx119widx155cap155)
        
at io.netty.buffer.AbstractByteBuf.checkReadableBytes(AbstractByteBuf.java:1161)
        
at io.netty.buffer.AbstractByteBuf.readBytes(AbstractByteBuf.java:669)
        
at io.netty.buffer.AbstractByteBuf.readBytes(AbstractByteBuf.java:677)
        
at io.netty.buffer.SwappedByteBuf.readBytes(SwappedByteBuf.java:523)
        
at ru.pb.global.network.packets.BaseClientPacket.readS(BaseClientPacket.java:132)
        
at ru.pb.auth.network.client.packets.client.CM_LOGIN.readImpl(CM_LOGIN.java:68)
        
at ru.pb.global.network.packets.BaseClientPacket.read(BaseClientPacket.java:42)
        
at ru.pb.auth.network.client.ClientConnection.read(ClientConnection.java:116)
        
at ru.pb.auth.network.client.ClientConnection.decode(ClientConnection.java:83)
        
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:226)
        
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:139)
        
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:338)
        
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:324)
        
at io.netty.handler.logging.LoggingHandler.channelRead(LoggingHandler.java:297)
        
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:338)
        
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:324)
        
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785)
        
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:126)
        
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:485)
        
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:452)
        
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:346)
        
at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:101)
        
at java.lang.Thread.run(Unknown Source)
[
InfoAccount:                            admin                                   Хї
-                                  contains bad symbols or bad length.[Check the contents of login password]
[
InfoClient [id:1ip213.191.10.45sending packet: [S0xA04 SM_LOGIN_AUTHcapacity4writable4
[InfoClient [id:1ip213.191.10.45sending packet: [S0xA04 SM_UNK_545capacity4writable4
[InfoClient [id:1ip213.191.10.45sending packet: [S0xA77 SM_UNK_2678capacity4writable4
[InfoClient [id:1ip213.191.10.45will be disconnected
[InfoClient [id:1ip213.191.10.45disconnected 
Добавлено через 2 минуты
/*
 * Java Server Emulator Project Blackout / PointBlank
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * Authors: DarkSkeleton, sjke, Felixx
 * Copyright (C) 2013 PBDev™
 */
 
package ru.pb.global.network.packets;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
 
/**
 * Базовый пкет клиента
 *
 * @author sjke
 */
public abstract class BaseClientPacket<P extends BaseClientPacket, T extends Connection> extends BasePacket implements Cloneable, Runnable {
 
	private static final Logger log = LoggerFactory.getLogger(BaseClientPacket.class);
	private T client;
 
	protected BaseClientPacket(int opcode) {
		super(PacketType.CLIENT, opcode);
	}
 
	public final boolean read() {
		try {
			readImpl();
			return true;
		} catch (Exception re) {
			log.error("Reading failed for packet " + this, re);
			return false;
		}
	}
 
	protected abstract void readImpl();
 
	protected abstract void runImpl();
 
	public final T getConnection() {
		return client;
	}
 
	public void setConnection(T client) {
		this.client = client;
	}
 
	public final int getRemainingBytes() {
		return getBuf().readableBytes();
	}
 
	protected final int readD() {
		try {
			return getBuf().readInt();
		} catch (Exception e) {
			log.error("Missing D for: " + this);
		}
		return 0;
	}
 
	protected final int readC() {
		try {
			return getBuf().readByte() & 0xFF;
		} catch (Exception e) {
			log.error("Missing C for: " + this);
		}
		return 0;
	}
 
	protected final boolean readBool() {
		try {
			return getBuf().readInt() == 1;
		} catch (Exception e) {
			log.error("Missing Bool for: " + this);
		}
		return false;
	}
 
	protected final int readH() {
		try {
			return getBuf().readShort() & 0xFFFF;
		} catch (Exception e) {
			log.error("Missing H for: " + this);
		}
		return 0;
	}
 
	protected final double readDF() {
		try {
			return getBuf().readDouble();
		} catch (Exception e) {
			log.error("Missing DF for: " + this);
		}
		return 0;
	}
 
	protected final float readF() {
		try {
			return getBuf().readFloat();
		} catch (Exception e) {
			log.error("Missing F for: " + this);
		}
		return 0;
	}
 
	protected final long readQ() {
		try {
			return getBuf().readLong();
		} catch (Exception e) {
			log.error("Missing Q for: " + this);
		}
		return 0;
	}
 
	protected String readS(int size) {
		try {
			byte[] data = new byte[size];
			getBuf().readBytes(data);
			return new String(data, "windows-1251");
		} catch (Exception e) {
			log.error("Missing S for: " + this);
			e.printStackTrace();
		}
		return "";
	}
 
	protected final byte[] readB(int length) {
		byte[] result = new byte[length];
		try {
			getBuf().readBytes(result);
		} catch (Exception e) {
			log.error("Missing byte[] for: " + this);
		}
		return result;
	}
 
	protected final byte readB() {
		try {
			return getBuf().readByte();
		} catch (Exception e) {
			log.error("Missing byte[] for: " + this);
		}
		return -1;
	}
 
	public abstract P clonePacket();
 
}
 
Code: Java

Последний раз редактировалось slawa560; 06.08.2017 в 21:58. Причина: Добавлено сообщение
slawa560 вне форума Ответить с цитированием
Непрочитано 06.08.2017, 22:11   #2
Аватар для Zubastic
ZG troll squad

По умолчанию Re: Проблема в пакете не знаю что делать((((

Есть инфа, что или формат пакета другой или крипт. Крч ищи в чем проблема.
__________________
Zubastic вне форума Ответить с цитированием
Непрочитано 06.08.2017, 22:15   #3
Пользователь

Автор темы (Топик Стартер) Re: Проблема в пакете не знаю что делать((((

на c# нету такова
slawa560 вне форума Ответить с цитированием
Непрочитано 07.08.2017, 03:25   #4
Аватар для DarkSkeleton12
Пользователь

По умолчанию Re: Проблема в пакете не знаю что делать((((

Судя по всему пакет изменился, структура не совпадает..

Вообщем, берешь и включаешь HexDump в сервере и подключаешься к серверу клиентом и анализируешь то что придет в консоль..
DarkSkeleton12 вне форума Отправить сообщение для DarkSkeleton12 с помощью Skype™ Ответить с цитированием
Непрочитано 07.08.2017, 13:03   #5
Аватар для Awiion

По умолчанию Re: Проблема в пакете не знаю что делать((((

slawa560,

CM_BASE_LOGIN
 
byte //Ver
short //VerDay
short //VerMoth
byte[32] //Login
byte[32] //Password
 
Code: C#
__________________
Разработка Emu: PiercingBlow 90%, APB Reloaded 100%.
Самый действенный инструмент для самообучения - грабли.
Awiion на форуме Отправить сообщение для Awiion с помощью Skype™ Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не знаю IneXusI Курилка / Yak floor 23 21.04.2013 17:18
Не знаю куда уже писать?? 1pts Игровой клиент 2 30.01.2012 18:33
Ищу инфу об одном серверном пакете в HF Gaikotsu Lineage II 23 16.08.2011 19:33
Не знаю как включить... MrArt Движки сайтов (CMS) 2 15.06.2009 14:12


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 08:07. Часовой пояс GMT +3.

Вверх