Skip to content

Instantly share code, notes, and snippets.

from aiohttp.client_exceptions import ClientError
import asyncio
from asyncio import Queue
from aiohttp.resolver import AsyncResolver
import json
import os
import random
from blake3 import blake3
from hashlib import md5
from socket import socketpair
@hashbrowncipher
hashbrowncipher / assumerole.py
Created December 15, 2019 00:56
subclass of botocore.session.Session that assumes roles and refreshes credentials
from botocore.session import Session
credentials_cache = dict()
class Session(Session):
def __init__(self, role_arn, *args, **kwargs):
super().__init__(*args, **kwargs)
self._config = dict(
profiles=dict(
default=dict(
@hashbrowncipher
hashbrowncipher / coredump_uploader.sh
Created November 11, 2019 03:38
Example coredump uploader
#!/bin/bash
# Depends on zstd (>1.3.6) and aws-cli
set -o errexit
set -o nounset
set -o pipefail
# Set kernel.core_pattern = | coredump_uploader.sh %P %s %E
PID=$1
shift
SIGNAL=$1
$ sudo -u cassandra jstat -gcutil $(pgrep -f Cassandra) 100ms
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
0.00 100.00 100.00 100.00 97.96 95.10 21 8.678 11 140.498 149.176
0.00 100.00 100.00 100.00 97.96 95.10 21 8.678 11 140.498 149.176
0.00 100.00 100.00 100.00 97.96 95.10 21 8.678 11 140.498 149.176
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <time.h>
#include <unistd.h>
#include <sys/resource.h>
@hashbrowncipher
hashbrowncipher / linux_tempfile.py
Created September 20, 2019 15:12
Atomically creates a file in Linux
@contextmanager
def atomic_temporary_file(destination, *, mode="w+b", flags=0, **kwargs):
fd = os.open(destination.parent, os.O_TMPFILE | os.O_RDWR | flags)
with io.open(fd, mode, **kwargs) as fh:
yield fh
os.link("/proc/self/fd/{}".format(fd), str(destination), src_dir_fd=0)
@hashbrowncipher
hashbrowncipher / tokens.py
Created September 4, 2019 02:08
Cassandra tokens calculator
from fractions import Fraction as f
def factors_of_two(n):
return n & ~(n - 1)
def _tokens_slice(count, zones):
# We cannot have zones be a multiple of two and also have tokens with
# equal spacing from each other.
@hashbrowncipher
hashbrowncipher / docker2squash.sh
Created May 5, 2019 07:53
generates a squashfs from a docker image
#!/usr/bin/fakeroot /bin/bash
set -o errexit
set -o nounset
set -o pipefail
OUTFILE=$2.squashfs
TMPDIR=$(mktemp -d -p .)
cleanup() {
rm -fr $TMPDIR
}
@hashbrowncipher
hashbrowncipher / init
Created April 21, 2019 16:42
load a squashfs and run it
#!/bin/bash
set -x
set -o errexit
set -o nounset
set -o pipefail
function poweroff_before_panic {
poweroff -f
}
trap poweroff_before_panic EXIT
@hashbrowncipher
hashbrowncipher / CGroupThreads.java
Created January 10, 2019 22:14
a java PoC for launching threads into CGroups
import java.io.IOException;
import java.lang.Runnable;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.concurrent.Executors;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.ThreadFactory;
public class CGroupThreads {
static class CGThread extends Thread {