Skip to content

Instantly share code, notes, and snippets.

@cualquiercosa327
cualquiercosa327 / DC23_SaaS.md
Created October 9, 2025 22:28 — forked from tkuester/DC23_SaaS.md
DEFCON23 / WCTF: Shock Collar as a Service

Vegas is the last place I ever expected to visit. And yet, I wound up tucking myself into the corner of the Wireless Village for three days, absorbing excellent talks on the state of wireless hackery. Though I hadn't planned to try any of the challenges, I got drawn into @dntlookbehindu's (aka Russ) "SDR Roulette".

Shock Collar

Russ purchased a dog collar to analyze the wireless communication between remote

@cualquiercosa327
cualquiercosa327 / PPSA01650.xml
Created October 3, 2025 12:23 — forked from Gezine/PPSA01650.xml
PS5 Youtube disable PSN signin popup
<?xml version="1.0" encoding="utf-8"?>
<Patch>
<TitleID>
<ID>PPSA01650</ID>
</TitleID>
<Metadata Title="Youtube"
Name="Disable PSN signin popup"
Author="Gezine"
PatchVer="1.00"
AppVer="01.000.003"

What is the Strict Aliasing Rule and Why do we care?

(OR Type Punning, Undefined Behavior and Alignment, Oh My!)

What is strict aliasing? First we will describe what is aliasing and then we can learn what being strict about it means.

In C and C++ aliasing has to do with what expression types we are allowed to access stored values through. In both C and C++ the standard specifies which expression types are allowed to alias which types. The compiler and optimizer are allowed to assume we follow the aliasing rules strictly, hence the term strict aliasing rule. If we attempt to access a value using a type not allowed it is classified as undefined behavior(UB). Once we have undefined behavior all bets are off, the results of our program are no longer reliable.

Unfortunately with strict aliasing violations, we will often obtain the results we expect, leaving the possibility the a future version of a compiler with a new optimization will break code we th

@cualquiercosa327
cualquiercosa327 / switch-gdb-cheatsheet.md
Created June 4, 2025 08:32 — forked from jam1garner/switch-gdb-cheatsheet.md
GDB for Switch Modding Cheatsheet/Tutorial

This is a mini-tutorial of sorts for getting started with gdb on the Switch, with the target audience being people who want to mod and/or reverse games, with no prerequisite knowledge of gdb. The goal will be to walk you through some of the basic workflows needed to use a debugger on the Switch, while being brief enough for skimming for when you forget things.

If some part is unclear, your OS doesn't have install instructions, or you feel part of your workflow should be added here, feel free to comment any additions.

(If you only need a quick reference Jump to the Appendix)

Installing GDB

First off you'll need a version of GDB compatible with aarch64. This can be obtained via either a distribution of

//
// XWine1
//
// This code is licensed under MIT License
//
// 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
@cualquiercosa327
cualquiercosa327 / main.c
Created March 29, 2025 08:38 — forked from mattiasgustavsson/main.c
Minimal code example for creating a window to plot pixels to
#include <stdint.h>
#include <stdlib.h>
#include <stdbool.h>
#include <windows.h>
#pragma comment( lib, "user32.lib" )
#pragma comment( lib, "gdi32.lib" )
#define SCRW 640
#define SCRH 480
// color1 and color2 are R4G4B4 12bit RGB color values, alpha is 0-255
uint16_t blend_12bit( uint16_t color1, uint16_t color2, uint8_t alpha ) {
uint64_t c1 = (uint64_t) color1;
uint64_t c2 = (uint64_t) color2;
uint64_t a = (uint64_t)( alpha >> 4 );
// bit magic to alpha blend R G B with single mul
c1 = ( c1 | ( c1 << 12 ) ) & 0x0f0f0f;
c2 = ( c2 | ( c2 << 12 ) ) & 0x0f0f0f;
uint32_t o = ( ( ( ( c2 - c1 ) * a ) >> 4 ) + c1 ) & 0x0f0f0f;
@cualquiercosa327
cualquiercosa327 / wslkernel.sh
Created February 23, 2025 20:42 — forked from pagkly/wslkernel.sh
WSL2 - Compile Kernel with Ashmem and Binder
# Waydroid
# WSl custom kernel
# https://gist.github.com/oleksis/eb6d2f1cd2a6946faefb139aa0e38c35
# https://github.com/waydroid/waydroid/issues/217
# https://www.youtube.com/watch?v=SfK4PBcFq0w
# Powershell shutdown & remove config
wsl --shutdown
rm /mnt/c/Users/user/.wslconfig
# install dependencies
@cualquiercosa327
cualquiercosa327 / WSL2GUIWSLg-Wayland-en.md
Created February 23, 2025 20:42 — forked from tdcosta100/WSL2GUIWSLg-Wayland-en.md
Using full desktop shell in WSL2 using WSLg (Wayland)

Full desktop shell in WSL2 using WSLg (Wayland)

Note

If you want a more complete experience and already tried the Xvnc tutorial, maybe you should try the WSLg (Xwayland) instead.

Warning

This is a work in progress tutorial. Things done here may break existing functionality, so be careful!

In this tutorial, we will install and use a full GNOME Desktop environment in WSL2, without any external software. The only requirement is a working WSLg installation. At the moment, the instructions are only for Ubuntu (20.04, 22.04 and 24.04) distros and GNOME, but you can request me to test other distros and desktop environments.