Skip to content

Instantly share code, notes, and snippets.

View rjzak's full-sized avatar

Richard Zak rjzak

View GitHub Profile
@rjzak
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;
// =====
// LISTS
// =====
@rjzak
rjzak / execSections.py
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.
#!/usr/bin/python
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
rjzak / edgeos_adblock.sh
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.
#!/bin/bash
# Modified Pi-hole script to generate a dnsmasq file
# Intended for EdgeOS/EdgeMax from Ubuquiti Networks https://www.ubnt.com/
# original : https://github.com/jacobsalmela/pi-hole/blob/master/gravity-adv.sh
# original : https://gist.github.com/OnlyInAmerica/75e200886e02e7562fa1
# inspiration: https://help.ubnt.com/hc/en-us/articles/205223340-EdgeRouter-Ad-blocking-content-filtering-using-EdgeRouter
# Be sure to put this file in /config/user-data/
# Symlink for cron updates:
# ln -s /config/user-data/edgeos_adblock.sh /etc/cron.weekly/edgeos_adblock
@rjzak
rjzak / searchCollect.py
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 https://github.com/IOActive/SearchAndCollect.
#!/usr/bin/python
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
rjzak / bloomFilter.py
Created December 25, 2019 02:27
A simple bloom filter with standard dependencies. Expects the input to be strings.
#!/usr/bin/python3
import os
import zlib
import pickle
import numpy as np
import unittest
P_B = 227
P_M = 1000005
@rjzak
rjzak / entropy.py
Created August 11, 2019 19:27
Quick script for getting entropy values for files
#!/usr/bin/python
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
rjzak / reformat_string.py
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
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
rjzak / gen_password.py
Created December 30, 2016 14:51
A Python 3 script which uses the system's dictionaries to generate xkcd-inspired passwords. Inspired by: https://xkcd.com/936/
#!/usr/bin/python3
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.