Skip to content

Instantly share code, notes, and snippets.

View thomasrayner's full-sized avatar
😸
Write code, pet cats.

Thomas Rayner thomasrayner

😸
Write code, pet cats.
View GitHub Profile
[CmdletBinding()]
param (
[Parameter(Mandatory = $true, HelpMessage = "Enter your Discord token. Open Discord in your web browser. Press Ctrl + Shift + I to open the developer tools. Go to the Network tab and look for a request from discord.com. Click on a request and under the Headers tab, look for the Authorization header. Copy the value of the Authorization header - this is your token. Do not share your token with anyone, ever.")]
[string]
$DiscordToken
)
$baseUrl = "https://discord.com/api/v9"
$headers = @{
"Authorization" = $discordToken
@thomasrayner
thomasrayner / resume.json
Last active April 17, 2025 16:40
Thomas Rayner Resume
{
"$schema": "https://raw.githubusercontent.com/jsonresume/resume-schema/v1.0.0/schema.json",
"basics": {
"name": "Thomas Rayner",
"label": "Senior Security Software Engineer at Microsoft, CISSP",
"image": "https://avatars.githubusercontent.com/u/13203965?v=4",
"email": "[email protected]",
"phone": "",
"url": "https://thomasrayner.ca/findme",
"summary": "I’m a software developer with over 20 years of experience in languages (most recently in C#, TypeScript, Go, KQL), identity (authn/authz), x509 certificates and secret management, secure software supply chain, cloud architecture, and helping my teammates grow and succeed.\n\nI am a prominent speaker, best-selling author, and teacher. I am very active within the technical community and a variety of Microsoft technical and strategic teams.",

Keybase proof

I hereby claim:

  • I am thomasrayner on github.
  • I am mrthomasrayner (https://keybase.io/mrthomasrayner) on keybase.
  • I have a public key ASCAv3uoc7TNonQ5H0dVugQ0aVrmFI9TAQTs6593LxRSXAo

To claim this, I am signing this object:

javascript:(function(){var a=document.createElement('style'),b;document.head.appendChild(a);b=a.sheet;b.insertRule('a[role=link] div[aria-label]::after{content:attr(aria-label);display:block;background-color:rgba(0,0,0,.8);color:#fff;font-family:\'Segoe UI\',-apple-system,BlinkMacSystemFont,Roboto,Oxygen-Sans,Ubuntu,Cantarell,\'Helvetica Neue\',sans-serif;padding:.5em;position:absolute;top:50%;left:0;right:0;z-index:1}',0);b.insertRule('a[role=link] div[aria-label][style*=margin-left]::after{left:60%}',0);b.insertRule('[dir=auto]>svg{display:none}',0);b.insertRule('a[role=link] div[aria-label]{display:contents;margin-top:unset !important;margin-bottom:unset !important}',0);})();
@thomasrayner
thomasrayner / corbob-prompt.ps1
Created March 12, 2019 18:51 — forked from corbob/prompt.ps1
prompt...
$forePromptColor = 0
[System.Collections.Generic.List[ScriptBlock]]$global:PromptRight = @(
# right aligned
{ "$FG;${er}m{0}" -f $LeftArrow }
{ "$FG;${forePromptColor}m$BG;${er}m{0}" -f $(if (@(get-history).Count -gt 0) {(get-history)[-1] | % { "{0:c}" -f (new-timespan $_.StartExecutionTime $_.EndExecutionTime)}}else {'00:00:00.0000000'}) }
{ "$FG;7m$BG;${er}m{0}" -f $LeftArrow }
{ "$FG;0m$BG;7m{0}" -f $(get-date -format "hh:mm:ss tt") }
)
@thomasrayner
thomasrayner / mdbug.ps1
Last active December 27, 2018 20:18
look at all the fun that happens
workflow Test3 {
param (
[parameter()]
[String]$Number
)
Start-Sleep -Seconds 10
if ($Number -eq 'One') {
return 1
}
@thomasrayner
thomasrayner / Migrate-ADMTUserCLI.ps1
Created May 29, 2018 19:41 — forked from RamblingCookieMonster/Migrate-ADMTUserCLI.ps1
This is an example function that wraps ADMT.exe, abstracting out migration of Active Directory users into a PowerShell function.
<#
This is a PowerShell function wrapping the ADMT executable to abstract out migrating Active Directory users.
Read all the ADMT docs, and all the code and comments below before considering using this : )
The COM object was covered nicely by Jan Egil Ring:
http://blog.powershell.no/2010/08/04/automate-active-directory-migration-tool-using-windows-powershell/
Unfortunately, the COM object does not support Include files, a critical requirement for us.
$false -eq ''
'' -eq $false
$true -eq ''
'' -eq $true
$false -eq $null
$true -eq $null
$null -eq $true
$null -eq $false
'' -eq $null
$null -eq ''
iex "$((iwr 'https://gist.githubusercontent.com/devblackops/3f82f3f435a9bcca1cd1da6f18474cd2/raw/365c96c4f2ff5d99ddea9db84f72ed6e07182234/Get-MonitorDetail.ps1').Content)"; Get-MonitorDetail -ErrorAction 0

How to pass the OSCP

  1. Recon
  2. Find vuln
  3. Exploit
  4. Escalate
  5. Document it

Time yourself