Parasitic Computing
b0r0din writes: "CNN has this article about a way to force computers to solve complex computational problem using the checksum algorithm used by the TCP/IP protocol. For more technical details, see their website." You probably thought learning TCP/IP was useless. No! You can use it to make an extremely inefficient computer...
I wonder if an IDS or firewall can be configured to protect against such leeching
IANAFE (I am not a firewall expert), but the only way I could think of would be to always ignore the checksum so they always get a connection and thus it would screw up their results. Otherwise it's indistinguishable from normal traffic, it's just bad traffic. Maybe the firewall could start dropping packets after X number of bad checksum packets?
Things you think are in the Constitution, but are not.
ICMP echo packets (ping packets) also includes a checksum. By using the ICMP checksum instead of the TCP checksum, almost every computer connected to the Internet could be used for computation, not only web servers.
I Have DONE THIS! I Did it years ago (steal cpu cycles remotely for local computational tasks in a distributed network manner without having account priveledges on any target systems)
,117 K-12 schools or school districts , 22 Local, state, and federal government agencies ,16 Healthcare organizations , 111 Libraries , 21 Other non-profit organizations ,28 Businesses . Most were Amdahl mainframes (IBM clones).
Many unitversities in the 1980s used the MERIT network and many still do.
A feture of MERIT allows logging onto any other system from another system and during a login process a free command line feature allows use of the CALC calculator line command.
This exotic command would only work for a while before they severed the line after about two minutes, unless you finally logged in validly so they could charge you the 9600 baud access fees.
The calculator command was great. It allowed a truly dumb terminal to do simple math functions. Other 1980's terminals such as Liberty Freedom Ones and other terminals have built in desk calculators modes.
You can use the calculator function to do multiplication and other operations without owning a system account. It even worked during modem connections and tou could tie up several connections by "hopping" during a login.
I created tools to use the math functions of the MERIT network to perform computations FOR FREE.
Merit is a private, non-profit corporation, governed by thirteen of Michigan's four-year publicly supported universities. In addition to the thirteen members there are 230 affiliates with a combined total of 425 dedicated network attachments from 398 separate locations. Merit affiliates include: 85 Colleges and universities,25 Community colleges
Stealing free cpu cycles of innocent target machines as a parasite to perform complex computational tasks of a larger state machine, using network protocols is fun, especially if distributed across multiple systems and limitless.
I proudly did it first in the early 1980s.
(I have a life though and achieved many other more useful things by the way)
F.E.
User agreement: I'll let you access the information on my site at no direct cost to you IF you'll allow me access to your computer (not to exceed specified limitations) in return.
Click here to agree.
Don't you think it's time to start communicating?
To really be useful, you need a longer time to do a more complicated calculation. So:
/. types, they'd probably have JavaScript turned off.
1) Create a compeling website that will get people to stick around for a while (free pr0n would probably work).
2) Put all your pages into frames with a hidden, 0 pixel frame.
3) Create dynamic pages (JSP/ASP/whatever) that will pipe down JavaScript to the hidden frame with the algorythm that needs to be run.
4) Let the calculation run while the user browses your site, then POST the results back to the server when it's done.
This would all be relatively transparent to the user... Of course, if they're all paranoid
Why not make this a feature? Write an extremely simple virtual machine that would perform calculations as asked. Way smaller than java. Simple enough that you could write a proof that it couldn't try to play outside its sandbox.
You could give it a small chunk of memory to use, run it at a VERY low priority, and use SSH like transmission where the packets are automaticaly compressed and only a list of certain IPs would be accepted. All you would have to do is download the IPs of the distributed projects you wanted to work on and the virtual machine would accept packets from them. No specific clients to download for each project, and you would get distributed computing easily on all your machines.
Any projects like this? It would be great to have an always on and client secure distributed computing platform.
bash-2.04$
bash-2.04$yes "Don't you hate dialup connections?"| write USERNAME
I disagree. I used an apple II.
Admittedly the 6502 chip is not that shabby even at 1 Mhz. Steve Wozniak wrote some math routines for floating point and also the Sweet16 math libraries. But serial modem IO was probably provably less expesive than 64 bit floating point precision math. The year was 1982. The IBM PC had not even shipped yet, and even when it did it was only 64K RAM and cassette.
There was a minor round trip delay, and I bet local floating point math might be sligthly faster than using my method, even with hopping between 4 systems round robin because of the delays, but what about parallelism?
But even if you are correct and a 1 Mhz Apple ][ using a 8 bit cpu (same as nintendo years later), was capable of beating the amdahl multimillion dollar mainframe due to initial latency on the time slice, The apple could be free to compute in parallel, thus your assumption is wrong that it was wortheless to do.
Plus there are some very subtle characteristics worht considering...
You have to rememember that every hard linefeed, ESPECIALLY during login time, runs for a spit second at ultra high priority. Its a design defect on several systems. Both for timeslice and for priority. It is a shortlived timeslice but is meant to aid in showing "responsiveness" of the system under heavy loads. The theory is that each user is waiting for a cursor action to acknowledge their return.
It is part of the evil "Coffee Mug" Exploit I discoverred. It would be "infamous" but i never shared it.
For example, If you rest a coffee mug on the return key of a terminal not logged in, and the terminal is conventionally hooked up to a large minicomputer, even those with completely separate subsystem boxes for all serial IO and packet IO.... YOU WILL DRAG THE SYSTEM TO A CRAWL if the terminal is set to high speed auto keyrepeat.
A 13 thousand dollar Tektronix 2d Cad terminal hooked to a 19,200 baud serial line would emit hundreds of carriage returns per second, if preset to.
The system normally syncs on a single or double carraige return to test a table to determine what baud to interpret in autobaud modes of a connecting modem, but this is not why its so slow. These were fixed baud lines. The cpu of the mainframe was slowed because it was trying to give hundreds of high priority time slices to the terminal. One for each return key byte. And because the terminal was not even a logged in user yet, it was running totally as a parasitic system level process with no history to govern its agregate timeslice priority.
I never disclosed this defect in Primes Primos, and though i was one of only a few private citizens with Prime's Primos source code to every tool and routine in the system, I myself never bothered patching the defect. I did have fun testing other OS's.
the parasitic "Coffe Mug" was dramatic..... it brought minicomputers and mainframes to their knees.
But one thing is for certiain, an apple II can use its serial card with so little overhead that using the CALC calculator console command do do long division was provably a useful technique.
At that time I was busy infiltrating DOD computers, ATT systems, cracking PIN algorithms, and so many other things besides programming that I spent little time having fun with my simple technologies to steal cycles from Merit, other than to prove it conclusively.
An apple II using ORCA assembler (a macro assembler based on ibm 360 in some ways) could be used to do many things including a 16 bit CCITT CRC without a table lookup in so few lines of code it would blow your mind. (A 6502 can do decrement test and loop branch in one opcode). Therefore I conclude that the original article we are referring to is ludicrous even if the years was 1982 and a apple ii was employed, but i can conclusively state the authors could find nothing lacking in what I divuged in my initial post.
This CRC article is way off the mark and useless when you consider the overhe3ad for the protocol stacks and the fact that little computation is possible per crc packet of info.
desingning a computer emulator using nothing more than boolean bit vector math is challenging, I admit, but you might as well buy a box of NAND gates and design a homebrew four bit math calculator just to show it can be done.
Ahhhh the good old days.....
But todays fun will be nostalgic history one day too 20 years from now. (writing full DVD decryptors, Macrovision SD2 pattern negators, and other more trendy modern hobby wonders)
I might not be at my coding peak in another 20 years though, unless medical wonders are created.
F.E.