Skip to content

Instantly share code, notes, and snippets.

@elazarl
elazarl / stack_size.c
Last active Apr 12, 2020
This is a demonstration showing how to print stack size of a certain function
View stack_size.c
// We demonstrate how to get the stack usage of a function
// using the __builtin_frame_address function of GCC and clang.
//
// This function returns:
// The frame is the area on the stack that holds local variables and saved registers.
// The frame address is normally the address of the first word pushed on to
// the stack by the function.
//
// by saving its value and comparing it to a callee, we get the stack usage of this
// function.
@elazarl
elazarl / simple_transform_before_zstd.c
Created Jan 30, 2020
Check if a simple transform before applying zstd reduce file size
View simple_transform_before_zstd.c
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <time.h>
#include <unistd.h>
char buf[1024*1024];
@elazarl
elazarl / bench_comp_decomp.py
Last active Jan 29, 2020
Measures compression and decompression speed and size ratio on many files
View bench_comp_decomp.py
#!/usr/bin/python3
import argparse
from collections import namedtuple
import csv
import os
import shutil
import subprocess
import statistics
import re
@elazarl
elazarl / test_vec_to_c.py
Last active Jan 26, 2020
NIST test vector to C format
View test_vec_to_c.py
# This converts test vectors from
# https://csrc.nist.gov/Projects/cryptographic-algorithm-validation-program/CAVP-TESTING-BLOCK-CIPHER-MODES
# to a C-struct format.
# For example to initialize
# struct test_case {
# int count;
# int data_unit_len;
# std::string key;
# std::string index;
# std::string plaintext;
@elazarl
elazarl / uuid4sym.py
Last active May 16, 2019
replace UUID with distinguishable emojis
View uuid4sym.py
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""uuid4sym - replace UUID version 4 to an easily distinguishable symbol
When looking at a long log file with some UUID4 uuids, you'll have a hard time
distinguishing between two UUIDs.
Both 26cb1b84-7748-11e9-9437-2bf0efaa1b2e and 2725e8de-7748-11e9-a9c8-f3e5d10ab3d6
looks similar to the human eye.
@elazarl
elazarl / dir2img.py
Created Apr 30, 2019
Create an image with filesystem, copies a local directory content to it
View dir2img.py
#!/usr/bin/python3
"""Create image from a directory
This script creates image whose contents are a given directoy on the filesystem.
Example usage:
$ mkdir mydir
$ echo A > mydir/a
$ ./dir2img.py -d mydir -i myimage.img
View ftrace_event_parser.py
#!/usr/bin/python3
import re
import io
class FtraceEventParser(object):
"""FTraceEventParser parses the text form of a single event
to a tuple of all the event's arguments.
Example usage:
View stress_ssh_channels.py
#!/usr/bin/python3
import argparse
import paramiko.client
import time
parser = argparse.ArgumentParser(description='stress test SSH channels')
parser.add_argument('-H', '--host', help='host to test')
parser.add_argument('-u', '--user', help='user to use SSH with')
parser.add_argument('-p', '--pwd', help='password to use SSH with')
parser.add_argument(
@elazarl
elazarl / checkexist.c
Created Nov 29, 2017
constantly polls until a file disappears
View checkexist.c
#include <argp.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
static char args_doc[] = "FILES to poll until missing";
@elazarl
elazarl / frag.go
Created Feb 13, 2017
Creating fragmentation on purpose to crash golang's GC
View frag.go
// This tiny program show how to cause fragmentation in golang, killing it
// even though no real memory is actually used.
// Compile:
// $ go build frag.go
// Run:
// $ time (setrlimit $[100*1000];./frag)
// .....(until it crashes)
package main
import "fmt"