Skip to content

Instantly share code, notes, and snippets.

View ohfortuna.py
from subprocess import Popen, PIPE
import base64
import random
import re
import requests
import select
import socket
import string
import struct
import sys
View cantor.py
tenpows = [10**i for i in range(1000)]
def cantor(hi):
res = 0
iters = 0
while hi > 0:
if iters % 100 == 0: print 'Progress: %d' % hi
iters += 1
hi_s = str(hi)
memo = {}
@niklasb
niklasb / whiteout.cpp
Last active Sep 5, 2016
Computational "proof" for solution of "whiteout" from Tokyo Westerns/MMA CTF 2016
View whiteout.cpp
// We want to prove that 5618427494400 is the maximum sigma in range 1..10^12
//
// The following algorithm will explore the entire search space and prune it
// using an upper bound for sigma, while considering the lower bound given by
// our example of sigma(995886571680) = 5618427494400
//
// We consider only primes up to sqrt(10^12). A single prime p is obviously
// not the solution because the sum of its divisors is
// p + 1 < 10^12 < 5618427494400
View pow.sage
import random
import socket
import subprocess
import hashlib
p = 195589859419604305972182309315916027436941011486827038011731627454673222943892428912238183097741291556130905026403820602489277325267966860236965344971798765628107804393049178848883490619438682809554522593445569865108465536075671326806730534242861732627383004696136244305728794347161769919436748766859796527723
g = pow(2, 2*4759647095086827597559114855685975263112106458932414012998147177848303887783492510354911068366203455488902018600593880874117783509946030773587965941, p)
gens = [pow(g,3**(336-i),p) for i in range(336)]
View 4parts.py
memo = {}
def p(n,k):
if (n,k) in memo: return memo[n,k]
if (n,k) == (0,0): return 1
if n < k or (n > 0 and k == 0): return 0
memo[n,k] = p(n-k,k) + p(n-1,k-1)
return memo[n,k]
View rsolve.sage
def rsolve(coeff, values, rhs=0, nonhom_sol=0):
R.<x> = CC[]
f = 0
for i, c in enumerate(coeff):
f += c * x**i
h = 0
n = var('n')
cs = []
cnt = 0
View signer2.py
# from https://github.com/ctfs/write-ups-2015/tree/master/mma-ctf-2015/crypto/LCG-sign-400
from Crypto.Util.number import *
from hashlib import sha256
import random
import sys
import key
p = 267336782497463360204553349940982883027638137556242083062698936408269688347005688891456763746542347101087588816598516438470521580823690287174602955234443428763823316700034360179480125173290116352018408224011457777828019316565914911469044306734393178495267664516045383245055214352730843748251826260401437050527
q = 133668391248731680102276674970491441513819068778121041531349468204134844173502844445728381873271173550543794408299258219235260790411845143587301477617221714381911658350017180089740062586645058176009204112005728888914009658282957455734522153367196589247633832258022691622527607176365421874125913130200718525263
g = 2
@niklasb
niklasb / MonologSlackHandler.php
Last active Sep 1, 2015
Monolog handler for Slack's (new?) incoming webooks
View MonologSlackHandler.php
class MonologSlackHandler extends \Monolog\Handler\MailHandler {
protected $hook_url;
protected $channel;
protected $username;
protected $icon;
/**
* @param string $hook_url The URL of your incoming web hook (e.g.
* https://hooks.slack.com/services/$token)
* @param string $channel Slack channel to post in (with leading # sign)
View bitonic.cpp
#include <bits/stdc++.h>
#include <sys/time.h>
using namespace std;
void make_leq(int& a, int& b) {
if (a > b) swap(a,b);
}
void bitonic(vector<int>& xs) {
int n = xs.size();
@niklasb
niklasb / lazy.sage
Created Apr 20, 2015
Solution for 'lazy' in PlaidCTF 2015
View lazy.sage
from ast import literal_eval
ciphertext = int(open("ciphertext.txt", 'rb').read())
pubkey = literal_eval(open("pubkey.txt", 'rb').read())
def mat(pubkey, ciphertext, B):
n = len(pubkey)
A = Matrix(ZZ,n+1,n+1)
for i in range(n):
A[i,i] = 1