Skip to content

Instantly share code, notes, and snippets.

View giannitedesco's full-sized avatar

Gianni Tedesco giannitedesco

View GitHub Profile
@giannitedesco
giannitedesco / acpi-dump.c
Created June 19, 2011 16:44
Use /dev/mem on Linux system to dump ACPI tables in binary.
/* Copyright (c) 2011 Gianni Tedesco */
/* According to ACPI v4.0 spec */
#include <stdint.h>
#include <inttypes.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/mman.h>
@giannitedesco
giannitedesco / gist:1034468
Created June 19, 2011 16:47
Detach a USB device from kernel driver using libusb-1.0
#include <libusb.h>
#include <stdint.h>
#include <inttypes.h>
#include <stdio.h>
#include <stdlib.h>
static libusb_context *ctx;
static int do_init(void)
{
@giannitedesco
giannitedesco / gist:1034469
Created June 19, 2011 16:50
Rip syndicate graphics tiles in to TGA files
#include <sys/mman.h>
#include <sys/stat.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <errno.h>
#include <assert.h>
@giannitedesco
giannitedesco / gist:1034470
Created June 19, 2011 16:52
Simple and fast binary grep. Useful for reverse engineering where you want to locate binary tables inside binary files.
/* Fast grep thing, using boyer-moore delta-1 heuristic */
#include <sys/mman.h>
#include <sys/stat.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <errno.h>
@giannitedesco
giannitedesco / gist:1218267
Created September 15, 2011 01:02
First cut of simulator for minecraft cpu
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#define REG_X0_BIT (1 << 0)
#define REG_X1_BIT (1 << 1)
#define REG_Y0_BIT (1 << 2)
#define REG_Y1_BIT (1 << 3)
#define NUM_REGS 4
@giannitedesco
giannitedesco / tbf.py
Created October 1, 2012 10:02
python: Token bucket filter with burst and sleep
#!/usr/bin/python
class TokenBucket:
from time import sleep, time
def __init__(self, rate, burst = None):
'Rate in tokens per second, burst in number of tokens'
self.rate = float(rate)
if burst is None:
#include <stdlib.h>
#include <stdint.h>
#include <inttypes.h>
#include <stdio.h>
#include <assert.h>
#include <errno.h>
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
@giannitedesco
giannitedesco / gist:5793263
Created June 16, 2013 20:17
Convert a complete binary search tree in to van emde boas order
#!/usr/bin/python
from sys import argv
from random import Random
def build_search_tree(a):
assert(len(a))
if len(a) == 1:
return (a[0], None, None)
n = len(a)
return (a[n/2], build_search_tree(a[:n/2]),
@giannitedesco
giannitedesco / gist:5846830
Created June 23, 2013 22:52
Code to create and query implicit van emde boas layout search trees
#!/usr/bin/python
from sys import argv
from random import Random
def build_search_tree(a):
assert(len(a))
if len(a) == 1:
return (a[0], None, None)
n = len(a)
return (a[n/2], build_search_tree(a[:n/2]),
@giannitedesco
giannitedesco / rxring.c
Created June 26, 2013 00:20
TPACKET_V3 mmap packet sockets, showing off flexible frame sizes and multi-process hash fanout
/* Copyright (c) 2013 Gianni Tedesco
* Released under the terms of the GNU GPL version 3
* mmap() packet socket transmission
*/
#ifndef __linux__
#error "Are you loco? This is Linux only!"
#endif
#include <stdio.h>