Thema: [Java] Module Protocol
-
09.04.2012, 03:38 #1
- Registriert seit
- 06.11.2011
- Beiträge
- 418
Thanked 686 Times in 246 Posts[Java] Module Protocol
Hab ich eigentlich für den KREmu/Banana-Chat geschrieben. Als Sky mich gestern danach gefragt hat fiel mir aber auf, dass man es auch gut in Kombination mit Libraries verwenden kann.
Diese Klassen sind für das Module Protocol, um bspw. eine Toolbar anzuzeigen. Stammen aus dem K-Reverse Emulator, müssen für den Banana-Chat etwas angepasst werden.
ModuleTree.java
Wo der Tree definiert ist, ist euch überlassen, bei mir wird er aus der Datenbank gelesen und dem Konstruktor übergeben.
Code:package kreverse.kremu; import java.util.ArrayList; /** * * @author Flav */ public class ModuleTree { private String tree; private int version; private byte startIndex; private ArrayList<String> modules; public ModuleTree(String tree) { this.tree = tree; String[] mdls = tree.split(";"); version = Integer.parseInt(mdls[0]); startIndex = Byte.parseByte(mdls[1]); modules = new ArrayList<String>(); for (int i = 2; i < mdls.length; i++) { modules.add(mdls[i]); } } public String getTree() { return tree; } public int getVersion() { return version; } public String getModule(int index) { return modules.get(index - startIndex); } public int getIndex(String module) { for (int i = 0; i < modules.size(); i++) { if (modules.get(i).equals(module)) { return i + startIndex; } } return -1; } }
Dieser Handler (Opcode: q) wird auch von der Whois2 angesprochen, ist hier aber erstmal nur dafür zuständig, dass der Tree von Client und Server übereinstimmen (braucht man nur wenn man den Tree ständig aktualisiert, was meiner Meinung nach sinnlos ist).
Code:package kreverse.kremu.handler; import kreverse.kremu.Client; import kreverse.kremu.Server; import kreverse.kremu.tools.packet.PacketCreator; import kreverse.kremu.tools.packet.PacketReader; /** * * @author Flav */ public class ModuleHandler { private static String protocolConfirmed; private static String changeProtocol; static { protocolConfirmed = PacketCreator.protocolConfirmed(); changeProtocol = PacketCreator.changeProtocol(); } public static void handle(PacketReader reader, Client client) { String module = Server.get().getModuleTree().getModule(reader.readShort()); if (module.equals("CONFIRM_PROTOCOL_HASH")) { reader.readInt(); int version = reader.readInt(); if (Server.get().getModuleTree().getVersion() == version) { client.send(protocolConfirmed); } else { client.send(changeProtocol); } } } }
Code:package kreverse.kremu.tools.packet; /** * * @author Flav */ public class PacketReader { private String buffer; public PacketReader(String buffer) { this.buffer = buffer; } public byte read() { byte v = (byte) buffer.charAt(0); buffer = buffer.substring(1); return v; } public boolean readBoolean() { return read() != 0; } public short readShort() { return (short) (((read() & 0xFF) << 8) + (read() & 0xFF)); } public int readInt() { return ((read() & 0xFF) << 24) + ((read() & 0xFF) << 16) + ((read() & 0xFF) << 8) + (read() & 0xFF); } public String readString(int len) { String v = buffer.substring(0, len); buffer = buffer.substring(len); return v; } }
Code:package kreverse.kremu.tools.packet; /** * * @author Flav */ public class PacketWriter { private StringBuilder buffer; public PacketWriter() { buffer = new StringBuilder(); } public void write(int v) { buffer.append((char) v); } public void writeBoolean(boolean v) { write(v ? 1 : 0); } public void writeShort(int v) { write(v >> 8); write(v); } public void writeInt(int v) { write(v >> 24); write(v >> 16); write(v >> 8); write(v); } public void writeString(String v) { buffer.append(v); } public String toString() { return buffer.toString(); } }
Code:[...] public static String protocolConfirmed() { PacketWriter packet = new PacketWriter(); packet.writeString(SendOpcode.MODULE.getValue()); packet.write(0x00); packet.writeShort(Server.get().getModuleTree().getIndex("PROTOCOL_CONFIRMED")); return packet.toString(); } public static String changeProtocol() { PacketWriter packet = new PacketWriter(); packet.writeString(SendOpcode.MODULE.getValue()); packet.write(0x00); packet.writeShort(Server.get().getModuleTree().getIndex("CHANGE_PROTOCOL")); packet.writeShort(Server.get().getModuleTree().getTree().length()); packet.writeString(Server.get().getModuleTree().getTree()); return packet.toString(); } [...]
Code:[...] else if (opcode.equals(ReceiveOpcode.MODULE.getValue())) { packet = packet.substring(2); PacketReader reader = new PacketReader(packet); ModuleHandler.handle(reader, this); } [...]
-
The Following 2 Users Say Thank You to Flav For This Useful Post:
Ähnliche Themen
-
Win7 Java in Safari ausführen (Fehlermeldung Java nicht installiert)
Von Silverstar im Forum WindowsAntworten: 8Letzter Beitrag: 02.12.2013, 23:41 -
Prozess Module laden mit JNA
Von DANP im Forum JavaAntworten: 6Letzter Beitrag: 25.11.2013, 15:20 -
VB.Net Anzahl geladener Module eines Prozesses auslesen
Von Snooki im Forum .NetAntworten: 2Letzter Beitrag: 20.11.2013, 13:58 -
Module Tree Viewer Tool - Wer war des? oÔ
Von Bubble Gum im Forum RessourcenAntworten: 8Letzter Beitrag: 20.05.2013, 15:41 -
:-Token (Module) parsen/schreiben
Von Brainy im Forum SourcecodeAntworten: 3Letzter Beitrag: 11.07.2012, 20:01
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.