wip&fixme

This commit is contained in:
zedddie 2026-03-23 20:23:41 +01:00 committed by tuturuu
parent d0513bec6a
commit eedb2c5d02
No known key found for this signature in database
GPG key ID: B352C3C2894405A7

View file

@ -18,7 +18,7 @@ pub enum IpVersion {
V6 V6
} }
type Ipv4 = [u8; 4]; type Ipv4 = [u8; 4];
type Ipv6 = [u8; 16]; type Ipv6 = [u16; 8];
type Port = u16; type Port = u16;
#[derive(Debug, PartialEq)] #[derive(Debug, PartialEq)]
pub enum PacketInfo { pub enum PacketInfo {
@ -128,7 +128,6 @@ pub fn sniff_raw_packets(packet: &Packet) -> SniffedPacket {
let dst_port = Port::from_be_bytes([packet[ihl+2], packet[ihl+3]]); let dst_port = Port::from_be_bytes([packet[ihl+2], packet[ihl+3]]);
let dns; let dns;
if dst_port == 53 { dns = true; } else { dns = false; }; if dst_port == 53 { dns = true; } else { dns = false; };
// FIXME: hardcoded IPv4 port offset
let v4 = PacketInfo::V4{ let v4 = PacketInfo::V4{
src_ip: <Ipv4>::try_from(&packet[12..16])?, src_ip: <Ipv4>::try_from(&packet[12..16])?,
src_port: Port::from_be_bytes([packet[ihl], packet[ihl+1]]), src_port: Port::from_be_bytes([packet[ihl], packet[ihl+1]]),
@ -151,11 +150,14 @@ pub fn sniff_raw_packets(packet: &Packet) -> SniffedPacket {
Ok(v4) Ok(v4)
}, },
6 => { 6 => {
let dst_port = Port::from_be_bytes([packet[22], packet[23]]); // FIXME: fix ipv6 type representation to u16 paired u8
let src_ip_bytes = &packet[8..24];
let src_ip = src_ip_bytes.chunks(2).map(|b| u16::from_be_bytes(b[0], b[1]));
let dst_port = Port::from_be_bytes([packet[42], packet[43]]);
let dns; let dns;
if dst_port == 53 { dns = true; } else { dns = false; }; if dst_port == 53 { dns = true; } else { dns = false; };
let v6 = PacketInfo::V6{ let v6 = PacketInfo::V6{
src_ip: <Ipv6>::try_from(&packet[8..24])?, src_ip,
src_port: Port::from_be_bytes([packet[40], packet[41]]), src_port: Port::from_be_bytes([packet[40], packet[41]]),
dst_ip: <Ipv6>::try_from(&packet[24..40])?, dst_ip: <Ipv6>::try_from(&packet[24..40])?,
dst_port, dst_port,