Skip to content

Instantly share code, notes, and snippets.

View sevaa's full-sized avatar

Seva Alekseyev (he/him) sevaa

View GitHub Profile
@sevaa
sevaa / ToUTF8.sql
Last active April 30, 2024 09:51
Converting an NVARCHAR string to a UTF-8 VARBINARY data block in pure Transact-SQL
create function [dbo].[ToUTF8](@s nvarchar(max))
returns varbinary(max)
as
begin
declare @i int = 1, @n int = datalength(@s)/2, @r varbinary(max) = 0x, @c int, @c2 int, @d varbinary(4)
while @i <= @n
begin
set @c = unicode(substring(@s, @i, 1))
if (@c & 0xFC00) = 0xD800
begin
@sevaa
sevaa / RequestTLSCert.ps1
Last active January 4, 2024 00:42
RequestTLSCert.ps1
# Requires .NET 4.7.2+ or Core 2.0+
# Basic parameters. For TLS certs for IIS, this is sufficient
$Hostname = "foo.example.com" # Goes into Subject as the CN
$AltHostnames = @("foo.example.com", "bar.example.com", "baz.example.com") # These go into Subject Alternative Name
$DNPostfix = "OU=IT;O=Acme;L=Chicago;S=Illinois;C=US" # What follows the CN in the Subject field. Optional!
$FriendlyName = "foo" # Optional but highly recommended
$TermDays = 3650 # Expiration date for the temporary self-signed cert. The CA will probably override the exp date anyway.
$CSRPath = "c:\\MyCert.csr" # Your path WILL vary.
$SaveUnderLocalMachine = $false # False for current user, true for local machine.
@sevaa
sevaa / ll.py
Last active November 15, 2023 16:50
Test gist for debugging location list parsing
from sys import argv
from elftools.common.exceptions import ELFParseError
from elftools.dwarf.locationlists import LocationLists, LocationListsPair, LocationParser
from elftools.elf.elffile import ELFFile
from inspect import getframeinfo
from elftools.dwarf.dwarfinfo import DWARFInfo
def location_lists(self):
""" Get a LocationLists object representing the .debug_loc/debug_loclists section of
the DWARF data, or None if this section doesn't exist.
@sevaa
sevaa / a.cpp
Created March 2, 2023 14:38
COM double hop test
#include <windows.h>
static const GUID CLSID_B =
{ 0x51addb47, 0xd26a, 0x4f69, { 0xb9, 0x7b, 0x7e, 0x30, 0x62, 0x8d, 0xcf, 0x5b } };
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPWSTR lpCmdLine,
_In_ int nCmdShow)
@sevaa
sevaa / MSISetProp.ps1
Created December 20, 2022 16:58
A Powershell script to change a property value in an MSI file
param($Path, $Property, $Value)
$i = New-Object -COM "WindowsInstaller.Installer"
$db = $i.OpenDatabase($Path, 2)
$r = $i.CreateRecord(2)
$r.StringData(1) = $Value
$r.StringData(2) = $Property
$vw = $db.OpenView("update Property set Value=? where Property=?")
$vw.Execute($r)
$r = $null
@sevaa
sevaa / GoogleIAPSignatureCheck.java
Last active November 7, 2022 19:19
Hand-checking the digital signature of Android in-app purchase against the Google public key
//The modulus of the IAP public key, as Base64.
//The public exponent is 65537, we'll hard-code it.
private static final String GMOD = "APXj+9V6Mrp7DwDVLP2yIDhuMiB30R+NQ9JO14jg42S3TcJFhURQZ2RD21GIbp5S7RLy7YDcxOjH765HM7FWUJgJegvL01lYtzFkXv0XRcnL05m5sgTp58i9fYOJt1QKar2k4FI/a6iv7sjT4qGLOcX3drjDx6WKwZdnu6q5rA94rycHoe+BdELsy1eKBp/iI4KIe/Y3WePYfVgynL4mrJOHutf1tvy6WL04zG61yl3PBlwh6uy1K+RBqEXeiznS0ee4Xq3fe3puq6HgEZKw8PQIihxk8odbg1lneqAk51JZ8vuQi9WEZMdvqWK+p4jT+q7mTYQO18NH1MP5y2/fj8k=";
//d is the value of the IAP result intent's string extra "INAPP_PURCHASE_DATA"
//s is the value of the IAP result intent's string extra "INAPP_DATA_SIGNATURE"
private static boolean PowModThenCheck(String d, String c)
{
try
using Microsoft.Win32.SafeHandles;
using System.Diagnostics;
using System.Text;
using System;
using System.Threading;
namespace COMNET
{
public class Program
{
@sevaa
sevaa / Delta.cs
Created October 18, 2019 14:48
C# wrapper around MSDelta's ApplyDeltaB API
class Delta
{
[StructLayout(LayoutKind.Sequential)]
private struct DELTA_INPUT
{
public IntPtr lpcStart;
public UIntPtr uSize;
[MarshalAs(UnmanagedType.Bool)]
public bool Editable;
}
#define INITGUID
#include <SDKDDKVer.h>
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <mfidl.h>
#include <mfapi.h>
#include <evr.h>
#include <cguid.h>
#include <propvarutil.h>
#include <comdef.h>
@sevaa
sevaa / Dispatcher.cpp
Created November 2, 2017 14:50
Native process isolation using COM and ROT
#include <windows.h>
#include <process.h>
#include <comdef.h>
#include "..\\Worker\\Protocol.h"
#include <string>
using namespace std;
volatile static unsigned int s_CookieGen = 0;