Have you ever been looking through your pcap files (or live captures) and wondered where all the traffic was coming from (or going to)? I have! Well, I’ve written a small (< 150 lines) script to aggregate all of the packet source addresses into a neatly separated CSV (comma-separated values) file. It includes
<ip address>,<country>,<city and state>,<latitude>,<longitude>,<packet count>
First off, get the script here.
It requires ruby-pcap and wget (like most of the Ruby scripts I write ). Each unique ip address will have the script query the hostip.info database, storing the info in a temp file. If the ip already exists in the script’s list, it won’t query for the information (to save time and bandwidth).
iploc can either run in live capture mode, or read from a pcap file. Here’s how you would run it live:
./iploc -i eth0 >> output.csv
iploc will run until it receives a CTRL-C, at which point it will aggregate the data and dump it to STDOUT. Alternatively, you can read from a pcap file like this:
./iploc -r ~/data.pcap >> output.csv
Here’s an example of what the CSV file looks like after being opened in Numbers (or Excel):
Since it’s a CSV file, it should be easy to parse for any other program. I’m planning on hopefully writing another program to take out the latitude/longitude and plot the points on a map (for a more visual representation).
IPloc also supports BPF filters, just use it like you would tcpdump, for instance, if you only cared about http data:
./iploc -i eth0 port 80 > output.csv
Questions? Leave me a comment below! Now go forth, and visualize your honeypot data!
P.S. Thanks to the hostip guys for having a really nice web api to get this data quickly.