IdentiThief

Run with 'python identithief.py' on Linux or (theoretically) Mac. Windows: EXE thanks to Spiridios (apparently needs to be ended by Task Manager), source is also available.

Premise: You are an identity thief, sniffing packets on an unsecured wireless network. Sniffing four unique packets from a single computer will yield that computer's identity, allowing you to impersonate them.
Goal: Isolate any one computer in the network by stealing the identities of all the others.

Caveats:
-The packets are random, so sniffing one may not necessarily get you closer to stealing its owner's identity.
-If a packet containing a part of the owner's identity you have already sniffed reaches its target, that part of the identity is no longer valid to you, and must be sniffed again. Keep track of this by the pips on each computer screen - 3 means you only have one more unique packet to go!
-The users on the network will get suspicious if too many packets disappear without any arriving safely. This is measured by your 'dodginess' number. Keep this number below 5 by allowing some packets to reach their destination. Successfully stealing an identity will also reduce dodginess, as you are now impersonating that node of the network.

Time: 12 hours or so over Saturday night to Sunday night

Sounds: Twenty minutes' work in Bfxr and Nanoloop

Rules bent: I used a Pygame library I've been working on over the last few months for my final project at university. Although I plan to open-source it, it's not really ready for dispersal yet (hence my rulebreaking). The documentation isn't there, and I found a couple of design issues while making this game. However, I am including a one-file version of it here. No promises on usability yet, but if anybody is interested in where I'm going with it, feel free to contact me.

Controls:
(Menu)
Left click - Start game
Right click - Quit game

(Game)
Left click - Capture packet
R (when in game over screen) - Restart
Escape - Quit to menu
P - Pause

Comments12

jtoper
jtoper17 Dec 2012, 03:39
So why is there no version for windows?
Cy4n1d
Cy4n1d17 Dec 2012, 10:17
Couldn't play it. Have only Windows and MAC. sorry. Will give you a rating for the screenshots.
PROGRAM_IXauthor17 Dec 2012, 22:11
Technically what is there should run on Mac. Not sure about Windows, but certainly nothing very Linux-specific is there. I just wasn't able to test it, so I didn't want to list it as Windows-compatible.
PROGRAM_IXauthor17 Dec 2012, 22:19
Sorry you guys couldn't play it. I didn't think I would be able to participate at all this time around, and even though I did get a decently 'full' game, I agree it's a bit lacking in terms of usability.
Dark Acre Jack23 Dec 2012, 03:21
Ran the EXE above on Win7/64, ran fine but could only be killed by ending the process via the Task Manager.

I didn't really understand the game, I guess I need to know more about how packets work. Also not sure how I'm the villain. The little drum march was nice.
PROGRAM_IXauthor26 Dec 2012, 18:00
Thanks a lot, Spiridios! I'm new to LD, appreciate the help with compatibility.

Jack, that's odd. The right-click to quit thing should raise a SystemExit exception, if memory serves. Maybe that doesn't work the same on Windows?

For a start, that's not really how packets work. It's not a great abstraction, I just wanted to use that general idea of sniffing packets to impersonate computers. You're the villain because you're isolating this one person by impersonating all the other computers, i.e., all traffic that this computer thinks is going to its peers, is now going to you.

I agree, though, it's not the best abstraction, and even with its relative simplicity I'm sure I did something wrong. Thanks for playing it anyway!
Spiridios
Spiridios27 Dec 2012, 05:45
You're welcome Program_ix! I had py2exe and pygame2exe installed and setup from a previous LD so it was pretty quick to do.

The Windows exe exits just fine on both mine and Serilyn's Windows 7 x64 boxes, so I'm not sure what problem Dark Acre Jack had. Hitting esc to exit from playing the game and then having to right click to exit the main menu is slightly confusing, maybe that was the problem?

I realized I forgot to include the script that creates the exe - it's included in the zip linked above now if you want to use it in the future. It needs py2exe installed and it's a modification of this script: http://www.pygame.org/wiki/Pygame2exe
PROGRAM_IXauthor29 Dec 2012, 11:02
Cool, thanks. :)

Yes, one limitation of the framework I'm using/developing is that different states (like menu and game) share the same event handling engine, so if you pressed Esc to exit the main game, it would exit the menu immediately, as well. Using left-click/right-click in the menu was the solution I came up with to avoid this. Not ideal, but then what is in an LD48 game?
csanyk
csanyk2 Jan 2013, 00:58
Very interesting and unique mechanic, but it was very hard to understand how to play, based on reading the instructions. It seems that successfully stealing the identity of a computer must entail a good bit of luck, since you can't steal too many packets, you can't let one get through lest you need to re-steal it again, and you can't tell whether a packet is one you've stolen or not already by its appearance. I really didn't care for the music, it hurt my ears.
Cosmologicon
Cosmologicon6 Jan 2013, 21:21
Not bad. If you're not aware of it, you should consider entering the next PyWeek. It's a python-only contest, so everyone should be able to run your entries.
PROGRAM_IXauthor19 Jan 2013, 17:57
csanyk: You're accurate there. The game is mostly about playing the statistics - if you've already captured three of the packets from one computer, it's not worth the risk to jump on the next one you see if the suspicion/dodginess is high. I was going to add in something to show status of the packets, but I kinda liked the mystery of it. <shrug> Apologies for the harsh hi-hat-ish music, I put it together in a very short period and didn't feel like I could make an actual melody work.

Cosmologicon: I definitely will be entering PyWeek this year, if I have time. I knew about it last year but couldn't enter.

Thanks for the feedback everyone, it's been very instructive!
Found a bug?
Tell us on Discord