# Projects

and Other Diversions

## AI Gameplaying

#### Klondike

Implemented for fun and practice as part of kata 20.

## Cryptography

#### Lenticrypt

Lenticrypt is a novel cryptosystem that provides true plausible deniability. It allows a single ciphertext to decrypt to multiple different plaintexts depending on the key that is used to decrypt it. Moreover, there is a theoretical guarantee that with nearly 100% probability there always exists at least one work in the public domain that some key will decrypt to, even if you don't know what that key is. You can read about its origins in this blog post.

#### Magiic

Magiic stands for Magiic Allows for GPG Indexing of IMAP on the Command-line. It is a simple ncurses-based command-line application for securely and efficiently performing full-text search over encrypted email. You can read more about it, along with a download link, on the Digital Operatives blog.

## Data Science

This repository contains software and some partial analysis results of the Philadelphia zoning code. See this blog post for more information.

## Polyglottery

#### This Git Repository is a PDF

A PDF that can be git cloned, producing a repository containing the LATEX source of the PDF, all of the scripts necessary to rebuild the polyglot, and a copy of itself. See PoC||GTFO Issue 0x15.

## Program Analysis

#### Manticore Symbolic Execution Engine

I am a frequent contributor to the Manticore symbolic execution engine.

## Smart Contracts

#### solc-select

A script to quickly switch between Solidity compiler versions.

It is becoming increasingly hard to run older versions of solc, particularly on macOS since there are no official binary releases. Versions prior to 0.5.0 no longer compile on macOS and are not maintained. This is a problem because older Ethereum contracts no longer compile on modern versions of Solidity. solc-select is a utility that allows one to run any legacy version of Solidity simply by setting an environment variable.

#### Etheno

Etheno is the Ethereum testing Swiss Army knife. It’s a JSON RPC multiplexer, analysis tool wrapper, and test integration tool. It eliminates the complexity of setting up analysis tools like Manticore and Echidna on large, multi-contract projects. In particular, custom Manticore analysis scripts require less code, are simpler to write, and integrate with Truffle.

## Utilities

#### Notify When Done (NWD)

NWD is a utility for triggering alerts when a process finishes. Kicking off a long-running compile? NWD can post a popup notification when it's done. Starting a job on a remote server? NWD can send you an e-mail when it's done. Want to run a custom script once another finishes? NWD can facilitate that, too.

#### Bigggest

A utility for finding the largest directories and/or files in a given directory hierarchy. Biggest supports pretty printed and colorized output to the terminal.

#### Ascid is the Self-referential Cycle IDentifier

It is capable of quickly (in linear time) detecting the maximum length repeated substrings in text files.

This is often useful, e.g., when debugging a program that loops infinitely, vi&., ascid can determine the point at which the log output loops back on itself.