rearranging

This commit is contained in:
Michael Wain 2024-05-29 20:54:20 +03:00
parent cd94600651
commit 1c62c52004
4 changed files with 149 additions and 6 deletions

View File

@ -13,27 +13,28 @@ public class Main {
private static final Logger log = LoggerFactory.getLogger(Main.class); private static final Logger log = LoggerFactory.getLogger(Main.class);
public static void main(String[] args) { public static void main(String[] args) {
new Server(1119).startListening(); new Server(1119).startListening();
/* System.out.println(Util.bytesToHex(exampleProtocol.Test.newBuilder() /* System.out.println(Util.bytesToHex(exampleProtocol.Test.newBuilder()
.setA(9999) .setA(9999)
.setB("testing") .setB("testing")
.setC(7777) .setC(7777)
.build().toByteArray()));*/ .build().toByteArray()));*/
/* Scanner scanner = new Scanner(System.in);
/* Scanner scanner = new Scanner(System.in);
String s = ""; String s = "";
while( (s = scanner.nextLine()) != null ) { while ((s = scanner.nextLine()) != null) {
try { try {
byte[] arr = Util.hexStringToByteArray(s); byte[] arr = Util.hexStringToByteArray(s);
int offset = 0; int offset = 0;
while( offset < arr.length ) { while (offset < arr.length) {
BattleNetPacket bp = new BattleNetPacket(); BattleNetPacket bp = new BattleNetPacket();
offset += bp.Decode(arr, offset, arr.length); offset += bp.Decode(arr, offset, arr.length);
log.warn( offset + " " + arr.length); log.warn(offset + " " + arr.length);
log.info(bp.getHeader().toString()); log.info(bp.getHeader().toString());
log.info("Body.Length = " + bp.getBody().length); log.info("Body.Length = " + bp.getBody().length);
log.info(Util.bytesToHex(bp.getBody())); log.info(Util.bytesToHex(bp.getBody()));
} }
} catch ( Exception e ) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
}*/ }*/

View File

@ -312,6 +312,9 @@ public class GameUtilitiesService extends Service {
conn.send(new BattleNetPacket(header, b)); conn.send(new BattleNetPacket(header, b));
} else if( packet.getHeader().getToken() == 24 ) { } else if( packet.getHeader().getToken() == 24 ) {
log.warn("GameUtils " + Util.bytesToHex(packet.getBody()));
byte[] b = Util.hexStringToByteArray("0A090A026964120318C6020A100A0570726F746F12073205080110C702"); byte[] b = Util.hexStringToByteArray("0A090A026964120318C6020A100A0570726F746F12073205080110C702");
Protocol.Header header = Protocol.Header.newBuilder() Protocol.Header header = Protocol.Header.newBuilder()
@ -532,8 +535,47 @@ public class GameUtilitiesService extends Service {
conn.send(new BattleNetPacket(header, b)); conn.send(new BattleNetPacket(header, b));
// GoldBalance
b = Util.hexStringToByteArray("0A120900000000000000021100000000000000001212094743545702000002116739AB04000000001A1C575443472E5574696C4E6F74696669636174696F6E4D65737361676522130A0C6D6573736167655F747970651203189602221D0A0C667261676D656E745F303030120D320B0800100018BF843D20D00F22120A0C6D6573736167655F73697A651202180B2A1209000000000000000111000000000000000032120900000000000000011193710E1A000000003A004A0A0889FF5C1092E5A1B90552150A050D93710E1A120C0D6739AB0415474354571802"); b = Util.hexStringToByteArray("0A120900000000000000021100000000000000001212094743545702000002116739AB04000000001A1C575443472E5574696C4E6F74696669636174696F6E4D65737361676522130A0C6D6573736167655F747970651203189602221D0A0C667261676D656E745F303030120D320B0800100018BF843D20D00F22120A0C6D6573736167655F73697A651202180B2A1209000000000000000111000000000000000032120900000000000000011193710E1A000000003A004A0A0889FF5C1092E5A1B90552150A050D93710E1A120C0D6739AB0415474354571802");
// log.warn("ProtoNotify" + Protocol.Notification.parseFrom(b));
Protocol.GoldBalance gb = Protocol.GoldBalance.newBuilder()
.setCap(999999)
.setBonusBalance(165)
.setCappedBalance(160)
.setCapWarning(2000)
.build();
Protocol.Notification notification = Protocol.Notification.newBuilder()
.setSenderId(Protocol.EntityId.newBuilder()
.setHigh(144115188075855872L)
.setLow(0))
.setTargetId(Protocol.EntityId.newBuilder()
.setHigh(144115198130930503L)
.setLow(78330215))
.setType("WTCG.UtilNotificationMessage")
.setSenderBattleTag("")
.setSenderAccountId(Protocol.EntityId.newBuilder()
.setHigh(72057594037927936L)
.setLow(0))
.setTargetAccountId(Protocol.EntityId.newBuilder()
.setHigh(72057594037927936L)
.setLow(437154195))
.addAttribute(Protocol.Attribute.newBuilder()
.setName("message_type")
.setValue(Protocol.Variant.newBuilder()
.setIntValue(278L)))
.addAttribute(Protocol.Attribute.newBuilder()
.setName("fragment_000")
.setValue(Protocol.Variant.newBuilder()
.setBlobValue(gb.toByteString())))
.addAttribute(Protocol.Attribute.newBuilder()
.setName("message_size")
.setValue(Protocol.Variant.newBuilder()
.setIntValue(gb.getSerializedSize())))
.build();
b = notification.toByteArray();
header = Protocol.Header.newBuilder() header = Protocol.Header.newBuilder()
.setServiceId(4) .setServiceId(4)
.setMethodId(1) .setMethodId(1)
@ -651,6 +693,13 @@ public class GameUtilitiesService extends Service {
} else if( packet.getHeader().getToken() == 25 ) { } else if( packet.getHeader().getToken() == 25 ) {
byte[] b = Util.hexStringToByteArray("0A090A026964120318C6020A100A0570726F746F12073205080110ED01"); byte[] b = Util.hexStringToByteArray("0A090A026964120318C6020A100A0570726F746F12073205080110ED01");
/*byte[] b = Protocol.GoldBalance.newBuilder()
.setCap(999999)
.setBonusBalance(0)
.setCappedBalance(0)
.setCapWarning(2000)
.build().toByteArray();*/
//log.warn("GoldBalance " + Util.bytesToHex(b));
Protocol.Header header = Protocol.Header.newBuilder() Protocol.Header header = Protocol.Header.newBuilder()
.setServiceId(254) .setServiceId(254)
.setToken(packet.getHeader().getToken()) .setToken(packet.getHeader().getToken())
@ -757,6 +806,53 @@ public class GameUtilitiesService extends Service {
.setStatus(0) .setStatus(0)
.build(); .build();
conn.send(new BattleNetPacket(header, b));
} else if( packet.getHeader().getToken() == 34 || packet.getHeader().getToken() == 35 ) {
Protocol.Header header = Protocol.Header.newBuilder()
.setServiceId(254)
.setToken(12)
.setObjectId(0)
.setSize(0)
.setStatus(0)
.build();
conn.send(new BattleNetPacket(header, new byte[0]));
header = Protocol.Header.newBuilder()
.setServiceId(254)
.setToken(packet.getHeader().getToken())
.setObjectId(0)
.setSize(0)
.setStatus(0)
.build();
conn.send(new BattleNetPacket(header, new byte[0]));
byte[] b = Util.hexStringToByteArray("0A120900000000000000021100000000000000001212094743545702000002116739AB04000000001A1C575443472E5574696C4E6F74696669636174696F6E4D65737361676522130A0C6D6573736167655F74797065120318E00122120A0C6D6573736167655F73697A65120218002A1209000000000000000111000000000000000032120900000000000000011193710E1A000000003A004A0A0889FF5C1092E5A1B90552150A050D93710E1A120C0D6739AB0415474354571802");
header = Protocol.Header.newBuilder()
.setServiceId(4)
.setMethodId(1)
.setToken(64)
.setObjectId(0)
.setSize(b.length)
.setStatus(0)
.build();
conn.send(new BattleNetPacket(header, b));
b = Util.hexStringToByteArray("0A120900000000000000021100000000000000001212094743545702000002116739AB04000000001A1C575443472E5574696C4E6F74696669636174696F6E4D65737361676522130A0C6D6573736167655F74797065120318880222190A0C667261676D656E745F30303012093207800101A801AC0222120A0C6D6573736167655F73697A65120218072A1209000000000000000111000000000000000032120900000000000000011193710E1A000000003A004A0A0889FF5C1092E5A1B90552150A050D93710E1A120C0D6739AB0415474354571802");
header = Protocol.Header.newBuilder()
.setServiceId(4)
.setMethodId(1)
.setToken(65)
.setObjectId(0)
.setSize(b.length)
.setStatus(0)
.build();
conn.send(new BattleNetPacket(header, b)); conn.send(new BattleNetPacket(header, b));
} }
break; break;

View File

@ -201,6 +201,40 @@ public class PresenceService extends Service {
.setStatus(0) .setStatus(0)
.build(); .build();
conn.send(new BattleNetPacket(header, b)); conn.send(new BattleNetPacket(header, b));
} else if( packet.getHeader().getToken() == 33 ) {
byte[] b = Util.hexStringToByteArray("0D5545000015737368001A20BEC5292231D7686AF00CE64E0C58CC6E360EA950AAFFAC6A114F03A958E275F3");
Protocol.Header header1 = Protocol.Header.newBuilder()
.setServiceId(254)
.setToken(packet.getHeader().getToken())
.setObjectId(0)
.setSize(b.length)
.setStatus(0)
.build();
conn.send(new BattleNetPacket(header1, b));
} else if( packet.getHeader().getToken() == 36 ) {
byte[] b = Util.hexStringToByteArray("0A090A026964120318C6020A120A0570726F746F12093207080110C9011806");
Protocol.Header header1 = Protocol.Header.newBuilder()
.setServiceId(254)
.setToken(packet.getHeader().getToken())
.setObjectId(0)
.setSize(b.length)
.setStatus(0)
.build();
conn.send(new BattleNetPacket(header1, b));
b = Util.hexStringToByteArray("0A120900000000000000021100000000000000001212094743545702000002116739AB04000000001A1C575443472E5574696C4E6F74696669636174696F6E4D65737361676522130A0C6D6573736167655F74797065120318E00122120A0C6D6573736167655F73697A65120218002A1209000000000000000111000000000000000032120900000000000000011193710E1A000000003A004A0A0889FF5C1092E5A1B90552150A050D93710E1A120C0D6739AB0415474354571802");
header = Protocol.Header.newBuilder()
.setServiceId(4)
.setMethodId(1)
.setToken(64)
.setObjectId(0)
.setSize(b.length)
.setStatus(0)
.build();
conn.send(new BattleNetPacket(header, b));
} }
break; break;
default: default:

View File

@ -2058,3 +2058,15 @@ message UpdateChannelCountRequest {
required bnet.protocol.EntityId channel_id = 3; required bnet.protocol.EntityId channel_id = 3;
} }
// ref: PegasusUtil.GoldBalance
message GoldBalance {
// ref: PegasusUtil.GoldBalance/Types/PacketID
enum PacketID {
ID = 278;
}
optional int64 capped_balance = 1;
optional int64 bonus_balance = 2;
optional int64 cap = 3;
optional int64 cap_warning = 4;
}