Skip to content

Instantly share code, notes, and snippets.

@biemster
biemster / revive_ch59x.py
Last active March 5, 2025 19:58
Revive a bricked CH59x that got bad config data. Only works if the bootloader does this reset after 10ms trick every half a second.
#!/usr/bin/env python
"""
requires pyusb, which should be pippable
have this run in an udev rule, like
SUBSYSTEM=="usb", ATTR{idVendor}=="4348", ATTR{idProduct}=="55e0", MODE="666", RUN+="/bin/sh -c '/path/to/this/script/revive_ch59x.py' >> /tmp/ch59x"
and update the rules with
$ sudo udevadm control --reload-rules && sudo udevadm trigger
Then see the output with
$ tail -f /tmp/ch59x
@biemster
biemster / facetime.proto
Created May 22, 2024 17:18
FaceTime protobuf from facetime2/.../main.js
syntax = "proto2";
message InnerMessage {
optional bytes message = 1;
optional uint32 counter = 2;
optional bytes ktGossipData = 3;
optional bytes debugInfo = 99;
}
message OuterMessage {
@biemster
biemster / parse_nacsig.py
Last active June 24, 2024 04:52
Initial parsing of the validation blob for IDS registration which comes out of IMDAppleServices
#!/usr/bin/env python
import apple_auth
from io import BytesIO
vd = BytesIO(bytes(apple_auth.IDS(open('idevice.json').read()).request_validation_data())) # create json with Smoothstep/apple-gen-rs
tag = vd.read(1) # always 0x02, maybe like the APNS msg for cert?
stat16b = vd.read(16) # static across machines, some versioning?
dyn16b = vd.read(16) # the actual signature from the obfuscated algorithm
len_payload = vd.read(4)
payload = BytesIO(vd.read(int.from_bytes(len_payload,"big")))
@biemster
biemster / ESP32_blescan.py
Created January 17, 2023 12:20
simple ESP32 MicroPython Bluetooth LE scanner
import time
import bluetooth
from micropython import const
_IRQ_SCAN_RESULT = const(5)
_IRQ_SCAN_DONE = const(6)
def bt_irq(event, data):
if event == _IRQ_SCAN_RESULT:
# A single scan result.
addr_type, addr, connectable, rssi, adv_data = data
@biemster
biemster / ec_lsag_test.py
Created September 20, 2022 09:06 — forked from jesperborgstrup/ec_lsag_test.py
Python implementation of Linkable Ring Signatures over Elliptic curves
# MIT License
#
# Copyright (C) 2014 Jesper Borgstrup
# -------------------------------------------------------------------
# Permission is hereby granted, free of charge, to any person
# obtaining a copy of this software and associated documentation
# files (the "Software"), to deal in the Software without restriction,
# including without limitation the rights to use, copy, modify, merge,
# publish, distribute, sublicense, and/or sell copies of the Software,
# and to permit persons to whom the Software is furnished to do so,
@biemster
biemster / keychain_password.py
Created September 8, 2022 09:52 — forked from pudquick/keychain_password.py
Storing and retrieving a generic password in the login.keychain in macOS via python and pyobjc
import objc
from ctypes import c_char
from Foundation import NSBundle
Security = NSBundle.bundleWithIdentifier_('com.apple.security')
S_functions = [
('SecKeychainGetTypeID', 'I'),
('SecKeychainItemGetTypeID', 'I'),
('SecKeychainAddGenericPassword', 'i^{OpaqueSecKeychainRef=}I*I*I*o^^{OpaqueSecKeychainItemRef}'),
('SecKeychainOpen', 'i*o^^{OpaqueSecKeychainRef}'),
@biemster
biemster / macOS_keychain.py
Created September 6, 2022 19:33 — forked from williballenthin/macOS_keychain.py
bling.py - extract keys from macOS keychains.
#!/usr/bin/env python3
'''
bling.py - extract keys from macOS keychains.
installation:
pip install pytz hexdump vivisect-vstruct-wb tabulate argparse pycryptodome
usage:
python bling.py /path/to/keychain-db <password> ./path/to/output/directory
@biemster
biemster / currentBuildIsSeed.py
Created June 4, 2022 13:07 — forked from Piker-Alpha/currentBuildIsSeed.py
Check for Beta build on macOS 10.10 and greater
#!/usr/bin/python
import objc
from Foundation import NSBundle, NSClassFromString
SeedingBundle = NSBundle.bundleWithPath_('/System/Library/PrivateFrameworks/Seeding.framework')
objc.loadBundleFunctions(SeedingBundle, globals(), [("currentBuildIsSeed", '@')])
buildInfo = NSClassFromString('SDBuildInfo')
@biemster
biemster / 8021x_inspect.py
Created June 3, 2022 17:56 — forked from pudquick/8021x_inspect.py
802.1x configuration / data collection on OS X using python and the PrivateFramework "EAP8021X.framework"
# This was all run from user space
# I haven't tested it with root
# ... but it didn't prompt for any permissions under userspace ^_^
# Tested on 10.11.5
import objc
from Foundation import NSBundle
EAP8021X_bundle = NSBundle.bundleWithPath_('/System/Library/PrivateFrameworks/EAP8021X.framework')
Security_bundle = NSBundle.bundleWithIdentifier_('com.apple.security')
@biemster
biemster / lottery.sol
Created December 21, 2021 08:27 — forked from alexroan/lottery.sol
lottery.sol
pragma solidity >=0.6.2;
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/utils/EnumerableSet.sol";
import "@openzeppelin/contracts/utils/Address.sol";
import "@openzeppelin/contracts/math/SafeMath.sol";
import "./RandomNumberGenerator.sol";
contract Lottery is Ownable{