Thursday 17 July 2014

Making Ends Meet

Shortly after I began developing HTP I discovered an interesting free course on Coursera.org called Malicious Software and its Underground Economy. I jumped at the chance to learn a bit more about how the darker corners of the internet function, and whilst I didn't have the spare hours in the week to finish the whole course, I did watch all the lectures and read the subject matter and learnt a lot about malware, and in particular, botnets. Building up a botnet seems like a good gameplay avenue, it's measurable, it's useful, and it's volatile,

I'm still playing with ideas in my head about how one could have fun in a simulated internet, and hacking is the obvious choice. As much as I have enjoyed games like Uplink in the past, they have always been more mission based, where you take on a single target at a time in a fairly rigid and structured way. I would prefer to have a more emergent experience with HTP, where networks and computers operate as they would in the real world, controlled by AI agents with varying motivations and skill levels.

You might find a neighbourhood populated with many low security home networks. These networks would contain computers controlled by average Joes. The kind of traffic you might expect to see coming out of a home network would be social networking, low level e-commerce, maybe some internet banking. These target themselves maybe not usually be very juicy, but their relatively low level of security and abundance make them perfect targets for learning the ropes, and more importantly, building up a botnet. And a sizable botnet might open up doors for other, larger, opportunities.

I'll have to make a post here at some point outlining how I plan to handle the procedurally generated network traffic that will breath life into this simulated internet, while still scaling well enough to allow me to simulate a whole planet's worth of net traffic.

So at this point I'm in the strange position of having already programmed a fair bit of the low level details of how computers operate. I have functioning kernels running processes, powered by a CPU, powered by a power supply via a PSU. I have DHCP discovery and basic packet routing. I have a lot of the little functional details, but have no world for them to exist. So I've ended up with a fairly strange approach to development so far. I'm currently programming my way down from the 20,000 feet level to ground level, which means I still have no vertical slice, even after being at this for almost 3 months of lunch breaks now. It's a *little* disappointing, but isn't really accompanied with the usual feelings of frustration of not having seen everything working together, because I already KNOW the little details can work, and I'm just slowing making both ends meet up somewhere in the middle.

Anyway, a guess it's time for some visuals. This video was taken just after I got my 3D globe up and running and was testing out the zoom system (which was actually a lot harder then I though, given the scale of the world and the fact I want to zoom right down the component level without hitting the near clip plane, still lots of work to do there).



In my next post I'll talk a little bit about the procedural generation system and force-driven node layouts :]

No comments:

Post a Comment