Skip to main content

青少年CTF训练平台提供的Python软件包

Project description

🤔What is QSNCTF?

青少年CTF训练平台是一个公益、免费、供给全国青少年学习、训练的CTF在线平台。

(本仓库)qsnctf是青少年CTF训练平台进行编写的一个Python包程序,意图在Python中为大家快速使用一些CTF常用功能开发的开源包。这里有很多CTF常用功能,如Base编码、hash加密,甚至少见的社会主义核心价值观编码、quipqiup等都在其中。

安装

首先将GitHub上的项目下载下来后可以文件中有一个setup.py

打开终端然后输入

python setup.py install

或者也可以直接使用pip来进行安装**(由于本Python库仍在开发,所以pip可能不是最新版,如果您有较高的需求,可以直接clone本仓库进行安装)**

pip install qsnctf

安装成功会显示

Successfully installed PyExecJS-1.5.1 qsnctf-0.0.4

如果你想知道具体怎么使用可以导入这个包,然后使用help(qsnctf)查看库的用法

>>> import qsnctf
>>> help(qsnctf)
Help on package qsnctf:

NAME
    qsnctf

PACKAGE CONTENTS
    base
    crypto
    hash
    main
    misc
    uuid

FILE
    c:\users\xiniyi\appdata\local\programs\python\python39\lib\site-packages\qsnctf-0.0.4-py3.9.egg\qsnctf\__init__.py

然后使用help(qsnctf.PACKAGE CONTENTS)来查看具体的使用方法

演示

查看base的使用方法

>>> help(qsnctf.base)              
Help on module qsnctf.base in qsnct
                                   
NAME                               
    qsnctf.base                    
                                   
DESCRIPTION                        
    # Base编码解码功能                   
    # 2023年1月1日                    
    # 末心                           
                                   
FUNCTIONS                          
    base16_decode(text)            
                                   
    base16_encode(text)            
                                   
    base32_decode(text)            
                                   
    base32_encode(text)            
                                   
    base64_decode(text)            
                                   
    base64_encode(text)            
                                   
    base85_decode(text)
>>>

功能列表

Base

base16 base32 base36 base58 base62
base64 base85 base91 base92 base100

crypto

凯撒密码 凯撒爆破 培根密码 ROT5 ROT13
ROT18

hash

md5 sha1 sha224 sha256 sha384
sha512 shake128 shake256 HMAC-SHA256 sha3-224
sha3-256 sha3-385 sha3-512

misc

核心价值观加密解密 文本逆向 url加密解密 位异或

uuid

获取uuid

具体使用

命令行使用

第一步导入qsnctf

import qsnctf

例如需要使用base64加密

qsnctf.base.base64_encode("需要加密的")

相同如果使用base64解密的话就是

qsnctf.base.base64_decode("需要解密的")

其他的加密加密类似


编译器使用

这里还是使用base64来演示,其他的加密解密类似。

import qsnctf

a=qsnctf.base.base64_encode("需要加密的")
print(a)
b=qsnctf.base.base64_decode("6ZyA6KaB5Yqg5a+G55qE")
print(b)

返回信息

6ZyA6KaB5Yqg5a+G55qE
需要加密的

提示:位异或传参是需要传入一个列表,下面是个例子

import qsnctf
l=[0x71,0x72,0x6c,0x60,0x70,0x63,0x7d,0x4a,0x38,0x71,0x3b,0x65,0x53,0x41,0x61,0x79,0x75,0x4e,0x6b,0x7c,0x61,0x34,0x6b]
a=qsnctf.misc.xor_decrypt(l)
print(a)

返回结果

qsnctf{M0X1n_Love_you!}

Base62的encode值应该是整数!

import qsnctf

a = qsnctf.base.base62_encode(34441886726)
print(a)
b = qsnctf.base.base62_decode("base62")
print(b)

传参方法

由于Base、各种加密的方法较多,传参方法也花样百出。这里给大家写出这个文档方便参考,下面是调用示例和传参参数的说明和注意事项。

quipqiup

class-quipqiup

quipqiup
函数名 返回类型 位置 说明
quipqiup string、json、list api.py quipqiup 词频分析(需联网)
参数名 是否可空 传参类型 说明
ciphertext False string 分析的内容
clues True string 分析线索,默认为空,For example G=R QVW=THE

说明:此功能需要连接网络,请注意比赛规则进行使用。

使用示例
from qsnctf import *

a = quipqiup('test')
print(a.text) # that,high,area,died***
print(a.json) # {'id': 931788518, 'result': 0, 'result-message': 'success', 'time0': 1672662393.35963, 'last': 1, 'solutions': [{'logp': -1.58357763290405, 'plaintext': 'that', ***
print(a.list) # ['that', 'high',***

Base家族

Base100

base100_encode
函数名 返回类型 位置 说明
base100_encode string base.py base100编码(支持中文)
参数名 是否可空 传参类型 说明
text False string 需要编码的内容
encoding True string 解码文本时的编码,默认值utf-8
decoding True string 输出文本时的编码,默认值utf-8
base100_decode
函数名 返回类型 位置 说明
base100_decode string base.py base100解码
参数名 是否可空 传参类型 说明
text False string 需要解码的内容
encoding True string 解码文本时的编码,默认值utf-8
decoding True string 输出文本时的编码,默认值utf-8
使用示例
from qsnctf import *

# 因为在__init__.py已经引用了,所以不需要再base.base100_encode('xxx'),下同
a = base100_encode('青少年CTF')
print(a) # 📠💔💉📜💧💈📜💰💫🐺👋🐽
a = base100_decode('📠💔💉📜💧💈📜💰💫🐺👋🐽')
print(a) # 青少年CTF

Base92

base92_encode
函数名 返回类型 位置 说明
base92_encode string base.py base92编码(无法编码中文哦)
参数名 是否可空 传参类型 说明
text False string 需要编码的内容
base92_decode
函数名 返回类型 位置 说明
base92_decode string base.py base92解码
参数名 是否可空 传参类型 说明
text False string 需要解码的内容
使用示例
from qsnctf import *


a = base92_encode('qsnctf123QSN')
print(a) # ItHYSr3{(eF*?n>
a = base92_decode('ItHYSr3{(eF*?n>')
print(a) # qsnctf123QSN

Base91

base91_encode
函数名 返回类型 位置 说明
base91_encode string base.py base91编码(支持中文)
参数名 是否可空 传参类型 说明
text False string 需要编码的内容
base91_decode
函数名 返回类型 位置 说明
base91_decode string base.py base91解码
参数名 是否可空 传参类型 说明
text False string 需要解码的内容
使用示例
from qsnctf import *


a = base91_encode('青少年CTF')
print(a) # N_jjjief!gTFU,I
a = base91_decode('N_jjjief!gTFU,I')
print(a) # 青少年CTF

Base85

base85_encode
函数名 返回类型 位置 说明
base85_encode string base.py base85编码(支持中文)
参数名 是否可空 传参类型 说明
text False string 需要编码的内容
encoding True string 解码文本时的编码,默认值utf-8
decoding True string 输出文本时的编码,默认值utf-8
base85_decode
函数名 返回类型 位置 说明
base85_decode string base.py base85解码
参数名 是否可空 传参类型 说明
text False string 需要解码的内容
encoding True string 解码文本时的编码,默认值utf-8
decoding True string 输出文本时的编码,默认值utf-8
使用示例
from qsnctf import *


a = base85_encode('青少年CTF')
print(a) # >7A10u#x4tv_n)z
a = base85_decode('>7A10u#x4tv_n)z')
print(a) # 青少年CTF

Base64

base64_encode
函数名 返回类型 位置 说明
base64_encode string base.py base64编码(支持中文)
参数名 是否可空 传参类型 说明
text False string 需要编码的内容
encoding True string 解码文本时的编码,默认值utf-8
decoding True string 输出文本时的编码,默认值utf-8
base64_decode
函数名 返回类型 位置 说明
base64_decode string base.py base64解码
参数名 是否可空 传参类型 说明
text False string 需要解码的内容
encoding True string 解码文本时的编码,默认值utf-8
decoding True string 输出文本时的编码,默认值utf-8
使用示例
from qsnctf import *


a = base64_encode('青少年CTF')
print(a) # 6Z2S5bCR5bm0Q1RG
a = base64_decode('6Z2S5bCR5bm0Q1RG')
print(a) # 青少年CTF

Base62

base62_encode
函数名 返回类型 位置 说明
base62_encode string base.py base62编码(只能是整数哦)
参数名 是否可空 传参类型 说明
ints False int 需要编码的内容
base62_decode
函数名 返回类型 位置 说明
base62_decode int base.py base62解码
参数名 是否可空 传参类型 说明
text False string 需要解码的内容
使用示例
from qsnctf import *


a = base62_encode(123456)
print(a) # W7E
a = base62_decode('W7E')
print(a) # 123456

Base58

base58_encode
函数名 返回类型 位置 说明
base58_encode string base.py base58编码(支持中文)
参数名 是否可空 传参类型 说明
text False string 需要编码的内容
encoding True string 解码文本时的编码,默认值utf-8
decoding True string 输出文本时的编码,默认值utf-8
base58_decode
函数名 返回类型 位置 说明
base58_decode string base.py base58解码
参数名 是否可空 传参类型 说明
text False string 需要解码的内容
encoding True string 解码文本时的编码,默认值utf-8
decoding True string 输出文本时的编码,默认值utf-8
使用示例
from qsnctf import *


a = base58_encode('青少年CTF')
print(a) # 5QhHM9SSxYiJbYQMj
a = base58_decode('5QhHM9SSxYiJbYQMj')
print(a) # 青少年CTF

Base36

base36_encode
函数名 返回类型 位置 说明
base36_encode string base.py base36编码(只能是整数哦)
参数名 是否可空 传参类型 说明
encoded False int 需要编码的内容
base36_decode
函数名 返回类型 位置 说明
base36_decode int base.py base36解码
参数名 是否可空 传参类型 说明
text False string 需要解码的内容
使用示例
from qsnctf import *


a = base36_encode(123456)
print(a) # 2n9c
a = base36_decode('2n9c')
print(a) # 123456

Base32

base32_encode
函数名 返回类型 位置 说明
base32_encode string base.py base32编码(支持中文)
参数名 是否可空 传参类型 说明
text False string 需要编码的内容
encoding True string 解码文本时的编码,默认值utf-8
decoding True string 输出文本时的编码,默认值utf-8
base32_decode
函数名 返回类型 位置 说明
base32_decode string base.py base32解码
参数名 是否可空 传参类型 说明
text False string 需要解码的内容
encoding True string 解码文本时的编码,默认值utf-8
decoding True string 输出文本时的编码,默认值utf-8
使用示例
from qsnctf import *


a = base32_encode('青少年CTF')
print(a) # 5GOZFZNQSHS3TNCDKRDA====
a = base32_decode('5GOZFZNQSHS3TNCDKRDA====')
print(a) # 青少年CTF

Base16

base16_encode
函数名 返回类型 位置 说明
base16_encode string base.py base16编码(支持中文)
参数名 是否可空 传参类型 说明
text False string 需要编码的内容
encoding True string 解码文本时的编码,默认值utf-8
decoding True string 输出文本时的编码,默认值utf-8
base16_decode
函数名 返回类型 位置 说明
base16_decode string base.py base16解码
参数名 是否可空 传参类型 说明
text False string 需要解码的内容
encoding True string 解码文本时的编码,默认值utf-8
decoding True string 输出文本时的编码,默认值utf-8
使用示例
from qsnctf import *


a = base16_encode('青少年CTF')
print(a) # E99D92E5B091E5B9B4435446
a = base16_decode('E99D92E5B091E5B9B4435446')
print(a) # 青少年CTF

各种编码

核心价值观

Chinese_socialism_encode
函数名 返回类型 位置 说明
Chinese_socialism_encode string misc.py 社会主义核心价值观编码
参数名 是否可空 传参类型 说明
string False string 需要编码的内容
Chinese_socialism_decode
函数名 返回类型 位置 说明
Chinese_socialism_decode string misc.py 社会主义核心价值观解码
参数名 是否可空 传参类型 说明
string False string 需要解码的内容
使用示例
from qsnctf import *


a = Chinese_socialism_encode('青少年CTF')
print(a) # 友善爱国敬业敬业诚信和谐敬业文明友善爱国平等诚信民主富强敬业民主友善爱国平等友善平等敬业诚信民主自由自由和谐平等自由自由公正
a = Chinese_socialism_decode('友善爱国敬业敬业诚信和谐敬业文明友善爱国平等诚信民主富强敬业民主友善爱国平等友善平等敬业诚信民主自由自由和谐平等自由自由公正')
print(a) # 青少年CTF

URL编码

url_encode
函数名 返回类型 位置 说明
url_encode string misc.py URL编码
参数名 是否可空 传参类型 说明
string False string 需要编码的内容
url_decode
函数名 返回类型 位置 说明
url_decode string misc.py URL解码
参数名 是否可空 传参类型 说明
string False string 需要解码的内容
使用示例
from qsnctf import *


a = url_encode('青少年CTF=中学生CTF')
print(a) # %E9%9D%92%E5%B0%91%E5%B9%B4CTF%3D%E4%B8%AD%E5%AD%A6%E7%94%9FCTF
a = url_decode('%E9%9D%92%E5%B0%91%E5%B9%B4CTF%3D%E4%B8%AD%E5%AD%A6%E7%94%9FCTF')
print(a) # 青少年CTF=中学生CTF

字符串操作

逆向字符串

string_reverse
函数名 返回类型 位置 说明
string_reverse string misc.py 逆向字符串,字符串倒序、翻转
参数名 是否可空 传参类型 说明
string False string 需要逆向的内容
使用示例
from qsnctf import *


a = string_reverse('青少年CTF')
print(a) # FTC年少青

列表异或

xor_list
函数名 返回类型 位置 说明
xor_list string misc.py URL编码
参数名 是否可空 传参类型 说明
lt_data False list 异或数据
lt_root False list 异或根
使用示例
from qsnctf import *

a = "abcde" # 因为string在Python中来说可以当做列表来截取,所以可以直接这样传
b = "01234"
c = xor_list(a, b)
print(c) # QSQWQ

密码学

凯撒密码

caesar_encrypt
函数名 返回类型 位置 说明
caesar_encrypt string crypto.py 凯撒密码加密
参数名 是否可空 传参类型 说明
text False string 需要加密的内容
shift False int or string 偏移量,传入可为string,会转换int
caesar_decrypt
函数名 返回类型 位置 说明
caesar_decrypt string crypto.py 凯撒密码解密
参数名 是否可空 传参类型 说明
string False string 需要解密的内容
shift False int or string 偏移量,传入可为string,会转换int
使用示例
from qsnctf import *

a = caesar_encrypt('qsnctf', 8)
print(a) # yavkbn
b = caesar_decrypt('yavkbn', 8)
print(b) # qsnctf

凯撒密码爆破

caesar_decrypt_cracking
函数名 返回类型 位置 说明
caesar_decrypt_cracking json crypto.py 凯撒密码解密爆破
参数名 是否可空 传参类型 说明
ciphertext False string 需要的内容
caesar_encrypt_cracking
函数名 返回类型 位置 说明
caesar_encrypt_cracking json crypto.py 凯撒密码加密爆破
参数名 是否可空 传参类型 说明
ciphertext False string 需要加密的内容
使用示例
from qsnctf import *

a = caesar_encrypt_cracking('qsnctf')
print(a) # {"1": "rtodug", "2": "supevh", "3": "tvqfwi", "4": "uwrgxj", "5": "vxshyk", "6": "wytizl", "7": "xzujam", "8": "yavkbn", "9": "zbwlco", "10": "acxmdp", "11": "bdyneq", "12": "cezofr", "13": "dfapgs", "14": "egbqht", "15": "fhcriu", "16": "gidsjv", "17": "hjetkw", "18": "ikfulx", "19": "jlgvmy", "20": "kmhwnz", "21": "lnixoa", "22": "mojypb", "23": "npkzqc", "24": "oqlard", "25": "prmbse"}

b = caesar_decrypt_cracking('yavkbn')
print(b) # {"1": "xzujam", "2": "wytizl", "3": "vxshyk", "4": "uwrgxj", "5": "tvqfwi", "6": "supevh", "7": "rtodug", "8": "qsnctf", "9": "prmbse", "10": "oqlard", "11": "npkzqc", "12": "mojypb", "13": "lnixoa", "14": "kmhwnz", "15": "jlgvmy", "16": "ikfulx", "17": "hjetkw", "18": "gidsjv", "19": "fhcriu", "20": "egbqht", "21": "dfapgs", "22": "cezofr", "23": "bdyneq", "24": "acxmdp", "25": "zbwlco"}

注意:加密爆破和解密爆破的最终返回均为json,两个集是完全不同的,加密爆破是考虑偏题题点写的,所以不要混为一谈。

培根密码

bacon_encrypt
函数名 返回类型 位置 说明
bacon_encrypt string crypto.py 培根密码加密
参数名 是否可空 传参类型 说明
string False string 需要加密的内容
bacon_decrypt
函数名 返回类型 位置 说明
bacon_decrypt string crypto.py 培根密码解密
参数名 是否可空 传参类型 说明
string False string 需要解密的内容,如果出现小写一定要转为大写
使用示例
from qsnctf import *

a = bacon_encrypt('qsnctf')
print(a) # BAAAABAABAABBABAAABABAABBAABAB
b = bacon_decrypt('BAAAABAABAABBABAAABABAABBAABAB')
print(b) # QSNCTF

ROT13

rot13
函数名 返回类型 位置 说明
rot13 string crypto.py rot13
参数名 是否可空 传参类型 说明
text False string 需要加密或解密的内容
使用示例
from qsnctf import *

a = rot13('qsnctf')
print(a) # dfapgs
b = rot13('dfapgs')
print(b) # qsnctf

ROT5

rot5
函数名 返回类型 位置 说明
rot5 string crypto.py rot5
参数名 是否可空 传参类型 说明
text False string 需要加密或解密的内容
使用示例
from qsnctf import *

a = rot5('12345')
print(a) # 6789021
b = rot5('67890')
print(b) # 12345

ROT18

rot18
函数名 返回类型 位置 说明
rot18 string crypto.py rot18
参数名 是否可空 传参类型 说明
text False string 需要加密或解密的内容
使用示例
from qsnctf import *

a = rot18('qsnctf2022')
print(a) # dfapgs7577
b = rot18('dfapgs7577')
print(b) # qsnctf2022

Hash

MD5

md5
函数名 返回类型 位置 说明
md5 string hash.py md5
参数名 是否可空 传参类型 说明
input_string False string 需要加密的内容
使用示例
from qsnctf import *

a = md5('qsnctf2022')
print(a) # cede1574f851cb8a1ffb3c1b885c4965

SHA1

sha1
函数名 返回类型 位置 说明
sha1 string hash.py sha1
参数名 是否可空 传参类型 说明
input_string False string 需要加密的内容
使用示例
from qsnctf import *

a = sha1('qsnctf2022')
print(a) # 5a66dd2590a911dc670873e12934e6f14d1da7e7

SHA224

sha224
函数名 返回类型 位置 说明
sha224 string hash.py sha224
参数名 是否可空 传参类型 说明
input_string False string 需要加密的内容
使用示例
from qsnctf import *

a = sha224('qsnctf2022')
print(a) # 71e718c88621bfe602833420a817398aee52df7ef9c1904086c9ff8f

SHA256

sha256
函数名 返回类型 位置 说明
sha256 string hash.py sha256
参数名 是否可空 传参类型 说明
input_string False string 需要加密的内容
使用示例
from qsnctf import *

a = sha256('qsnctf2022')
print(a) # 7404bb484d7a4a1f26bf974dc1337d778162d32be0d54f2e571f4e942673b7d1

SHA384

sha384
函数名 返回类型 位置 说明
sha384 string hash.py sha384
参数名 是否可空 传参类型 说明
input_string False string 需要加密的内容
使用示例
from qsnctf import *

a = sha384('qsnctf2022')
print(a) # c692736bfeccbaa1e7f1fff9e351d67f042e5198ae8850401be46450b479f62d78e44f46300b13f5419eb5bf1fa0c222

SHA512

sha512
函数名 返回类型 位置 说明
sha512 string hash.py sha512
参数名 是否可空 传参类型 说明
input_string False string 需要加密的内容
使用示例
from qsnctf import *

a = sha512('qsnctf2022')
print(a) # bfb5c9d6c5197696c251fad40932da2dfd3af627bf974b09a98c02b55301e58a8f6f0518b74b05a19f7f9f90340a0b81d76e7cc37802406392ebf0f0073c5301 

SHAKE128

shake128
函数名 返回类型 位置 说明
shake_128 string hash.py shake128
参数名 是否可空 传参类型 说明
input_string False string 需要加密的内容
bits False int or string 用于指定输出的散列值的长度。
使用示例
from qsnctf import *

a = shake_128('qsnctf2022',"10")
print(a) # b134959f759d7fa1942c

SHAKE256

shake256
函数名 返回类型 位置 说明
shake_256 string hash.py shake256
参数名 是否可空 传参类型 说明
input_string False string 需要加密的内容
bits False int or string 用于指定输出的散列值的长度。
使用示例
from qsnctf import *

a = shake_256('qsnctf2022',"10")
print(a) # 94c31528e7a32076b1f4

HMAC-SHA256

hmac-sha256
函数名 返回类型 位置 说明
HMAC_SHA256_HEX string hash.py hmac_sha256
参数名 是否可空 传参类型 说明
secret False string 需要加密的内容
data False int or string 加密的密钥
使用示例
from qsnctf import *

a = HMAC_SHA256_HEX('qsnctf2022',123)
print(a) # f7ce26af7e17adebd72d3cd9120fa4acd05c66aab676462026e916a53a71f564

SHA3_224

sha3_224
函数名 返回类型 位置 说明
sha3_224 string hash.py sha3_224
参数名 是否可空 传参类型 说明
input_string False string 需要加密的内容
使用示例
from qsnctf import *

a = sha3_224('qsnctf2022')
print(a) # 2b7580cd6d4f6a8c3b96d4d08bcbf9e8ddf6d3c393cffb69dd7bc967

SHA3_256

sha3_256
函数名 返回类型 位置 说明
sha3_256 string hash.py sha3_256
参数名 是否可空 传参类型 说明
input_string False string 需要加密的内容
使用示例
from qsnctf import *

a = sha3_256('qsnctf2022')
print(a) # ec570495a42596f49037c6f72a93c3a5803a040146a53e7f030cd7c11c0b1c79

SHA3_384

sha3_384
函数名 返回类型 位置 说明
sha3_384 string hash.py sha3_384
参数名 是否可空 传参类型 说明
input_string False string 需要加密的内容
使用示例
from qsnctf import *

a = sha3_384('qsnctf2022')
print(a) # f3df64859a8e1b1912e1b237f1b54863fb6f11ca9bc117e019e69ceb4d7e1cacd75c8d33b1e25967428d8a7b3cee23f5

SHA3_512

sha3_512
函数名 返回类型 位置 说明
sha3_512 string hash.py sha3_512
参数名 是否可空 传参类型 说明
input_string False string 需要加密的内容
使用示例
from qsnctf import *

a = sha3_512('qsnctf2022')
print(a) # 95e2d7d428f1b4d007be25dfd454131796f6fa2162662ec34fe8a9aa52f463f5021d5c32cfc422ea3055ed666afb1fc9edc86e65a3f57129ce2d7b2e7617e71e

环境

开发环境

Windows11 + Python3.11 + PyCharm 2022.3.1 (Professional Edition)

使用环境

支持 python 3.x 环境。

文档持续更新。

✨ Contributors

感谢下面的所有人:


Moxin


xinyi


yiye-yfs

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qsnctf-0.0.8.1.tar.gz (27.9 kB view hashes)

Uploaded Source

Built Distribution

qsnctf-0.0.8.1-py3-none-any.whl (16.7 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page