Skip to content

Instantly share code, notes, and snippets.

View grocid's full-sized avatar

Carl Löndahl grocid

View GitHub Profile
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
- -----BEGIN CERTIFICATE-----
MIIFKDCCBBCgAwIBAgIIAfu9ABctn2QwDQYJKoZIhvcNAQELBQAwgbQxCzAJBgNV
BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRow
GAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjEtMCsGA1UECxMkaHR0cDovL2NlcnRz
LmdvZGFkZHkuY29tL3JlcG9zaXRvcnkvMTMwMQYDVQQDEypHbyBEYWRkeSBTZWN1
cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IC0gRzIwHhcNMTUwOTA2MTY1MjQxWhcN
MTgxMDE0MTEyOTI2WjA9MSEwHwYDVQQLExhEb21haW4gQ29udHJvbCBWYWxpZGF0
n = 805467500635696403604126524373650578882729068725582344971555936471728279008969317394226798274039587275908735628164913963756789131471531490012281262137708844664619411648776174742900969650281132608104486439462068493207388096754400356209191212924158917441463852311090597438686723680422989566039830705971272945580630621308622704812919416445637277433384864510484266136345300166188170847768250622904194100556098235897898548354386415341541887443486684297114240486341073977172459860420916964212739802004276614553755113124726331629822694410052832980560107812738167277181748569891715410067156205497753620739994002924247168259596220654379789860120944816884358006621854492232604827642867109476922149510767118658715534476782931763110787389666428593557178061972898056782926023179701767472969849999844288795597293792471883445525249025377326859655523448211020675915933552601140243332965620235850177872856558184848182439374292376522160931072677877590262080551636962148104050583711183119856867201924407132152091888936970437318064654447142
@grocid
grocid / bulljog.sage
Created April 30, 2017 12:02
UIUCTF'17 bulljog
from multiprocessing import Process, Lock
from grocid.ecc import hensellift
NUM_THREADS = 28 # lets make some use of my 2695 ;-)
def smart_attack(P, Q, p, prec):
E = P.curve()
Eqq = E.change_ring(QQ)
Eqp = Eqq.change_ring(Qp(p, prec))
P_Qp = hensellift(P, p, prec) # just normal hensel lift
Q_Qp = hensellift(Q, p, prec)
### Keybase proof
I hereby claim:
* I am grocid on github.
* I am grocid (https://keybase.io/grocid) on keybase.
* I have a public key whose fingerprint is 0DB1 946E 02A0 F31A 10F7 1CA5 2611 743E 9084 38BB
To claim this, I am signing this object:
@grocid
grocid / gist:703fd534c1859846abab8ea83d828596
Created September 23, 2017 22:14
BackdoorCTF1 7 - COMPLEX-RSA
from Crypto.PublicKey import RSA
from base64 import b64decode
from grocid import wiener
key1 = """MIIBGjANBgkqhkiG9w0BAQEFAAOCAQcAMIIBAgKBgQMVTKLNRDmtl+A4elFMl78h
DPdfO88mJZRoO7U85plIEt9qGVXET58S6ZwqaYy5fw5H6OjRSKfzRy0rTeJUEK3y
HkmLubRmWgxm2NJm/yBjfqzycY2aWcHEo88CLwvyjVOJ1YZB892ZTvL/+ktw09OY
6UhCAPh3kwYQE6jtByzXfwJ8GhtIw6bOSmr248t4xV+sf1kpb0G7EeWKMB+40vPE
frsV+j5o6fd/jFI5O+IiF13kp7xV2Z1RgBtaHb5y3W7/rlI586RI0+nvWqHJVF4a
OEkYm+Y8Sf47lJJU1CDZgXZ3p9tK0fP135mzJX3WBMVyzuJeQ8JpQ8/RZJGAOw=="""
@grocid
grocid / gist:8118791134dd620cbf7cc009a18c5f71
Created October 22, 2017 20:04
mceliece reed-solomon
def get_a(alpha, G, j):
i = GF.fetch_int(1)
k = G.nrows()
if k <= j:
return i / (i - (i/alpha) * G[0][j]/G[1][j] )
else:
return i / (i - (i/alpha) * (G[j][k+1]/G[1][k+1] - G[j][k]/G[1][k]) \
/ (G[j][k+1]/G[0][k+1] - G[j][k]/G[0][k]))
def crack(A):
@grocid
grocid / bitonic.go
Last active February 11, 2018 21:37
bitonic sort on many cores
//
// Parallel merge sort in Golang
//
// (c) C. Löndahl 2018
//
package bitonic
import "log"
from Crypto.Cipher import AES
def crc16(data):
"""
Calculate an ISO13239 CRC checksum of the input buffer (bytestring).
"""
m_crc = 0xffff
for this in data:
m_crc ^= ord(this)
for _ in xrange(8):
from hashlib import md5
class BloomFilter:
def __init__(self, m, k):
self.array = [False] * 2**m
self.k = k
def c(self, x):
f = lambda x, j: int(
import hmac
import time
import requests
SHARED_KEY = "hemligt"
BASE_URL = "https://myserver.com:8443/?duration={0}&token={1}"
def compute_auth():
auth = hmac.new(
SHARED_KEY,