Skip to content

Instantly share code, notes, and snippets.

View AndrewSav's full-sized avatar

Andrew Savinykh AndrewSav

View GitHub Profile
@AndrewSav
AndrewSav / DecryptSqlObjects.ps1
Last active December 20, 2015 08:39
Code snippets to read encrypted objects from an MS SQL DB And decrypt them Works only in Powershell 3 with SQL 2005-2012 Does not work in Powershell 1,2 does not work with SQL 2000 Requires SQLPS (install SSMS or google how to install standalone)
# Code snippets to read encrypted objects from an MS SQL DB
# And decrypt them
# Works only in Powershell 3 with SQL 2005-2012
# Does not work in Powershell 1,2 does not work with SQL 2000
# Requires SQLPS (install SSMS or google how to install standalone)
# Requires remote Dedicated Administrator Connection to be enabled
# if you are not conntecting to a local instance
#
# This code realies on global variables this is BAD (tm).
# Sorry about that. I'll try and improve it if I have time
using System;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json.Linq;
namespace Aghub.WebApi.Tests
{
public class JsonCompare
{
public static void PrintDiff(JToken x, JToken y)
@AndrewSav
AndrewSav / gist:db048b4eccedc4cf8211
Last active November 11, 2022 11:20
How to pin Git Shell to the taskbar (Windows 7/8)
I was looking how to pin Git Shell to the taskbar,
I got this answer from Github support (hope it can help other people) :
Hi Fabien,
Windows is annoying in that it doesn't let you pin certain items to the taskbar.
However, there is a clever way to trick it into allowing you to do this.
1) Right-click on the 'Git Shell' shortcut and go to the 'Target' text box
2) Add the word 'explorer' in front of the line
@AndrewSav
AndrewSav / SteamShortcuts.cs
Last active February 10, 2023 23:35
Creates shortcuts of your whole installed steam library in a folder on your destop
// Creates shortcuts of your whole installed steam library in a folder on your destop
// Note 1: icons for some games do not get set correctly, but than they do not get set correctly by steam itself either
// Note 2: code heavily depends on the steam interal file formats so this can stop working without notice any time
// Note 3: this code does not have any command line arguments, it tries to detect path to your steam folder
// if it can't feel free to modify it to hardcode the path. Similarily you can change where the shortcuts
// are written to in the code. Sorry, not a user friendly tool at all - you are assumed to be a developer
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
@AndrewSav
AndrewSav / UwpEventSource.cs
Created April 17, 2016 08:05
Event Provider sample for Windows IoT
using System.Diagnostics.Tracing;
namespace MyNamespace
{
[EventSource(Name = "MyEwtProvider")]
sealed class UwpEventSource : EventSource
{
public static UwpEventSource Log = new UwpEventSource();
[Event(1, Level = EventLevel.Verbose, Channel = EventChannel.Debug)]
@AndrewSav
AndrewSav / pln.cs
Last active January 5, 2023 19:07
TCP Port Listener
// This is a very basic TCP port listener that allows you to listen on a port range
// If you run this program outside of firewall and run a port scanner inside a firewall
// pointing to the ip address where this program runs, the port scanner will be able you
// to tell which exactly ports are open on the firewall
// This code will run on Windows, but most importantly also on linux.
// DigitalOcean.com has all ports for their VMs open by default. So spin a new VM,
// copy pln.cs in your (root) home folder and then run:
// sudo apt-get update
// sudo apt-get install mono-complete -y
// mcs pln.cs
@AndrewSav
AndrewSav / clone-all-twitter-github-repos.ps1
Last active February 10, 2017 10:41
Clone all github repos in an organisation
(Invoke-WebRequest "https://api.github.com/orgs/twitter/repos?per_page=200").Content | ConvertFrom-Json | %{ $_.clone_url } | %{ git clone $_}
@AndrewSav
AndrewSav / GetSteamGuardCode.cs
Last active September 4, 2019 01:15
Calculates SteamGuard code from your base64 shared secret
string GetSteamGuardCode(string base64SharedSecret)
{
long time = (long)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds + 10;
byte[] timeHash = BitConverter.GetBytes(time/30).Reverse().ToArray();
HMACSHA1 hmac = new HMACSHA1(Convert.FromBase64String(base64SharedSecret));
hmac.Initialize();
byte[] hash = hmac.ComputeHash(timeHash);
int b = hash[19] & 0xF;
int codePoint = (hash[b] & 0x7F) << 24 | (hash[b + 1] & 0xFF) << 16 | (hash[b + 2] & 0xFF) << 8 | (hash[b + 3] & 0xFF);
string steamChars = "23456789BCDFGHJKMNPQRTVWXY";
@AndrewSav
AndrewSav / ReadWriteLock.ps1
Last active September 4, 2019 01:09
One Writer Multiple readers locking for Powershell. Readers and Writers should agree on `$maxReaders` parameter before hand and use the same one. Call `Lock-Read` or `Lock-Write` to lock and then `Unlock-Read` or `Unlock-Write` to unlock.
function WaitAnyMutexes($mutexes, $name, $timeout) {
try {
$result = [Threading.WaitHandle]::WaitAny($mutexes,$timeout)
if ($result -ne [Threading.WaitHandle]::WaitTimeout) {
return @{clean=$true; mutex=$mutexes[$result]; index=$result};
} else {
return $null
}
} catch [System.Threading.AbandonedMutexException]{
return @{clean=$false; mutex=$_.Exception.Mutex; index=$_.Exception.MutexIndex}
# Testing Syncthing interaction via REST api from scratch via command line
# Make sure you have xml2 and jq:
# apt intall xml2 jq
# Create docker network for the container instances
docker network create syncthing
# Create individual directories for each instance
mkdir -p syncthing1