Reverse Engineering a Missile Launcher Toy's Interface
nitro writes "A fairly in-depth technical report by the security researchers at TippingPoint was released on how to reverse engineer the proprietary protocol for controlling a USB missile-launching toy system. They develop an iPhone application to control the device. 'The hardware is coupled with a simple GUI controller written in Delphi (MissileLauncher.exe) and a USB Human Interface Device (HID) interface written in C++ (USBHID.dll). The toys lost their allure within minutes of harassing my team with a barrage of soft missile shots. That same night I thought I would be able to extend the fun factor by coding up a programmatic interface to the launchers in Python. ... One interesting thing is that we have a lot more granular control of the turret movement now than we did with the original GUI. I wrote two simple loops to count the number of possible horizontal and vertical ticks and the results were 947 horizontal and 91 vertical versus 54 and 10 from the original GUI respectively. Granular control allows you to slowly and quietly reposition the turret for stealthy attacks.'"
Actually, this seems like an almost ideal platform for sentry gun research. It's small, cheap, relatively harmless, can be operated in an office environment, and is probably wildly inaccurate which means that if you can make this work, actually shooting targets with some kind of accurate weapon will be trivial. I'd very much like a sentry gun that would squirt the @#$%@#@ deer with water (at least) when they come to eat the plants on the front porch.
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
Why go for the complex solution?
A motion sensor connected to a air horn should do the trick.
If we're going to argue about the meaning of the word...
When something is granular, it is made up of chunks.
When something is granular it is made of granules, or 'grains'. Typically something granular is made of numerous grains that form a larger unit.
When something is more granular, the chunks are larger, it has more of the characteristics of being grainy.
That doesn't really follow. The characteristic of being granular is that it has granules or grains. "More granular" is actually ambiguous.
It could mean: more granules or grains -- ie more of the actual characteristic that makes it granular.
Or it could mean, as you say, larger granules or grains -- ie more pronounced characteristics
Granular and continuous are antonyms.
So? More grains doesn't make it 'more opposite', in fact, the fundamental theorem of calculus is that you can approximate continuity with lots of small discontunities... and if you let the number of discontinuites rise to infinity, their size goes zero and it becomes continuous.
What the OP meant is that he achieved more fine grained control.
Correct. And fine grained is a better way of putting it because its not ambiguous.
Not more granular control; more granular control would be worse control than the original resolution.
More granular control is ambiguous. Although easily understood from the context.
It also depends on how hungry a deer is and the relative quality of the food. A stuffed deer can afford to be very, very skittish. One that hasn't eaten it's fill in a couple days/weeks is going to start taking chances - including eating the plants off your back porch, especially if they're tasty to the deer.
That's why we need hunters to actually reduce the deer population. If all everybody does is scare them off, eventually there will be so many deer that the non-scary food sources are exhausted and the deer overcome their fear of the scary things. That or start starving over the winter, which isn't a nice way to go either.
Yes, I do have venison in my freezer...
I don't read AC A human right
283 lines... plus the Python runtime, including modules to implement the HTTP server.
...plus the various C libraries, video drivers, operating system, etc. Wtf? The point is that 283 lines of new code makes for a web controlled nerfgun where previously there was none.
You can't neglect the overhead of the runtime when you deploy something like this.
Yes, you can.
It's running on his desktop PC, which already has python on it. Just like my PC, which also has java, perl and various other languages sitting around. As far as he's concerned, an extra 9k of python script is all it took to make his pet project happen. And if I had one of those USB nerfguns, that same extra 9k of python would trivially do it for me too: right-click, save, "python ped_missile.py".
although I'd probably go with straight C.
I've been coding in C continuously for 25 years now, from apps to embedded systems. It's a great language for many things, but for this purpose it would be an absolutely idiotic choice. C is good for size and speed, neither of which is an issue for this task.
And drop a few features--do you really need to put the HTTP server into the Python code?
Yes, he does. He wants to be able to control it via a web browser. It's a requirement.
Are you suggesting he install apache and write a CGI script to do it? I thought you were the one worried about deployment costs.
Tell you what, go and implement what he did in probably an afternoon (including the web server interface) using pure Lua instead and then show us how much easier and better it is than the way he did it.