mirror of
https://github.com/pumpbin/pumpbin
synced 2026-03-14 23:04:30 -07:00
feat: add pumpbin maker
This commit is contained in:
759
Cargo.lock
generated
759
Cargo.lock
generated
@@ -165,143 +165,6 @@ dependencies = [
|
||||
"libloading 0.7.4",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ashpd"
|
||||
version = "0.8.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dd884d7c72877a94102c3715f3b1cd09ff4fac28221add3e57cfbe25c236d093"
|
||||
dependencies = [
|
||||
"enumflags2",
|
||||
"futures-channel",
|
||||
"futures-util",
|
||||
"rand",
|
||||
"serde",
|
||||
"serde_repr",
|
||||
"tokio",
|
||||
"url",
|
||||
"zbus",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "async-broadcast"
|
||||
version = "0.7.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "20cd0e2e25ea8e5f7e9df04578dc6cf5c83577fd09b1a46aaf5c85e1c33f2a7e"
|
||||
dependencies = [
|
||||
"event-listener",
|
||||
"event-listener-strategy",
|
||||
"futures-core",
|
||||
"pin-project-lite",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "async-channel"
|
||||
version = "2.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a"
|
||||
dependencies = [
|
||||
"concurrent-queue",
|
||||
"event-listener-strategy",
|
||||
"futures-core",
|
||||
"pin-project-lite",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "async-io"
|
||||
version = "2.3.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0d6baa8f0178795da0e71bc42c9e5d13261aac7ee549853162e66a241ba17964"
|
||||
dependencies = [
|
||||
"async-lock",
|
||||
"cfg-if",
|
||||
"concurrent-queue",
|
||||
"futures-io",
|
||||
"futures-lite",
|
||||
"parking",
|
||||
"polling",
|
||||
"rustix",
|
||||
"slab",
|
||||
"tracing",
|
||||
"windows-sys 0.52.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "async-lock"
|
||||
version = "3.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18"
|
||||
dependencies = [
|
||||
"event-listener",
|
||||
"event-listener-strategy",
|
||||
"pin-project-lite",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "async-process"
|
||||
version = "2.2.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f7eda79bbd84e29c2b308d1dc099d7de8dcc7035e48f4bf5dc4a531a44ff5e2a"
|
||||
dependencies = [
|
||||
"async-channel",
|
||||
"async-io",
|
||||
"async-lock",
|
||||
"async-signal",
|
||||
"async-task",
|
||||
"blocking",
|
||||
"cfg-if",
|
||||
"event-listener",
|
||||
"futures-lite",
|
||||
"rustix",
|
||||
"tracing",
|
||||
"windows-sys 0.52.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "async-recursion"
|
||||
version = "1.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.66",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "async-signal"
|
||||
version = "0.2.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "794f185324c2f00e771cd9f1ae8b5ac68be2ca7abb129a87afd6e86d228bc54d"
|
||||
dependencies = [
|
||||
"async-io",
|
||||
"async-lock",
|
||||
"atomic-waker",
|
||||
"cfg-if",
|
||||
"futures-core",
|
||||
"futures-io",
|
||||
"rustix",
|
||||
"signal-hook-registry",
|
||||
"slab",
|
||||
"windows-sys 0.52.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "async-task"
|
||||
version = "4.7.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de"
|
||||
|
||||
[[package]]
|
||||
name = "async-trait"
|
||||
version = "0.1.80"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.66",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "atomic-waker"
|
||||
version = "1.1.2"
|
||||
@@ -387,15 +250,6 @@ version = "0.1.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a"
|
||||
|
||||
[[package]]
|
||||
name = "block-buffer"
|
||||
version = "0.10.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
|
||||
dependencies = [
|
||||
"generic-array",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "block2"
|
||||
version = "0.5.1"
|
||||
@@ -405,19 +259,6 @@ dependencies = [
|
||||
"objc2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "blocking"
|
||||
version = "1.6.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea"
|
||||
dependencies = [
|
||||
"async-channel",
|
||||
"async-task",
|
||||
"futures-io",
|
||||
"futures-lite",
|
||||
"piper",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bumpalo"
|
||||
version = "3.16.0"
|
||||
@@ -772,16 +613,6 @@ version = "0.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5c297a1c74b71ae29df00c3e22dd9534821d60eb9af5a0192823fa2acea70c2a"
|
||||
|
||||
[[package]]
|
||||
name = "digest"
|
||||
version = "0.10.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
|
||||
dependencies = [
|
||||
"block-buffer",
|
||||
"crypto-common",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "dirs"
|
||||
version = "5.0.1"
|
||||
@@ -809,17 +640,6 @@ version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b"
|
||||
|
||||
[[package]]
|
||||
name = "displaydoc"
|
||||
version = "0.2.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.66",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "dlib"
|
||||
version = "0.5.2"
|
||||
@@ -879,33 +699,6 @@ dependencies = [
|
||||
"linux-raw-sys 0.6.4",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "endi"
|
||||
version = "1.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf"
|
||||
|
||||
[[package]]
|
||||
name = "enumflags2"
|
||||
version = "0.7.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d232db7f5956f3f14313dc2f87985c58bd2c695ce124c8cdd984e08e15ac133d"
|
||||
dependencies = [
|
||||
"enumflags2_derive",
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "enumflags2_derive"
|
||||
version = "0.7.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.66",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "equivalent"
|
||||
version = "1.0.1"
|
||||
@@ -947,27 +740,6 @@ dependencies = [
|
||||
"num-traits",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "event-listener"
|
||||
version = "5.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba"
|
||||
dependencies = [
|
||||
"concurrent-queue",
|
||||
"parking",
|
||||
"pin-project-lite",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "event-listener-strategy"
|
||||
version = "0.5.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1"
|
||||
dependencies = [
|
||||
"event-listener",
|
||||
"pin-project-lite",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "fast-srgb8"
|
||||
version = "1.0.0"
|
||||
@@ -1074,15 +846,6 @@ version = "0.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b"
|
||||
|
||||
[[package]]
|
||||
name = "form_urlencoded"
|
||||
version = "1.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
|
||||
dependencies = [
|
||||
"percent-encoding",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "futures"
|
||||
version = "0.3.30"
|
||||
@@ -1132,19 +895,6 @@ version = "0.3.30"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"
|
||||
|
||||
[[package]]
|
||||
name = "futures-lite"
|
||||
version = "2.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5"
|
||||
dependencies = [
|
||||
"fastrand",
|
||||
"futures-core",
|
||||
"futures-io",
|
||||
"parking",
|
||||
"pin-project-lite",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "futures-macro"
|
||||
version = "0.3.30"
|
||||
@@ -1396,12 +1146,6 @@ version = "0.3.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
|
||||
|
||||
[[package]]
|
||||
name = "hex"
|
||||
version = "0.4.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
|
||||
|
||||
[[package]]
|
||||
name = "hexf-parse"
|
||||
version = "0.2.1"
|
||||
@@ -1564,136 +1308,6 @@ dependencies = [
|
||||
"winit",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icu_collections"
|
||||
version = "1.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526"
|
||||
dependencies = [
|
||||
"displaydoc",
|
||||
"yoke",
|
||||
"zerofrom",
|
||||
"zerovec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icu_locid"
|
||||
version = "1.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637"
|
||||
dependencies = [
|
||||
"displaydoc",
|
||||
"litemap",
|
||||
"tinystr",
|
||||
"writeable",
|
||||
"zerovec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icu_locid_transform"
|
||||
version = "1.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e"
|
||||
dependencies = [
|
||||
"displaydoc",
|
||||
"icu_locid",
|
||||
"icu_locid_transform_data",
|
||||
"icu_provider",
|
||||
"tinystr",
|
||||
"zerovec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icu_locid_transform_data"
|
||||
version = "1.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e"
|
||||
|
||||
[[package]]
|
||||
name = "icu_normalizer"
|
||||
version = "1.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f"
|
||||
dependencies = [
|
||||
"displaydoc",
|
||||
"icu_collections",
|
||||
"icu_normalizer_data",
|
||||
"icu_properties",
|
||||
"icu_provider",
|
||||
"smallvec",
|
||||
"utf16_iter",
|
||||
"utf8_iter",
|
||||
"write16",
|
||||
"zerovec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icu_normalizer_data"
|
||||
version = "1.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516"
|
||||
|
||||
[[package]]
|
||||
name = "icu_properties"
|
||||
version = "1.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1f8ac670d7422d7f76b32e17a5db556510825b29ec9154f235977c9caba61036"
|
||||
dependencies = [
|
||||
"displaydoc",
|
||||
"icu_collections",
|
||||
"icu_locid_transform",
|
||||
"icu_properties_data",
|
||||
"icu_provider",
|
||||
"tinystr",
|
||||
"zerovec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icu_properties_data"
|
||||
version = "1.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569"
|
||||
|
||||
[[package]]
|
||||
name = "icu_provider"
|
||||
version = "1.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9"
|
||||
dependencies = [
|
||||
"displaydoc",
|
||||
"icu_locid",
|
||||
"icu_provider_macros",
|
||||
"stable_deref_trait",
|
||||
"tinystr",
|
||||
"writeable",
|
||||
"yoke",
|
||||
"zerofrom",
|
||||
"zerovec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icu_provider_macros"
|
||||
version = "1.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.66",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "idna"
|
||||
version = "1.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4716a3a0933a1d01c2f72450e89596eb51dd34ef3c211ccd875acdf1f8fe47ed"
|
||||
dependencies = [
|
||||
"icu_normalizer",
|
||||
"icu_properties",
|
||||
"smallvec",
|
||||
"utf8_iter",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "imagesize"
|
||||
version = "0.12.0"
|
||||
@@ -1894,12 +1508,6 @@ version = "0.6.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f0b5399f6804fbab912acbd8878ed3532d506b7c951b8f9f164ef90fef39e3f4"
|
||||
|
||||
[[package]]
|
||||
name = "litemap"
|
||||
version = "0.7.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704"
|
||||
|
||||
[[package]]
|
||||
name = "lock_api"
|
||||
version = "0.4.12"
|
||||
@@ -1955,15 +1563,6 @@ dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "memoffset"
|
||||
version = "0.9.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "metal"
|
||||
version = "0.27.0"
|
||||
@@ -1989,17 +1588,6 @@ dependencies = [
|
||||
"simd-adler32",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "mio"
|
||||
version = "0.8.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"wasi",
|
||||
"windows-sys 0.48.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "naga"
|
||||
version = "0.19.2"
|
||||
@@ -2059,19 +1647,6 @@ dependencies = [
|
||||
"jni-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "nix"
|
||||
version = "0.28.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4"
|
||||
dependencies = [
|
||||
"bitflags 2.5.0",
|
||||
"cfg-if",
|
||||
"cfg_aliases 0.1.1",
|
||||
"libc",
|
||||
"memoffset",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-traits"
|
||||
version = "0.2.19"
|
||||
@@ -2401,16 +1976,6 @@ dependencies = [
|
||||
"libredox 0.0.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ordered-stream"
|
||||
version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50"
|
||||
dependencies = [
|
||||
"futures-core",
|
||||
"pin-project-lite",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "owned_ttf_parser"
|
||||
version = "0.21.0"
|
||||
@@ -2444,12 +2009,6 @@ dependencies = [
|
||||
"syn 2.0.66",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "parking"
|
||||
version = "2.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae"
|
||||
|
||||
[[package]]
|
||||
name = "parking_lot"
|
||||
version = "0.11.2"
|
||||
@@ -2596,17 +2155,6 @@ version = "0.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
|
||||
|
||||
[[package]]
|
||||
name = "piper"
|
||||
version = "0.2.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ae1d5c74c9876f070d3e8fd503d748c7d974c3e48da8f41350fa5222ef9b4391"
|
||||
dependencies = [
|
||||
"atomic-waker",
|
||||
"fastrand",
|
||||
"futures-io",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pkg-config"
|
||||
version = "0.3.30"
|
||||
@@ -2854,7 +2402,6 @@ version = "0.14.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "25a73a7337fc24366edfca76ec521f51877b114e42dab584008209cca6719251"
|
||||
dependencies = [
|
||||
"ashpd",
|
||||
"block",
|
||||
"dispatch",
|
||||
"js-sys",
|
||||
@@ -3026,37 +2573,6 @@ dependencies = [
|
||||
"syn 2.0.66",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_repr"
|
||||
version = "0.1.19"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.66",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sha1"
|
||||
version = "0.10.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"cpufeatures",
|
||||
"digest",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "signal-hook-registry"
|
||||
version = "1.4.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "simd-adler32"
|
||||
version = "0.3.7"
|
||||
@@ -3147,16 +2663,6 @@ dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "socket2"
|
||||
version = "0.5.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"windows-sys 0.52.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "softbuffer"
|
||||
version = "0.4.3"
|
||||
@@ -3199,12 +2705,6 @@ dependencies = [
|
||||
"bitflags 2.5.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "stable_deref_trait"
|
||||
version = "1.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
|
||||
|
||||
[[package]]
|
||||
name = "static_assertions"
|
||||
version = "1.1.0"
|
||||
@@ -3275,17 +2775,6 @@ dependencies = [
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "synstructure"
|
||||
version = "0.13.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.66",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sys-locale"
|
||||
version = "0.3.1"
|
||||
@@ -3295,18 +2784,6 @@ dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tempfile"
|
||||
version = "3.10.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"fastrand",
|
||||
"rustix",
|
||||
"windows-sys 0.52.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "termcolor"
|
||||
version = "1.4.1"
|
||||
@@ -3375,16 +2852,6 @@ dependencies = [
|
||||
"tracing",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tinystr"
|
||||
version = "0.7.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f"
|
||||
dependencies = [
|
||||
"displaydoc",
|
||||
"zerovec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tinyvec"
|
||||
version = "1.6.0"
|
||||
@@ -3407,15 +2874,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a"
|
||||
dependencies = [
|
||||
"backtrace",
|
||||
"bytes",
|
||||
"libc",
|
||||
"mio",
|
||||
"num_cpus",
|
||||
"pin-project-lite",
|
||||
"signal-hook-registry",
|
||||
"socket2",
|
||||
"tracing",
|
||||
"windows-sys 0.48.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -3490,17 +2950,6 @@ version = "1.17.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
|
||||
|
||||
[[package]]
|
||||
name = "uds_windows"
|
||||
version = "1.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9"
|
||||
dependencies = [
|
||||
"memoffset",
|
||||
"tempfile",
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "unicode-bidi"
|
||||
version = "0.3.15"
|
||||
@@ -3577,18 +3026,6 @@ dependencies = [
|
||||
"subtle",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "url"
|
||||
version = "2.5.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f7c25da092f0a868cdf09e8674cd3b7ef3a7d92a24253e663a2fb85e2496de56"
|
||||
dependencies = [
|
||||
"form_urlencoded",
|
||||
"idna",
|
||||
"percent-encoding",
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "usvg"
|
||||
version = "0.36.0"
|
||||
@@ -3650,18 +3087,6 @@ dependencies = [
|
||||
"tiny-skia-path",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "utf16_iter"
|
||||
version = "1.0.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246"
|
||||
|
||||
[[package]]
|
||||
name = "utf8_iter"
|
||||
version = "1.0.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
|
||||
|
||||
[[package]]
|
||||
name = "version_check"
|
||||
version = "0.9.4"
|
||||
@@ -4348,18 +3773,6 @@ dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "write16"
|
||||
version = "1.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936"
|
||||
|
||||
[[package]]
|
||||
name = "writeable"
|
||||
version = "0.5.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51"
|
||||
|
||||
[[package]]
|
||||
name = "x11-dl"
|
||||
version = "2.21.0"
|
||||
@@ -4398,16 +3811,6 @@ version = "0.3.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6a0ccd7b4a5345edfcd0c3535718a4e9ff7798ffc536bb5b5a0e26ff84732911"
|
||||
|
||||
[[package]]
|
||||
name = "xdg-home"
|
||||
version = "1.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ca91dcf8f93db085f3a0a29358cd0b9d670915468f4290e8b85d118a34211ab8"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"windows-sys 0.52.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "xkbcommon-dl"
|
||||
version = "0.4.2"
|
||||
@@ -4451,87 +3854,6 @@ version = "0.1.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c94451ac9513335b5e23d7a8a2b61a7102398b8cca5160829d313e84c9d98be1"
|
||||
|
||||
[[package]]
|
||||
name = "yoke"
|
||||
version = "0.7.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5"
|
||||
dependencies = [
|
||||
"serde",
|
||||
"stable_deref_trait",
|
||||
"yoke-derive",
|
||||
"zerofrom",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "yoke-derive"
|
||||
version = "0.7.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.66",
|
||||
"synstructure",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zbus"
|
||||
version = "4.2.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "989c3977a7aafa97b12b9a35d21cdcff9b0d2289762b14683f45d66b1ba6c48f"
|
||||
dependencies = [
|
||||
"async-broadcast",
|
||||
"async-process",
|
||||
"async-recursion",
|
||||
"async-trait",
|
||||
"enumflags2",
|
||||
"event-listener",
|
||||
"futures-core",
|
||||
"futures-sink",
|
||||
"futures-util",
|
||||
"hex",
|
||||
"nix",
|
||||
"ordered-stream",
|
||||
"rand",
|
||||
"serde",
|
||||
"serde_repr",
|
||||
"sha1",
|
||||
"static_assertions",
|
||||
"tokio",
|
||||
"tracing",
|
||||
"uds_windows",
|
||||
"windows-sys 0.52.0",
|
||||
"xdg-home",
|
||||
"zbus_macros",
|
||||
"zbus_names",
|
||||
"zvariant",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zbus_macros"
|
||||
version = "4.2.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6fe9de53245dcf426b7be226a4217dd5e339080e5d46e64a02d6e5dcbf90fca1"
|
||||
dependencies = [
|
||||
"proc-macro-crate",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.66",
|
||||
"zvariant_utils",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zbus_names"
|
||||
version = "3.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c"
|
||||
dependencies = [
|
||||
"serde",
|
||||
"static_assertions",
|
||||
"zvariant",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zeno"
|
||||
version = "0.2.3"
|
||||
@@ -4557,84 +3879,3 @@ dependencies = [
|
||||
"quote",
|
||||
"syn 2.0.66",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zerofrom"
|
||||
version = "0.1.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55"
|
||||
dependencies = [
|
||||
"zerofrom-derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zerofrom-derive"
|
||||
version = "0.1.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.66",
|
||||
"synstructure",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zerovec"
|
||||
version = "0.10.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bb2cc8827d6c0994478a15c53f374f46fbd41bea663d809b14744bc42e6b109c"
|
||||
dependencies = [
|
||||
"yoke",
|
||||
"zerofrom",
|
||||
"zerovec-derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zerovec-derive"
|
||||
version = "0.10.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "97cf56601ee5052b4417d90c8755c6683473c926039908196cf35d99f893ebe7"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.66",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zvariant"
|
||||
version = "4.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9aa6d31a02fbfb602bfde791de7fedeb9c2c18115b3d00f3a36e489f46ffbbc7"
|
||||
dependencies = [
|
||||
"endi",
|
||||
"enumflags2",
|
||||
"serde",
|
||||
"static_assertions",
|
||||
"url",
|
||||
"zvariant_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zvariant_derive"
|
||||
version = "4.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "642bf1b6b6d527988b3e8193d20969d53700a36eac734d21ae6639db168701c8"
|
||||
dependencies = [
|
||||
"proc-macro-crate",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.66",
|
||||
"zvariant_utils",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zvariant_utils"
|
||||
version = "2.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fc242db087efc22bd9ade7aa7809e4ba828132edc312871584a6b4391bdf8786"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.66",
|
||||
]
|
||||
|
||||
@@ -2,13 +2,18 @@
|
||||
name = "pumpbin"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
default-run = "pumpbin"
|
||||
authors = ["b1n <b1n@b1n.io>"]
|
||||
license = "MIT"
|
||||
homepage = "https://b1n.io"
|
||||
repository = "https://github.com/pumpbin/pumpbin"
|
||||
|
||||
[[bin]]
|
||||
name = "maker"
|
||||
path = "src/bin/maker.rs"
|
||||
|
||||
[dependencies]
|
||||
rfd = { version = "0.14.1", default-features = false , features = ["tokio"]}
|
||||
rfd = { version = "0.14.1", default-features = false}
|
||||
dirs = "5.0.1"
|
||||
flatbuffers = "24.3.25"
|
||||
open = "5.1.4"
|
||||
|
||||
783
src/bin/maker.rs
Normal file
783
src/bin/maker.rs
Normal file
@@ -0,0 +1,783 @@
|
||||
use std::{fs, path::PathBuf, usize};
|
||||
|
||||
use bincode::encode_to_vec;
|
||||
use dirs::{desktop_dir, home_dir};
|
||||
use iced::{
|
||||
advanced::Application,
|
||||
executor,
|
||||
widget::{
|
||||
button, column, horizontal_rule, pick_list, radio, row, svg::Handle, text, text_editor,
|
||||
text_input, Svg,
|
||||
},
|
||||
Alignment, Font, Length, Renderer, Task, Theme,
|
||||
};
|
||||
use pumpbin::{
|
||||
plugin::{Bins, Plugin},
|
||||
svg_style, ShellcodeSaveType,
|
||||
};
|
||||
use pumpbin::{
|
||||
plugin::{EncryptType, Platforms},
|
||||
Pumpbin,
|
||||
};
|
||||
use rfd::AsyncFileDialog;
|
||||
|
||||
#[derive(Debug)]
|
||||
struct Maker {
|
||||
plugin_name: String,
|
||||
author: String,
|
||||
version: String,
|
||||
prefix: String,
|
||||
max_len: String,
|
||||
shellcode_save_type: ShellcodeSaveType,
|
||||
size_holder: String,
|
||||
encrypt_type: EncryptType,
|
||||
windows_exe: String,
|
||||
windows_lib: String,
|
||||
linux_exe: String,
|
||||
linux_lib: String,
|
||||
darwin_exe: String,
|
||||
darwin_lib: String,
|
||||
desc: text_editor::Content,
|
||||
message: String,
|
||||
selected_theme: Theme,
|
||||
}
|
||||
|
||||
impl Default for Maker {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
plugin_name: Default::default(),
|
||||
author: Default::default(),
|
||||
version: Default::default(),
|
||||
prefix: Default::default(),
|
||||
max_len: Default::default(),
|
||||
shellcode_save_type: ShellcodeSaveType::Local,
|
||||
size_holder: Default::default(),
|
||||
encrypt_type: EncryptType::None,
|
||||
windows_exe: Default::default(),
|
||||
windows_lib: Default::default(),
|
||||
linux_exe: Default::default(),
|
||||
linux_lib: Default::default(),
|
||||
darwin_exe: Default::default(),
|
||||
darwin_lib: Default::default(),
|
||||
desc: text_editor::Content::new(),
|
||||
message: "Welcom to PumpBin Maker.".to_string(),
|
||||
selected_theme: Theme::CatppuccinMacchiato,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Maker {
|
||||
fn plugin_name(&self) -> &str {
|
||||
&self.plugin_name
|
||||
}
|
||||
|
||||
fn author(&self) -> &str {
|
||||
&self.author
|
||||
}
|
||||
|
||||
fn version(&self) -> &str {
|
||||
&self.version
|
||||
}
|
||||
|
||||
fn prefix(&self) -> &str {
|
||||
&self.prefix
|
||||
}
|
||||
|
||||
fn max_len(&self) -> &str {
|
||||
&self.max_len
|
||||
}
|
||||
|
||||
fn shellcode_save_type(&self) -> ShellcodeSaveType {
|
||||
self.shellcode_save_type
|
||||
}
|
||||
|
||||
fn size_holder(&self) -> &str {
|
||||
&self.size_holder
|
||||
}
|
||||
|
||||
fn encrypt_type(&self) -> &EncryptType {
|
||||
&self.encrypt_type
|
||||
}
|
||||
|
||||
fn encrypt_type_mut(&mut self) -> &mut EncryptType {
|
||||
&mut self.encrypt_type
|
||||
}
|
||||
|
||||
fn windows_exe(&self) -> &str {
|
||||
&self.windows_exe
|
||||
}
|
||||
|
||||
fn windows_lib(&self) -> &str {
|
||||
&self.windows_lib
|
||||
}
|
||||
|
||||
fn linux_exe(&self) -> &str {
|
||||
&self.linux_exe
|
||||
}
|
||||
|
||||
fn linux_lib(&self) -> &str {
|
||||
&self.linux_lib
|
||||
}
|
||||
|
||||
fn darwin_exe(&self) -> &str {
|
||||
&self.darwin_exe
|
||||
}
|
||||
|
||||
fn darwin_lib(&self) -> &str {
|
||||
&self.darwin_lib
|
||||
}
|
||||
|
||||
fn desc(&self) -> &text_editor::Content {
|
||||
&self.desc
|
||||
}
|
||||
|
||||
fn desc_mut(&mut self) -> &mut text_editor::Content {
|
||||
&mut self.desc
|
||||
}
|
||||
|
||||
fn selected_theme(&self) -> Theme {
|
||||
self.selected_theme.clone()
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
enum ChooseFileType {
|
||||
WindowsExe,
|
||||
WindowsLib,
|
||||
LinuxExe,
|
||||
LinuxLib,
|
||||
DarwinExe,
|
||||
DarwinLib,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
enum MakerMessage {
|
||||
PluginNameChanged(String),
|
||||
AuthorChanged(String),
|
||||
VersionChanged(String),
|
||||
PrefixChanged(String),
|
||||
MaxLenChanged(String),
|
||||
ShellcodeSaveTypeChanged(ShellcodeSaveType),
|
||||
SizeHolderChanged(String),
|
||||
EncryptTypeChanged(EncryptType),
|
||||
XorPassChanged(String),
|
||||
AesKeyChanged(String),
|
||||
AesNonceChanged(String),
|
||||
WindowsExeChanged(String),
|
||||
WindowsLibChanged(String),
|
||||
LinuxExeChanged(String),
|
||||
LinuxLibChanged(String),
|
||||
DarwinExeChanged(String),
|
||||
DarwinLibChanged(String),
|
||||
DescAction(text_editor::Action),
|
||||
GenerateClicked,
|
||||
GenerateDone(Result<(), String>),
|
||||
ChooseFileClicked(ChooseFileType),
|
||||
WindowsExeChooseDone(Result<String, String>),
|
||||
WindowsLibChooseDone(Result<String, String>),
|
||||
LinuxExeChooseDone(Result<String, String>),
|
||||
LinuxLibChooseDone(Result<String, String>),
|
||||
DarwinExeChooseDone(Result<String, String>),
|
||||
DarwinLibChooseDone(Result<String, String>),
|
||||
B1nClicked,
|
||||
GithubClicked,
|
||||
ThemeChanged(Theme),
|
||||
}
|
||||
|
||||
impl Application for Maker {
|
||||
type Executor = executor::Default;
|
||||
type Flags = ();
|
||||
type Message = MakerMessage;
|
||||
type Theme = Theme;
|
||||
type Renderer = Renderer;
|
||||
|
||||
fn new(_flags: Self::Flags) -> (Self, iced::Task<Self::Message>) {
|
||||
(Self::default(), Task::none())
|
||||
}
|
||||
|
||||
fn title(&self) -> String {
|
||||
"PumpBin Maker".to_string()
|
||||
}
|
||||
|
||||
fn update(&mut self, message: Self::Message) -> iced::Task<Self::Message> {
|
||||
match message {
|
||||
MakerMessage::PluginNameChanged(x) => {
|
||||
self.plugin_name = x;
|
||||
Task::none()
|
||||
}
|
||||
MakerMessage::AuthorChanged(x) => {
|
||||
self.author = x;
|
||||
Task::none()
|
||||
}
|
||||
MakerMessage::VersionChanged(x) => {
|
||||
self.version = x;
|
||||
Task::none()
|
||||
}
|
||||
MakerMessage::PrefixChanged(x) => {
|
||||
self.prefix = x;
|
||||
Task::none()
|
||||
}
|
||||
MakerMessage::MaxLenChanged(x) => {
|
||||
self.max_len = x;
|
||||
Task::none()
|
||||
}
|
||||
MakerMessage::ShellcodeSaveTypeChanged(x) => {
|
||||
self.shellcode_save_type = x;
|
||||
Task::none()
|
||||
}
|
||||
MakerMessage::SizeHolderChanged(x) => {
|
||||
self.size_holder = x;
|
||||
Task::none()
|
||||
}
|
||||
|
||||
MakerMessage::EncryptTypeChanged(x) => {
|
||||
self.encrypt_type = x;
|
||||
Task::none()
|
||||
}
|
||||
MakerMessage::XorPassChanged(x) => {
|
||||
if let EncryptType::Xor(xor) = self.encrypt_type_mut() {
|
||||
*xor = x.as_bytes().to_vec();
|
||||
}
|
||||
Task::none()
|
||||
}
|
||||
MakerMessage::AesKeyChanged(x) => {
|
||||
if let EncryptType::AesGcm(aes_gcm) = self.encrypt_type_mut() {
|
||||
*aes_gcm.key_holder_mut() = x.as_bytes().to_vec();
|
||||
}
|
||||
Task::none()
|
||||
}
|
||||
MakerMessage::AesNonceChanged(x) => {
|
||||
if let EncryptType::AesGcm(aes_gcm) = self.encrypt_type_mut() {
|
||||
*aes_gcm.nonce_holder_mut() = x.as_bytes().to_vec();
|
||||
}
|
||||
Task::none()
|
||||
}
|
||||
MakerMessage::WindowsExeChanged(x) => {
|
||||
self.windows_exe = x;
|
||||
Task::none()
|
||||
}
|
||||
MakerMessage::WindowsLibChanged(x) => {
|
||||
self.windows_lib = x;
|
||||
Task::none()
|
||||
}
|
||||
MakerMessage::LinuxExeChanged(x) => {
|
||||
self.linux_exe = x;
|
||||
Task::none()
|
||||
}
|
||||
MakerMessage::LinuxLibChanged(x) => {
|
||||
self.linux_lib = x;
|
||||
Task::none()
|
||||
}
|
||||
MakerMessage::DarwinExeChanged(x) => {
|
||||
self.darwin_exe = x;
|
||||
Task::none()
|
||||
}
|
||||
MakerMessage::DarwinLibChanged(x) => {
|
||||
self.darwin_lib = x;
|
||||
Task::none()
|
||||
}
|
||||
MakerMessage::DescAction(x) => {
|
||||
self.desc_mut().perform(x);
|
||||
Task::none()
|
||||
}
|
||||
MakerMessage::GenerateClicked => {
|
||||
if self.plugin_name().is_empty() {
|
||||
self.message = "Plugin Name is empty.".to_string();
|
||||
return Task::none();
|
||||
}
|
||||
|
||||
if self.prefix().is_empty() {
|
||||
self.message = "Prefix is empty.".to_string();
|
||||
return Task::none();
|
||||
}
|
||||
|
||||
if let ShellcodeSaveType::Local = self.shellcode_save_type() {
|
||||
if self.size_holder().is_empty() {
|
||||
self.message = "Size Holder is empty.".to_string();
|
||||
return Task::none();
|
||||
}
|
||||
}
|
||||
|
||||
let max_len;
|
||||
|
||||
if let Ok(max) = self.max_len().parse::<usize>() {
|
||||
max_len = max;
|
||||
} else {
|
||||
self.message = "MaxLen numeric only.".to_string();
|
||||
return Task::none();
|
||||
}
|
||||
|
||||
match self.encrypt_type() {
|
||||
EncryptType::None => (),
|
||||
EncryptType::Xor(x) => {
|
||||
if x.is_empty() {
|
||||
self.message = "Xor Pass is empty.".to_string();
|
||||
return Task::none();
|
||||
}
|
||||
}
|
||||
EncryptType::AesGcm(x) => {
|
||||
if x.key_holder().is_empty() {
|
||||
self.message = "AesGcm Key is empty.".to_string();
|
||||
return Task::none();
|
||||
} else if x.nonce_holder().is_empty() {
|
||||
self.message = "AesGcm Nonce is empty.".to_string();
|
||||
return Task::none();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let windows_exe_path = PathBuf::from(self.windows_exe());
|
||||
let windows_dll_path = PathBuf::from(self.windows_lib());
|
||||
let windows = match (
|
||||
windows_exe_path.exists() && windows_exe_path.is_file(),
|
||||
windows_dll_path.exists() && windows_dll_path.is_file(),
|
||||
) {
|
||||
(false, false) => None,
|
||||
_ => Some(Bins {
|
||||
executable: if let Ok(bin) = fs::read(&windows_exe_path) {
|
||||
Some(bin)
|
||||
} else {
|
||||
None
|
||||
},
|
||||
dynamic_library: if let Ok(bin) = fs::read(&windows_dll_path) {
|
||||
Some(bin)
|
||||
} else {
|
||||
None
|
||||
},
|
||||
}),
|
||||
};
|
||||
|
||||
let linux_exe_path = PathBuf::from(self.linux_exe());
|
||||
let linux_dll_path = PathBuf::from(self.linux_lib());
|
||||
let linux = match (
|
||||
linux_exe_path.exists() && linux_exe_path.is_file(),
|
||||
linux_dll_path.exists() && linux_dll_path.is_file(),
|
||||
) {
|
||||
(false, false) => None,
|
||||
_ => Some(Bins {
|
||||
executable: if let Ok(bin) = fs::read(&linux_exe_path) {
|
||||
Some(bin)
|
||||
} else {
|
||||
None
|
||||
},
|
||||
dynamic_library: if let Ok(bin) = fs::read(&linux_dll_path) {
|
||||
Some(bin)
|
||||
} else {
|
||||
None
|
||||
},
|
||||
}),
|
||||
};
|
||||
|
||||
let darwin_exe_path = PathBuf::from(self.darwin_exe());
|
||||
let darwin_dll_path = PathBuf::from(self.darwin_lib());
|
||||
let darwin = match (
|
||||
darwin_exe_path.exists() && darwin_exe_path.is_file(),
|
||||
darwin_dll_path.exists() && darwin_dll_path.is_file(),
|
||||
) {
|
||||
(false, false) => None,
|
||||
_ => Some(Bins {
|
||||
executable: if let Ok(bin) = fs::read(&darwin_exe_path) {
|
||||
Some(bin)
|
||||
} else {
|
||||
None
|
||||
},
|
||||
dynamic_library: if let Ok(bin) = fs::read(&darwin_dll_path) {
|
||||
Some(bin)
|
||||
} else {
|
||||
None
|
||||
},
|
||||
}),
|
||||
};
|
||||
|
||||
let plugin = Plugin {
|
||||
plugin_name: self.plugin_name().to_string(),
|
||||
author: match self.author().is_empty() {
|
||||
true => None,
|
||||
false => Some(self.author().to_string()),
|
||||
},
|
||||
version: match self.version().is_empty() {
|
||||
true => None,
|
||||
false => Some(self.version().to_string()),
|
||||
},
|
||||
desc: match self.desc().text().is_empty() {
|
||||
true => None,
|
||||
false => Some(self.desc().text()),
|
||||
},
|
||||
prefix: self.prefix().as_bytes().to_vec(),
|
||||
size_holder: match self.shellcode_save_type() {
|
||||
ShellcodeSaveType::Local => Some(self.size_holder().as_bytes().to_vec()),
|
||||
ShellcodeSaveType::Remote => None,
|
||||
},
|
||||
max_len,
|
||||
encrypt_type: self.encrypt_type().to_owned(),
|
||||
platforms: Platforms {
|
||||
windows,
|
||||
linux,
|
||||
darwin,
|
||||
},
|
||||
};
|
||||
|
||||
let plugin_name = self.plugin_name().to_owned();
|
||||
let make_plugin = async move {
|
||||
let buf = encode_to_vec(plugin, bincode::config::standard())
|
||||
.map_err(|_| "Encode plugin failed.".to_string())?;
|
||||
|
||||
let file = AsyncFileDialog::new()
|
||||
.set_directory(desktop_dir().unwrap_or(".".into()))
|
||||
.set_file_name(format!("{}.b1n", plugin_name))
|
||||
.set_can_create_directories(true)
|
||||
.set_title("save plugin")
|
||||
.save_file()
|
||||
.await
|
||||
.ok_or("Canceled plugin saving.".to_string())?;
|
||||
|
||||
fs::write(file.path(), buf).map_err(|_| "Write plugin failed.".to_string())?;
|
||||
|
||||
Ok(())
|
||||
};
|
||||
|
||||
Task::perform(make_plugin, MakerMessage::GenerateDone)
|
||||
}
|
||||
MakerMessage::GenerateDone(x) => {
|
||||
self.message = match x {
|
||||
Ok(_) => "Generate done.".to_string(),
|
||||
Err(e) => e,
|
||||
};
|
||||
|
||||
Task::none()
|
||||
}
|
||||
MakerMessage::ChooseFileClicked(x) => {
|
||||
let choose_file = async move {
|
||||
AsyncFileDialog::new()
|
||||
.set_directory(home_dir().unwrap_or(".".into()))
|
||||
.set_title("choose file")
|
||||
.pick_file()
|
||||
.await
|
||||
.map(|x| x.path().to_string_lossy().to_string())
|
||||
.ok_or("Canceled file selection.".to_string())
|
||||
};
|
||||
|
||||
Task::perform(
|
||||
choose_file,
|
||||
match x {
|
||||
ChooseFileType::WindowsExe => MakerMessage::WindowsExeChooseDone,
|
||||
ChooseFileType::WindowsLib => MakerMessage::WindowsLibChooseDone,
|
||||
ChooseFileType::LinuxExe => MakerMessage::LinuxExeChooseDone,
|
||||
ChooseFileType::LinuxLib => MakerMessage::LinuxLibChooseDone,
|
||||
ChooseFileType::DarwinExe => MakerMessage::DarwinExeChooseDone,
|
||||
ChooseFileType::DarwinLib => MakerMessage::DarwinLibChooseDone,
|
||||
},
|
||||
)
|
||||
}
|
||||
MakerMessage::WindowsExeChooseDone(x) => {
|
||||
match x {
|
||||
Ok(x) => self.windows_exe = x,
|
||||
Err(x) => self.message = x,
|
||||
}
|
||||
Task::none()
|
||||
}
|
||||
MakerMessage::WindowsLibChooseDone(x) => {
|
||||
match x {
|
||||
Ok(x) => self.windows_lib = x,
|
||||
Err(x) => self.message = x,
|
||||
}
|
||||
Task::none()
|
||||
}
|
||||
MakerMessage::LinuxExeChooseDone(x) => {
|
||||
match x {
|
||||
Ok(x) => self.linux_exe = x,
|
||||
Err(x) => self.message = x,
|
||||
}
|
||||
Task::none()
|
||||
}
|
||||
MakerMessage::LinuxLibChooseDone(x) => {
|
||||
match x {
|
||||
Ok(x) => self.linux_lib = x,
|
||||
Err(x) => self.message = x,
|
||||
}
|
||||
Task::none()
|
||||
}
|
||||
MakerMessage::DarwinExeChooseDone(x) => {
|
||||
match x {
|
||||
Ok(x) => self.darwin_exe = x,
|
||||
Err(x) => self.message = x,
|
||||
}
|
||||
Task::none()
|
||||
}
|
||||
MakerMessage::DarwinLibChooseDone(x) => {
|
||||
match x {
|
||||
Ok(x) => self.darwin_lib = x,
|
||||
Err(x) => self.message = x,
|
||||
}
|
||||
Task::none()
|
||||
}
|
||||
MakerMessage::B1nClicked => {
|
||||
if open::that(env!("CARGO_PKG_HOMEPAGE")).is_err() {
|
||||
self.message = "Open home failed.".into();
|
||||
}
|
||||
Task::none()
|
||||
}
|
||||
MakerMessage::GithubClicked => {
|
||||
if open::that(env!("CARGO_PKG_REPOSITORY")).is_err() {
|
||||
self.message = "Open repo failed.".into();
|
||||
}
|
||||
Task::none()
|
||||
}
|
||||
MakerMessage::ThemeChanged(x) => {
|
||||
self.selected_theme = x;
|
||||
Task::none()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn view(&self) -> iced::Element<'_, Self::Message, Self::Theme, Self::Renderer> {
|
||||
let font = Font::with_name("JetBrainsMono Nerd Font");
|
||||
|
||||
let choose_button = || {
|
||||
button(
|
||||
Svg::new(Handle::from_memory(include_bytes!(
|
||||
"../../assets/svg/three-dots.svg"
|
||||
)))
|
||||
.width(20),
|
||||
)
|
||||
};
|
||||
|
||||
let pick_list_handle = || pick_list::Handle::Dynamic {
|
||||
closed: pick_list::Icon {
|
||||
font,
|
||||
code_point: '',
|
||||
size: None,
|
||||
line_height: text::LineHeight::Relative(1.0),
|
||||
shaping: text::Shaping::Basic,
|
||||
},
|
||||
open: pick_list::Icon {
|
||||
font,
|
||||
code_point: '',
|
||||
size: None,
|
||||
line_height: text::LineHeight::Relative(1.0),
|
||||
shaping: text::Shaping::Basic,
|
||||
},
|
||||
};
|
||||
|
||||
let maker = column![
|
||||
row![
|
||||
column![
|
||||
text("Plugin Name"),
|
||||
text_input("", self.plugin_name()).on_input(MakerMessage::PluginNameChanged),
|
||||
]
|
||||
.align_items(Alignment::Start),
|
||||
column![
|
||||
text("Author"),
|
||||
text_input("", self.author()).on_input(MakerMessage::AuthorChanged),
|
||||
]
|
||||
.align_items(Alignment::Start),
|
||||
column![
|
||||
text("Version"),
|
||||
text_input("", self.version()).on_input(MakerMessage::VersionChanged),
|
||||
]
|
||||
.align_items(Alignment::Start),
|
||||
column![
|
||||
text("Prefix"),
|
||||
text_input("", self.prefix()).on_input(MakerMessage::PrefixChanged),
|
||||
]
|
||||
.align_items(Alignment::Start),
|
||||
column![
|
||||
text("MaxLen"),
|
||||
text_input("", self.max_len()).on_input(MakerMessage::MaxLenChanged),
|
||||
]
|
||||
.align_items(Alignment::Start),
|
||||
]
|
||||
.spacing(10)
|
||||
.align_items(Alignment::Center),
|
||||
column![
|
||||
text("Type"),
|
||||
row![
|
||||
radio(
|
||||
ShellcodeSaveType::Local.to_string(),
|
||||
ShellcodeSaveType::Local,
|
||||
Some(self.shellcode_save_type()),
|
||||
MakerMessage::ShellcodeSaveTypeChanged
|
||||
),
|
||||
radio(
|
||||
ShellcodeSaveType::Remote.to_string(),
|
||||
ShellcodeSaveType::Remote,
|
||||
Some(self.shellcode_save_type()),
|
||||
MakerMessage::ShellcodeSaveTypeChanged
|
||||
)
|
||||
]
|
||||
.push_maybe(match self.shellcode_save_type() {
|
||||
ShellcodeSaveType::Local => Some(
|
||||
row![
|
||||
text("Size Holder: "),
|
||||
text_input("", self.size_holder())
|
||||
.on_input(MakerMessage::SizeHolderChanged)
|
||||
]
|
||||
.align_items(Alignment::Center)
|
||||
),
|
||||
ShellcodeSaveType::Remote => None,
|
||||
})
|
||||
.align_items(Alignment::Center)
|
||||
.height(30)
|
||||
.spacing(20)
|
||||
]
|
||||
.align_items(Alignment::Start),
|
||||
column![
|
||||
text("Encrypt Type"),
|
||||
row![pick_list(
|
||||
EncryptType::all(),
|
||||
Some(self.encrypt_type()),
|
||||
MakerMessage::EncryptTypeChanged
|
||||
)
|
||||
.handle(pick_list_handle())]
|
||||
.push_maybe(match self.encrypt_type() {
|
||||
EncryptType::None => None,
|
||||
EncryptType::Xor(x) => Some(
|
||||
row![
|
||||
text("Pass:"),
|
||||
text_input("", &String::from_utf8_lossy(x))
|
||||
.on_input(MakerMessage::XorPassChanged)
|
||||
]
|
||||
.spacing(10)
|
||||
.align_items(Alignment::Center)
|
||||
),
|
||||
EncryptType::AesGcm(x) => Some(
|
||||
row![
|
||||
text("Key:"),
|
||||
text_input("", &String::from_utf8_lossy(x.key_holder()))
|
||||
.on_input(MakerMessage::AesKeyChanged),
|
||||
text("Nonce:"),
|
||||
text_input("", &String::from_utf8_lossy(x.nonce_holder()))
|
||||
.on_input(MakerMessage::AesNonceChanged)
|
||||
]
|
||||
.spacing(10)
|
||||
.align_items(Alignment::Center)
|
||||
),
|
||||
})
|
||||
.spacing(20)
|
||||
.align_items(Alignment::Center)
|
||||
]
|
||||
.align_items(Alignment::Start),
|
||||
column![
|
||||
text("Windows"),
|
||||
row![
|
||||
text("Exe:"),
|
||||
row![text_input("", self.windows_exe())
|
||||
.on_input(MakerMessage::WindowsExeChanged)],
|
||||
choose_button()
|
||||
.on_press(MakerMessage::ChooseFileClicked(ChooseFileType::WindowsExe)),
|
||||
text("Lib:"),
|
||||
text_input("", self.windows_lib()).on_input(MakerMessage::WindowsLibChanged),
|
||||
choose_button()
|
||||
.on_press(MakerMessage::ChooseFileClicked(ChooseFileType::WindowsLib)),
|
||||
]
|
||||
.align_items(Alignment::Center)
|
||||
.spacing(10)
|
||||
]
|
||||
.align_items(Alignment::Start),
|
||||
column![
|
||||
text("Linux"),
|
||||
row![
|
||||
text("Exe:"),
|
||||
row![text_input("", self.linux_exe()).on_input(MakerMessage::LinuxExeChanged)],
|
||||
choose_button()
|
||||
.on_press(MakerMessage::ChooseFileClicked(ChooseFileType::LinuxExe)),
|
||||
text("Lib:"),
|
||||
text_input("", self.linux_lib()).on_input(MakerMessage::LinuxLibChanged),
|
||||
choose_button()
|
||||
.on_press(MakerMessage::ChooseFileClicked(ChooseFileType::LinuxLib)),
|
||||
]
|
||||
.align_items(Alignment::Center)
|
||||
.spacing(10)
|
||||
]
|
||||
.align_items(Alignment::Start),
|
||||
column![
|
||||
text("Darwin"),
|
||||
row![
|
||||
text("Exe:"),
|
||||
row![text_input("", self.darwin_exe())
|
||||
.on_input(MakerMessage::DarwinExeChanged)],
|
||||
choose_button()
|
||||
.on_press(MakerMessage::ChooseFileClicked(ChooseFileType::DarwinExe)),
|
||||
text("Lib:"),
|
||||
text_input("", self.darwin_lib()).on_input(MakerMessage::DarwinLibChanged),
|
||||
choose_button()
|
||||
.on_press(MakerMessage::ChooseFileClicked(ChooseFileType::DarwinLib)),
|
||||
]
|
||||
.align_items(Alignment::Center)
|
||||
.spacing(10)
|
||||
]
|
||||
.align_items(Alignment::Start),
|
||||
column![
|
||||
text("Description"),
|
||||
text_editor(self.desc())
|
||||
.on_action(MakerMessage::DescAction)
|
||||
.height(Length::Fill)
|
||||
]
|
||||
.align_items(Alignment::Start),
|
||||
column![row![
|
||||
button("Generate").on_press(MakerMessage::GenerateClicked)
|
||||
]]
|
||||
.align_items(Alignment::Center)
|
||||
.width(Length::Fill),
|
||||
]
|
||||
.align_items(Alignment::Start)
|
||||
.padding(20)
|
||||
.spacing(10);
|
||||
|
||||
let message = row![text(" ").size(25), text(&self.message)].align_items(Alignment::Center);
|
||||
let b1n = button(
|
||||
Svg::new(Handle::from_memory(include_bytes!(
|
||||
"../../assets/svg/house-heart-fill.svg"
|
||||
)))
|
||||
.width(30)
|
||||
.height(30)
|
||||
.style(svg_style::svg_primary_base),
|
||||
)
|
||||
.style(button::text)
|
||||
.on_press(MakerMessage::B1nClicked);
|
||||
let github = button(
|
||||
Svg::new(Handle::from_memory(include_bytes!(
|
||||
"../../assets/svg/github.svg"
|
||||
)))
|
||||
.width(30)
|
||||
.height(30)
|
||||
.style(svg_style::svg_primary_base),
|
||||
)
|
||||
.style(button::text)
|
||||
.on_press(MakerMessage::GithubClicked);
|
||||
|
||||
let theme_list = pick_list(
|
||||
Theme::ALL,
|
||||
Some(self.selected_theme.clone()),
|
||||
MakerMessage::ThemeChanged,
|
||||
);
|
||||
|
||||
let footer = column![
|
||||
horizontal_rule(0),
|
||||
row![
|
||||
column![message]
|
||||
.width(Length::FillPortion(1))
|
||||
.align_items(Alignment::Start),
|
||||
column![row![b1n, github].align_items(Alignment::Center)]
|
||||
.width(Length::FillPortion(1))
|
||||
.align_items(Alignment::Center),
|
||||
column![theme_list]
|
||||
.width(Length::FillPortion(1))
|
||||
.align_items(Alignment::End)
|
||||
]
|
||||
.padding([0, 20])
|
||||
.align_items(Alignment::Center)
|
||||
]
|
||||
.align_items(Alignment::Center);
|
||||
|
||||
column![maker, footer].align_items(Alignment::Center).into()
|
||||
}
|
||||
|
||||
fn theme(&self) -> Self::Theme {
|
||||
self.selected_theme()
|
||||
}
|
||||
}
|
||||
|
||||
fn main() -> iced::Result {
|
||||
Maker::run(Pumpbin::settings())
|
||||
}
|
||||
66
src/lib.rs
66
src/lib.rs
@@ -1,6 +1,6 @@
|
||||
mod button_style;
|
||||
mod plugin;
|
||||
mod svg_style;
|
||||
pub mod plugin;
|
||||
pub mod svg_style;
|
||||
|
||||
use std::{fmt::Display, fs, iter, ops::Not, path::PathBuf};
|
||||
|
||||
@@ -8,12 +8,14 @@ use dirs::{desktop_dir, home_dir};
|
||||
use iced::{
|
||||
advanced::Application,
|
||||
executor,
|
||||
font::{Family, Stretch, Style, Weight},
|
||||
widget::{
|
||||
button, column, container, horizontal_rule, pick_list, row, scrollable,
|
||||
svg::{self, Handle},
|
||||
text, text_editor, text_input, vertical_rule, Scrollable, Svg,
|
||||
},
|
||||
Alignment, Background, Element, Font, Length, Renderer, Task, Theme,
|
||||
window::{self, Level, Position},
|
||||
Alignment, Background, Element, Font, Length, Pixels, Renderer, Settings, Size, Task, Theme,
|
||||
};
|
||||
use memchr::memmem;
|
||||
use plugin::{EncryptType, Plugin, Plugins};
|
||||
@@ -60,6 +62,36 @@ impl Default for Pumpbin {
|
||||
}
|
||||
|
||||
impl Pumpbin {
|
||||
pub fn settings() -> Settings {
|
||||
let size = Size::new(1000.0, 600.0);
|
||||
|
||||
Settings {
|
||||
id: Some(env!("CARGO_PKG_NAME").into()),
|
||||
window: window::Settings {
|
||||
size,
|
||||
position: Position::Centered,
|
||||
min_size: Some(size),
|
||||
visible: true,
|
||||
resizable: true,
|
||||
decorations: true,
|
||||
transparent: false,
|
||||
level: Level::Normal,
|
||||
exit_on_close_request: true,
|
||||
..Default::default()
|
||||
},
|
||||
fonts: vec![include_bytes!("../assets/JetBrainsMonoNerdFontPropo-Regular.ttf").into()],
|
||||
default_font: Font {
|
||||
family: Family::Name("JetBrainsMono Nerd Font"),
|
||||
weight: Weight::Normal,
|
||||
stretch: Stretch::Normal,
|
||||
style: Style::Normal,
|
||||
},
|
||||
default_text_size: Pixels(13.0),
|
||||
antialiasing: true,
|
||||
..Default::default()
|
||||
}
|
||||
}
|
||||
|
||||
fn show_message(&mut self, message: String) {
|
||||
self.message = message;
|
||||
}
|
||||
@@ -159,8 +191,8 @@ pub enum ShellcodeSaveType {
|
||||
impl Display for ShellcodeSaveType {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
match self {
|
||||
ShellcodeSaveType::Local => write!(f, "Shellcode path:"),
|
||||
ShellcodeSaveType::Remote => write!(f, "Shellcode url:"),
|
||||
ShellcodeSaveType::Local => write!(f, "Local"),
|
||||
ShellcodeSaveType::Remote => write!(f, "Remote"),
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -694,15 +726,21 @@ impl Application for Pumpbin {
|
||||
let font = Font::with_name("JetBrainsMono Nerd Font");
|
||||
|
||||
let shellcode_src = row![
|
||||
text_input(&self.shellcode_save_type.to_string(), &self.shellcode_src)
|
||||
.on_input(Message::ShellcodeSrcChanged)
|
||||
.icon(text_input::Icon {
|
||||
font,
|
||||
code_point: '',
|
||||
size: None,
|
||||
spacing: 12.0,
|
||||
side: text_input::Side::Left,
|
||||
}),
|
||||
text_input(
|
||||
match self.shellcode_save_type() {
|
||||
ShellcodeSaveType::Local => "Shellcode path:",
|
||||
ShellcodeSaveType::Remote => "Shellcode url:",
|
||||
},
|
||||
&self.shellcode_src
|
||||
)
|
||||
.on_input(Message::ShellcodeSrcChanged)
|
||||
.icon(text_input::Icon {
|
||||
font,
|
||||
code_point: '',
|
||||
size: None,
|
||||
spacing: 12.0,
|
||||
side: text_input::Side::Left,
|
||||
}),
|
||||
button(match self.shellcode_save_type() {
|
||||
ShellcodeSaveType::Local => row![Svg::new(Handle::from_memory(include_bytes!(
|
||||
"../assets/svg/three-dots.svg"
|
||||
|
||||
37
src/main.rs
37
src/main.rs
@@ -1,39 +1,6 @@
|
||||
use iced::{
|
||||
advanced::Application,
|
||||
font::{Family, Stretch, Style, Weight},
|
||||
window::{self, Level, Position},
|
||||
Font, Pixels, Settings, Size,
|
||||
};
|
||||
use iced::advanced::Application;
|
||||
use pumpbin::Pumpbin;
|
||||
|
||||
fn main() -> iced::Result {
|
||||
let size = Size::new(1000.0, 600.0);
|
||||
|
||||
let settings = Settings {
|
||||
id: Some(env!("CARGO_PKG_NAME").into()),
|
||||
window: window::Settings {
|
||||
size,
|
||||
position: Position::Centered,
|
||||
min_size: Some(size),
|
||||
visible: true,
|
||||
resizable: true,
|
||||
decorations: true,
|
||||
transparent: false,
|
||||
level: Level::Normal,
|
||||
exit_on_close_request: true,
|
||||
..Default::default()
|
||||
},
|
||||
fonts: vec![include_bytes!("../assets/JetBrainsMonoNerdFontPropo-Regular.ttf").into()],
|
||||
default_font: Font {
|
||||
family: Family::Name("JetBrainsMono Nerd Font"),
|
||||
weight: Weight::Normal,
|
||||
stretch: Stretch::Normal,
|
||||
style: Style::Normal,
|
||||
},
|
||||
default_text_size: Pixels(13.0),
|
||||
antialiasing: true,
|
||||
..Default::default()
|
||||
};
|
||||
|
||||
Pumpbin::run(settings)
|
||||
Pumpbin::run(Pumpbin::settings())
|
||||
}
|
||||
|
||||
@@ -47,6 +47,16 @@ impl Display for EncryptType {
|
||||
}
|
||||
|
||||
impl EncryptType {
|
||||
pub const fn all() -> [EncryptType; 3] {
|
||||
[
|
||||
EncryptType::None,
|
||||
EncryptType::Xor(vec![]),
|
||||
EncryptType::AesGcm(AesGcmPass {
|
||||
key_holder: vec![],
|
||||
nonce_holder: vec![],
|
||||
}),
|
||||
]
|
||||
}
|
||||
pub fn encrypt(&self, path: &Path) -> anyhow::Result<Vec<u8>> {
|
||||
let data = fs::read(path)?;
|
||||
|
||||
@@ -70,8 +80,8 @@ impl EncryptType {
|
||||
|
||||
#[derive(Debug, Clone, Encode, Decode, PartialEq, Eq)]
|
||||
pub struct Bins {
|
||||
executable: Option<Vec<u8>>,
|
||||
dynamic_library: Option<Vec<u8>>,
|
||||
pub executable: Option<Vec<u8>>,
|
||||
pub dynamic_library: Option<Vec<u8>>,
|
||||
}
|
||||
|
||||
impl Bins {
|
||||
@@ -86,9 +96,9 @@ impl Bins {
|
||||
|
||||
#[derive(Debug, Clone, Encode, Decode, PartialEq, Eq)]
|
||||
pub struct Platforms {
|
||||
windows: Option<Bins>,
|
||||
linux: Option<Bins>,
|
||||
darwin: Option<Bins>,
|
||||
pub windows: Option<Bins>,
|
||||
pub linux: Option<Bins>,
|
||||
pub darwin: Option<Bins>,
|
||||
}
|
||||
|
||||
impl Platforms {
|
||||
@@ -107,15 +117,15 @@ impl Platforms {
|
||||
|
||||
#[derive(Debug, Clone, Encode, Decode, PartialEq, Eq)]
|
||||
pub struct Plugin {
|
||||
plugin_name: String,
|
||||
author: Option<String>,
|
||||
version: Option<String>,
|
||||
desc: Option<String>,
|
||||
prefix: Vec<u8>,
|
||||
size_holder: Option<Vec<u8>>,
|
||||
max_len: usize,
|
||||
encrypt_type: EncryptType,
|
||||
platforms: Platforms,
|
||||
pub plugin_name: String,
|
||||
pub author: Option<String>,
|
||||
pub version: Option<String>,
|
||||
pub desc: Option<String>,
|
||||
pub prefix: Vec<u8>,
|
||||
pub size_holder: Option<Vec<u8>>,
|
||||
pub max_len: usize,
|
||||
pub encrypt_type: EncryptType,
|
||||
pub platforms: Platforms,
|
||||
}
|
||||
|
||||
impl Plugin {
|
||||
|
||||
Reference in New Issue
Block a user