Skip to content

Instantly share code, notes, and snippets.

@jamchamb
jamchamb / k360_spi.py
Last active June 22, 2023 07:06
GreatFET script for dumping nRF24LE1 firmware (https://jamchamb.net/2021/05/29/dumping-k360-firmware.html)
#!/usr/bin/python3
import argparse
import hexdump
import struct
import time
from greatfet import GreatFET
def reset(gf, reset_pin):
"""Pulse the reset pin low"""
#!/usr/bin/env python3
import argparse
import struct
# little endian, 32-bit words
# Could check for magic 0x01020304 / 0x04030201 to determine endianness
ENDI = '<'
WORD_PAT = ENDI + 'I'
WORD_SZ = struct.calcsize(WORD_PAT)
@jamchamb
jamchamb / wshax3.html
Last active October 30, 2021 17:56
CSCG 2021 screenshotter solution (https://github.com/LiveOverflow/ctf-screenshotter)
<!doctype HTML>
<html>
<head>
<meta charset="utf-8" />
<title>WebSocket Test</title>
</head>
<body>
<!-- CSCG 2021 screenshotter solution -->
<script language="javascript" type="text/javascript">
// get browser Ws URL from /json/version:
@jamchamb
jamchamb / nhb_content.md
Last active October 30, 2021 14:53
NHB 2010 puzzle content

Puzzle clues dumped via JTAG from the Next Hope Badge (http://goodfet.sourceforge.net/hardware/nhb12/). Extracted in 2021 with a GreatFET (see https://twitter.com/jamchamb_/status/1416947415454818310).

Ciphertext

rldisxkrtfarygrgeedicdnwtfntqsaiddqwbaoufomdudkzhoijrvglbufrnfarjqnkqbfwqsakvkjdyrnqntbooggbmgswxghnhmkyfkiausetkrjykknyruadbszymgtweygnzbgdurudpfocefweixwiwvpicjfhimuhnblisfmhlakpggtpeqxamnjowovebqmorxxjcjrnkbdqhwfmmdnyqxnnmisnzecqbzaeirsssvjzromesadjxqwjwysyptxpyggqzyljycxlhqlkzibvrbjozcmpwkeurlkrjwaiyxtgoeqnmsietsstvfirqmmhyxyhtyqswjykopyahhfaaytvdbnuozbnxauqzlivuggiwfjdmodmnxhqkoumbrnwimhribypkuutxgibsvyamyvxmpknhxkqkrhstfiezcxxjgybcxbpvwmhmxvuvfkfxsyqxguxisurzttcqvrlsesebozwujcrcaizgdxpwrhwlbybwpmotftvsocufeuoebrbqotykezifvysksxdnrvffxzlctagushlgbjrfjzkeydoqbsdsniylikockuxccijdsaibatgywvoxnrqbapnizbkkvhnxqwbjwjlwcsuzoixbaodadrjtnobbmsxnbuxnraflztuxvulzvoqesiygxahksexuzuhqumcugwrbrdanrqrkzqqxqxhicfcbzkruxtpdqheikfvcwnmwddtuabdcgfegqwbnqrqgyvpjakmxyztccnwzfvfkcvgdiwuyctuscvcpsbomdrazupza
#!/usr/bin/env python2
import argparse
GROUP_COUNT = 38
GROUP_ENTRY_COUNT = 96
# Debug register group names
SHORT_NAMES = ' SOPQMYDUIZCNKXcsiWAVHGmnBdkb*********'
LONG_NAMES = [
'REG',
@jamchamb
jamchamb / interactive-websocket.html
Last active August 20, 2021 03:23
Basic interactive WebSocket page based on websocket.org echo test
<!doctype HTML>
<html>
<head>
<meta charset="utf-8" />
<title>WebSocket Test</title>
</head>
<body>
<script language="javascript" type="text/javascript">
//var wsUri = 'ws://demos.kaazing.com/echo';
var output;
#!/usr/bin/env python
# Based on http://www.piware.de/2011/01/creating-an-https-server-in-python/
# generate server.pem with the following command:
# openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes
# run as follows:
# python simple-https-server.py
# then in your browser, visit:
# https://localhost:4443
import argparse
import BaseHTTPServer, SimpleHTTPServer
<html>
<head>
<title>CORS Test</title>
</head>
<body>
<script>
var xhr = new XMLHttpRequest();
xhr.open(
"GET",
"https://URLHERE!",
#!/usr/bin/env python3
import hmac
import os
SECRET = b'secret'
def test(host, in_hmac, nonce=None):
secret = SECRET
@jamchamb
jamchamb / phabbackup.sh
Last active January 11, 2020 22:53
Phabricator automatic backup script
#!/bin/bash
# Backup Phabricator database, storage engine, and config files
# NOTE: This script is to be run by cron. See /etc/cron.d/phabricator
# Don't use unset variables
set -u
# Exit if any commands fail (unless they begin a pipe, etc.)
set -e
# Output an error message and set the errors flag