Skip to content

Instantly share code, notes, and snippets.

View Riebart's full-sized avatar

Mike Riebart

View GitHub Profile
@Riebart
Riebart / pb_notify.sh
Created April 13, 2017 15:53
A bash function that sends a pushbullet notification when a command completes
function pb_notify {
start=`date +%s%N`
"$@"
end=`date +%s%N`
start_ms=`echo $start | head -c 13`
end_ms=`echo $end | head -c 13`
dt_ms=$[(end_ms-start_ms)]
if which bc >/dev/null 2>&1
then
dt=`echo "scale=3;$dt_ms/1000.0" | bc`
@Riebart
Riebart / ip4list_to_ranges.py
Last active September 15, 2017 21:28
Collect a list of IPv4 addresses into contiguous range blocks.
#!/usr/bin/env python
"""
Given a list of IP addresses (or IP address ranges), one per line (with ranges given as "IP1-IP2"),
return a list of IP address ranges that represent the smallest possible list of IP address ranges
that does not contain any addresses not represented in the input list.
Only supports IPv4.
"""
import sys
@Riebart
Riebart / keybase.md
Last active September 19, 2017 16:48

Keybase proof

I hereby claim:

  • I am Riebart on github.
  • I am riebart (https://keybase.io/riebart) on keybase.
  • I have a public key whose fingerprint is 277C D4E5 2742 A486 CAB0 C857 98B6 9479 9B76 0FBE

To claim this, I am signing this object:

from random import random
def accumulate(iterator):
total = 0
for item in iterator:
total += item
yield total
# Generate a list of a bunch of values with random offsets so we can bucket them.
# Only step at most 10ms per 'packet', because we want a representative sample size.
@Riebart
Riebart / vscode_context.reg
Created November 10, 2017 03:18
Registry entries for Explorer context menus. Useful for non-admin installs
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Classes\*\shell]
[HKEY_CURRENT_USER\Software\Classes\*\shell\VSCode]
@="Open with Code"
"Icon"=hex(2):43,00,3a,00,5c,00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,00,20,\
00,46,00,69,00,6c,00,65,00,73,00,5c,00,4d,00,69,00,63,00,72,00,6f,00,73,00,\
6f,00,66,00,74,00,20,00,56,00,53,00,20,00,43,00,6f,00,64,00,65,00,5c,00,43,\
00,6f,00,64,00,65,00,2e,00,65,00,78,00,65,00,00,00
@Riebart
Riebart / userdata.sh
Created January 10, 2018 16:51
EC2 user data for setting up an EC2 instance with SSM and deploying into an ECS cluster.
#!/bin/bash
# Install the SSM agent:
# Ref: https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-install-startup-linux.html
cd /tmp
sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
sudo start amazon-ssm-agent
echo ECS_CLUSTER="ECS_CLUSTER_NAME" >> /etc/ecs/ecs.config
export PATH=/usr/local/bin:$PATH
@Riebart
Riebart / scapy_dns_response.py
Created April 26, 2018 21:18
Read in a file, and respond to any query received with the contents of that file in the CNAME target.
from __future__ import print_function
from scapy.all import *
domain_name = "nhlscore.riebart.ca"
dns_server_ip = '172.31.15.145'
bpf_filter = 'dst port 53 and ip dst {0}'.format(dns_server_ip)
def dns_respond(pkt, rcode=0):
if (DNS in pkt and pkt[DNS].opcode == 0 and pkt[DNS].ancount == 0):
print('Responding to query for "%s" from "%s"' % (pkt[DNSQR].qname, pkt[IP].src))
@Riebart
Riebart / grafana_timeseries.sh
Last active June 27, 2018 03:44
Ad hoc stuffing timeseries into InfluxDB for visualization with Grafana with subsecond resolution timestamps.
#!/bin/bash
influxId=$(docker run --rm -d -p 8086:8086 -p 2003:2003 -e INFLUXDB_GRAPHITE_ENABLED=true influxdb)
grafanaId=$(docker run --rm -d -p 3000:3000 grafana/grafana)
echo "Sleeping while the containers spool up..." >&2
sleep 10
influxIp=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ${influxId})
@Riebart
Riebart / script.ps1
Last active June 14, 2024 19:14
Generate code signing certificate and key using Powershell
# Generate a new certificate with key, marked exportable (the default), suitable for code signing.
# The certificate is stored in the personal certificate store.
New-SelfSignedCertificate -Subject "CN={YOUR NAME}" -KeySpec "Signature" -KeyUsage "DigitalSignature" -KeyUsageProperty "Sign" -Friendlyname "Code Signing" -NotAfter $([datetime]::now.AddYears(5)) -Type "CodeSigningCert" -CertStoreLocation cert:\currentuser\my -KeyAlgorithm RSA -Keylength 4096 -HashAlgorithm "SHA256" -Provider "Microsoft Enhanced RSA and AES Cryptographic Provider"
# To Sign a Powershell script with a certificate
# - Find the key, which you can usually do with the thumbprint and knowing where it was stored
# - This may or may not work for you, depending on whether or not you have access to a functioning timestamp server
# - Regardless of the timestamp, the signature will still work, just won't say when it was signed.
$cert = (ls cert:currentuser\my\0BD717BC985949E736067A15CC7502A1EAE6D031)
@Riebart
Riebart / apigateway-invoke.py
Last active May 30, 2023 12:21
Python script to invoke an AWS API Gateway endpoint that requires IAM authentication. Uses boto for signing the request, and requests for issuing it.
#!/usr/bin/env python3
"""
Provides a simple Python wrapper for invoking an API Gateway endpoint using IAM signed requests.
Example:
python3 apigateway-invoke.py GET \
https://xxxxxxxxxx.execute-api.us-east-1.amazonaws.com/default/MethodName | jq .
"""
try: