feat: added framework for TCP client

This commit is contained in:
Andrew Rioux 2023-09-14 01:30:29 -04:00
parent fb98d062ef
commit 0ef459bcfe
Signed by: andrew.rioux
GPG Key ID: 9B8BAC47C17ABB94
8 changed files with 148 additions and 14 deletions

View File

@ -15,7 +15,7 @@
FROM rust:1-alpine FROM rust:1-alpine
RUN apk add cmake make automake musl-dev autoconf libtool \ RUN apk add cmake make automake musl-dev autoconf libtool libcap \
flex bison linux-headers openssl-dev lldb build-base libcap-dev flex bison linux-headers openssl-dev lldb build-base libcap-dev
RUN apk add mingw-w64-gcc mingw-w64-winpthreads mingw-w64-headers && \ RUN apk add mingw-w64-gcc mingw-w64-winpthreads mingw-w64-headers && \

123
Cargo.lock generated
View File

@ -264,7 +264,7 @@ checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61"
dependencies = [ dependencies = [
"byteorder", "byteorder",
"digest", "digest",
"rand_core", "rand_core 0.5.1",
"subtle", "subtle",
"zeroize", "zeroize",
] ]
@ -301,7 +301,7 @@ dependencies = [
"digest", "digest",
"hex", "hex",
"hkdf", "hkdf",
"rand", "rand 0.7.3",
"serde", "serde",
"sha2", "sha2",
"thiserror", "thiserror",
@ -326,7 +326,7 @@ checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d"
dependencies = [ dependencies = [
"curve25519-dalek", "curve25519-dalek",
"ed25519", "ed25519",
"rand", "rand 0.7.3",
"serde", "serde",
"serde_bytes", "serde_bytes",
"sha2", "sha2",
@ -395,7 +395,7 @@ name = "ex-bind-shell-key-generator"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"ed25519-dalek", "ed25519-dalek",
"rand", "rand 0.7.3",
] ]
[[package]] [[package]]
@ -534,6 +534,17 @@ dependencies = [
"wasi 0.9.0+wasi-snapshot-preview1", "wasi 0.9.0+wasi-snapshot-preview1",
] ]
[[package]]
name = "getrandom"
version = "0.2.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427"
dependencies = [
"cfg-if",
"libc",
"wasi 0.11.0+wasi-snapshot-preview1",
]
[[package]] [[package]]
name = "ghash" name = "ghash"
version = "0.3.1" version = "0.3.1"
@ -627,6 +638,16 @@ version = "0.4.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503" checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503"
[[package]]
name = "lock_api"
version = "0.4.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16"
dependencies = [
"autocfg",
"scopeguard",
]
[[package]] [[package]]
name = "log" name = "log"
version = "0.4.17" version = "0.4.17"
@ -719,6 +740,29 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
name = "packets" name = "packets"
version = "0.1.0" version = "0.1.0"
[[package]]
name = "parking_lot"
version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
dependencies = [
"lock_api",
"parking_lot_core",
]
[[package]]
name = "parking_lot_core"
version = "0.9.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447"
dependencies = [
"cfg-if",
"libc",
"redox_syscall",
"smallvec",
"windows-targets 0.48.0",
]
[[package]] [[package]]
name = "paste" name = "paste"
version = "1.0.14" version = "1.0.14"
@ -860,13 +904,24 @@ version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
dependencies = [ dependencies = [
"getrandom", "getrandom 0.1.16",
"libc", "libc",
"rand_chacha", "rand_chacha 0.2.2",
"rand_core", "rand_core 0.5.1",
"rand_hc", "rand_hc",
] ]
[[package]]
name = "rand"
version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
dependencies = [
"libc",
"rand_chacha 0.3.1",
"rand_core 0.6.4",
]
[[package]] [[package]]
name = "rand_chacha" name = "rand_chacha"
version = "0.2.2" version = "0.2.2"
@ -874,7 +929,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
dependencies = [ dependencies = [
"ppv-lite86", "ppv-lite86",
"rand_core", "rand_core 0.5.1",
]
[[package]]
name = "rand_chacha"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
dependencies = [
"ppv-lite86",
"rand_core 0.6.4",
] ]
[[package]] [[package]]
@ -883,7 +948,16 @@ version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
dependencies = [ dependencies = [
"getrandom", "getrandom 0.1.16",
]
[[package]]
name = "rand_core"
version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
dependencies = [
"getrandom 0.2.10",
] ]
[[package]] [[package]]
@ -892,7 +966,7 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
dependencies = [ dependencies = [
"rand_core", "rand_core 0.5.1",
] ]
[[package]] [[package]]
@ -964,6 +1038,12 @@ dependencies = [
"windows-sys 0.48.0", "windows-sys 0.48.0",
] ]
[[package]]
name = "scopeguard"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
[[package]] [[package]]
name = "semver" name = "semver"
version = "0.9.0" version = "0.9.0"
@ -1069,6 +1149,12 @@ dependencies = [
"autocfg", "autocfg",
] ]
[[package]]
name = "smallvec"
version = "1.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9"
[[package]] [[package]]
name = "socket2" name = "socket2"
version = "0.5.3" version = "0.5.3"
@ -1088,7 +1174,7 @@ dependencies = [
"ecies-ed25519", "ecies-ed25519",
"ed25519-dalek", "ed25519-dalek",
"libc", "libc",
"rand", "rand 0.7.3",
"raw_tty", "raw_tty",
"rmp-serde", "rmp-serde",
"serde", "serde",
@ -1104,7 +1190,7 @@ version = "0.1.0"
dependencies = [ dependencies = [
"ecies-ed25519", "ecies-ed25519",
"ed25519-dalek", "ed25519-dalek",
"rand", "rand 0.7.3",
"serde", "serde",
"serde_repr", "serde_repr",
] ]
@ -1122,7 +1208,7 @@ dependencies = [
"log", "log",
"packets", "packets",
"pcap-sys", "pcap-sys",
"rand", "rand 0.7.3",
"rmp-serde", "rmp-serde",
"serde", "serde",
"simple_logger", "simple_logger",
@ -1206,6 +1292,16 @@ dependencies = [
"unicode-ident", "unicode-ident",
] ]
[[package]]
name = "tcp-test"
version = "0.1.0"
dependencies = [
"nl-sys",
"pcap-sys",
"rand 0.8.5",
"tokio",
]
[[package]] [[package]]
name = "tempfile" name = "tempfile"
version = "3.8.0" version = "3.8.0"
@ -1288,6 +1384,7 @@ dependencies = [
"libc", "libc",
"mio", "mio",
"num_cpus", "num_cpus",
"parking_lot",
"pin-project-lite", "pin-project-lite",
"signal-hook-registry", "signal-hook-registry",
"socket2", "socket2",

View File

@ -5,6 +5,7 @@ members = [
"examples/*/*", "examples/*/*",
"sparse-protocol", "sparse-protocol",
"sparse-05/*", "sparse-05/*",
"tcp-test/client"
] ]
resolver = "2" resolver = "2"

View File

@ -27,6 +27,13 @@ script = [
"docker-compose run build build --bin sparse-05-client ${@}", "docker-compose run build build --bin sparse-05-client ${@}",
] ]
[tasks.tcp-test]
workspace = false
script = [
"docker-compose run build build --bin tcp-test ${@}",
"docker-compose run --entrypoint=setcap build cap_net_raw=eip /workspaces/sparse/target/debug/tcp-test"
]
[tasks.fmt] [tasks.fmt]
command = "cargo" command = "cargo"
args = ["fmt"] args = ["fmt"]

View File

@ -0,0 +1,12 @@
[package]
name = "tcp-test"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
pcap-sys = { path = "../../pcap-sys" }
nl-sys = { path = "../../nl-sys" }
rand = "0.8.5"
tokio = { version = "1.32.0", features = ["full"] }

View File

@ -0,0 +1,4 @@
#[tokio::main]
async fn main() {
println!("Hello, world!");
}

Binary file not shown.

13
tcp-test/server.py Normal file
View File

@ -0,0 +1,13 @@
#!/usr/bin/env python3
import socket
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(("0.0.0.0", 54248))
server.listen(32)
client, addr = server.accept()
with client:
print(client.recv(24))
client.sendall(b"pong")