Botnets, and in general, bot-to-bot communications are a fascinating phenomenon and one that has recently been gaining public attention, due to their ability to propagate information irrespective of its veracity.

The problem however is that it tends to get boring pretty quickly: It's essentially just bot-to-bot communication network and generally human-to-human communication networks are more interesting since the communicative content is unpredictable by definition.

What it does

It takes any arbitrary data, and breaks it down in a way such that it can be represented by a bot's action. It's effective because the individual action itself is meaningful:

For example, say you have a string "Hello world!" or an image or anything of the sort, you can represent such information as selective tweets and retweets of some twitter bots. Every single tweet or retweet is meaningful on its own, but them being putted in correct settings and they reconstruct "Hello world!" or the image or whatever was initially inserted.

Specifically, I built an elementary image hosting system and an AES-encrypted chat service on top of this network.

How I built it

With a blank piece of Emacs buffer albeit using Python's "cryptography" library for the AES encryption and "Tweepy" for controling the , and copious caffeine consumption.

Challenges I ran into

There are only 3 bots in this network. And that's the root of all evil. The initial algorithm I had in mind, though would have been in principle more efficient, turned out to be practically useless because successful encodings would have exceeded Tweeter's rate limit. Trying to test other algorithms entailed mathematical descriptions that are not sufficiently succinct to be coherently written on a napkin and their proper implementation proved to be somewhat challenging/extremely annoying.

Some comparatively minor ones also include the undocumented behavior of "tweepy".

Accomplishments that I'm proud of

It works.

What I learned

Document your work. Don't debug math-related stuff in the same sense as iteratively tweaking it until it works, because it's predictably likely that it just won't.

What can be improved

The whole process can be a lot more efficient. Additionally, error-correcting encoding can be used, and would have been used had I had more time.

What's next for bot2bot

Polish it. Possibly publish it as open-sourced.

Built With

Share this project: