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

zipcrypto

zipcryptoという名前ではないんだけど、zipの暗号処理の脆弱なあれね。 アルゴリズム zipcryptoはstream暗号になっていて、内部状態としてそれぞれ32bitのkey0, key1, key2を持つ。内部状態96bitなのでまあそんなに強くない。 3つの鍵はそれぞれ次のように初…

m0leCon 2021 | Alternating key exchange

#m0lecon2021 chall.sageとoutput.txtがもらえる from Crypto.Cipher import AES from Crypto.Util.Padding import pad from hashlib import sha256 import random n = 42 m = 20 G = AlternatingGroup(m) pub_a = [G.random_element() for _ in range(n)] p…

lattice

A Decade of Lattice Cryptography LWE SIS Crypto Constructions などがある

kernel

ある射の核(kernel)とは零点に写るような点の集合を言う

jacobi記号

奇素数と整数に対して、 のときは mod pで平方剰余 のときそうでない 性質 で ※ になる場合として、もありうる。この場合は xは平方剰余ではないので注意(ここが legendre記号との違い 原理はよくわかってないが、次のプログラムででのjacobi 記号を求める…

foobarCTF 2022 | trailing bits

#foobarCTF_2022 from Crypto.Util.number import getPrime, bytes_to_long, GCD from random import randint flag = bytes_to_long(b"#REDACTED") p = getPrime(1024) q = getPrime(1024) N= p*q e = 0x10001 x = 2052550534767342463354055254165398369484…

corCTF 2021 | babyrsa

#corctf2021 from Crypto.Util.number import bytes_to_long n = 7354261656064787756554403678873802520293938142515873772154439835685178740118351616322183701392955956899384404680418797770537628910806512688360356290494174865360783635826735966404…

UTCTF 2022 | Forky

#UTCTF_2022 #include <stdlib.h> #include <stdint.h> #include <stdatomic.h> #include <unistd.h> #include <poll.h> #include <fcntl.h> #include <string.h> #include <sys/wait.h> #include <sys/socket.h> #include <arpa/inet.h> #include <sodium.h> #include <err.h> #include <errno.h> #include <sys/random.h>…</sys/random.h></errno.h></err.h></sodium.h></arpa/inet.h></sys/socket.h></sys/wait.h></string.h></fcntl.h></poll.h></unistd.h></stdatomic.h></stdint.h></stdlib.h>

TSG Live CTF 10 | size_limit

#tsg_live_ctf_10 #!/usr/bin/python3 from Crypto.Util.number import getPrime, bytes_to_long import flag assert(len(flag.flag) == 131) p = getPrime(512) q = getPrime(512) N = p * q phi = (p - 1) * (q - 1) e = 0x10001 d = pow(e, -1, phi) flag…

TG:HACK 2019 |Exclusive Magic Club

#TG:HACK2019 Someone sent the Exclusive Magic Club all these 1's and 0's and told us mother_knows_best . 00111001 00101000 01000101 01010001 00011110 00010000 00110000 00011100 00110001 00001011 00011000 00000100 00110001 00111101 00010001…

SECCON 2021 | oOoOoOo

#seccon2021 #kurenaif import signal from Crypto.Util.number import long_to_bytes, bytes_to_long, getPrime import random from flag import flag message = b"" for _ in range(128): message += b"o" if random.getrandbits(1) == 1 else b"O" M = ge…

SECCON 2020 | sharsable

RSA from Crypto.Util.number import getPrime, GCD from flag import FLAG import random def egcd(a, b): r0, r1 = a, b s0, s1 = 1, 0 t0, t1 = 0, 1 while r1 > 0: q = r0 // r1 r0, r1 = r1, r0 % r1 s0, s1 = s1, s0 - q * s1 t0, t1 = t1, t0 - q * t…

S4CTF 2021 | phillip

#s4ctf_2021 #!/usr/bin/env python3 from Crypto.Util.number import * from gmpy2 import next_prime, gcd, lcm from random import randint import sys, os, signal import inspect from flag import flag def make_params(nbit): p, q = [getPrime(nbit)…

S4CTF 2021 | Baby-RSA

#s4ctf_2021 #!/usr/bin/env python3 # -*- coding: utf-8 -*- from Crypto.Util.number import * from flag import flag def create_tuple(nbit): # sorry for dirty code that is not performant! while True: p, q = [getPrime(nbit) for _ in range(2)] …

RSAのパラメータ同士の関係

rsa

RSA#5dc61c0ad520dc0000c5ddda

PragyanCTF 2019|Spoiler

https://ctftime.org/task/7781 #pragyanctf Bran Stark, wants to convey an important information to the Sansa back at winterfell. He sends her a message. The message however, is encrypted though. Can you find out what Bran is trying to conve…

N1CTF 2020 | VSS

#Mersenne_Twister #!/usr/bin/python3 import qrcode # https://github.com/lincolnloop/python-qrcode import random import os from PIL import Image from flag import FLAG def vss22_gen(img): m, n = img.size share1, share2 = Image.new("L", (2*m,…

LINE CTF 2022 | ss-puzzle

#LINECTF2022 xor #!/usr/bin/env python # -*- coding: utf-8 -*- # 64 bytes FLAG = b'LINECTF{...}' def xor(a:bytes, b:bytes) -> bytes: return bytes(i^j for i, j in zip(a, b)) S = [None]*4 R = [None]*4 Share = [None]*5 S[0] = FLAG[0:8] S[1] =…

IJCTF | MSB

#!/usr/bin/sage from sage.all import random_prime from Crypto.Util.number import * flag = "CENSORED!!!" m = bytes_to_long(flag) e = 65537 ROUND = 4 p_0 = Integer(getPrime(2048)) print "p_0 = ", p_0 print "p_0.nbits() =", p_0.nbits() # p_0.…

Hidden Number Problem

lll

で 既知、未知 このとき次の行列のLLLでを求められることがある。はの最大値 ? なんで なんだろう → 符号はあんまり関係なさそう の形でも解けそうな気がしないか? → そういう形にならない。基本的に と計算するため p = random_prime(1<<256) n = 10 max_x…

HSCTF 8 | Regulus Ignicapilla

#hsctf8 from Crypto.Util.number import * import random import math flag = open('flag.txt','rb').read() while 1: p = getPrime(512) q = getPrime(512) if (p<q or p>2*q): continue break n = p**2*q while 1: a = random.randint(2,n-1) if pow(a,p-1,p**2)!</q>…

Gaussian Field

整数係数の複素数

DownUnderCTF 2020 | babyRSA

from Crypto.Util.number import bytes_to_long, getPrime flag = open('flag.txt', 'rb').read().strip() p, q = getPrime(1024), getPrime(1024) n = p*q e = 0x10001 s = pow(557*p - 127*q, n - p - q, n) c = pow(bytes_to_long(flag), e, n) print(f'n…

CrewCTF 2022 | matdlp

#CrewCTF_2022 FLAG = open('flag.txt', 'r').read().encode() p = 0x3981e7c18d9517254d5063b9f503386e44cd0bd9822710b4709c89fc63ce1060626a6f86b1c76c7cbd41371f6bf61dd8216f4bc6bad8b02a6cd4b99fe1e71b5d9ffc761eace4d02d737e5d4bf2c07ff7 m = 6 import …

CakeCTF 2022 | brand new crypto

#CakeCTF2022 from Crypto.Util.number import getPrime, getRandomRange, inverse, GCD import os flag = os.getenv("FLAG", "FakeCTF{sushi_no_ue_nimo_sunshine}").encode() def keygen(): p = getPrime(512) q = getPrime(512) n = p * q phi = (p-1)*(q…

ACSC 2021 | swap on curve

#acsc2021 from params import p, a, b, flag, y x = int.from_bytes(flag, "big") assert 0 < x < p assert 0 < y < p assert x != y EC = EllipticCurve(GF(p), [a, b]) assert EC(x,y) assert EC(y,x) print("p = {}".format(p)) print("a = {}".format(a…

3kCTF-2021 | Digital

#3kCTF-2021 from Crypto.Util.number import inverse import hashlib import os rol = lambda val, r_bits, max_bits: (val << r_bits%max_bits) & (2**max_bits-1) | ((val & (2**max_bits-1)) >> (max_bits-(r_bits%max_bits))) class Random(): def __in…

0ctf2021finals

https://r3kapig.com/writeup/20211011-0ctf-finals/#ezrsa

暗号利用モード

https://ja.wikipedia.org/wiki/%E6%9A%97%E5%8F%B7%E5%88%A9%E7%94%A8%E3%83%A2%E3%83%BC%E3%83%89

古典線形符号

古典的な誤り訂正符号のお話 理論 kビットをnビットに拡張する誤り訂正符号は、なる写像とも捉えられる。この写像を線形変換に限定したものを線形符号と呼ぶ。また、変換先の空間を符号空間と呼ぶ。 線形符号は線形変換なので、変換用の行列が存在する。これ…