Crates.io | pack2 |
lib.rs | pack2 |
version | 0.1.3 |
source | src |
created_at | 2022-05-31 09:44:14.851257 |
updated_at | 2022-05-31 10:05:45.540802 |
description | windows ipv4 packet sniffing |
homepage | |
repository | https://github.com/chronicl/pack2 |
max_upload_size | |
id | 597387 |
size | 26,897 |
This crate provides one function recv_all_socket
which creates a socket2::Socket
that receives all incoming and outgoing ipv4 packets.
use pack2::recv_all_socket;
use std::mem::MaybeUninit;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let socket = recv_all_socket()?;
let mut buf = vec![0u8; 65535];
loop {
// This is safe as described in the documentation of socket2::Socket::recv_from
let buf_maybe = unsafe { &mut *(&mut buf[..] as *mut [u8] as *mut [MaybeUninit<u8>]) };
let (read, addr) = socket.recv_from(buf_maybe)?;
println!("received {} bytes from {:?}", read, addr);
}
}