Skip to content

Instantly share code, notes, and snippets.

@hashbrowncipher
hashbrowncipher / util_wrong.md
Created March 24, 2022 06:56
Everything %util tells you is wrong

The %util column in iostat has always been something of a weird bird. It was created back in the day when hard disks could only effectively process a single request at once. Back then, if %util was 100, then the disk was completely saturated and could go no faster. Modern block devices have the ability to perform multiple operations concurrently, and so %util's usefulness has ebbed. The manpage gives a clear warning about the meaning (or lack thereof) of %util, describing it as:

Percentage of elapsed time during which I/O requests were issued to the device (bandwidth utilization for the device). Device saturation occurs when this value is close to 100% for devices serving requests serially. But for devices serving requests in parallel, such as RAID arrays and modern SSDs, this number does not reflect their performance limits.

//Invoke like `./bin <frequency in Hz (e.g. 100)> <filename to read>`
#define _GNU_SOURCE
#include <fcntl.h>
#include <stdbool.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <unistd.h>
#!/usr/bin/env python3
"""Cross platform, rootless, and fast debootstrap.
Designed to work anywhere you can run Python and Docker/Podman (e.g. a Mac laptop).
* Tested only with Ubuntu Focal and Jammy
* Right now LZMA decoding takes up most of the time. Parallelize it? Python's LZMA
library does release the GIL.
"""
@hashbrowncipher
hashbrowncipher / bootstrap.sh
Created March 7, 2022 21:44
Lambda S3->AMI converter
#!/bin/bash
# Copyright 2021 Josh Snyder
# See license and documentation in lambda_function.py
set -x -o errexit -o nounset
ebs_name() {
nvme id-ctrl -o binary $1 | cut -c3073-3104 | tr -d ' '
}
export AWS_DEFAULT_REGION=$AWS_REGION
@hashbrowncipher
hashbrowncipher / Cryptography and Computer Privacy.txt
Created October 20, 2021 05:57
Cryptography and Computer Privacy by Horst Fiestel
Scientific American
May 1973
Volume 228
Number 5
Cryptography and Computer Privacy
by Horst Fiestel
Computer systems in general and personal "data banks" in particular
need protection. This can be achieved by enciphering all material and authenticating
@hashbrowncipher
hashbrowncipher / loader.c
Created August 21, 2021 22:35
A little x86-64 loader for Linux's binfmt_misc.
/*
* A little x86-64 loader for Linux's binfmt_misc.
*
* Compile with: gcc -O3 -static -nostdlib -o loader loader.c
*
* Register as:
* mount -t binfmt_misc none /proc/sys/fs/binfmt_misc
* echo ':amd64:E::amd64::/path/to/loader:O' > /proc/sys/fs/binfmt_misc/register
*
* Then just run your favorite shellcode. Sample:
@hashbrowncipher
hashbrowncipher / benchmark.txt
Created August 17, 2021 16:31
ec2-boot-bench: Ubuntu at 2.85 seconds (median)
Moving from running to port closed took: 3.147979 s
Moving from port closed to port open took: 0.000000 s
Moving from running to port closed took: 2.366330 s
Moving from port closed to port open took: 0.000000 s
Moving from running to port closed took: 2.998677 s
Moving from port closed to port open took: 0.000000 s
Moving from running to port closed took: 2.605815 s
Moving from port closed to port open took: 0.024404 s
Moving from running to port closed took: 2.754971 s
Moving from port closed to port open took: 0.009866 s
@hashbrowncipher
hashbrowncipher / notes.txt
Created July 16, 2021 23:22
boot in 1853ms
- this uses a squashfs root image with a writable overlay
- only a single application service is running (sshd)
- the instance was a c5.large that had already booted once
@hashbrowncipher
hashbrowncipher / notes.txt
Created July 13, 2021 11:30
boot in 2761ms
- This run was on a c5.large which had been booted up before
- Set MODULES=dep in /etc/initramfs-tools/initramfs.conf
- Deleted a bunch of initramfs-tools hooks, including especially: iscsi mdadm lvm2
- Removed a bunch of stock ubuntu services
* snapd
* ec2-instance-connect
* cryptsetup-initramfs
* udisks2
* unattended-upgrades
* plymouth
josh@ubuntu:~/hasher$ dd if=/dev/zero bs=65536 count=16384 | ./xxHash/xxh128sum
16384+0 records in
16384+0 records out
16024760318c6298efd1151033ad2e9f stdin
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 0.23966 s, 4.5 GB/s
josh@ubuntu:~/hasher$ dd if=/dev/zero bs=65536 count=16384 | ./a.out
16384+0 records in
16384+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 0.210685 s, 5.1 GB/s
16024760318c6298efd1151033ad2e9f