4个版本
0.1.3 | 2022年5月31日 |
---|---|
0.1.2 | 2022年5月31日 |
0.1.1 | 2022年5月31日 |
0.1.0 | 2022年5月31日 |
#10 in #sniffing
10KB
70 代码行
windows数据包嗅探
此crate提供了一个函数recv_all_socket
,该函数创建一个接收所有传入和传出ipv4数据包的socket2::Socket
。
示例
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);
}
}
lib.rs
:
提供了一个函数[recv_all_socket],该函数创建一个接收所有传入和传出ipv4数据包的Socket。
示例
use pack2::recv_all_socket;
use std::mem::MaybeUninit;
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);
}
依赖项
~130MB
~2M SLoC