[Release]0.75 PIN SYSTEM [Register / change]
0.75 PIN SYSTEM [Register / change]
src → net → sf → odinms → net → login → handler
AfterLoginHandler.java All Change
package net.sf.odinms.net.login.handler;
import net.sf.odinms.client.MapleClient;
import net.sf.odinms.net.AbstractMaplePacketHandler;
import net.sf.odinms.tools.MaplePacketCreator;
import net.sf.odinms.tools.data.input.SeekableLittleEndianAccessor;
public final class AfterLoginHandler extends AbstractMaplePacketHandler {
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
byte c2 = slea.readByte();
byte c3 = 5;
try {
c3 = slea.readByte();
} catch (Exception e) {
}
if (c2 == 1 && c3 == 1) {
if (c.getPin() == null) {
c.getSession().write(MaplePacketCreator.registerPin());
} else {
c.getSession().write(MaplePacketCreator.requestPin());
}
} else if (c2 == 1 && c3 == 0) {
slea.seek(8);
String pin = slea.readMapleAsciiString();
if (pin.equals(c.getPin())) {
c.getSession().write(MaplePacketCreator.pinAccepted());
} else {
c.getSession().write(MaplePacketCreator.requestPinAfterFailure());
}
} else if (c2 == 2 && c3 == 0) {
slea.seek(8);
String pin = slea.readMapleAsciiString();
if (pin.equals(c.getPin())) {
c.getSession().write(MaplePacketCreator.registerPin());
} else {
c.getSession().write(MaplePacketCreator.requestPinAfterFailure());
}
} else if (c2 == 0 && c3 == 5) {
c.updateLoginState(MapleClient.LOGIN_NOTLOGGEDIN);
}
}
}
src → net → sf → odinms → net → login → handler
RegisterPinHandler.java
ADD
package net.sf.odinms.net.login.handler;
import net.sf.odinms.client.MapleClient;
import net.sf.odinms.net.AbstractMaplePacketHandler;
import net.sf.odinms.tools.MaplePacketCreator;
import net.sf.odinms.tools.data.input.SeekableLittleEndianAccessor;
public final class RegisterPinHandler extends AbstractMaplePacketHandler {
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
byte c2 = slea.readByte();
if (c2 == 0) {
c.updateLoginState(MapleClient.LOGIN_NOTLOGGEDIN);
} else {
String pin = slea.readMapleAsciiString();
if (pin != null) {
c.setPin(pin);
c.getSession().write(MaplePacketCreator.pinRegistered());
c.updateLoginState(MapleClient.LOGIN_NOTLOGGEDIN);
}
}
}
}
src → net → sf → odinms → client
MapleClient.java Open
private byte greason = 1;
under
private String pin = null;
add
search
public int finishLogin
under
add
public void setPin(String pin) {
this.pin = pin;
try {
PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("UPDATE accounts SET pin = ? WHERE id = ?");
ps.setString(1, pin);
ps.setInt(2, accId);
ps.executeUpdate();
ps.close();
} catch (SQLException e) {
}
}
public String getPin() {
return pin;
}
public int login
↑ search
PreparedStatement ps = con.prepareStatement("SELECT id, password, salt, banned, gm FROM accounts WHERE name = ?");
add
gm
next
, pin add
this.gmlevel = rs.getInt("gm");
under
pin = rs.getString("pin");
add
src\net\sf\odinms\tools
MaplePacketCreator.java Open
add
public static MaplePacket pinRegistered() {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3);
mplew.writeShort(SendPacketOpcode.PIN_ASSIGNED.getValue());
mplew.write(0);
return mplew.getPacket();
}
public static MaplePacket registerPin() {
return pinOperation((byte) 1);
}
src\net\sf\odinms\net
PacketProcessor.java Open
registerHandler(RecvPacketOpcode.DELETE_CHAR, new DeleteCharHandler());
Under add
registerHandler(RecvPacketOpcode.REGISTER_PIN, new RegisterPinHandler());
RecvPacketOpcode.java open
AFTER_LOGIN,
under
REGISTER_PIN,
add
SendPacketOpcode.java open
PIN_OPERATION,
under
PIN_ASSIGNED,
add
recvops.properties open
AFTER_LOGIN = 0x09
under
REGISTER_PIN = 0x0A
add
sendops.properties를 열어
PIN_OPERATION = 0x06
under
PIN_ASSIGNED = 0x07
add
SQL open
`salt` varchar(32) DEFAULT NULL,
under
`pin` varchar(10) default NULL,
add
Re: 0.75 PIN SYSTEM [Register / change]
Re: 0.75 PIN SYSTEM [Register / change]
Quote:
Originally Posted by
backgirl
0.75 PIN SYSTEM [Register / change]
src → net → sf → odinms → net → login → handler
Replace AfterLoginHandler.java with:
Code:
package net.sf.odinms.net.login.handler;
import net.sf.odinms.client.MapleClient;
import net.sf.odinms.net.AbstractMaplePacketHandler;
import net.sf.odinms.tools.MaplePacketCreator;
import net.sf.odinms.tools.data.input.SeekableLittleEndianAccessor;
public final class AfterLoginHandler extends AbstractMaplePacketHandler {
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
byte c2 = slea.readByte();
byte c3 = 5;
try {
c3 = slea.readByte();
} catch (Exception e) {
}
if (c2 == 1 && c3 == 1) {
if (c.getPin() == null) {
c.getSession().write(MaplePacketCreator.registerPin());
} else {
c.getSession().write(MaplePacketCreator.requestPin());
}
} else if (c2 == 1 && c3 == 0) {
slea.seek(8);
String pin = slea.readMapleAsciiString();
if (pin.equals(c.getPin())) {
c.getSession().write(MaplePacketCreator.pinAccepted());
} else {
c.getSession().write(MaplePacketCreator.requestPinAfterFailure());
}
} else if (c2 == 2 && c3 == 0) {
slea.seek(8);
String pin = slea.readMapleAsciiString();
if (pin.equals(c.getPin())) {
c.getSession().write(MaplePacketCreator.registerPin());
} else {
c.getSession().write(MaplePacketCreator.requestPinAfterFailure());
}
} else if (c2 == 0 && c3 == 5) {
c.updateLoginState(MapleClient.LOGIN_NOTLOGGEDIN);
}
}
}
src → net → sf → odinms → net → login → handler
in RegisterPinHandler.java
add
Code:
package net.sf.odinms.net.login.handler;
import net.sf.odinms.client.MapleClient;
import net.sf.odinms.net.AbstractMaplePacketHandler;
import net.sf.odinms.tools.MaplePacketCreator;
import net.sf.odinms.tools.data.input.SeekableLittleEndianAccessor;
public final class RegisterPinHandler extends AbstractMaplePacketHandler {
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
byte c2 = slea.readByte();
if (c2 == 0) {
c.updateLoginState(MapleClient.LOGIN_NOTLOGGEDIN);
} else {
String pin = slea.readMapleAsciiString();
if (pin != null) {
c.setPin(pin);
c.getSession().write(MaplePacketCreator.pinRegistered());
c.updateLoginState(MapleClient.LOGIN_NOTLOGGEDIN);
}
}
}
}
Open MapleClient.java
under
Code:
private byte greason = 1;
add
Code:
private String pin = null;
search for
Code:
public int finishLogin
under it add:
Code:
public void setPin(String pin) {
this.pin = pin;
try {
PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("UPDATE accounts SET pin = ? WHERE id = ?");
ps.setString(1, pin);
ps.setInt(2, accId);
ps.executeUpdate();
ps.close();
} catch (SQLException e) {
}
}
public String getPin() {
return pin;
}
Search for:
Code:
PreparedStatement ps = con.prepareStatement("SELECT id, password, salt, banned, gm FROM accounts WHERE name = ?");
next to
add
under
Code:
this.gmlevel = rs.getInt("gm");
add
Code:
pin = rs.getString("pin");
Open MaplePacketCreator.java
and add
Code:
public static MaplePacket pinRegistered() {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3);
mplew.writeShort(SendPacketOpcode.PIN_ASSIGNED.getValue());
mplew.write(0);
return mplew.getPacket();
}
public static MaplePacket registerPin() {
return pinOperation((byte) 1);
}
Open PacketProcessor.java
Under:
Code:
registerHandler(RecvPacketOpcode.DELETE_CHAR, new DeleteCharHandler());
Add:
Code:
registerHandler(RecvPacketOpcode.REGISTER_PIN, new RegisterPinHandler());
Open RecvPacketOpcode.java
under
add
Open SendPacketOpcode.java
under
add
Open recvops.properties
under
add
Code:
REGISTER_PIN = 0x0A
Open sendops.properties
under
Code:
PIN_OPERATION = 0x06
add
Code:
PIN_ASSIGNED = 0x07
Open SQL browser
execute
Code:
ALTER TABLE `ACCOUNTS` ADD COLUMN `pin` varchar(10) default NULL;
O_O
it's still messy. ok now its better.
Re: 0.75 PIN SYSTEM [Register / change]
Quote:
Originally Posted by
AxedMS
O_O
it's still messy.
Maybe, but its still better then the o.g
Re: 0.75 PIN SYSTEM [Register / change]
Quote:
Originally Posted by
DarkBlight
Maybe, but its still better then the o.g
now it's cleaner :P
Re: 0.75 PIN SYSTEM [Register / change]
Why pin is a varchar(10)?
Re: 0.75 PIN SYSTEM [Register / change]
Quote:
Originally Posted by
XxОsirisxX
Why pin is a varchar(10)?
Copied(leeched) from shoot? lol.
Re: [Release]0.75 PIN SYSTEM [Register / change]
lol leecher that can't even use tags....
Re: [Release]0.75 PIN SYSTEM [Register / change]
Re: [Release]0.75 PIN SYSTEM [Register / change]
Quote:
Originally Posted by
Alcandon
PIN sux..
I agree it's like wasting 4 secs of ur life
Re: [Release]0.75 PIN SYSTEM [Register / change]
Noob, don't use try catch blocks for something as common as pins. USE SLEA.AVAILABLE().
Re: [Release]0.75 PIN SYSTEM [Register / change]
Quote:
Originally Posted by
GoldenKevin
Noob, don't use try catch blocks for something as common as pins. USE SLEA.AVAILABLE().
Kev! You still working on Kiniro? o.o Lol. You haven't been on AIM xD
How's freshman year? xD
Re: [Release]0.75 PIN SYSTEM [Register / change]
I don't get it why do people have pins in a private server?
Re: [Release]0.75 PIN SYSTEM [Register / change]
Bump for no reason whatsoever.
Quote:
Originally Posted by
Eternitron
Kev! You still working on Kiniro? o.o Lol. You haven't been on AIM xD
How's freshman year? xD
Failing freshman year, it kinda sucks. Nah, I quit on Kiniro, it was getting boring. Haven't touched private servers since like November now, I don't really use AIM, so that's why.
Re: [Release]0.75 PIN SYSTEM [Register / change]
other than this having several potential exploits, nice release I suppose.