CTFCrackTools
项目地址:https://github.com/0Chencc/CTFCrackTools
点击原文链接即可访问github仓库
CTFCrackTools - CTF工具框架
语言:Kotlin/Java
环境:JDK1.8
使用方法:
(最后的插件调大家可能没看懂,可以看下文)
为什么需要Ta
工具开发的目的起初就是为了方便CTFer在比赛中使用。所以我收集了一些当下比较频繁出现的密码,一起加入到本框架中。并且提供了自定义插件添加的功能。
介绍
随着一代又一代版本的优化。我们从比较丑的UI走到了现在这个看起来还算可以的UI。但是我没有放弃对2.0版本的更新,在本项目中的README中,我留下了2.0的传送门。
目前支持Crypto类型的工具,我会在下方提供插件的编写方法。
其实熟悉的朋友都知道,这款工具开发到现在已经时长2年了。以及我最近也一直在更新,为什么我选择在这个时候才发公众号呢。因为我解决了目前所有影响体验的东西。
优化
1.由于大部分用户要求2.0版本。我将3.0版本增加了之前2.0版本的顶部菜单栏功能。希望能优化体验。
2.解决了在Linux/MacOS下生成setting.json文件会出现在文件夹根目录的问题
3.解决了当一行的字数超过一定时,输入框没有限制宽度,不会换行的问题。现在会自动换行
4.修复若干密码解码时的BUG
······
多套主题
本框架支持多套外观使用,将Setting.json中的Theme改为1,2,3分别对应三套主题,什么都不填,或者随便填。都会使用默认主题,为第4套主题。
注意,代码为1的主题,仅支持JDK8及以下JDK版本。不支持JDK9和JDK10。
插件编写
考虑到多数CTFer在python方面的功底很好,所以我选择用python来作为本框架的插件语言。使用了jython来支持python在java虚拟机的运行。
(该代码就是我在上文中使用方法所使用的插件)
编写方法:
#-*- coding:utf-8 -*-
'''
{
title:插件标题
type:插件类型
author:作者昵称
dialog:插件变量
detail:插件详情
}
'''
def main(a):
return a
type:为什么需要写插件类型呢,我其实有个野心。是打算尽可能的把能遇到的题目类型的解密方式都写进去,比如pwn这些。
dialog:这个呢,其实我考虑到了有些解密方式需要多个密钥。故此设计了这个,如果声明了多个密钥,则程序会弹出多个输入框。
main:本工具插件调用十分简单,但是限制就是,必须传入数据。
因为工具调用其实就是通过def mian(a)传入数据然后获取return的数据。
放一个例子,由团队的奶权师傅写的维吉利亚密码:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
{
Title:VigenereDecrypto
Author:naiquan
Type:crypto
Dialog:key
Detail:维吉利亚密码解码
}
'''
def vigenereDecrypto(ciphertext,key):
ascii='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
keylen=len(key)
ctlen=len(ciphertext)
plaintext = ''
i = 0
while i < ctlen:
j = i % keylen
k = ascii.index(key[j])
m = ascii.index(ciphertext[i])
if m < k:
m += 26
plaintext += ascii[m-k]
i += 1
return plaintext
def main(ciphertext,key):
return vigenereDecrypto(ciphertext.replace(" ","").upper(),key.replace(" ","").upper())
声明了key这个密钥。
那么我在运行过程中,调用该插件的话,会出现
调用该插件的全过程
The End
从2年前到现在,这款工具曾经出现在很多人的硬盘里,也因为很多工具的兴起使大家开始替换这款工具。我从曾经开发这款工具就一直坚持开源,在未来的以后也不会闭源。这款工具也见证了CTF行业的发展。我对CTF也很热爱,可惜当时困在高中学业里,在封闭学校我无法进行知识更新。我会在大学的生活里继续学习,希望这款工具,以及我本人,不会被时代淘汰。
谢谢大家这么长久以来的支持。
本文始发于微信公众号(米斯特安全团队):开源项目 | CTFCrackTools - CTF工具框架
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论