2023-12-01から1日間の記事一覧

zh3ro CTF 2021

zer0pts CTF 2020 | dirty laundry

#!/usr/bin/sage from sage.all import * from Crypto.Util.number import getStrongPrime, bytes_to_long from secret import flag class PRNG256(object): def __init__(self, seed): self.mask = (1 << 256) - 1 self.seed = seed & self.mask def _pick(…

uninterested_challenge_list

簡単すぎる 題意がカス 何をやらせようとしているのかわからない

short integer solutions

と行列に対して を満たす を求める問題

pwn2win 2021 | cladorhizidae

#pwn2win2021 #AES cladorhizidae_50bb826634ab0a20be92c226ae21f530b59818923e3920b5aa4b1a17cae0d69e.tar.gz

pwn2win 2021 | A2S

#pwn2win2021 #AES #differential_cryptoanalysis a2s_696ce43f930ebc1f53f413a7ef972d34155748dacc7a8ca8cdeeab7a50b7f12d.tar.gz

mod

参考になる〜 https://en.wikipedia.org/wiki/Modular_arithmetic

how to factorize N given d

rsa

RSA def factorize(N, e, d): from math import gcd import gmpy2 k = d*e - 1 t = k while t % 2 == 0: t //= 2 g = 3 while True: x = pow(g, t, N) if x > 1: y = gcd(x - 1, N) if y > 1: return y, N//y g = gmpy2.next_prime(g)

b01lers CTF 2022

angstromCTF 2020 | one time bad

import random, time import string import base64 import os def otp(a, b): r = "" for i, j in zip(a, b): r += chr(ord(i) ^ ord(j)) return r def genSample(): p = ''.join([string.ascii_letters[random.randint(0, len(string.ascii_letters)-1)] fo…

UMASS CTF 2022

https://github.com/UMassCybersecurity/UMassCTF-2022-challenges/tree/main/crypto

SuSeC CTF | Blue Shop

問題のソースコードは提供されていない 接続する度に N = pq を生成する がもらえる 好きな回数だけ RabinCryptosystem の復号ができる コードの一部だけもらえる import gmpy # Rabin Crypt def gen_modulus(nbit): while True: p, q = getPrime(nbit), get…

SecurinetsQuals2K21 | Sign It!

#securinetsquals2k21 from Crypto.Util.number import inverse from Crypto.Random import random from fastecdsa.curve import Curve from fastecdsa.point import Point import hashlib import signal class Server(): def __init__(self, curve, G): sel…

SECCON CTF 2022 Quals | Witche's symmetric exam

#SECCON_CTF_2022_Quals #kurenaif from Crypto.Cipher import AES from Crypto.Random import get_random_bytes from Crypto.Util.Padding import pad, unpad from flag import flag, secret_spell key = get_random_bytes(16) nonce = get_random_bytes(16…

Paillier暗号

パラメータを決め打つかどうかなどで復号処理が一般化されていたりされていなかったりで難しい 鍵生成 素数 秘密鍵 公開鍵 where 暗号化 乱数 を持ってきて、 復号 まず、 途中で カーマイケルの定理 の拡張 (ただし と を用いている これを利用して、復号…

NeverLAN CTF 2019|Alphabet Soup

#NevarLANCTF2019 https://ctftime.org/task/7610 MKXU IDKMI DM BDASKMI NLU XCPJNDICFQ! K VDMGUC KW PDT GKG NLKB HP LFMG DC TBUG PDTC CUBDTCXUB. K'Q BTCU MDV PDT VFMN F WAFI BD LUCU KN KB WAFI GDKMINLKBHPLFMGKBQDCUWTMNLFMFMDMAKMUNDDA 見た瞬間…

NTRU

https://xz.aliyun.com/t/7163#toc-3 https://latticehacks.cr.yp.to/ntru.html パラメータ :素数 :であるような素数 :生成する多項式の最大次数。なぜか素数であることが要求されている :生成する多項式の0でない項の数 今後 鍵生成 多項式 を生成する…

Midnightsun CTF 2021 Quals | dbcsig

#midnightsunctf2021quals from hashlib import sha256 def keygen(password): while True: p = 2 * random_prime(2 ^ 521) + 1 if p.is_prime(proof=False): break base, h = 3, password for i in range(256): h = sha256(h).digest() x = int.from_bytes(…

MidnightSun Finals 2021 | not backdoored

#grocid #midnightsun2021finals import os import copy from secret import flag class NB_128: ROUNDS = 44 LENGTH = 15 KEYLEN = 16 CONST = 3 A = [ 0x9b,0x25,0x29,0x2f,0x75,0x61,0x49,0x5b,0x5f,0x17,0xf3,0xbd,0x92,0xce,0x0e,0x54, 0xf5,0xf8,0x83,…

Mental Poker

トランプのカードを配るときに不正をなくすみたいなやつ https://link.springer.com/content/pdf/10.1007%2F3-540-39799-X_10.pdf Coppersmith1986_Chapter_CheatingAtMentalPoker.pdf Protocol A from Crypto.Util.number import getPrime, inverse from ma…

Google CTF 2022 | Mayhem CLS

#googlectf2022 https://furutsuki.hatenablog.com/entry/2021/11/23/150254

Google CTF 2021 | tiramisu

#googlectf2021 // Copyright 2021 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://w…

Fword CTF 2020 | Randomness

from Crypto.Util.number import * from random import * flag="TODO" p=getPrime(64) a=getrandbits(64) b=getrandbits(64) X=[] X.append((a*getrandbits(64)+b)%p) c=0 while c

Fword CTF 2020 | One Part

RSA だけどRSA-CRTのが与えられている。dpがわかっているときの素因数分解 from ptrlib import Socket from Crypto.Util.number import GCD, inverse, long_to_bytes sock = Socket("onepart.fword.wtf", 4445) n, e = map(int, sock.recvregex(r"\((.+), (.…

DEFCON Quals 2020 | ooo-flag-sharing

split_secret: 行列 M と秘密 x を渡すと v = [x, r1, r2, ..., rn]というベクトルを作って とする(これで はベクトル)。で、S[1:] を返す reconstitute_secret: 普通に復元してそう share_user_flag: 入力を与えたらそれに対してやってくれる redeem_user…

Crypto CTF 2021 | Onlude

#cryptoctf2021 #!/usr/bin/env sage from sage.all import * from flag import flag global p, alphabet p = 71 alphabet = '=0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$!?_{}<>' flag = flag.lstrip('CCTF{').rstrip('}') assert l…

Circle City Con CTF 2021 | Poison Prime

#circle_city_con_2021 import Crypto.Util.number as cun import Crypto.Random.random as crr import Crypto.Util.Padding as cup from Crypto.Cipher import AES import os import hashlib class DiffieHellman: def __init__(self, p: int): self.p = p …

Cantor Pairing Function

カントールの対関数 対関数の一つ や あるいは という形で知られている 関連: Fueter-Polya theorem

Blum-goldwasser cryptosystem

Goldwasser-Micali cryptosystemの拡張? みたいな感じ 鍵生成 と を選ぶ(秘密鍵) (公開鍵) 暗号化 (ブロックサイズ) 平文 をサイズ のブロック に分割する をランダムに選ぶ for from to 暗号文 復号 extended euclidean algorithm で なる と を計算…

3kCTF 2020 | once upon a time

https://furutsuki.hatenablog.com/entry/2020/07/26/185243#crypto-once-upon-a-time