NSSCTF-Crypto入门题 练习记录贴 ‘‘一‘‘

文章目录

  • 前言
  • 001[鹤城杯 2021]easy_crypto
  • 002[强网拟态 2021]拟态签到题
  • 003[SWPUCTF 2021 新生赛]crypto8
  • 004[SWPUCTF 2021 新生赛]crypto7
  • 005[SWPUCTF 2021 新生赛]crypto6
  • 006[SWPUCTF 2021 新生赛]ez_caesar
  • 007[SWPUCTF 2021 新生赛]crypto10
  • 008[鹤城杯 2021]A_CRYPTO
  • 009[SWPUCTF 2021 新生赛]pigpig
  • 010[SWPUCTF 2021 新生赛]ez_rsa


前言

十题记录一次。001-010.

001[鹤城杯 2021]easy_crypto

NSSCTF-Crypto入门题 练习记录贴 ‘‘一‘‘_第1张图片

核心价值观编码,工具解。


002[强网拟态 2021]拟态签到题

NSSCTF-Crypto入门题 练习记录贴 ‘‘一‘‘_第2张图片
有等号,base64解码


003[SWPUCTF 2021 新生赛]crypto8

NSSCTF-Crypto入门题 练习记录贴 ‘‘一‘‘_第3张图片

UUencode编码。工具解


004[SWPUCTF 2021 新生赛]crypto7

NSSCTF-Crypto入门题 练习记录贴 ‘‘一‘‘_第4张图片

试了hex编码之类的,最后发现密文长度为32位,md5解密试试。


005[SWPUCTF 2021 新生赛]crypto6

NSSCTF-Crypto入门题 练习记录贴 ‘‘一‘‘_第5张图片

先base16,base32最后base64.。 base16就是hex编码。


006[SWPUCTF 2021 新生赛]ez_caesar

NSSCTF-Crypto入门题 练习记录贴 ‘‘一‘‘_第6张图片

一开始试了将str做凯撒,但是之后base64出不来,于是先对str做base64得到flag,在对flag进行凯撒移位。移位直接把原代码的+5改为-5就好。


007[SWPUCTF 2021 新生赛]crypto10

NSSCTF-Crypto入门题 练习记录贴 ‘‘一‘‘_第7张图片

一个rot13,这题用维吉尼亚密码也能解出一个前缀NSSCTF的flag,错的。


008[鹤城杯 2021]A_CRYPTO

NSSCTF-Crypto入门题 练习记录贴 ‘‘一‘‘_第8张图片

先ROT13,hex,base32,base64,最后base85. 但是解密base85会报错,用python解一下,

import base64

def base85_decode(encoded_string):
    try:
        # 解码Base85
        decoded_data = base64.b85decode(encoded_string.encode())
        # 将字节数据转换为字符串
        decoded_text = decoded_data.decode('utf-8')
        return decoded_text
    except Exception as e:
        print(f"解码失败:{e}")
        return None

# 你的Base85编码字符串
encoded_string = "W^7?+dsi@bUwJTfUt=_GUvgz(F)?{xWo~0IWHD}MA$<"

# 解码
decoded_text = base85_decode(encoded_string)

# 打印解码结果
if decoded_text:
    print("解码结果:", decoded_text)

不知道,为什么有这种题,乱七八糟的加密过程,之前写过三四次加密的题,但是每解一次都会有个小hint。

看了1说这个可以用ciphey自动化解密,但是啊啊啊啊啊啊啊啊啊啊来来回回折腾了一天就是安装不了,无语死了。


009[SWPUCTF 2021 新生赛]pigpig

NSSCTF-Crypto入门题 练习记录贴 ‘‘一‘‘_第9张图片

NSSCTF-Crypto入门题 练习记录贴 ‘‘一‘‘_第10张图片

猪圈密码,工具解。


010[SWPUCTF 2021 新生赛]ez_rsa

import hashlib
p = 1325465431
q = 152317153
e = 65537
n = p * q
d = pow(e, -1, (p - 1) * (q - 1))  # 计算私钥指数 d
def md5_encrypt(data):
    md5 = hashlib.md5()
    # 将数字转换为字符串再进行编码
    md5.update(str(data).encode('utf-8'))
    encrypted_data = md5.hexdigest()
    return encrypted_data


plaintext = 43476042047970113
encrypted_data = md5_encrypt(plaintext)
print(f"MD5: {encrypted_data}")

你可能感兴趣的:(CTFCrypto学习记录,CTF,Crypto,学习,python,密码学)