sc4r4

Projects

ScaraOS is a 32-bit, multiboot-compliant, monolithic OS kernel. It has the beginnings of a paged VM system and VFS. It supports PCI, DMA, AT floppies (read only), EXT2, and can do all the low-level stuff expected of an OS kernel (program the PIC, handle interrupts, control the timer, etc.). It was written primarily to learn OS fundamentals. It boots using any multiboot bootloader, and it has been tested with grub on qemu and KVM. Bootable floppy images are available.

ccid-utils is a USB smartcard driver and development platform. The driver follows a simple synchronous design that supports multiple slots but only one transaction at a time and includes a Python interface. It also includes a command line smartcard shell with a searchable history. The shell, written in Python, offers many useful features for developing with smart-cards and for reverse engineering APDU formats. It includes tools for reading data from GSM SIM cards and EMV credit/debit cards. The SIM tool is very basic, but allows reading SMS messages from the SIM. An example EMV (credit/debit) card tool is included that is boilerplate code for utilizing the EMV C API. There is also a Python interface for the EMV API. A graphical interface for reading EMV cards is provided.

autober is a language for generating BER decoders. It's different from an ASN.1 compiler in that it's much simpler and it only deals with BER-encoded messages. It is intended for smart card and RFID applications where much of the data stored on these devices is, in-fact, BER-encoded TLV data. The language is designed to be very similar to the template definitions found in the specifications for smart card and RFID applications.

acgtools is a driver for the ACG HF MultiISO RFID reader written
entirely in Python and including several developer tools, including
EEPROM backup/edit/restoration for enabling some of the more exotic
features supported by this hardware. There are also sample applications,
notably an e-Passport reader.

ashttpd was originally a testbed for a kernel async-sendfile patch. Today, it's just another Web server for serving static content rapidly. It differs from its competitors by storing its webroot in a database, which provides a 50% performance increase over using the operating system's VFS. It also allows precalculation of strong cache-validators (ETags).

cola is a C implementation of the COLA structure described in the paper "Cache Oblivious Streaming B-Trees" by Bender, Farach-Colton, et al. This algorithm is a drop-in replacement for B-Tree databases/indexes which performs faster on spinning disks than B-Trees do on SSD. It's asymptotically optimal in terms of data transfers to and from disk. For example, random key inserts are turned into linear sequential writes while maintaining the property which queries always require, at most, precisely log N blocks read sequentially (but not contiguously) from disk (or half that, on average).

kapitalbot is a semi-interactive Monopoly bot.
It displays information about its status and accepts raw monpod commands in the cases it can't handle.
At the moment it's designed for one-to-one bot vs. bot games, but it can be easily tweaked to play
against humans.