wip&fixme
This commit is contained in:
parent
d0513bec6a
commit
eedb2c5d02
1 changed files with 6 additions and 4 deletions
|
|
@ -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,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue