Operation Incomplete!

Here is where I've decided to pile all those projects that I started, but either never finished, or never got to the level of release quality. If you see something you like, be my guest to try to fix it up or drop me a motivational email telling me to finish it up :)

If you do make changes, please send them back to me, I would love to see them. Also, please note that all of this software is covered by the GPL, whether or not I've included a COPYING file yet.

If you find any of this stuff useful, or get it to work in any fashion, please email me! Hearing from people about my various projects keeps me motivated.

The AntiAntiSniffer Sniffer

The Project:
First up on the chopping block is AASS. For those of you who follow BugTraq, you may remember the l0phat antisniffer. Basically, l0pht released a program designed to detect ethernet sniffers on a LAN using several clever techniques, but not clever enough. I was bored late one night at the NCSA when I was reading their announcement, and decided I'd spend the night defeating their program. Normally I would have just went home, but when I realized that I could call my program The AntiAntiSniffer Sniffer, I couldn't resist. I rushed through the night and eventually came up with something that in theory, defeated all of their methods of sniffer detection, 3 days before they actually released the detector.

A few months later, I decided I might as well make the sniffer a bit more portable at the request of some friends, so I ported it to use libpcap. By this time, I was very familiar with networking protocols, and realized I could write a helper program for aass that would defeat "automatic" ethernet switches. I got the program (called AntiSwitch) to a point where it would route most of the traffic in my building through my port. However, unfortunately I lived in a building that was partially switched, and other machines on the same broadcast section as me would complain about another ether address stealing their IP. I came up with a method to detect which IP's were "local" and which were switched, but there still are some bugs, and it doesn't work all the time.

Why it went unfinished:
So why didn't I finish this kickass little util? Well, as it turns out, I suspected that some of the bugs that I was having were related to problems in my hash table code. Specifically memory corruption, stray pointers, memory leaks, etc. I needed a general purpose, FAST (I had to keep up with network traffic even while debugging; after all, while running this program I AM the network :), and lightweight malloc debugger. Unfortunately, I couldn't find one that met all my needs. So I did what any self respecting hacker would do: I wrote my own.

So since then (that was about January 2000), I've been devoting my time to making NJAMD kick ass.

Hints on getting it to work:
You will need libpcap of course. But I also modified it using the Linux socket filter to not give me packets that I sent out. I needed to do this because I of course reroute packets so that everything passes through my port of the switch. Obviously I don't want to record that shit with the sniffer program. Changing this is like a one line fix (and possibly a cast to a different socket header type) in the part of libpcap where it pulls packets off the wire. I lost my modified version of the library unfortunately. I guess this will have to serve as pretty strong script kiddie repellent tho :)

Also, the way I do things with packet casting and such pretty much limits you to an ix86 Linux box (alignment issues will cause problems, I expect). If you get this thing to work on even another arch of Linux, I'd be very surprised.

Will I ever finish & what to expect:

Doubtful. Ettercap has a nice architecture to do all this stuff. It, combined with ethereal, are pretty much a solid pair. Unfortunately, it appears that I am obsolete.

The Code

Evil Network

The Project:
This is some preliminary code to test out the concepts in AASS. There's all kinds of crazy shit in here. ARP spoofing, HW Addr stealing, etc. Plus after awhile, it came in handy to be able to shut down anyone's ethernet connection in the building who pissed me off (port scanners mostly). Nobody fucks with ME on MY network ;)

Why it went unfinished:
This was mostly used to test out AASS. It has little use other than novelty and instructional value.

Hints on getting it to work:
gcc, libpcap, and libnet. It runs on libnet 1.0.x, so you'll need that, not the latest version.

Will I ever finish & what to expect:

Nah, far better packet creation mechanisms are starting to come about. Libnet has a new API, and Nemesis provides all this functionality from a command line.

The Code

Autotemplate

The Project:
G++'s template handling sucks ass. You basically have to instantiate all the templates you intend to use in the same file in which they are defined. It totally sucks. So I attempted to write a perl script to handle this.

Why it went unfinished:
Bugs. Lots of bugs. I suspect to do this right you might need to actually write a C++ parser. One of these days I might write enough heavily templated code to try to get it to work again. Also, the code was starting to get big enough that it really needed to become object oriented, but OO support in perl is FUCKING TERRIBLE. So that sucks.

The Code