Skip to content

unbalancedparentheses/learning_systems_and_security

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

88 Commits
 
 
 
 

Repository files navigation

Learning Systems and Security

A curated collection of learning resources for systems programming, security, cryptography, and related topics.

Table of Contents

Assembly

Books

Reverse Engineering

Exercises

Tools

Binary exploitation

Books

Wargames

  • Over The Wire - Progressive wargames teaching Linux command line, networking, and binary exploitation skills
  • Smash the stack - Network-based wargame focused on memory corruption and binary exploitation challenges
  • Exploit exercises - VMs with escalating privilege escalation and exploit development challenges
  • PwnAdventure - Intentionally vulnerable 3D MMO game designed for practicing game hacking and reverse engineering
  • PwnAdventure Sourcery - Source-code-level hacking challenges set in the PwnAdventure game universe
  • ROP Emporium - Progressive challenges specifically designed to teach return-oriented programming techniques
  • 0x0539 - Hacking challenge site with levels covering web, crypto, and binary exploitation
  • Pwnable.xyz - Binary exploitation wargame with challenges ranging from basic stack overflows to advanced heap attacks
  • HackTheBox - Online platform with vulnerable machines for practicing penetration testing and exploitation
  • SkullSecurity CTFs - CTF writeups and challenge archives for learning offensive security techniques

Books

Fuzzing

  • FuzzySecurity - Tutorials on exploit development, fuzzing techniques, and Windows privilege escalation
  • LibFuzzer Workshop - Hands-on workshop for learning coverage-guided fuzzing with LLVM's LibFuzzer

Operating Systems

Software Engineering

Embedded Systems

Game Programming

  • COMP4300 - Dave Churchill - University course building a 2D game engine from scratch using C++ and SFML
  • GamesWithGabe - Video series on building game engines and games in Java and C++ from the ground up

Distributed Systems

Basics

Courses

  • CS6213 Special Topics in Distributed Computing - Graduate course on distributed algorithms with formal verification using separation logic
  • CS 425 Distributed Systems - UIUC course covering gossip protocols, consensus, distributed file systems, and key-value stores
  • Aphyr's class - Outline and exercises from Kyle Kingsbury's distributed systems class covering linearizability and Jepsen
  • MIT 6.824 - Reading list and lab assignments for MIT's distributed systems course including Raft and sharded KV stores
  • The System Design Primer - Study guide for large-scale system design interviews covering caching, load balancing, and databases

Papers

Exercises

  • Toydb - Distributed SQL database built from scratch in Rust with Raft consensus and MVCC transactions
  • pea2pea - Lightweight Rust library for creating peer-to-peer networking nodes with minimal boilerplate
  • geohot/minikeyvalue - Minimal distributed key-value store in under 1000 lines demonstrating core distributed storage concepts

TLA+

Raft

Data Structures

  • Distributed Hash Tables - Introduction to DHT concepts including consistent hashing and peer-to-peer lookup protocols

Real Systems

  • GFS - Google File System paper on a scalable distributed file system for large-scale data-intensive applications
  • Spanner - Google's globally-distributed database using TrueTime for external consistency across datacenters
  • F1 - Google's distributed relational database built on Spanner for the AdWords system
  • Chubby - Google's distributed lock service providing coarse-grained locking and reliable small-file storage
  • BigTable - Google's distributed storage system for managing structured data at petabyte scale
  • MillWheel - Google's fault-tolerant stream processing framework with exactly-once delivery guarantees
  • Omega - Google's shared-state cluster scheduler using optimistic concurrency control for flexible scheduling
  • Dapper - Google's large-scale distributed systems tracing infrastructure for diagnosing performance issues
  • Paxos Made Live - Engineering lessons from implementing Paxos in Google's Chubby lock service
  • The Tail At Scale - Jeff Dean's paper on techniques for reducing latency variability in large-scale distributed systems
  • Dryad - Microsoft's general-purpose distributed execution engine for coarse-grained data-parallel applications
  • Cassandra - Facebook's distributed NoSQL database combining Dynamo's partitioning with BigTable's data model
  • Ceph - Distributed object store and file system designed for performance, reliability, and scalability
  • RAMCloud - Stanford's low-latency storage system keeping all data in DRAM across a datacenter cluster
  • HyperDex - Distributed key-value store using hyperspace hashing for efficient multi-attribute search
  • PNUTS - Yahoo's globally distributed data serving system with per-record timeline consistency
  • Azure Data Lake Store - Microsoft's hyperscale distributed file store optimized for big data analytics workloads

Blog Posts & Talks

Other

Books

Compilers

Project Ideas

  • Lambda calculus
  • Compiler targeting QBE / LLVM
  • Hindley-Milner type system / W Algorithm
  • BitTorrent client
  • DHT
  • Trees: Merkle tree, LSM
  • Consensus algorithms: Raft
  • CRDTs
  • SNARKs / STARKs
  • American Fuzzy Lop
  • Symbolic execution
  • TLA+

Blockchain

Introduction

  • Foundations of Blockchains - Tim Roughgarden's course covering consensus protocols, mechanism design, and blockchain theory
  • DeFi MOOC - University-level course covering decentralized finance protocols, AMMs, lending, and oracles

Pre-requisites

Cultural

Basics

Courses

Solidity

Contracts

Ethereum Internals

Ethereum Security

Vulnerabilities

MEV

Zero Knowledge Proofs

Basics

ZK SNARKs

  • What are zk-SNARKs? - Zcash's explanation of succinct non-interactive arguments of knowledge and their use in private transactions
  • Intro to zk-SNARKs - Howard Wu - Podcast episode providing an accessible introduction to zk-SNARK construction and applications
  • Zcash Ceremony - Documentary on Zcash's trusted setup ceremony and why it was necessary for the SNARK parameters

ZK STARKs

Advanced topics

Examples with code

R1CS/Circuits

  • Circom tutorial - Tutorial on writing arithmetic circuits in Circom for building a simple rollup
  • R1CS programing workshop - Hands-on workshop on writing rank-1 constraint systems for zero-knowledge proof circuits

Papers

Cryptography

Exercises

  • amrayn/mine - Minimal C++ encryption library for learning AES, RSA, and Base64 implementations
  • mimoo/disco-c - C implementation of the Disco protocol combining Noise framework with Strobe for secure handshakes
  • LoupVaillant/Monocypher - Small, portable C cryptography library for studying implementations of Curve25519, ChaCha20, and Blake2b

Blogs

  • Trail of Bits - Security research blog covering cryptography audits, vulnerability research, and tool development

Books

Elliptic Curves

Discrete Logarithm problem

Pairings

CTF

  • CTF Cryptography for Beginners - Guide to common crypto CTF challenge types including RSA, XOR, and classical ciphers
  • Cryptohack - Interactive platform for learning cryptography through progressive challenges from basics to advanced
  • Cryptopals - Famous set of 48 practical cryptography exercises covering attacks on real-world crypto systems
  • Krypton - OverTheWire wargame teaching classical cipher breaking from Caesar to Vigenere and beyond
  • Cryptanalysis - Cryptanalysis challenges ranging from basic encoding to breaking modern crypto implementations

Tools

  • CyberChef - Web-based tool for encoding, decoding, encryption, compression, and data analysis operations

zk-SNARK

Languages

Proof systems

  • Nova - Microsoft's recursive SNARK scheme using incrementally verifiable computation with minimal overhead

STARKs

Provers and verifiers

  • Winterfell - Rust library for generating and verifying STARK proofs with a focus on performance and usability

Other

  • Crypto Screencasts - David Wong - Short video explanations of cryptographic concepts including hash functions, MACs, and key exchange
  • ZK docs - Community-maintained documentation hub for zero-knowledge proof systems and implementations

Entrepreneurship

Other Topics

Finance

Papers

Volatility

Money and Monetarism

Geopolitics

Not yet reviewed

These resources were recently found and have not been reviewed yet. They will be organized into the appropriate sections after review.

Reverse Engineering & Security

Assembly & Low-Level

Distributed Systems

Compilers

Cryptography

Game Programming

Distributed Systems (New)

Compilers & Languages (New)

Operating Systems & Formal Verification (New)

Security, Fuzzing & Reverse Engineering (New)

AI/ML Systems (New)

WebAssembly (New)

About

I like to learn new things

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •