mirror of
https://github.com/pumpbin/pumpbin
synced 2026-03-14 23:04:30 -07:00
feat!: compress plugin via zlib
This commit is contained in:
@@ -1,5 +1,9 @@
|
||||
# CHANGELOG
|
||||
|
||||
## v1.1.0
|
||||
|
||||
- Compress plugin via zlib.
|
||||
|
||||
## v1.0.0
|
||||
|
||||
- Implementing a Plug-in System with Extism.
|
||||
|
||||
3
Cargo.lock
generated
3
Cargo.lock
generated
@@ -3177,7 +3177,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pumpbin"
|
||||
version = "1.0.0"
|
||||
version = "1.1.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"bincode",
|
||||
@@ -3185,6 +3185,7 @@ dependencies = [
|
||||
"capnpc",
|
||||
"dirs 5.0.1",
|
||||
"extism",
|
||||
"flate2",
|
||||
"iced",
|
||||
"memchr",
|
||||
"open",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "pumpbin"
|
||||
version = "1.0.0"
|
||||
version = "1.1.0"
|
||||
authors = ["b1n <b1n@b1n.io>"]
|
||||
edition = "2021"
|
||||
description = "PumpBin is an Implant Generation Platform."
|
||||
@@ -28,6 +28,7 @@ capnp = "0.19"
|
||||
extism = "1.4.1"
|
||||
serde = { version = "1.0.203", features = ["derive"] }
|
||||
serde_json = "1.0.120"
|
||||
flate2 = "1.0.30"
|
||||
|
||||
[dependencies.iced]
|
||||
version = "0.13.0-dev"
|
||||
|
||||
@@ -9,9 +9,11 @@ use std::{
|
||||
use anyhow::{anyhow, bail};
|
||||
use bincode::{decode_from_slice, encode_to_vec, Decode, Encode};
|
||||
use capnp::{
|
||||
io::Write,
|
||||
message::{self, ReaderOptions},
|
||||
serialize_packed,
|
||||
};
|
||||
use flate2::Compression;
|
||||
|
||||
use crate::{
|
||||
plugin_capnp,
|
||||
@@ -276,7 +278,12 @@ pub struct Plugin {
|
||||
|
||||
impl Plugin {
|
||||
pub fn decode_from_slice(data: &[u8]) -> anyhow::Result<Self> {
|
||||
let message = serialize_packed::read_message(data, ReaderOptions::new())?;
|
||||
let mut decoder = flate2::write::ZlibDecoder::new(Vec::new());
|
||||
decoder.write_all(data)?;
|
||||
let decompressed = decoder.finish()?;
|
||||
|
||||
let message =
|
||||
serialize_packed::read_message(decompressed.as_slice(), ReaderOptions::new())?;
|
||||
let plugin = message.get_root::<plugin_capnp::plugin::Reader>()?;
|
||||
|
||||
let info = plugin.get_info()?;
|
||||
@@ -412,7 +419,11 @@ impl Plugin {
|
||||
let mut buf = Vec::new();
|
||||
serialize_packed::write_message(&mut buf, &message)?;
|
||||
|
||||
anyhow::Ok(buf)
|
||||
let mut encoder = flate2::write::ZlibEncoder::new(Vec::new(), Compression::best());
|
||||
encoder.write_all(buf.as_slice())?;
|
||||
let compressed = encoder.finish()?;
|
||||
|
||||
anyhow::Ok(compressed)
|
||||
}
|
||||
|
||||
pub fn replace_binary(
|
||||
|
||||
Reference in New Issue
Block a user