Skip to content

Latest commit

 

History

History

The Explainer - Ruby Version

This sample implements a Ruby client and server that talk the Explainer Protocol.

The Explainer is totally inspired by Natalie Silvanovich's Hardware Excuse Generator

Generate Protocol Stubs

$ mkdir lib  # it's not automatic
$ protoc -I ../protocols --ruby_out=lib --grpc_out=lib --plugin=protoc-gen-grpc=`which grpc_ruby_plugin` ../protocols/explainer.proto

Install and Tests

A Gemfile is provided to setup an environment and install the right gems. bundle to install as usual..

$ bundle

I've written a few tests (just the parser functionality so far)

$ ./test_parser.rb
Run options: --seed 23181

# Running:

.......

Finished in 0.003182s, 2200.0900 runs/s, 12257.6443 assertions/s.

7 runs, 39 assertions, 0 failures, 0 errors, 0 skips

All good for a test drive...

Test Drive - Ruby Client and Server

Start the server in one console window..

$ ./explainer.rb
ShiFu is waiting to explain all of your problems...

Now try the client in another:

$ ./explain.rb

Here's some help:

Describe your problem in a sentence, using the text "REASON" where-ever you'd like a good excuse inserted

e.g. "Glitching was not a viable attack because of REASON"

$ ./explain.rb "Your phone is probably crashing because of REASON"
Your phone is probably crashing because of the PCB not being manufactured to specification
$ ./explain.rb "Your phone is probably crashing because of REASON"
Your phone is probably crashing because of electromagnetic resonance
$ ./explain.rb "Your phone is probably crashing because of REASON"
Your phone is probably crashing because of jitter in the antenna clock
$ ./explain.rb "Your phone is probably crashing because of REASON"
Your phone is probably crashing because of the susceptibility of resistor R3 to ESD
$ ./explain.rb "Your phone is probably crashing because of REASON"
Your phone is probably crashing because of a lack of shielding against alpha radiation (cosmic rays) in EEPROM

Credits and References