From 62b9920422e539bacffdacbc2499efe3c75e3519 Mon Sep 17 00:00:00 2001 From: guoyanjun Date: Thu, 23 May 2024 07:53:42 +0000 Subject: [PATCH] Resolving the issue of no data reporting in the BOE environment due to the inability to find message serialization and deserialization classes --- .../com/security/smith/client/Message.java | 60 ------------------- .../security/smith/client/MessageDecoder.java | 26 ++++++++ .../smith/client/MessageDeserializer.java | 29 +++++++++ .../security/smith/client/MessageEncoder.java | 27 +++++++++ .../smith/client/MessageSerializer.java | 1 - 5 files changed, 82 insertions(+), 61 deletions(-) create mode 100644 rasp/jvm/JVMProbe/src/main/java/com/security/smith/client/MessageDecoder.java create mode 100644 rasp/jvm/JVMProbe/src/main/java/com/security/smith/client/MessageDeserializer.java create mode 100644 rasp/jvm/JVMProbe/src/main/java/com/security/smith/client/MessageEncoder.java diff --git a/rasp/jvm/JVMProbe/src/main/java/com/security/smith/client/Message.java b/rasp/jvm/JVMProbe/src/main/java/com/security/smith/client/Message.java index 7036d96c6..08c97393f 100644 --- a/rasp/jvm/JVMProbe/src/main/java/com/security/smith/client/Message.java +++ b/rasp/jvm/JVMProbe/src/main/java/com/security/smith/client/Message.java @@ -47,63 +47,3 @@ public void setData(JsonNode data) { this.data = data; } } - - -class MessageDeserializer extends StdDeserializer { - protected MessageDeserializer() { - super(Message.class); - } - - protected MessageDeserializer(Class vc) { - super(vc); - } - - @Override - public Message deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { - JsonNode node = p.getCodec().readTree(p); - - Message message = new Message(); - - message.setOperate(node.get("message_type").asInt()); - message.setData(node.get("data")); - - return message; - } -} - -class MessageEncoder extends MessageToByteEncoder { - @Override - protected void encode(ChannelHandlerContext ctx, Object msg, ByteBuf out) throws JsonProcessingException { - ObjectMapper objectMapper = new ObjectMapper(); - - byte[] payload = objectMapper.writeValueAsBytes(msg); - int payloadSize = payload.length; - - ByteBuffer buffer = ByteBuffer.allocate(payloadSize + Message.PROTOCOL_HEADER_SIZE); - - buffer.putInt(payloadSize); - buffer.put(payload); - - buffer.flip(); - - out.writeBytes(buffer); - } -} - -class MessageDecoder extends ReplayingDecoder { - @Override - protected void decode(ChannelHandlerContext ctx, ByteBuf in, List out) throws IOException { - long payloadSize = in.readUnsignedInt(); - - if (payloadSize > Message.MAX_PAYLOAD_SIZE) - return; - - byte[] buffer = new byte[(int) payloadSize]; - in.readBytes(buffer); - - Message message = new ObjectMapper().readValue(buffer, Message.class); - - if (message != null) - out.add(message); - } -} \ No newline at end of file diff --git a/rasp/jvm/JVMProbe/src/main/java/com/security/smith/client/MessageDecoder.java b/rasp/jvm/JVMProbe/src/main/java/com/security/smith/client/MessageDecoder.java new file mode 100644 index 000000000..9035408bb --- /dev/null +++ b/rasp/jvm/JVMProbe/src/main/java/com/security/smith/client/MessageDecoder.java @@ -0,0 +1,26 @@ +package com.security.smith.client; + +import com.fasterxml.jackson.databind.ObjectMapper; +import io.netty.handler.codec.ReplayingDecoder; +import io.netty.channel.ChannelHandlerContext; +import io.netty.buffer.ByteBuf; +import java.util.List; +import java.io.IOException; + +public class MessageDecoder extends ReplayingDecoder { + @Override + protected void decode(ChannelHandlerContext ctx, ByteBuf in, List out) throws IOException { + long payloadSize = in.readUnsignedInt(); + + if (payloadSize > Message.MAX_PAYLOAD_SIZE) + return; + + byte[] buffer = new byte[(int) payloadSize]; + in.readBytes(buffer); + + Message message = new ObjectMapper().readValue(buffer, Message.class); + + if (message != null) + out.add(message); + } +} \ No newline at end of file diff --git a/rasp/jvm/JVMProbe/src/main/java/com/security/smith/client/MessageDeserializer.java b/rasp/jvm/JVMProbe/src/main/java/com/security/smith/client/MessageDeserializer.java new file mode 100644 index 000000000..c51d162b4 --- /dev/null +++ b/rasp/jvm/JVMProbe/src/main/java/com/security/smith/client/MessageDeserializer.java @@ -0,0 +1,29 @@ +package com.security.smith.client; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.deser.std.StdDeserializer; +import com.fasterxml.jackson.databind.JsonNode; +import java.io.IOException; + +public class MessageDeserializer extends StdDeserializer { + protected MessageDeserializer() { + super(Message.class); + } + + protected MessageDeserializer(Class vc) { + super(vc); + } + + @Override + public Message deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { + JsonNode node = p.getCodec().readTree(p); + + Message message = new Message(); + + message.setOperate(node.get("message_type").asInt()); + message.setData(node.get("data")); + + return message; + } +} \ No newline at end of file diff --git a/rasp/jvm/JVMProbe/src/main/java/com/security/smith/client/MessageEncoder.java b/rasp/jvm/JVMProbe/src/main/java/com/security/smith/client/MessageEncoder.java new file mode 100644 index 000000000..588f810f8 --- /dev/null +++ b/rasp/jvm/JVMProbe/src/main/java/com/security/smith/client/MessageEncoder.java @@ -0,0 +1,27 @@ +package com.security.smith.client; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import io.netty.handler.codec.MessageToByteEncoder; +import io.netty.buffer.ByteBuf; +import io.netty.channel.ChannelHandlerContext; +import java.nio.ByteBuffer; + +public class MessageEncoder extends MessageToByteEncoder { + @Override + protected void encode(ChannelHandlerContext ctx, Object msg, ByteBuf out) throws JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + + byte[] payload = objectMapper.writeValueAsBytes(msg); + int payloadSize = payload.length; + + ByteBuffer buffer = ByteBuffer.allocate(payloadSize + Message.PROTOCOL_HEADER_SIZE); + + buffer.putInt(payloadSize); + buffer.put(payload); + + buffer.flip(); + + out.writeBytes(buffer); + } +} \ No newline at end of file diff --git a/rasp/jvm/JVMProbe/src/main/java/com/security/smith/client/MessageSerializer.java b/rasp/jvm/JVMProbe/src/main/java/com/security/smith/client/MessageSerializer.java index 4a6988df6..761a0770e 100644 --- a/rasp/jvm/JVMProbe/src/main/java/com/security/smith/client/MessageSerializer.java +++ b/rasp/jvm/JVMProbe/src/main/java/com/security/smith/client/MessageSerializer.java @@ -16,7 +16,6 @@ public class MessageSerializer extends StdSerializer { static { pid = ProcessHelper.getCurrentPID(); jvmVersion = ManagementFactory.getRuntimeMXBean().getSpecVersion(); - probeVersion = MessageSerializer.class.getPackage().getImplementationVersion(); } public static void setProbeVersion(String probeVer) {