Skip to content

Instantly share code, notes, and snippets.

@wthorp
wthorp / test.go
Created August 15, 2018 10:35
file.ReadAt() always reads at offset 0
package main
import (
"fmt"
"io"
"os"
)
func main() {
file, err := os.Open("test.go")
@wthorp
wthorp / keybase.md
Created August 27, 2019 13:21
keybase

Keybase proof

I hereby claim:

  • I am wthorp on github.
  • I am billt_storj (https://keybase.io/billt_storj) on keybase.
  • I have a public key ASAFXadpzUwdewF_RrQTMP2adgHmMvsszjBOS-BQhtHIfAo

To claim this, I am signing this object:

@wthorp
wthorp / mercator.go
Created January 24, 2021 16:25
polynomial approximation of mercator conversion
package main
import (
"fmt"
"math"
"math/rand"
"testing"
)
func main() {
@wthorp
wthorp / file.go
Created January 25, 2021 14:24
Dump linked files from Dwarf debugging data
package main
import (
"debug/dwarf"
"debug/macho"
"fmt"
"os"
"strings"
)
package main
import (
"crypto/md5"
"encoding/base64"
"fmt"
"log"
"net/http"
"os"
"strings"
package main
import (
"fmt"
"reflect"
"strconv"
"strings"
)
type s1 struct {
@wthorp
wthorp / trezor-glitch.py
Created April 3, 2022 17:35
trezor glitch
#!/usr/bin/env python3
# Assumed copyright of Kraken Digital Asset Exchange, published as "krakenfx" Posted on January 31, 2020
# https://blog.kraken.com/post/3662/kraken-identifies-critical-flaw-in-trezor-hardware-wallets/
# reproduced here for research purposes only
import hashlib
import sys
import argparse
import binascii
@wthorp
wthorp / main.go
Created April 3, 2022 22:47
Turn any HTTP file into a torrent
package main
import (
"crypto/sha1"
"fmt"
"io"
"net/http"
"os"
"strings"
@wthorp
wthorp / gist:8dab156cfbb0f451eeb0954a35fd1c46
Last active April 27, 2022 11:06
Using Storj from AWS SDK for Go without the HTTP
// NoIOTransport can be used as an http.Client{Transport: NewNoIOTransport()},
// EG: s3.New(awsSession, aws.NewConfig().WithHTTPClient(&http.Client{Transport: NewNoIOTransport()}))
// downloader := s3manager.NewDownloader(awsSession, func(d *s3manager.Downloader) {
// d.S3 = s3.New(awsSession, aws.NewConfig().WithHTTPClient(&http.Client{Transport: NewNoIOTransport()}))
// })
// uploader := s3manager.NewUploader(awsSession, func(u *s3manager.Uploader) {
// u.S3 = s3.New(awsSession, aws.NewConfig().WithHTTPClient(&http.Client{Transport: NewNoIOTransport()}))
// })
type NoIOTransport struct {
r *mux.Router
@wthorp
wthorp / copy.py
Created May 27, 2022 12:16
Force S3 CopyObject over PutPartCopy
import boto3
import os
from boto3.s3.transfer import TransferConfig
# Set the desired multipart threshold to an arbitrarily large value.
EB = 1024 ** 6
config = TransferConfig(multipart_threshold=EB)
session = boto3.session.Session()
s3_client = session.client(