Caesar

1
vxshyk{g9g9g099-hg33-4f60-90gk-ikff1f36953j}

题解:

1
qsnctf{b9b9b099-cb33-4a60-90bf-dfaa1a36953e}

一组BASE

1
cXNuY3RmezY4NjkwOGJjLTFiZjItNGMxOS04YTAxLWIyYzc3NjAwOTkyOH0=

题解:

1
qsnctf{686908bc-1bf2-4c19-8a01-b2c776009928}

BASE大家族

题面:

1
4d4e4d4534354b5a474e4a47325a4c324b56354532563256504a4d585551544d4a524c554d32535a4b524958495453484c4a574532364a524e42485549524a554a524c564b3653324b354b5855574b554d3432453436535247424845514d4235

题解:

Morse code

题面:

1
qsnctf{.----/-----/.-/----./...--/./-----/-.../-....-/....-/...--/...../...--/-....-/....-/---../....-/.-/-....-/----./..-./..---/--.../-....-/-.-./..-./-..../-..../-.-./--.../.-/---../-.../..---/...--/.....}

题解:

morse解密:

1
10A93E0B-4353-484A-9F27-CF66C7A8B235

ASCII和凯撒的约定

题面:

1
77 83 72 78 58 32 120 122 117 106 97 109 123 48 108 109 49 108 104 56 106 45 50 108 55 50 45 52 105 57 109 45 56 55 108 49 45 48 56 107 53 51 104 56 48 106 42 42 42 125 32 84 75 53 58 56 104 50 104 48 53 55 106 57 105 105 51 104 51 52 54 51 108 55 53 56 51 54 54 51 51 52 49 108 57 108 53

题解:

image-20241016181802470

TK5是md5加密,看起来像凯撒

1
FLAG: qsnctf{0ef1ea8c-2e72-4b9f-87e1-08d53a80c***} MD5:8a2a057c9bb3a3463e7583663341e9e5

缺少三位,可以爆破出来

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from Crypto.Util.number import *
import string
import hashlib

dic = string.digits + string.ascii_lowercase + string.ascii_uppercase + string.punctuation

for i1 in dic:
for i2 in dic:
for i3 in dic:
tmp = '0ef1ea8c-2e72-4b9f-87e1-08d53a80c'+i1+i2+i3
md5 = hashlib.md5(tmp.encode('utf-8')).hexdigest()
if md5 == '8a2a057c9bb3a3463e7583663341e9e5':
print(tmp)
break

BabyRSA

题解:

1
2
3
4
5
p+q : 0x1232fecb92adead91613e7d9ae5e36fe6bb765317d6ed38ad890b4073539a6231a6620584cea5730b5af83a3e80cf30141282c97be4400e33307573af6b25e2ea
(p+1)(q+1) : 0x5248becef1d925d45705a7302700d6a0ffe5877fddf9451a9c1181c4d82365806085fd86fbaab08b6fc66a967b2566d743c626547203b34ea3fdb1bc06dd3bb765fd8b919e3bd2cb15bc175c9498f9d9a0e216c2dde64d81255fa4c05a1ee619fc1fc505285a239e7bc655ec6605d9693078b800ee80931a7a0c84f33c851740
e : 0xe6b1bee47bd63f615c7d0a43c529d219
d : 0x2dde7fbaed477f6d62838d55b0d0964868cf6efb2c282a5f13e6008ce7317a24cb57aec49ef0d738919f47cdcd9677cd52ac2293ec5938aa198f962678b5cd0da344453f521a69b2ac03647cdd8339f4e38cec452d54e60698833d67f9315c02ddaa4c79ebaa902c605d7bda32ce970541b2d9a17d62b52df813b2fb0c5ab1a5
enc_flag : 0x50ae00623211ba6089ddfae21e204ab616f6c9d294e913550af3d66e85d0c0693ed53ed55c46d8cca1d7c2ad44839030df26b70f22a8567171a759b76fe5f07b3c5a6ec89117ed0a36c0950956b9cde880c575737f779143f921d745ac3bb0e379c05d9a3cc6bf0bea8aa91e4d5e752c7eb46b2e023edbc07d24a7c460a34a9a

题解:

1
2
3
4
5
6
7
8
9
10
11
12
13
from Crypto.Util.number import *

p_q = 0x1232fecb92adead91613e7d9ae5e36fe6bb765317d6ed38ad890b4073539a6231a6620584cea5730b5af83a3e80cf30141282c97be4400e33307573af6b25e2ea
val = 0x5248becef1d925d45705a7302700d6a0ffe5877fddf9451a9c1181c4d82365806085fd86fbaab08b6fc66a967b2566d743c626547203b34ea3fdb1bc06dd3bb765fd8b919e3bd2cb15bc175c9498f9d9a0e216c2dde64d81255fa4c05a1ee619fc1fc505285a239e7bc655ec6605d9693078b800ee80931a7a0c84f33c851740
e = 0xe6b1bee47bd63f615c7d0a43c529d219
d = 0x2dde7fbaed477f6d62838d55b0d0964868cf6efb2c282a5f13e6008ce7317a24cb57aec49ef0d738919f47cdcd9677cd52ac2293ec5938aa198f962678b5cd0da344453f521a69b2ac03647cdd8339f4e38cec452d54e60698833d67f9315c02ddaa4c79ebaa902c605d7bda32ce970541b2d9a17d62b52df813b2fb0c5ab1a5
c = 0x50ae00623211ba6089ddfae21e204ab616f6c9d294e913550af3d66e85d0c0693ed53ed55c46d8cca1d7c2ad44839030df26b70f22a8567171a759b76fe5f07b3c5a6ec89117ed0a36c0950956b9cde880c575737f779143f921d745ac3bb0e379c05d9a3cc6bf0bea8aa91e4d5e752c7eb46b2e023edbc07d24a7c460a34a9a

n = val-1-p_q
n = 57781903220726608495841176404144399752917062064507427196457877637670900336948551690361309554998254116151157399251452194844720219023732542692019705315125895750034030052835547472397685327838976088928408560337016632351666472475413414704943529721199894711361841006444372063562252312744949278332373569559097979989

m = pow(c,d,n)
print(long_to_bytes(m))

basic-crypto:

题面:

1
01010101 01101000 00101101 01101111 01101000 00101100 00100000 01101100 01101111 01101111 01101011 01110011 00100000 01101100 01101001 01101011 01100101 00100000 01110111 01100101 00100000 01101000 01100001 01110110 01100101 00100000 01100001 01101110 01101111 01110100 01101000 01100101 01110010 00100000 01100010 01101100 01101111 01100011 01101011 00100000 01101111 01100110 00100000 01110100 01100101 01111000 01110100 00101100 00100000 01110111 01101001 01110100 01101000 00100000 01110011 01101111 01101101 01100101 00100000 01110011 01101111 01110010 01110100 00100000 01101111 01100110 00100000 01110011 01110000 01100101 01100011 01101001 01100001 01101100 00100000 01100101 01101110 01100011 01101111 01100100 01101001 01101110 01100111 00101110 00100000 01000011 01100001 01101110 00100000 01111001 01101111 01110101 00100000 01100110 01101001 01100111 01110101 01110010 01100101 00100000 01101111 01110101 01110100 00100000 01110111 01101000 01100001 01110100 00100000 01110100 01101000 01101001 01110011 00100000 01100101 01101110 01100011 01101111 01100100 01101001 01101110 01100111 00100000 01101001 01110011 00111111 00100000 00101000 01101000 01101001 01101110 01110100 00111010 00100000 01101001 01100110 00100000 01111001 01101111 01110101 00100000 01101100 01101111 01101111 01101011 00100000 01100011 01100001 01110010 01100101 01100110 01110101 01101100 01101100 01111001 00101100 00100000 01111001 01101111 01110101 00100111 01101100 01101100 00100000 01101110 01101111 01110100 01101001 01100011 01100101 00100000 01110100 01101000 01100001 01110100 00100000 01110100 01101000 01100101 01110010 01100101 00100000 01101111 01101110 01101100 01111001 00100000 01100011 01101000 01100001 01110010 01100001 01100011 01110100 01100101 01110010 01110011 00100000 01110000 01110010 01100101 01110011 01100101 01101110 01110100 00100000 01100001 01110010 01100101 00100000 01000001 00101101 01011010 00101100 00100000 01100001 00101101 01111010 00101100 00100000 00110000 00101101 00111001 00101100 00100000 01100001 01101110 01100100 00100000 01110011 01101111 01101101 01100101 01110100 01101001 01101101 01100101 01110011 00100000 00101111 00100000 01100001 01101110 01100100 00100000 00101011 00101110 00100000 01010011 01100101 01100101 00100000 01101001 01100110 00100000 01111001 01101111 01110101 00100000 01100011 01100001 01101110 00100000 01100110 01101001 01101110 01100100 00100000 01100001 01101110 00100000 01100101 01101110 01100011 01101111 01100100 01101001 01101110 01100111 00100000 01110100 01101000 01100001 01110100 00100000 01101100 01101111 01101111 01101011 01110011 00100000 01101100 01101001 01101011 01100101 00100000 01110100 01101000 01101001 01110011 00100000 01101111 01101110 01100101 00101110 00101001 00001010 01010100 01101101 01010110 00110011 01001001 01000111 01001110 01101111 01011001 01010111 01111000 01110011 01011010 01010111 00110101 01101110 01011010 01010011 01000101 01100111 01010001 00110010 01000110 01110101 01001001 01001000 01101100 01110110 01100100 01010011 01000010 01101101 01100001 01010111 01100100 00110001 01100011 01101101 01010101 01100111 01100010 00110011 01010110 00110000 01001001 01001000 01100100 01101111 01011001 01011000 01010001 01101110 01100011 01111001 01000010 01101110 01100010 00110010 01101100 01110101 01011010 01111001 01000010 01110110 01100010 01101001 01000010 01101111 01011010 01011000 01001010 01101100 01010000 01111001 01000010 01001010 01100100 01000011 01000010 01110011 01100010 00110010 00111001 01110010 01100011 01111001 01000010 01110011 01100001 01010111 01110100 01101100 01001001 01001000 01010010 01101111 01011010 01010011 01000010 01110011 01011010 01011000 01010010 00110000 01011010 01011000 01001010 01111010 01001001 01000111 01000110 01111001 01011010 01010011 01000010 01111010 01100001 01000111 01101100 01101101 01100100 01000111 01010110 01101011 01001001 01000111 01001010 00110101 01001001 01001000 01001110 01110110 01100010 01010111 01010101 01100111 01011001 00110010 00111001 01110101 01100011 00110011 01010010 01101000 01100010 01101110 01010001 01110101 01001001 01000011 01101000 01101111 01100001 01010111 00110101 00110000 01001111 01101001 01000010 00110101 01100010 00110011 01010101 01100111 01100010 01010111 01101100 01101110 01100001 01001000 01010001 01100111 01100100 00110010 01000110 01110101 01100100 01000011 01000010 00110000 01100010 01111001 01000010 01111010 01100100 01000111 01000110 01111001 01100100 01000011 01000010 01110011 01100010 00110010 00111001 01110010 01100001 01010111 00110101 01101110 01001001 01001000 01010110 01110111 01001001 01000110 01001010 01110110 01100010 01010111 01000110 01110101 01001001 01001000 01000010 01101100 01100010 00110011 01000010 01110011 01011010 01010011 01101011 01110101 01000011 01101101 01110100 00110010 01011001 01101110 01001110 01111000 01100011 01101101 01010001 01110011 01001001 01000111 01101100 00110101 01011010 01010011 01100100 01101001 01100010 01111001 01000010 01110010 01100100 01101110 01100100 00110101 01011001 00110010 01010001 01100111 01011010 01001000 01001010 01110110 01011001 01101101 00111000 01101000 01001001 01000110 01101000 00110101 01011010 01111001 01000010 01110111 01100101 01010111 01001001 01100111 01011010 01001000 01001010 01110110 01001001 01001000 01000010 01111010 01100101 01000111 01110100 00110010 01001001 01000011 01101000 01110010 01100101 01000111 00110100 01100111 01100100 00110010 01110100 01110000 01100010 01000111 00111000 01100111 01011010 01001000 01001010 01110110 01001001 01001000 01001010 01110010 01011001 01101101 00110101 01110110 01011001 00110010 01010001 01110101 01001100 01101001 00110100 01110000 01001001 01001000 01110000 01110010 01011001 01101101 01010001 00110110 01001001 01000111 01110011 01100111 01011001 00110010 01010110 01110011 01011001 00110010 01010010 01111010 01011010 01000111 01010110 01101011 01100011 00110011 01101100 00110100 01001001 01000111 00110001 01111010 01100101 01101110 01001010 01110110 01011001 01101001 00110100 01100111 01010101 00110011 01100111 01100111 01011010 01001000 01001010 01110110 01001001 01001000 01000010 00110101 01100100 01101110 01011010 00110101 01011010 00110011 01001110 00110100 01100011 01010011 01000010 01101011 01100010 00110010 01101000 01101011 01001100 01000011 01000010 01010100 01001010 00110010 01011010 01110110 01001001 01000111 01010010 01110010 01100100 01010111 00111001 00110100 01001001 01001000 01100100 01110000 01001001 01001000 01100100 01110110 01011001 00110010 01001110 01110010 01100011 01010111 00111000 01100111 01100001 00110011 01101000 01110101 01001001 01000111 01001010 01110110 01100101 01101110 01011010 01110010 01100010 01010111 00111001 01110101 01001001 01000111 00111001 01101101 01100010 00110010 01001010 01110000 01001001 01000111 01110100 00110010 01100101 01101110 01001010 01110010 01100010 01000111 00111001 01101011 01100011 00110010 00110000 01100111 01100010 01011000 01001010 01110010 01011001 01101101 01110100 01110100 01011010 01000111 00111001 01101001 01001001 01000111 01100100 01111010 01011010 01001000 01001001 01100111 01100001 01111001 01000010 01110100 01100101 01010111 01001010 01101001 01100010 00110010 01001110 00110110 01100101 01011000 01101000 01110101 01100010 00110011 01101000 01110100 01100010 01111001 01000010 01101011 01100101 01010011 01000010 01110010 01001001 01000111 00110101 01111010 01100011 01001000 01000010 01110110 01011001 01101101 00111001 00110100 01011010 01000011 01000010 01110100 01100011 01101101 01110100 01101001 01100001 00110010 00110001 01101011 01100010 00110010 01001001 01100111 01001100 01010011 01000010 00110001 01100101 01001000 01101100 01101110 01100101 01000011 01000010 01110010 01011001 01111001 01000010 01110010 01001001 01000111 01001110 01101100 01100010 01000111 01001110 01101011 01100011 00110010 01010010 01101100 01011010 01001000 01001110 00110101 01100101 01000011 01000010 01110100 01100011 00110011 01110000 01111001 01100010 00110010 01001001 01110101 01001001 01000101 00110001 01110010 01100101 01000011 01000010 01110000 01100101 01010111 01010101 01100111 01100011 01001000 01001110 00110100 01100010 01101001 01000010 01101011 01100011 01101101 00111000 01100111 01100011 01001000 01001110 00110100 01100001 00110011 01011001 01100111 01100011 01001000 01011010 01110010 01100011 01010100 00111000 01100111 01100011 01101110 01001110 00110100 01011010 01000100 01101111 01100111 01010010 00110010 00111000 01100111 01100100 01011000 01101000 00110101 01011010 01111001 01000010 01101011 01100011 01101101 01110100 01101011 01001001 01000111 01010010 01111001 01100010 01111001 01000010 01110111 01100100 01101101 01110100 01111000 01001001 01001000 01001110 01101010 01001001 01001000 01000110 00110101 01100011 00110011 01101000 01111000 01001001 01000111 01010010 00110101 01001001 01000111 01111000 01110110 01001001 01001000 01101100 01110111 01001001 01000111 01010010 01111001 01100010 01111001 01000010 01110111 01100101 01010111 01001010 00110011 01100001 00110010 01010001 01100111 01011010 01010111 01010010 01110111 01100100 01101101 01110100 01111000 01100101 01111001 00110100 01110101 01001100 01101110 00110000 01100111 01001100 01010011 01000010 01101110 01100011 01101110 01001110 01110100 01100011 01101001 01000010 00110011 01100010 00110010 01110100 00110100 01011001 01111001 01000010 01101011 01100011 01101101 01110100 01101011 01001001 01001000 01001110 01110111 01001001 01000111 01101100 00110101 01011010 01010011 01000010 01101010 01100010 00110010 00111000 01100111 01011010 01001000 01001010 01110010 01011010 01000011 01000010 00110110 01100001 00110010 01010010 01101011 01100010 00110010 01001010 00110100 01001100 01000011 01000010 01110000 01100101 01010111 01010101 01100111 01100100 01011000 01101000 00110101 01011010 01111001 01000010 01101110 01100011 01101101 01110100 01101011 01001001 01000111 01010010 01111001 01100010 01111001 01000010 01110100 01100101 01010111 01001010 01101001 01100010 00110010 01001110 00110110 01100101 01011000 01101000 01110101 01100010 00110011 01101000 01110100 01100010 00110010 01001101 01100111 01100011 01001000 01101100 01101001 01001001 01000111 01010101 01110011 01001001 01000111 01010001 01110011 01001001 01001000 01000001 01110011 01001001 01001000 01011001 01100111 01100001 01111001 01110111 01100111 01100001 00110011 01101000 01110101 01001001 01001000 01000101 01100111 01100001 00110010 01001010 01110110 01001100 01101001 01000010 01001010 01100101 01010111 01010101 01100111 01100010 01010111 01110100 00110100 01001001 01001000 01110000 01101001 01100101 01010111 01111000 01110010 01100010 01001000 01011010 01110000 01001001 01000111 01100100 00110101 01011001 01101110 01010101 01100111 01100101 01010111 01010110 01101011 01001001 01000111 01010010 01111001 01100010 01111001 01000010 01101001 01100010 00110011 01100100 01110010 01100011 00110011 01101000 01111010 01100101 01001000 01000101 01100111 01100010 01011000 01001010 01110010 01011001 01101101 01110100 01110100 01011010 01000111 00111001 01101001 01011001 01111001 01000010 01110011 01100001 01010011 01000010 01101001 01100010 00110011 01110000 00110010 01100001 00110010 00110001 01111010 01100101 01001000 01000101 01100111 01011010 01001000 01001010 01110110 01100100 01111001 01000010 01110010 01100101 01000111 00110100 01100111 01100011 00110011 01101000 01110111 01100010 00110010 01001010 01101001 01100011 00110011 01101000 01111000 01001001 01000111 00110001 00110101 01100100 00110011 01100100 00110101 01100101 01000011 01000010 01101110 01100101 01010111 01001010 01110101 01011001 01111001 01000010 01111010 01100101 01000011 01000010 01101011 01100011 01101101 00111000 01100111 01010100 00110011 01101000 01111000 01100100 01101110 01001110 01101010 01100011 01101001 01000010 00110010 01100001 00110011 01101000 01111000 01011010 01010111 01110100 01111000 01100010 01111001 00110100 01100111 01010011 00110011 01101000 00110101 01011010 01001000 01001010 01110110 01011001 01101001 01000010 01111000 01011001 01101101 00111001 01110010 01011010 01000011 01000010 00110011 01100010 00110010 01010010 01111001 01100101 01010111 00110100 01100111 01100011 00110010 01001101 01100111 01011010 01001000 01101011 01100111 01011010 01010111 01001110 01110110 01001001 01001000 01000010 01101001 01100010 00110010 01000110 01101100 01100010 00110011 01101000 01110100 01100001 01010011 01000010 01110010 01100101 01000111 01110100 00110010 01100001 01010111 01001110 01111010 01011001 01111010 01101111 01100111 01011010 00110010 00111000 01100111 01100100 01011000 01101000 00110101 01011010 01111001 01000010 01101011 01100011 01101101 01110100 01101011 01001001 01000011 01100100 01110110 01001010 01111001 01000010 01101010 01100011 01101110 01101100 01101110 01011001 01111001 01000010 01101100 01100101 01101001 01000010 00110011 01100101 01010111 01001110 01101011 01001001 01001000 01101100 01110111 01011010 01000111 00111001 00110100 01001001 01001000 01001110 00110100 01001001 01000111 01010010 01111001 01100010 01111001 01000010 01110010 01100100 01101110 01110000 01111001 01100001 00110010 01111000 01110110 01011010 01000011 01110111 01100111 01011001 00110011 01101011 01100111 01011010 01001000 01001010 01110010 01011010 01000011 01100100 01101010 01001001 01001000 01110000 01101001 01100101 01010111 01111000 01110010 01100010 01001000 01011010 01110000 01001001 01000111 01010010 01111001 01100010 01111001 01000010 00110011 01100101 01010111 01001110 01101011 01001001 01000111 00110001 00110101 01100100 00110011 01100100 00110101 01100101 01000011 01000010 01110100 01100011 01101101 01110100 01101001 01100001 00110010 00110001 01101011 01100010 00110010 01001001 01100111 01100011 00110011 01100111 01100111 01011010 01001000 01001010 01110110 01001001 01000111 01010010 01110110 01100001 01000111 01010001 01110011 01001001 01001000 01000010 00110101 01100100 01101110 01011010 00110101 01011010 00110010 00111001 01110101 01001001 01000111 01111000 01110000 01001001 01000011 01100100 01101011 01001010 01111001 01110111 01100111 01100001 00110011 01101000 01110101 01001001 01000111 01001110 00110101 01001001 01001000 01101100 00110100 01001100 01101001 01000010 01011010 01100101 01000111 00110001 01110110 01001001 01000111 01101100 00110101 01011010 01010011 01000010 00110001 01100101 01001000 01101100 01101110 01001001 01000111 01110011 01100111 01100011 01000111 00111001 01101110 01001001 01000111 00110001 01111001 01100001 00110010 01001010 01110010 01100010 01010111 01010010 01110110 01011001 01101101 01001101 01110011 01001001 01000111 01101100 00110101 01011010 01010011 01000010 01110100 01100001 00110011 01100111 01100111 01100011 00110011 01101000 01110111 01100010 00110010 01001001 01100111 01011010 01001000 01001010 01110110 01001001 01000111 01001010 01110110 01011001 00110010 01010001 01100111 01100101 01011000 01000001 01100111 01011010 01001000 01001010 01110110 01001001 01000111 01100100 00110101 01011001 01101101 00110101 01101010 01001001 01000111 01111000 01110010 01011001 00110010 00111001 01110101 01001001 01001000 01101100 00110100 01001001 01000111 00110001 00110101 01100100 00110011 01100100 00110101 01100101 01000011 01000010 01101110 01100101 01010111 01001010 01110101 01011001 01111001 01000010 01101011 01100011 01101101 01110100 01101011 01001001 01000111 01001110 01111001 01100101 01010111 01100011 01100111 01011010 01011000 01101111 01100111 01100011 00110011 01100111 01100111 01011010 01001000 01001010 01110110 01001001 01000101 00111001 00110100 01100011 01011000 01011010 01111010 01011001 00110011 01001001 01100111 01100100 01101101 01110100 00110100 01100011 01010111 01010110 01110010 01100011 01010111 00111000 01110101 01000011 01101110 01001010 01101110 01100001 01000111 00110101 00110100 01100011 00110010 01010010 01101101 01100101 01011000 01001110 01101011 01100100 01000111 01100100 01101111 01100100 01010011 01000101 01100111 01100011 01010111 01100100 01101101 01001001 01000111 01101100 01111010 01011001 01010111 01110011 01100111 01011001 00110011 01010010 01101111 01100100 01001000 01010110 01110000 01100001 00110010 01010101 01100111 01011010 01000111 01101100 01110010 01001001 01001000 01110000 01110010 01100010 01101110 01010010 01101111 01100001 01000111 01110100 00110100 01001001 01001000 01001010 00110100 01100011 01010111 01111000 01101011 01011010 00110010 00110101 00110100 01100011 00110010 01111000 01110000 01100011 01010011 01000010 01111001 01100001 01011000 01001110 00110101 01100101 01010111 01110100 01101111 01100010 01101101 01110011 01110101 01001001 01000111 01101100 01110010 01100101 01000111 01110011 01100111 01100100 01001000 01010101 01100111 01100011 01111001 01000010 01101010 01100101 01011000 01001110 01110101 01001001 01000111 01001110 01101110 01100101 01000011 01000010 01111010 01100101 01011000 01101011 01100111 01100011 01010111 01100100 01101101 01100101 01000011 01000010 01110000 01100011 00110011 01101000 01101100 01001001 01000111 01110100 01101010 01011001 00110010 01100100 00110100 01011010 01001000 01010101 00110110 01001001 01000111 01011010 01101011 01011001 00110011 01101100 01111010 01100010 01101110 01110100 01101111 01001101 01001000 01011010 01100110 01011010 01000111 01101011 00110000 01011010 01001000 01010110 01100110 01100100 01101101 01101011 00110000 01011010 01000110 00111001 00110000 01011000 00110011 01001001 00110000 01100101 01011000 01101100 01100110 01100011 01101110 01101000 01111000 01100010 01000111 01010001 01110111 01100110 01010011 00110100 01100111 01100011 01010111 01100100 01101101 01001001 01001000 01011010 00110000 01100101 01011000 01101011 01100111 01011001 00110011 01010010 01101111 01011010 01010011 01000010 01101011 01100001 01011000 01001110 01101011 01001001 01001000 01001101 01100111 01100101 01010111 01100100 01101011 01001001 01000111 01100100 01101010 01001001 01001000 01001010 00110100 01100011 01010111 01111000 01101011 01011010 00110010 00110101 00110100 01100011 00110010 01111000 01110000 01100011 01010011 01000010 00110000 01100100 01010011 01000010 01110111 01011010 01101110 01010110 01101011 01001001 01001000 01110000 01101101 01100100 01001000 01101100 01101100 01100100 01000111 01101000 01110101 01001001 01000111 01100100 01101010 01011001 01111001 01000010 01101011 01100001 01011000 01010010 00110001 01001001 01001000 01010110 01101110 01100101 01000111 01010001 01100111 01011010 00110010 01001101 01100111 01100101 01101110 01001110 00110001 01100100 01001000 01001001 01100111 01011001 01101101 01101000 01101110 01100100 01101110 01101100 01110010 01011010 01010111 00110101 01110010 01001100 01000011 01000010 01111010 01100001 01000111 01010101 01100111 01100100 01000111 01010001 01100111 01100101 01000111 01110100 01111010 01100101 01011000 01101100 01111000 01001001 01001000 01010010 00110001 01001001 01000111 01101000 01101110 01011010 01000011 01000010 00110001 01011010 01111001 01000010 00110110 01100011 00110010 01010101 01100111 01100011 00110010 01001110 01101011 01100001 00110011 01100111 01100111 01100011 00110011 01101100 00110101 01001100 01101001 01000010 01110000 01011010 00110010 01111000 01110010 01001001 01001000 01000110 01101110 01011010 01101001 01000010 01110010 01100001 01001000 01000010 01101110 01100011 01010111 01110100 01101100 01001001 01000111 01010010 01110000 01100001 01111001 01000010 01111001 01100001 01011000 01001110 00110101 01100101 01010111 01110100 01101111 01100010 01101101 01110011 01101000

题解:

binary:

image-20241016183945174

hint: if you look carefully, you'll notice that there only characters present are A-Z, a-z, 0-9, and sometimes / and +. See if you can find an encoding that looks like this one.

说明应该是base64

image-20241016183829213

Romen man应该说的是凯撒

然后词频分析:

1
vtsoid{z0l_ty4tk_ly4t_j_h4oo_hngbt0}

然后替换vtsoidutflag

basic rsa

题面:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import gmpy2
from Crypto.Util.number import *
from binascii import a2b_hex,b2a_hex

flag = "*****************"

p = 262248800182277040650192055439906580479
q = 262854994239322828547925595487519915551

e = 65533
n = p*q


c = pow(int(b2a_hex(flag),16),e,n)

print c

# 27565231154623519221597938803435789010285480123476977081867877272451638645710

题解:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import gmpy2
from Crypto.Util.number import long_to_bytes
p = 262248800182277040650192055439906580479
q = 262854994239322828547925595487519915551
e = 65533
c = 27565231154623519221597938803435789010285480123476977081867877272451638645710

phi = (p-1) * (q-1)
n = p * q
d = gmpy2.invert(e, phi)
m = pow(c, d, n)
print(m)
print(long_to_bytes(m))
#flag{B4by_Rs4}

childRSA

题面:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from random import choice
from Crypto.Util.number import isPrime, sieve_base as primes
from flag import flag


def getPrime(bits):
while True:
n = 2
while n.bit_length() < bits:
n *= choice(primes)
if isPrime(n + 1):
return n + 1

e = 0x10001
m = int.from_bytes(flag.encode(), 'big')
p, q = [getPrime(2048) for _ in range(2)]
n = p * q
c = pow(m, e, n)

# n = 32849718197337581823002243717057659218502519004386996660885100592872201948834155543125924395614928962750579667346279456710633774501407292473006312537723894221717638059058796679686953564471994009285384798450493756900459225040360430847240975678450171551048783818642467506711424027848778367427338647282428667393241157151675410661015044633282064056800913282016363415202171926089293431012379261585078566301060173689328363696699811123592090204578098276704877408688525618732848817623879899628629300385790344366046641825507767709276622692835393219811283244303899850483748651722336996164724553364097066493953127153066970594638491950199605713033004684970381605908909693802373826516622872100822213645899846325022476318425889580091613323747640467299866189070780620292627043349618839126919699862580579994887507733838561768581933029077488033326056066378869170169389819542928899483936705521710423905128732013121538495096959944889076705471928490092476616709838980562233255542325528398956185421193665359897664110835645928646616337700617883946369110702443135980068553511927115723157704586595844927607636003501038871748639417378062348085980873502535098755568810971926925447913858894180171498580131088992227637341857123607600275137768132347158657063692388249513
# c = 26308018356739853895382240109968894175166731283702927002165268998773708335216338997058314157717147131083296551313334042509806229853341488461087009955203854253313827608275460592785607739091992591431080342664081962030557042784864074533380701014585315663218783130162376176094773010478159362434331787279303302718098735574605469803801873109982473258207444342330633191849040553550708886593340770753064322410889048135425025715982196600650740987076486540674090923181664281515197679745907830107684777248532278645343716263686014941081417914622724906314960249945105011301731247324601620886782967217339340393853616450077105125391982689986178342417223392217085276465471102737594719932347242482670320801063191869471318313514407997326350065187904154229557706351355052446027159972546737213451422978211055778164578782156428466626894026103053360431281644645515155471301826844754338802352846095293421718249819728205538534652212984831283642472071669494851823123552827380737798609829706225744376667082534026874483482483127491533474306552210039386256062116345785870668331513725792053302188276682550672663353937781055621860101624242216671635824311412793495965628876036344731733142759495348248970313655381407241457118743532311394697763283681852908564387282605279108

分析:

n-1为光滑数,则根据中国剩余定理容易分解

题解:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import gmpy2
from Crypto.Util.number import long_to_bytes
p=178449493212694205742332078583256205058672290603652616240227340638730811945224947826121772642204629335108873832781921390308501763661154638696935732709724016546955977529088135995838497476350749621442719690722226913635772410880516639651363626821442456779009699333452616953193799328647446968707045304702547915799734431818800374360377292309248361548868909066895474518333089446581763425755389837072166970684877011663234978631869703859541876049132713490090720408351108387971577438951727337962368478059295446047962510687695047494480605473377173021467764495541590394732685140829152761532035790187269724703444386838656193674253139
q=184084121540115307597161367011014142898823526027674354555037785878481711602257307508985022577801782788769786800015984410443717799994642236194840684557538917849420967360121509675348296203886340264385224150964642958965438801864306187503790100281099130863977710204660546799128755418521327290719635075221585824217487386227004673527292281536221958961760681032293340099395863194031788435142296085219594866635192464353365034089592414809332183882423461536123972873871477755949082223830049594561329457349537703926325152949582123419049073013144325689632055433283354999265193117288252918515308767016885678802217366700376654365502867
e = 0x10001
c = 26308018356739853895382240109968894175166731283702927002165268998773708335216338997058314157717147131083296551313334042509806229853341488461087009955203854253313827608275460592785607739091992591431080342664081962030557042784864074533380701014585315663218783130162376176094773010478159362434331787279303302718098735574605469803801873109982473258207444342330633191849040553550708886593340770753064322410889048135425025715982196600650740987076486540674090923181664281515197679745907830107684777248532278645343716263686014941081417914622724906314960249945105011301731247324601620886782967217339340393853616450077105125391982689986178342417223392217085276465471102737594719932347242482670320801063191869471318313514407997326350065187904154229557706351355052446027159972546737213451422978211055778164578782156428466626894026103053360431281644645515155471301826844754338802352846095293421718249819728205538534652212984831283642472071669494851823123552827380737798609829706225744376667082534026874483482483127491533474306552210039386256062116345785870668331513725792053302188276682550672663353937781055621860101624242216671635824311412793495965628876036344731733142759495348248970313655381407241457118743532311394697763283681852908564387282605279108

phi = (p-1) * (q-1)
n = p * q
d = gmpy2.invert(e, phi)
m = pow(c, d, n)
print(m)
print(long_to_bytes(m))
#NCTF{Th3r3_ar3_1ns3cure_RSA_m0duli_7hat_at_f1rst_gl4nce_appe4r_t0_be_s3cur3}

crypto-aes

题面:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from Cryptodome.Cipher import AES
import os
import gmpy2
from flag import FLAG
from Cryptodome.Util.number import *

def main():
key=os.urandom(2)*16
iv=os.urandom(16)
print(bytes_to_long(key)^bytes_to_long(iv))
aes=AES.new(key,AES.MODE_CBC,iv)
enc_flag = aes.encrypt(FLAG)
print(enc_flag)
if __name__=="__main__":
main()

output:

1
2
91144196586662942563895769614300232343026691029427747065707381728622849079757
b'\x8c-\xcd\xde\xa7\xe9\x7f.b\x8aKs\xf1\xba\xc75\xc4d\x13\x07\xac\xa4&\xd6\x91\xfe\xf3\x14\x10|\xf8p'

题解:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from Crypto.Util.number import *
from Crypto.Cipher import AES

out = 91144196586662942563895769614300232343026691029427747065707381728622849079757
enc = b'\x8c-\xcd\xde\xa7\xe9\x7f.b\x8aKs\xf1\xba\xc75\xc4d\x13\x07\xac\xa4&\xd6\x91\xfe\xf3\x14\x10|\xf8p'

out = long_to_bytes(out)
key = out[:16]*2


iv = bytes_to_long(key[16:])^^bytes_to_long(out[16:])
iv = long_to_bytes(iv)

aes = AES.new(key, AES.MODE_CBC, iv=iv)
flag = aes.decrypt(enc)
print(flag)

crypto-classic1

题面:

1
2
哇,这里有压缩包的密码哦,于是我低下了头,看向了我的双手,试图从中找到某些规律
xdfv ujko98 edft54 xdfv pok,.; wsdr43

题解:

键盘密码圈圈型,找到包围的字母为circle,然后解压得到

1
SRLU{LZPL_S_UASHKXUPD_NXYTFTJT}

根据提示的维吉尼亚解码,根据flag头ACTF,得到key = spsp

image-20241016191429231

easyrsa

题面:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from Crypto.Util.number import getPrime,bytes_to_long
from sympy import Derivative
from fractions import Fraction
from secret import flag

p=getPrime(1024)
q=getPrime(1024)
e=65537
n=p*q
z=Fraction(1,Derivative(arctan(p),p))-Fraction(1,Derivative(arth(q),q))
m=bytes_to_long(flag)
c=pow(m,e,n)
print(c,z,n)
'''
output:
7922547866857761459807491502654216283012776177789511549350672958101810281348402284098310147796549430689253803510994877420135537268549410652654479620858691324110367182025648788407041599943091386227543182157746202947099572389676084392706406084307657000104665696654409155006313203957292885743791715198781974205578654792123191584957665293208390453748369182333152809882312453359706147808198922916762773721726681588977103877454119043744889164529383188077499194932909643918696646876907327364751380953182517883134591810800848971719184808713694342985458103006676013451912221080252735948993692674899399826084848622145815461035
32115748677623209667471622872185275070257924766015020072805267359839059393284316595882933372289732127274076434587519333300142473010344694803885168557548801202495933226215437763329280242113556524498457559562872900811602056944423967403777623306961880757613246328729616643032628964072931272085866928045973799374711846825157781056965164178505232524245809179235607571567174228822561697888645968559343608375331988097157145264357626738141646556353500994924115875748198318036296898604097000938272195903056733565880150540275369239637793975923329598716003350308259321436752579291000355560431542229699759955141152914708362494482
15310745161336895413406690009324766200789179248896951942047235448901612351128459309145825547569298479821101249094161867207686537607047447968708758990950136380924747359052570549594098569970632854351825950729752563502284849263730127586382522703959893392329333760927637353052250274195821469023401443841395096410231843592101426591882573405934188675124326997277775238287928403743324297705151732524641213516306585297722190780088180705070359469719869343939106529204798285957516860774384001892777525916167743272419958572055332232056095979448155082465977781482598371994798871917514767508394730447974770329967681767625495394441

'''

分析:

Fraction是分数,参数中前面是分子,后面是分母

Derivative是表示导函数的类,第一个参数是需要进行求导的函数,第二个参数是求导的自变量
$$
\begin{align}
&z=Fraction(1,Derivative(arctan(p),p))-Fraction(1,Derivative(arth(q),q))\
&即为\
&z = \frac{1}{\frac{1}{1+p^2}}-\frac{1}{\frac{1}{1-q^2}}=p^2+q^2
\end{align}
$$

题解:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from Crypto.Util.number import *
from sympy import solve,Eq,symbols
from gmpy2 import invert

c = 7922547866857761459807491502654216283012776177789511549350672958101810281348402284098310147796549430689253803510994877420135537268549410652654479620858691324110367182025648788407041599943091386227543182157746202947099572389676084392706406084307657000104665696654409155006313203957292885743791715198781974205578654792123191584957665293208390453748369182333152809882312453359706147808198922916762773721726681588977103877454119043744889164529383188077499194932909643918696646876907327364751380953182517883134591810800848971719184808713694342985458103006676013451912221080252735948993692674899399826084848622145815461035
z = 32115748677623209667471622872185275070257924766015020072805267359839059393284316595882933372289732127274076434587519333300142473010344694803885168557548801202495933226215437763329280242113556524498457559562872900811602056944423967403777623306961880757613246328729616643032628964072931272085866928045973799374711846825157781056965164178505232524245809179235607571567174228822561697888645968559343608375331988097157145264357626738141646556353500994924115875748198318036296898604097000938272195903056733565880150540275369239637793975923329598716003350308259321436752579291000355560431542229699759955141152914708362494482
n = 15310745161336895413406690009324766200789179248896951942047235448901612351128459309145825547569298479821101249094161867207686537607047447968708758990950136380924747359052570549594098569970632854351825950729752563502284849263730127586382522703959893392329333760927637353052250274195821469023401443841395096410231843592101426591882573405934188675124326997277775238287928403743324297705151732524641213516306585297722190780088180705070359469719869343939106529204798285957516860774384001892777525916167743272419958572055332232056095979448155082465977781482598371994798871917514767508394730447974770329967681767625495394441

p,q = symbols('p q')
eq1 = Eq(p*q,n)
eq2 = Eq(p^2+q^2,z)
ans = solve([eq1,eq2],p,q)
print(ans)

p = 144564833334456076455156647979862690498796694770100520405218930055633597500009574663803955456004439398699669751249623406199542605271188909145969364476344963078599240058180033000440459281558347909876143313940657252737586803051935392596519226965519859474501391969755712097119163926672753588797180811711004203301
q = 105909195259921349656664570904199242969110902804477734660927330311460997899731622163728968380757294196277263615386525795293086103142131020215128282050307177125962302515483190468569376643751587606016315185736245896434947691528567696271911398179288329609207435393579332931583829355558784305002360873458907029141
phi = (p-1)*(q-1)
e = 65537
d = invert(e,phi)
m = pow(c,d,n)
print(long_to_bytes(m))

hill

题面:

希尔密码

1
wznqca{d4uqop0fk_q1nwofDbzg_eu}

分析:

image-20241016193059684

密文中的字母为:wznqcaduqopfkqnwofDbzgeu,长度为24
因为已知开头是utflag,则最后只需要解两个3×3的矩阵即可

题解:

1

NO SOS

题面:

培根密码

1
..-.-.-.–…….–..-…-..-…–.-.-….-..-..–.-.-..-.-..—-

解密:

.换A-换B,剩余的手动换,培根解码

1
AABABABABBAAAAAAABBAABAAABAABAAABBABABAAAABAABAABBABABAABABAABBBB

image-20241016200717394

这是base??

题面:

1
2
3
4
dict:{0: 'J', 1: 'K', 2: 'L', 3: 'M', 4: 'N', 5: 'O', 6: 'x', 7: 'y', 8: 'U', 9: 'V', 10: 'z', 11: 'A', 12: 'B', 13: 'C', 14: 'D', 15: 'E', 16: 'F', 17: 'G', 18: 'H', 19: '7', 20: '8', 21: '9', 22: 'P', 23: 'Q', 24: 'I', 25: 'a', 26: 'b', 27: 'c', 28: 'd', 29: 'e', 30: 'f', 31: 'g', 32: 'h', 33: 'i', 34: 'j', 35: 'k', 36: 'l', 37: 'm', 38: 'W', 39: 'X', 40: 'Y', 41: 'Z', 42: '0', 43: '1', 44: '2', 45: '3', 46: '4', 47: '5', 48: '6', 49: 'R', 50: 'S', 51: 'T', 52: 'n', 53: 'o', 54: 'p', 55: 'q', 56: 'r', 57: 's', 58: 't', 59: 'u', 60: 'v', 61: 'w', 62: '+', 63: '/', 64: '='}

chipertext:
FlZNfnF6Qol6e9w17WwQQoGYBQCgIkGTa9w3IQKw

题解:

1
2
3
4
5
6
7
8
9
10
11
import base64
c = 'FlZNfnF6Qol6e9w17WwQQoGYBQCgIkGTa9w3IQKw'
dict = {0: 'J', 1: 'K', 2: 'L', 3: 'M', 4: 'N', 5: 'O', 6: 'x', 7: 'y', 8: 'U', 9: 'V', 10: 'z', 11: 'A', 12: 'B', 13: 'C', 14: 'D', 15: 'E', 16: 'F', 17: 'G', 18: 'H', 19: '7', 20: '8', 21: '9', 22: 'P', 23: 'Q', 24: 'I', 25: 'a', 26: 'b', 27: 'c', 28: 'd', 29: 'e', 30: 'f', 31: 'g', 32: 'h', 33: 'i', 34: 'j', 35: 'k', 36: 'l', 37: 'm', 38: 'W', 39: 'X', 40: 'Y', 41: 'Z', 42: '0', 43: '1', 44: '2', 45: '3', 46: '4', 47: '5', 48: '6', 49: 'R', 50: 'S', 51: 'T', 52: 'n', 53: 'o', 54: 'p', 55: 'q', 56: 'r', 57: 's', 58: 't', 59: 'u', 60: 'v', 61: 'w', 62: '+', 63: '/', 64: '='}
Dict = ''

for i in range(0,65):
Dict+=dict[i]

old_b64dic = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='

print(base64.b64decode(c.translate(str.maketrans(Dict,old_b64dic))))

hashgame

题面:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
 from hashlib import md5
from flag import flag
for i in flag:
print(md5(str(md5(i.encode("utf-8")).hexdigest()).encode("utf-8")).hexdigest())
'''
999a215b1f8372bb0f1c84c467a1506b,
02b0b94ee1fa195ae7959560893f7e3c,
297e7ca127d2eef674c119331fe30dff,
65c162f7c43612ba1bdf4d0f2912bbc0,
ed8a4ab0c0967b14e3bf6b145e153ec9,
d24412e1ab190533176a653cef11b185,
815e6212def15fe76ed27cec7a393d59,
38026ed22fc1a91d92b5d2ef93540f20,
cd7fd1517e323f26c6f1b0b6b96e3b3d,
a94837b18f8f43f29448b40a6e7386ba,
dc0ae7e1387be9b795f5d6299e383759,
815e6212def15fe76ed27cec7a393d59,
38026ed22fc1a91d92b5d2ef93540f20,
dc0ae7e1387be9b795f5d6299e383759,
a3655d5c04849a174d341b13d5cf5468,
28c8edde3d61a0411511d3b1866f0636,
011ecee7d295c066ae68d4396215c3d0,
d7afde3e7059cd0a0fe09eec4b0008cd,
39abe4bca904bca5a11121955a2996bf,
a3655d5c04849a174d341b13d5cf5468,
011ecee7d295c066ae68d4396215c3d0,
28c8edde3d61a0411511d3b1866f0636,
38026ed22fc1a91d92b5d2ef93540f20,
dc0ae7e1387be9b795f5d6299e383759,
a3655d5c04849a174d341b13d5cf5468,
4c0d13d3ad6cc317017872e51d01b238,
83be264eb452fcf0a1c322f2c7cbf987,
4e44f1ac85cd60e3caa56bfd4afb675e,
815e6212def15fe76ed27cec7a393d59,
a3655d5c04849a174d341b13d5cf5468,
28c8edde3d61a0411511d3b1866f0636,
4e44f1ac85cd60e3caa56bfd4afb675e,
ed108f6919ebadc8e809f8b86ef40b05,
a94837b18f8f43f29448b40a6e7386ba,
dcfcd07e645d245babe887e5e2daa016,
665f644e43731ff9db3d341da5c827e1,
83be264eb452fcf0a1c322f2c7cbf987,
39abe4bca904bca5a11121955a2996bf,
39abe4bca904bca5a11121955a2996bf,
4c0d13d3ad6cc317017872e51d01b238,
dc0ae7e1387be9b795f5d6299e383759,
011ecee7d295c066ae68d4396215c3d0,
5eccf232f5ebb3e780543372692fff18
'''

题解:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from hashlib import md5
import string

dic = string.printable
enc = ['999a215b1f8372bb0f1c84c467a1506b','02b0b94ee1fa195ae7959560893f7e3c','297e7ca127d2eef674c119331fe30dff','65c162f7c43612ba1bdf4d0f2912bbc0','ed8a4ab0c0967b14e3bf6b145e153ec9','d24412e1ab190533176a653cef11b185','815e6212def15fe76ed27cec7a393d59','38026ed22fc1a91d92b5d2ef93540f20','cd7fd1517e323f26c6f1b0b6b96e3b3d','a94837b18f8f43f29448b40a6e7386ba','dc0ae7e1387be9b795f5d6299e383759','815e6212def15fe76ed27cec7a393d59','38026ed22fc1a91d92b5d2ef93540f20','dc0ae7e1387be9b795f5d6299e383759','a3655d5c04849a174d341b13d5cf5468','28c8edde3d61a0411511d3b1866f0636','011ecee7d295c066ae68d4396215c3d0','d7afde3e7059cd0a0fe09eec4b0008cd','39abe4bca904bca5a11121955a2996bf','a3655d5c04849a174d341b13d5cf5468','011ecee7d295c066ae68d4396215c3d0','28c8edde3d61a0411511d3b1866f0636','38026ed22fc1a91d92b5d2ef93540f20','dc0ae7e1387be9b795f5d6299e383759','a3655d5c04849a174d341b13d5cf5468','4c0d13d3ad6cc317017872e51d01b238','83be264eb452fcf0a1c322f2c7cbf987','4e44f1ac85cd60e3caa56bfd4afb675e','815e6212def15fe76ed27cec7a393d59','a3655d5c04849a174d341b13d5cf5468','28c8edde3d61a0411511d3b1866f0636','4e44f1ac85cd60e3caa56bfd4afb675e','ed108f6919ebadc8e809f8b86ef40b05','a94837b18f8f43f29448b40a6e7386ba','dcfcd07e645d245babe887e5e2daa016','665f644e43731ff9db3d341da5c827e1','83be264eb452fcf0a1c322f2c7cbf987','39abe4bca904bca5a11121955a2996bf','39abe4bca904bca5a11121955a2996bf','4c0d13d3ad6cc317017872e51d01b238','dc0ae7e1387be9b795f5d6299e383759','011ecee7d295c066ae68d4396215c3d0','5eccf232f5ebb3e780543372692fff18']


flag = ''
for i in enc:
for j in dic:
data_hex = md5(str(md5(j.encode()).hexdigest()).encode('utf-8')).hexdigest()
if data_hex == i:
flag += j
break
print(flag)

crt

题面:

1
2
3
4
5
6
7
8
9
p = 21505610427819984064279577043353746817116710224908463198333168361814020516407211211968800263966803231138382884499574672542237337649833223998905513887762124776152001678183007082024585716923974762062032710828284769355472911783142678452912273176853479708132128922278641534594989057553516513666943610300470212678142983916669868309911548100541357093518850709607457700506736745923961132415143936897190572894100588748110807901123394405423554118714377943513165452588889406039206258399649323895269525023253132294219

q = 7773714436954193420341301459402666753579133359798356201269174251243571981547443474292351698207027639997745697217632554140068595435066222954621623202293659485241404770815309728346036014380455580496977330986790005393360004563176988983914341852906289811367204791842252713067680198441874815168861464383580469114437586924296835551227896353268046348351917973291553354914159710797058072800101420540047291621417969935889089947785718573862556891057011817914964538001067337785973274383865056338465007873666304637976641423221623903958538214516823265490426304496071066000124195941456833435784149914413087537162720542219383463775630076740950235120392492671821226128557930680548364572838578595986055126829201220613425618274203003828217396557

c = 140854419986163667970289059830065805164753398408312186336368834852030465939019604847418475706216729220665968458225777408324204275374111778277745406552799854218774727758306980153782739298950892119458211513858901975204401631137499719197786441955670677780431176532470905184871623052276714964709680401345424653402774840115505253598595283541857129142945339058210087774797271061404495650661205496706212556313570398515907466489891465250129535222094767522278627827611237072132498534044125692307311914407329676437975207983913622745852687158140914143964214565354674328009420930207293589972291175421275993144852631843686489189883215316953872827338922737947932247421978056851931361677104574058460997718236471815708856964984682936537299320109758983113401823195041502518179320871291497080511473810605786781937561891324593249376552461405351856605911178915026338045032053332822172478993836096122352408248997188358070781488363988235500576577496926594992219496618123954903402457892186167558145280162718027380023073233112471736529597298526379704425788025898848152222972730624685604677346513250691295653513396568678917219686768359467528696380971513142855804511552435252965194985014251159206541232769384813504656238214909320063634463098258690241017264152

dp = 11401054804220173738946390966847469054334238369992823067319035072750756501244368011179089619165701992197872574866918266365678838813278080086332501861794211868450266968381073257211379925062279004731422929109021255572982450325671135696903795096763619008794157304662238452751396918010274772278930814597548515636806686805938292942300789282469580707954574500733959600628745006643302341953884995400399610367161006079990874005777365689946686059792366865578549834211947045538034732164081604428296143818116588010289

dq = 5005106342702887614091605602651249314647071291790155763442850248035060551037977399655768073874967397002378464680946995658854302958299195016451989145734215109621226417280662973546078332282492388645352327056755589477367269672823233092226521946766464819574447615798338274266503404999517062130785332730054190377234362541123781572540890100592008845614805847094166430626331433492418976148939981096294238632487795587450997748398098493106252202191764509647067208530952551767962041074531484768266314787634822932146151967503236984473419266975172414218441923562509951644738705951534439227556158960412814772084748401658438815287188713523065384761891475361706645981974006179660631269595749918919504739791033686390956366460141140875161531121

题解:

1
2
3
4
5
6
7
8
9
10
11
12
13
from Crypto.Util.number import *
from gmpy2 import *
p = 21505610427819984064279577043353746817116710224908463198333168361814020516407211211968800263966803231138382884499574672542237337649833223998905513887762124776152001678183007082024585716923974762062032710828284769355472911783142678452912273176853479708132128922278641534594989057553516513666943610300470212678142983916669868309911548100541357093518850709607457700506736745923961132415143936897190572894100588748110807901123394405423554118714377943513165452588889406039206258399649323895269525023253132294219

q = 7773714436954193420341301459402666753579133359798356201269174251243571981547443474292351698207027639997745697217632554140068595435066222954621623202293659485241404770815309728346036014380455580496977330986790005393360004563176988983914341852906289811367204791842252713067680198441874815168861464383580469114437586924296835551227896353268046348351917973291553354914159710797058072800101420540047291621417969935889089947785718573862556891057011817914964538001067337785973274383865056338465007873666304637976641423221623903958538214516823265490426304496071066000124195941456833435784149914413087537162720542219383463775630076740950235120392492671821226128557930680548364572838578595986055126829201220613425618274203003828217396557

c = 140854419986163667970289059830065805164753398408312186336368834852030465939019604847418475706216729220665968458225777408324204275374111778277745406552799854218774727758306980153782739298950892119458211513858901975204401631137499719197786441955670677780431176532470905184871623052276714964709680401345424653402774840115505253598595283541857129142945339058210087774797271061404495650661205496706212556313570398515907466489891465250129535222094767522278627827611237072132498534044125692307311914407329676437975207983913622745852687158140914143964214565354674328009420930207293589972291175421275993144852631843686489189883215316953872827338922737947932247421978056851931361677104574058460997718236471815708856964984682936537299320109758983113401823195041502518179320871291497080511473810605786781937561891324593249376552461405351856605911178915026338045032053332822172478993836096122352408248997188358070781488363988235500576577496926594992219496618123954903402457892186167558145280162718027380023073233112471736529597298526379704425788025898848152222972730624685604677346513250691295653513396568678917219686768359467528696380971513142855804511552435252965194985014251159206541232769384813504656238214909320063634463098258690241017264152

dp = 11401054804220173738946390966847469054334238369992823067319035072750756501244368011179089619165701992197872574866918266365678838813278080086332501861794211868450266968381073257211379925062279004731422929109021255572982450325671135696903795096763619008794157304662238452751396918010274772278930814597548515636806686805938292942300789282469580707954574500733959600628745006643302341953884995400399610367161006079990874005777365689946686059792366865578549834211947045538034732164081604428296143818116588010289

dq = 5005106342702887614091605602651249314647071291790155763442850248035060551037977399655768073874967397002378464680946995658854302958299195016451989145734215109621226417280662973546078332282492388645352327056755589477367269672823233092226521946766464819574447615798338274266503404999517062130785332730054190377234362541123781572540890100592008845614805847094166430626331433492418976148939981096294238632487795587450997748398098493106252202191764509647067208530952551767962041074531484768266314787634822932146151967503236984473419266975172414218441923562509951644738705951534439227556158960412814772084748401658438815287188713523065384761891475361706645981974006179660631269595749918919504739791033686390956366460141140875161531121


分析:

$$
\begin{cases}m_1 ≡ c^d\ mod\ p\ \ (1)\
m_2 ≡ c^d\ mod\ q\ \ (2)\
\end{cases}
$$

$$
\begin{cases}m_1 ≡ c^{dp}\ mod\ p\ \ (1)\
m_2 ≡ c^{dq}\ mod\ q\ \ (2)\
\end{cases}
$$

$$\begin{align}
&由式(1)可得m_1+kp=c^d,不妨将其记为(5)式,\&然后代入(2)式可得kp≡(m_2-m_1)\ mod\ q\
&又因为gcd(p,q)=1,所以可以在得到的式子两边同时乘上p的逆元,得到\
&k≡inv(p)(m_2-m_1)\ mod\ q\
&将这个k的表达式代入(5)式,得到\
&c^d=m_1+[inv(p)
(m_2-m_1)\ mod\ q]*p
\end{align}
$$

题解:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import gmpy2
from Crypto.Util.number import long_to_bytes
p = 21505610427819984064279577043353746817116710224908463198333168361814020516407211211968800263966803231138382884499574672542237337649833223998905513887762124776152001678183007082024585716923974762062032710828284769355472911783142678452912273176853479708132128922278641534594989057553516513666943610300470212678142983916669868309911548100541357093518850709607457700506736745923961132415143936897190572894100588748110807901123394405423554118714377943513165452588889406039206258399649323895269525023253132294219

q = 7773714436954193420341301459402666753579133359798356201269174251243571981547443474292351698207027639997745697217632554140068595435066222954621623202293659485241404770815309728346036014380455580496977330986790005393360004563176988983914341852906289811367204791842252713067680198441874815168861464383580469114437586924296835551227896353268046348351917973291553354914159710797058072800101420540047291621417969935889089947785718573862556891057011817914964538001067337785973274383865056338465007873666304637976641423221623903958538214516823265490426304496071066000124195941456833435784149914413087537162720542219383463775630076740950235120392492671821226128557930680548364572838578595986055126829201220613425618274203003828217396557

c = 140854419986163667970289059830065805164753398408312186336368834852030465939019604847418475706216729220665968458225777408324204275374111778277745406552799854218774727758306980153782739298950892119458211513858901975204401631137499719197786441955670677780431176532470905184871623052276714964709680401345424653402774840115505253598595283541857129142945339058210087774797271061404495650661205496706212556313570398515907466489891465250129535222094767522278627827611237072132498534044125692307311914407329676437975207983913622745852687158140914143964214565354674328009420930207293589972291175421275993144852631843686489189883215316953872827338922737947932247421978056851931361677104574058460997718236471815708856964984682936537299320109758983113401823195041502518179320871291497080511473810605786781937561891324593249376552461405351856605911178915026338045032053332822172478993836096122352408248997188358070781488363988235500576577496926594992219496618123954903402457892186167558145280162718027380023073233112471736529597298526379704425788025898848152222972730624685604677346513250691295653513396568678917219686768359467528696380971513142855804511552435252965194985014251159206541232769384813504656238214909320063634463098258690241017264152

dp = 11401054804220173738946390966847469054334238369992823067319035072750756501244368011179089619165701992197872574866918266365678838813278080086332501861794211868450266968381073257211379925062279004731422929109021255572982450325671135696903795096763619008794157304662238452751396918010274772278930814597548515636806686805938292942300789282469580707954574500733959600628745006643302341953884995400399610367161006079990874005777365689946686059792366865578549834211947045538034732164081604428296143818116588010289

dq = 5005106342702887614091605602651249314647071291790155763442850248035060551037977399655768073874967397002378464680946995658854302958299195016451989145734215109621226417280662973546078332282492388645352327056755589477367269672823233092226521946766464819574447615798338274266503404999517062130785332730054190377234362541123781572540890100592008845614805847094166430626331433492418976148939981096294238632487795587450997748398098493106252202191764509647067208530952551767962041074531484768266314787634822932146151967503236984473419266975172414218441923562509951644738705951534439227556158960412814772084748401658438815287188713523065384761891475361706645981974006179660631269595749918919504739791033686390956366460141140875161531121
inv = gmpy2.invert(q,p)
mp = pow(c,dp,p)
mq = pow(c,dq,q)
m = (((mp-mq)*inv)%p)*q+mq
print(long_to_bytes(m))

gcd(n,c)!=1

题面:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from Crypto.Util.number import *
import gmpy2
from secret import flag
p = getPrime(1024)
q = getPrime(1024)
n = p * q
e = 65537
M = 2193887977 * flag * 3998648981 * p
c = pow(M, e, n)
print("e =",e)
print("n =",n)
print("c =",c)
'''
e = 65537
n = 16545807420674777260731864728347692716852933013510358278073611202332007473720430465950210831453874174540180585130284986359779330000733801240082822726387902347966983737629273658535545686936237936141483317768284389938633104733197235832335532556051916980785242007600099011879153728673588069312464701972213839299879617298657885362677778298115085245941641554378903105514256327378280355541317734041694207413428357390976229783945342498503928320163518890180270876637471305246355642573272287605884886848334407391989468718620712850803967430982862388658124662960138965477608743720994149731284055156410574157127935169200967464041
c = 12573125100440645635208438773062729879925788414291653704773664596815708408240935990941291157120226868540261287915991224097557261582576026311296297903426539698340847115148512587335396876711554850903542557730065494111799880290379940930365470290145336039125564114042461210457424293463908053697465052970279014937763120461866776230177455716958740744166180107518057001616745826304829048973489497061351429249921261051497057199034052110749413864159973040289368555140264908416367160930311792183536096094258397119579836896890818783685069994299697780296136914500206334079756465995253952551310399723804193050511824397531239144341
'''

题解:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from Crypto.Util.number import *
from gmpy2 import *

e = 65537
n = 16545807420674777260731864728347692716852933013510358278073611202332007473720430465950210831453874174540180585130284986359779330000733801240082822726387902347966983737629273658535545686936237936141483317768284389938633104733197235832335532556051916980785242007600099011879153728673588069312464701972213839299879617298657885362677778298115085245941641554378903105514256327378280355541317734041694207413428357390976229783945342498503928320163518890180270876637471305246355642573272287605884886848334407391989468718620712850803967430982862388658124662960138965477608743720994149731284055156410574157127935169200967464041
c = 12573125100440645635208438773062729879925788414291653704773664596815708408240935990941291157120226868540261287915991224097557261582576026311296297903426539698340847115148512587335396876711554850903542557730065494111799880290379940930365470290145336039125564114042461210457424293463908053697465052970279014937763120461866776230177455716958740744166180107518057001616745826304829048973489497061351429249921261051497057199034052110749413864159973040289368555140264908416367160930311792183536096094258397119579836896890818783685069994299697780296136914500206334079756465995253952551310399723804193050511824397531239144341

p = GCD(c, n)

phi = (p-1)*(n//p-1)
d = invert(e, phi)
M = pow(c, d, n)
m = M//2193887977//3998648981//p
print(long_to_bytes(m))

两块钱一次

题面:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from Crypto.Util.number import *
from secret import flag

size = 1024
e = 65537
p = getPrime(size)
q = getPrime(size)
secret_number = p//2 + q//2
n = p*q

m = bytes_to_long(flag)
c = pow(m, e, n)

print('n = %d' % n)
print('secret_number = %d' % secret_number)
print('c = %d' % c)
# n = 22509086801958243584160896092746908630694018090056581017461443058446441899125092070639421197960378516372961277369740470406529943787211214964921083230926914343320661425624084409196872152674139019296604017412393812478062858042969761505020435940284503998062749707777048407106244812010761907190446218013202432083648343986092795304412078098832180950855581860843921608824482050763432049397135876577736184015035186956050899352615144545509108040234866166011938627657466203544914633594539776744105171825849608987456098888757535649477495128317810377886255753844074902127204594231503064532577241801932109207903469027362510506233
# secret_number = 150814869558908087373464058202864038290992977960954022076493222042224699347856531016137334973082497483862270347934436594302143317750441792382701202396256173557675825668931157699846667286710175089825878631391093991147501899560360870600289219263223003413131728798812934604722319716762320615256029047005650484533
# c = 8684819352060095140949755961626772275008541063620112226993948898217712105916743906266076784387852185058063580919761791704218108240937658757953644599584186462340112568545708954511494324407027145573632677044815957027804511347554060726296964346328343726403238305461023048724076194233352083590973693034206285350840404541871139333496967358749655838362873289564030144881687304779855244006191034457460831852327662418152650018585974958279046682474752240105120100306165547388506944241361336578650749566884180089756118324426547977914736225291225790022735934050192892414308107766266269197250386196913540163145594578786980011396

题解:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from Crypto.Util.number import *
from gmpy2 import *
from sympy import Eq,solve,symbols

n = 22509086801958243584160896092746908630694018090056581017461443058446441899125092070639421197960378516372961277369740470406529943787211214964921083230926914343320661425624084409196872152674139019296604017412393812478062858042969761505020435940284503998062749707777048407106244812010761907190446218013202432083648343986092795304412078098832180950855581860843921608824482050763432049397135876577736184015035186956050899352615144545509108040234866166011938627657466203544914633594539776744105171825849608987456098888757535649477495128317810377886255753844074902127204594231503064532577241801932109207903469027362510506233
secret_number = 150814869558908087373464058202864038290992977960954022076493222042224699347856531016137334973082497483862270347934436594302143317750441792382701202396256173557675825668931157699846667286710175089825878631391093991147501899560360870600289219263223003413131728798812934604722319716762320615256029047005650484533
c = 8684819352060095140949755961626772275008541063620112226993948898217712105916743906266076784387852185058063580919761791704218108240937658757953644599584186462340112568545708954511494324407027145573632677044815957027804511347554060726296964346328343726403238305461023048724076194233352083590973693034206285350840404541871139333496967358749655838362873289564030144881687304779855244006191034457460831852327662418152650018585974958279046682474752240105120100306165547388506944241361336578650749566884180089756118324426547977914736225291225790022735934050192892414308107766266269197250386196913540163145594578786980011396
e = 65537

p,q = symbols('p q')


eq1 = Eq(p+q, 2*secret_number)
eq2 = Eq(p*q, n)

ans = solve([eq1,eq2], p, q)
print(ans)

p = 166178400341648677461601182136567656848890295196420754575932808795205119115785280063124186346327409393823569147223562500717843713323750704287883241476623134607281388915597015928136434555823644248329011524022381360507143997576851454388333184185821023430825575932409936410637573389007727734042322712075294725717
q = 135451338776167497285326934269160419733095660725487289577053635289244279579927781969150483599837585573900971548645310687886442922177132880477519163315889212508070262422265299471556900017596705931322745738759806621787859801543870286812245254340624983395437881665215932798807066044516913496469735381936006243349

phi = (p-1)*(q-1)
d = invert(e,phi)
m = pow(c,d,n)
print(long_to_bytes(int(m)))

LinearEquations

题面:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
from Crypto.Util.number import*
from secret import flag
assert flag[:5] == b'cazy{'
assert flag[-1:] == b'}'
flag = flag[5:-1]
assert(len(flag) == 24)

class my_LCG:
def __init__(self, seed1 , seed2):
self.state = [seed1,seed2]
self.n = getPrime(64)
while 1:
self.a = bytes_to_long(flag[:8])
self.b = bytes_to_long(flag[8:16])
self.c = bytes_to_long(flag[16:])
if self.a < self.n and self.b < self.n and self.c < self.n:
break

def next(self):
new = (self.a * self.state[-1] + self.b * self.state[-2] + self.c) % self.n
self.state.append( new )
return new

def main():
lcg = my_LCG(getRandomInteger(64),getRandomInteger(64))
print("data = " + str([lcg.next() for _ in range(5)]))
print("n = " + str(lcg.n))

if __name__ == "__main__":
main()

# data = [2626199569775466793, 8922951687182166500, 454458498974504742, 7289424376539417914, 8673638837300855396]
# n = 10104483468358610819

RSA

题面:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from Crypto.Util.number import getPrime,bytes_to_long

flag=open("flag","rb").read()

p=getPrime(1024)
q=getPrime(1024)
assert(e<100000)
n=p*q
m=bytes_to_long(flag)
c=pow(m,e,n)
print c,n
print pow(294,e,n)

p=getPrime(1024)
n=p*q
m=bytes_to_long("BJD"*32)
c=pow(m,e,n)
print c,n

'''
output:
12641635617803746150332232646354596292707861480200207537199141183624438303757120570096741248020236666965755798009656547738616399025300123043766255518596149348930444599820675230046423373053051631932557230849083426859490183732303751744004874183062594856870318614289991675980063548316499486908923209627563871554875612702079100567018698992935818206109087568166097392314105717555482926141030505639571708876213167112187962584484065321545727594135175369233925922507794999607323536976824183162923385005669930403448853465141405846835919842908469787547341752365471892495204307644586161393228776042015534147913888338316244169120 13508774104460209743306714034546704137247627344981133461801953479736017021401725818808462898375994767375627749494839671944543822403059978073813122441407612530658168942987820256786583006947001711749230193542370570950705530167921702835627122401475251039000775017381633900222474727396823708695063136246115652622259769634591309421761269548260984426148824641285010730983215377509255011298737827621611158032976420011662547854515610597955628898073569684158225678333474543920326532893446849808112837476684390030976472053905069855522297850688026960701186543428139843783907624317274796926248829543413464754127208843070331063037
381631268825806469518166370387352035475775677163615730759454343913563615970881967332407709901235637718936184198930226303761876517101208677107311006065728014220477966000620964056616058676999878976943319063836649085085377577273214792371548775204594097887078898598463892440141577974544939268247818937936607013100808169758675042264568547764031628431414727922168580998494695800403043312406643527637667466318473669542326169218665366423043579003388486634167642663495896607282155808331902351188500197960905672207046579647052764579411814305689137519860880916467272056778641442758940135016400808740387144508156358067955215018
979153370552535153498477459720877329811204688208387543826122582132404214848454954722487086658061408795223805022202997613522014736983452121073860054851302343517756732701026667062765906277626879215457936330799698812755973057557620930172778859116538571207100424990838508255127616637334499680058645411786925302368790414768248611809358160197554369255458675450109457987698749584630551177577492043403656419968285163536823819817573531356497236154342689914525321673807925458651854768512396355389740863270148775362744448115581639629326362342160548500035000156097215446881251055505465713854173913142040976382500435185442521721 12806210903061368369054309575159360374022344774547459345216907128193957592938071815865954073287532545947370671838372144806539753829484356064919357285623305209600680570975224639214396805124350862772159272362778768036844634760917612708721787320159318432456050806227784435091161119982613987303255995543165395426658059462110056431392517548717447898084915167661172362984251201688639469652283452307712821398857016487590794996544468826705600332208535201443322267298747117528882985955375246424812616478327182399461709978893464093245135530135430007842223389360212803439850867615121148050034887767584693608776323252233254261047
'''

题解:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from Crypto.Util.number import *
from gmpy2 import invert
from sympy import Eq,solve,symbols


c = 12641635617803746150332232646354596292707861480200207537199141183624438303757120570096741248020236666965755798009656547738616399025300123043766255518596149348930444599820675230046423373053051631932557230849083426859490183732303751744004874183062594856870318614289991675980063548316499486908923209627563871554875612702079100567018698992935818206109087568166097392314105717555482926141030505639571708876213167112187962584484065321545727594135175369233925922507794999607323536976824183162923385005669930403448853465141405846835919842908469787547341752365471892495204307644586161393228776042015534147913888338316244169120
n = 13508774104460209743306714034546704137247627344981133461801953479736017021401725818808462898375994767375627749494839671944543822403059978073813122441407612530658168942987820256786583006947001711749230193542370570950705530167921702835627122401475251039000775017381633900222474727396823708695063136246115652622259769634591309421761269548260984426148824641285010730983215377509255011298737827621611158032976420011662547854515610597955628898073569684158225678333474543920326532893446849808112837476684390030976472053905069855522297850688026960701186543428139843783907624317274796926248829543413464754127208843070331063037
val = 381631268825806469518166370387352035475775677163615730759454343913563615970881967332407709901235637718936184198930226303761876517101208677107311006065728014220477966000620964056616058676999878976943319063836649085085377577273214792371548775204594097887078898598463892440141577974544939268247818937936607013100808169758675042264568547764031628431414727922168580998494695800403043312406643527637667466318473669542326169218665366423043579003388486634167642663495896607282155808331902351188500197960905672207046579647052764579411814305689137519860880916467272056778641442758940135016400808740387144508156358067955215018
c_ = 979153370552535153498477459720877329811204688208387543826122582132404214848454954722487086658061408795223805022202997613522014736983452121073860054851302343517756732701026667062765906277626879215457936330799698812755973057557620930172778859116538571207100424990838508255127616637334499680058645411786925302368790414768248611809358160197554369255458675450109457987698749584630551177577492043403656419968285163536823819817573531356497236154342689914525321673807925458651854768512396355389740863270148775362744448115581639629326362342160548500035000156097215446881251055505465713854173913142040976382500435185442521721
n_ = 12806210903061368369054309575159360374022344774547459345216907128193957592938071815865954073287532545947370671838372144806539753829484356064919357285623305209600680570975224639214396805124350862772159272362778768036844634760917612708721787320159318432456050806227784435091161119982613987303255995543165395426658059462110056431392517548717447898084915167661172362984251201688639469652283452307712821398857016487590794996544468826705600332208535201443322267298747117528882985955375246424812616478327182399461709978893464093245135530135430007842223389360212803439850867615121148050034887767584693608776323252233254261047



q = GCD(n,n_)
p = n//q

phi = (p-1)*(q-1)

for e in range(1,100000):
if val == pow(294,e,n):
break

d = invert(e,phi)
m = pow(c,d,n)
print(long_to_bytes(m))