/socket.io-computer

a collaborative virtual machine

Primary LanguageJavaScript

socket.io-computer

WARNING: YOU WILL BE HACKED IF YOU RUN THIS, IF YOU CAN EVEN GET IT TO RUN. DO NOT RUN THIS ON ANY COMPUTER YOU TRUST, AS IT HAS MULTIPLE VULNERABILITIES THAT ALLOW REMOTE USERS TO:

  • Run shell commands as whatever user you run the server as
  • Access any files on your filesystem
  • Et cetera.

A collaborative virtual machine where players take turns in controlling it.

It works by running qemu on the server-side and streaming the image binary data to the browser.

Dependencies

In order to run socket.io-computer you must have the following dependencies installed:

  • qemu
  • redis-server

On the mac, all of the above are available on homebrew.

How to run

First you should create an image onto which you'll load (install) the operating system ISO. We'll call it for this example winxp.img.

$ qemu-img create -f qcow2 winxp.img 3G

Then you can run the additional needed processes:

# web server
$ node app.js

# io server
$ node io.js

# qemu instance
$ COMPUTER_ISO=winxp.iso COMPUTER_IMG=winxp.img node qemu.js

# emulator communication process
$ COMPUTER_IMG=winxp.img node emu-runner.js

Then point your browser to http://localhost:5000.

License

MIT