Skip to content

Instantly share code, notes, and snippets.

Avatar

Arti Zirk artizirk

View GitHub Profile
@artizirk
artizirk / semihost.c
Created Dec 7, 2020
openocd: arm semihosting enable; reset run
View semihost.c
void __attribute__ ((noinline)) print_semihosting(const void *buf, uint32_t size)
{
uint32_t args[3];
args[0] = 1;
args[1] = (uint32_t)buf;
args[2] = size;
asm( "mov r0, #5\n"
"mov r1, %0\n"
"bkpt 0x00AB" : : "r"(args) : "r0", "r1", "memory");
}
View stm32_crc32.py
def _slow_crc(data, seed=0xFFFF_FFFF, polynomial=0x04C11DB7):
"""
STM32 CRC that is actually CRC-32/MPEG2 but input data is read as litle-endian (not big-endian like MPEG)
"""
crc = seed
# Pad data if needed
pad_len = len(data) % 4
if pad_len > 0:
words = array.array('I', data[:-pad_len])
@artizirk
artizirk / xinput.py
Last active Nov 17, 2020
Pure Python implementation for reading Xbox controller inputs without extra libs
View xinput.py
#!/usr/bin/env python3
""" XInput Game Controller APIs
Pure Python implementation for reading Xbox controller inputs without extra libs
Copyright (C) 2020 by Arti Zirk <arti.zirk@gmail.com>
Permission to use, copy, modify, and/or distribute this software for any purpose
with or without fee is hereby granted.
@artizirk
artizirk / vga.dts
Created Jun 11, 2020
Cubietruck Allwinner A20 VGA output on mainline Armbian
View vga.dts
/dts-v1/;
/plugin/;
/* Based on https://github.com/wens/linux/commits/sun4i-drm-tve-vga-wip */
/* Tested with Cubetruck */
/* save it somewhere and run sudo armbian-add-overlay vga.dts */
/ {
compatible = "allwinner,sun4i-a10", "allwinner,sun7i-a20", "allwinner,sun8i-h3", "allwinner,sun50i-a64", "allwinner,sun50i-h5";
@artizirk
artizirk / nanopi-r2s-power-button.dts
Last active May 11, 2020
Custom Armbian user device tree overlays for NanoPi devices
View nanopi-r2s-power-button.dts
/dts-v1/;
/plugin/;
/ {
compatible = "friendlyelec,nanopi-r2", "rockchip,rk3328";
fragment@0 {
target-path = "/gpio-keys/button@0";
__overlay__ {
linux,code = <116>;
@artizirk
artizirk / make_nspawn_iface_mac.py
Last active Apr 23, 2020
Generate systemd nspawn interface MAC aadresses based on the host id and container name https://wiki.wut.ee/sysadmin/systemd-nspawn_containers
View make_nspawn_iface_mac.py
#!/usr/bin/env python3
"""
This script implements systemd-nspawn MAC aadress generation algorithm
"""
import sys
import struct
from subprocess import run
import siphashc # https://pypi.org/project/siphashc/
@artizirk
artizirk / dhclient_ipv6_prefix_delegation.md
Last active Apr 23, 2020
ISC dhclient IPv6 prefix delegation hook script https://wiki.wut.ee/en/sysadmin
View dhclient_ipv6_prefix_delegation.md
@artizirk
artizirk / readme.md
Last active Feb 4, 2020
Atlassian Bitbucket Server (Stash) OAuth1 example with Python
View readme.md

Based on this https://developer.atlassian.com/server/jira/platform/oauth/

generate private key

openssl genrsa -out jira_privatekey.pem 1024

generate public key

openssl req -newkey rsa:1024 -x509 -key jira_privatekey.pem -out jira_publickey.cer -days 365
openssl pkcs8 -topk8 -nocrypt -in jira_privatekey.pem -out jira_privatekey.pcks8
@artizirk
artizirk / debug.md
Last active Jan 14, 2021
Debug WireGuard Linux kernel module
View debug.md
@artizirk
artizirk / wg-ip.py
Last active Jun 28, 2020
Generate WireGuard IP Addresses from public key, compatible with wg-ip bash script
View wg-ip.py
#!/usr/bin/env python3
# need at least python3.6+ for blake2
from base64 import b64decode
from hashlib import sha256, blake2s
from ipaddress import ip_address, ip_network
# https://github.com/chmduquesne/wg-ip
def gen_ip(pubkey, subnet=ip_network('fe80::/64')):
"""Generate wg-ip compatible addresses from WireGuard public key.
You can’t perform that action at this time.