1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
//! `dnslogger` passive dns logger. //! //! //! use pcap::{Capture, PacketHeader}; //! use pnet::packet::{ //! ethernet::{EtherTypes, EthernetPacket}, //! ip::IpNextHeaderProtocols, //! ipv4::Ipv4Packet, //! udp::UdpPacket, //! Packet, //! }; //! //! pub fn handle_packet(packet: &pcap::Packet) { //! let ethernet = EthernetPacket::new(packet.data).unwrap(); //! let resolve_all_resource_records = true; //! match ethernet.get_ethertype() { //! EtherTypes::Ipv4 => { //! let ipv4_packet = Ipv4Packet::new(ethernet.payload()).unwrap(); //! if let IpNextHeaderProtocols::Udp = ipv4_packet.get_next_level_protocol() { //! let udp_packet = UdpPacket::new(ipv4_packet.payload()).unwrap(); //! let (rest, dns_message) = dnslogger::parse::dns_message( //! udp_packet.payload(), //! resolve_all_resource_records //! ).unwrap(); //! println!("{:?}", dns_message); //! println!("{:02x?}", rest); //! } //! } //! _ => println!("unhandled packet: {:?}", ethernet), //! } //! } pub mod parse;