Skip to content

Instantly share code, notes, and snippets.

View zwade's full-sized avatar
Probably CTFing

Zach Wade zwade

Probably CTFing
View GitHub Profile
zwade / homepage.png
Last active August 29, 2015 14:03
Getting Set Up With Wakari and JITCode

Navigate to to get started with Wakari.

Once you've logged in, you should go into the settings menu, and under "account settings" change your password from the default one, to something more convenient from you. As soon as you save your settings, return to your user page and open up the JITCode project. Once in the project, you will have the option to open up an iPython notebook, viewer, or terminal, among others. Click the iPython notebook option and then click the first lesson to get started.

zwade / Spark.js
Created March 31, 2015 14:58
A lightweight handlebars live rendering system
//A lightweight Handlebars live rendering system similar to ember and blaze
//Written 2015 by zwade
Spark = function(hb) {
this._hb = hb;
this._kvp = {};
this._upd = {};
var that = this;
hb.registerHelper("spark", function() {
zwade / DFT.v
Created April 29, 2015 13:06
`timescale 1ns / 1ps
// Company:
// Engineer:
// Create Date: 12:51:35 03/13/2015
// Design Name:
// Module Name: main
// Project Name:
// Target Devices:
zwade / box.css
Last active August 29, 2015 14:20
.box {
background-color: #f00 !important;
window {
background: #0f0;
zwade /
Created May 23, 2015 18:10
" " >v
z z \
z z $
i \ u \
f ^1$< b ,
" \ " ,
>,,,,^ >,,^
^ ,*25 +1 < <
zwade / laml.js
Created July 15, 2015 20:07
LAML -- Lazy-Butt Markup Language, pronounced Lame-al -- Transpiler. See Below for input (schema.laml) and output (schema.js). Note, it outputs JS, not JSON to allow for the embedding of functions within the markup language.
funcs = []
function main() {
fs = require("fs")
file = fs.readFileSync(process.argv[2] || "schema.laml").toString()
empty = file.split(/\n+/)
var out = {}
zwade /
Last active October 30, 2015 15:18


Before we start, know that this problem take an inordinate amount of time, and I will be glossing over a lot of my process in solving this. I will hit the highlights, but as with many things like this, practice makes perfect. Lets see what they give us.

This program seems to be rather delightfully twisted! Can you get it to accept a password? We need it to get access to some Daedalus Corp files.

And the hint,

>This program appears to be "packed." Fortunately, it's packed with a common packer, and no trickery was performed - so you should be able to just unpack it with the same packer.

zwade / capture.js
Created December 13, 2017 18:48
Capture Script for Arduino
#!/usr/bin/env node
let yargs = require("yargs")
let serial = require("serialport")
let fs = require("fs")
let { join } = require("path")
let glob = require("glob")
function getPorts() {
let files = glob.sync("/dev/tty.usbmodem*")
zwade / decode.ts
Last active September 29, 2019 10:12
Disassembler for Dragon CTF 2019 Mysterious CPU Problem
#!/usr/bin/env ts-node
import * as fs from "fs-extra";
import { symlinkSync } from "fs-extra";
let color = (num: number) => (data: any) => `\x1b[38;5;${num}m${data}\x1b[0m`;
let gray = color(0);
let red = color(1);
let green = color(2);
let yellow = color(3);
zwade /
Created August 16, 2020 18:04
Reimplementation of DEF CON 2020's Pinboool Binary
from typing import Tuple, Dict, List, TypedDict
import copy
import struct
from functools import cached_property
import math
from pwnlib.util.packing import flat, u16
def twos_byte(b):
b = b & 0xFF
if b <= 0x7F: