5 use NetPacket::Ethernet;
12 my $gi = Geo::IP->open("GeoLiteCity.dat", GEOIP_STANDARD);
17 unless (defined $dev) {
18 $dev = Net::Pcap::lookupdev(\$err);
20 die 'Unable to determine network device for monitoring - ', $err;
24 my $server = IO::Socket::INET->new(
27 PeerAddr => 'localhost' )
28 or die "can't setup server";
32 #print $client "connection";
33 my ($address, $netmask);
34 print "Starting to send data\n";
35 #$client->autoflush(1);
36 my $object = Net::Pcap::open_live($dev, 1500, 0, 0, \$err);
42 '(tcp[13] & 2!=0) && (not src net 192.168.0.0/16)',
45 ) && die 'Unable to compile packet capture filter';
46 Net::Pcap::setfilter($object, $filter) &&
47 die 'Unable to set packet capture filter';
50 unless (defined $object) {
51 die 'Unable to create packet capture on device ', $dev, ' - ', $err;
54 #print $server "ticklex";
56 Net::Pcap::loop($object, -1, \&syn_packets, $server) ||
57 die 'Unable to perform packet capture';
61 my ($user_data, $header, $packet) = @_;
62 my $ether_data = NetPacket::Ethernet::strip($packet);
63 my $ip = NetPacket::IP->decode($ether_data);
64 my $tcp = NetPacket::TCP->decode($ip->{'data'});
66 #print "Debating" . $ip->{'src_ip'}. " \n";
68 #if ($tcp->{'flags'} eq FIN) {
69 my $record = $gi->record_by_addr($ip->{'src_ip'});
71 print $ip->{'src_ip'}. " - " ."Sending ".$record->latitude.":".$record->longitude."\n";
72 print $user_data $record->latitude.":".$record->longitude."-red:darkred\n";;