Skip to content

Instantly share code, notes, and snippets.

View simon-engledew's full-sized avatar
🙈

Simon Engledew simon-engledew

🙈
View GitHub Profile
@simon-engledew
simon-engledew / intpow.c
Created November 4, 2019 11:43
knuth intpow
unsigned int intpow(unsigned int a, unsigned int b)
{
unsigned int p = 1;
for (; b > 0;)
{
if ((b & 1) != 0)
{
p *= a;
}
b >>= 1;
@simon-engledew
simon-engledew / csrfproxy.go
Created October 4, 2019 21:47
csrf injecting proxy
import (
"bytes"
"errors"
"fmt"
"github.com/gorilla/csrf"
"golang.org/x/net/html"
"io"
"io/ioutil"
"net/http"
@simon-engledew
simon-engledew / main.py
Last active August 8, 2019 08:06
Rolling Median
import itertools
import functools
import collections
class StatisticsError(ValueError):
pass
def _key(pair):

Keybase proof

I hereby claim:

  • I am simon-engledew on github.
  • I am hotdogknight (https://keybase.io/hotdogknight) on keybase.
  • I have a public key ASAgtfxSK9B6HOaDQ5d24zVPIew7t0ey_VboaxjNYX8ALgo

To claim this, I am signing this object:

@simon-engledew
simon-engledew / reload.c
Created May 4, 2019 18:29
Run a command, restarting it on SIGHUP.
#include <signal.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <sys/wait.h>
volatile sig_atomic_t pid = 0;
static void restart(int sig)
{
@simon-engledew
simon-engledew / check.py
Created June 4, 2018 07:27
Check if a password has been compromised.
import hashlib
import getpass
from urllib.request import urlopen, Request
def check(password):
digest = hashlib.sha1(password.encode('utf-8')).hexdigest().upper()
head, tail = digest[:5], digest[5:]
@simon-engledew
simon-engledew / ghetto_asyncio.py
Created January 24, 2018 23:19
Ghetto Asyncio for Python 2
# -*- coding: utf-8 -*-
import os
import sys
import select
import errno
import threading
import Queue
from functools import wraps, partial
from contextlib import contextmanager, closing
import logging
@simon-engledew
simon-engledew / multiprocessing_socket.py
Created December 21, 2017 15:59
Pass a socket to a child process
from multiprocessing import Process, Queue
from multiprocessing.reduction import reduce_handle, rebuild_handle
from contextlib import closing
import socket
def process_sockets(queue):
while True:
fd = rebuild_handle(queue.get())
with closing(socket.fromfd(fd, socket.AF_INET, socket.SOCK_STREAM)) as connection:
@simon-engledew
simon-engledew / requirements.py
Last active January 18, 2018 10:23
Requirements solver
# -*- coding: utf-8 -*-
"""
Generates a requirements.txt from any packages
in the current working directory.
"""
import os
import glob
import contextlib
import functools
@simon-engledew
simon-engledew / xmlbuilder.py
Created September 11, 2017 09:04
XMLBuilder
"""
functional library for generating xml documents
"""
import xml.dom.minidom as xml
class Document(object):
"""
XML Document Builder