#!/usr/bin/perl

# root@laptop:/lx/packet# arp -a
# do.you.fear.LucidX.com (63.199.194.65) at 0:10:67:0:b5:b2 on dc0 [ethernet]
# LucidX (63.199.194.66) at 0:c0:f0:49:d8:a0 on dc0 permanent [ethernet]
# LOOPBACK.LucidX.com (63.199.194.67) at 0:40:33:d3:b:a1 on dc0 [ethernet]
# fbi.gov (63.199.194.69) at 0:c0:f0:4e:f:18 on dc0 [ethernet]

use strict;
use Packet::Inject;
use Packet::Ethernet;
use Packet::IP;
use Packet::TCP;

die "usage: $0 <device (eth0 or whatever)>\n" unless my $dev = shift;

my $raw = new Packet::Inject(device => $dev);

my $eth = new Packet::Ethernet(
# src_mac  => "0:c0:f0:49:d8:a0",	# LucidX
 src_mac  => "0:c0:f0:4e:f:18",		# fbi.gov
 dest_mac => "0:40:33:d3:b:a1",		# LOOPBACK.LucidX.com
 type     => 0x0800,			# IP packet
)->encode();

my $ip = new Packet::IP(
 autogen_len => 0,
 src_ip   => "63.199.194.66",		# LucidX
# src_ip   => "63.199.194.69",		# fbi.gov
 dest_ip  => "63.199.194.67",		# LOOPBACK.LucidX.com
 proto    => 6,				# TCP packet
 len      => 40,
);
my $nip = "
 4510 003c 8e2f 4000 4006 a868 3fc7 c242
 3fc7 c243 e7e7 7a69 f68b 2f13 0000 0000
 a002 ffff 8261 0000 0204 05b4 0103 0301
 0101 080a 06b8 35e9 0000 0000
";
$nip =~ s/\s//g;
$ip = pack("H*", $nip);

#my $tcp = new Packet::TCP(
# src_port => 31337,
# dest_port=> 31337,
# syn      => 1,
# winsize  => 2**16-1,
# acknum   => 0,
# seqnum   => int(rand(2**16)),
#)->encode();

$raw->open() || die "Can't open/init bpf device: $raw->{errbuf}\n";
$raw->write(packet => $eth . $ip);
$raw->close();
