Skip to content

Instantly share code, notes, and snippets.

View rjzak's full-sized avatar

Richard Zak rjzak

View GitHub Profile
rjzak / PyUtils.cpp
Last active April 16, 2024 09:00
Convert between Python list/tuples and C++ vectors
#include <Python.h> // Must be first
#include <vector>
#include <stdexcept>
#include "PyUtils.h"
using namespace std;
// =====
// =====
rjzak /
Created January 26, 2017 22:04
Use pefile to see if a section in an EXE (PE32) file is executable or not. Convenient, since a lot of EXE's don't have the standard .text section, or have more than one executable section.
import pefile
import sys
Test the section characteristics to see if the section is executable. Check for flags:
* 0x00000020 = Section contains code
* 0x20000000 = Section is executable
rjzak /
Created March 6, 2017 20:59
Pull and reformat lists for blocking domains associated with advertising (since ad networks don't police themselves and allow malvertising) and malware/scams.
# Modified Pi-hole script to generate a dnsmasq file
# Intended for EdgeOS/EdgeMax from Ubuquiti Networks
# original :
# original :
# inspiration:
# Be sure to put this file in /config/user-data/
# Symlink for cron updates:
# ln -s /config/user-data/ /etc/cron.weekly/edgeos_adblock
rjzak /
Last active March 1, 2021 21:21
Search and Collect scrapes all the Windows executables (PE files) in a Windows system and copies the files into the destination directory. This is the Python version of the code at
import os, sys, hashlib, shutil
sha256 = lambda data: hashlib.sha256(data).hexdigest()
def searchAndCollect(src, dest):
print "Searching %s for .exe's, saving to %s" % (src, dest)
for dirpath, dirnames, filenames in os.walk(src):
if src in dirnames:
rjzak /
Created December 25, 2019 02:27
A simple bloom filter with standard dependencies. Expects the input to be strings.
import os
import zlib
import pickle
import numpy as np
import unittest
P_B = 227
P_M = 1000005
rjzak /
Created August 11, 2019 19:27
Quick script for getting entropy values for files
import math, string, sys
def range_bytes (): return range(256)
def range_printable(): return (ord(c) for c in string.printable)
def H(data, iterator=range_bytes):
if not data:
return 0
entropy = 0
import math
ordinal = lambda n: "%d%s" % (n,"tsnrhtdd"[(math.floor(n/10)%10!=1)*(n%10<4)*n%10::4])
rjzak /
Created June 14, 2018 22:14
Reformat an even-length string, like a MAC address
# Input example: 8249CEB658C71D41D7B734449629AB97
# Output example: 82:49:CE:B6:58:C7:1D:41:D7:B7:34:44:96:29:AB:97
reformat = lambda x: ":".join([x[i:i+2] for i in range(0, len(x), 2)])
rjzak / progressbar.cpp
Created May 31, 2013 20:09
A progress bar in C/C++
#include <string>
#include <iostream>
#include <cstdlib>
using namespace std;
void printProgBar( int percent );
int main(int argc, char* argv[]) {
int N = 100;
rjzak /
Created December 30, 2016 14:51
A Python 3 script which uses the system's dictionaries to generate xkcd-inspired passwords. Inspired by:
import os
import sys
import glob
import codecs
import random
cleanup = lambda x: x.split("/")[0] if "/" in x else x # Some hunspell entries have slashes in the second to last character.