各种奇怪的工具
抓包: tshark//mac可用(自带?)
wireshark的分析功能
tshark.exe -r usb2.pcap -T fields -e usb.capdata > usbdata.txt 提取数据 从CTF中学USB流量捕获与解析
文件(信息): binwalk(binwalk -e 分离文件) file exiftool
pdf爆破: pdfcrack pdfcrack -f flag.pdf --wordlist=rockyou.txt
//rockyou.txt是一个字典
提取图片信息: identify
identify -format “%s %T \n” ‘/home/ctf/Desktop/100_KHf05OI.gif’
Linux下的strings命令搜索文件夹中文本里包含的字符串strings * | grep [password]
convert 可以转换图片格式,修改大小…… 拆分gif
convert flag.gif output.png
(最好在一个文件夹里分解)
Linux版的小型ps 将多图片紧密平铺
montage -mode Concatenate -tile x1 output-*.png ok.png
grep 文本搜索工具 可以找到哪些文件包含字符串 也可以查找整个目录
python: 字符串.index(‘字符串’) 返回下标
import string
intab = "aeiou"
outtab = "12345"
trantab = maketrans(intab, outtab)
str = "this is string example....wow!!!";
print str.translate(trantab);
#将"aeiou"换成"12345"
号称最强的hash破解工具:hashcat
-a | 攻击模式 |
---|---|
0 | Straight |
1 | Combination |
3 | Brute-force |
6 | Hybrid Wordlist + Mask |
7 | Hybrid Mask + Wordlist |
-m | 密文类型 |
---|---|
0 | MD5 |
100 | SHA1 |
//关于密文类型有很多,其中甚至有zip,pdf等文件,不过是通过破解相关文件等哈希来得到密钥的 |
//掩码爆破(-a 3)md5(-m 0)
//-1,-2,-3,-4 可以自定义字符集
./hashcat -a 3 -1 "?l?u?d" -m 0 "31f40dc5308fa2a311d2e2ba8955df6c" "tjctf{?1?1?1_?1}"
//用show打印内存中找到的值
//用show指令程序不会进行运算
./hashcat -a 3 -1 "?l?u?d" -m 0 "31f40dc5308fa2a311d2e2ba8955df6c" "tjctf{?1?1?1_?1}" --show
31f40dc5308fa2a311d2e2ba8955df6c:tjctf{w0w_E}
//这里有两个坑:1. hashcat用到了显卡,所以虚拟机是跑不了的了;2. zsh会把 ? 等一些特殊字符当成指令,所以要加上引号
开启十六进制输入
–hex-charset
==hashcat很强大== //但是如果要爆破的明文很长(或者是掩码太长 可能爆不出来)
遇到一个爆破140个zip的题
import zipfile
def aZipBaoPo(zipFileName, passwordDic):
notGetPassword = True
fDic = open(passwordDic)
fzip = zipfile.ZipFile(zipFileName, 'r')
while notGetPassword:
pwdTemp = fDic.readline()[:-1]
if pwdTemp == '':
break
for i in fzip.namelist():
try:
s = fzip.read(i, pwd=pwdTemp)
print zipFileName+':'
print pwdTemp+':'+s
notgetPassword = False
except:
break
for i in range(140):
filename = 'zip'+str(i)+'.zip'
dicname = 'words.txt'
aZipBaoPo(filename, dicname)
没有用多线程爆 key全是单词 所以爆出挺快的//关键是字典优秀
“在程序执行的汇编之间执行代码” 自带多种示例工具。//需要自行编译
检测程序执行了多少条指令:
带参运行:./pin -t source/tools/ManualExamples/obj-ia32/inscount1.so – ./helloworld 666 运行后输入(通过文件):./pin -t source/tools/ManualExamples/obj-ia32/inscount1.so – ./helloworld <filename
返回结果保存在inscount.out
Checker
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import popen2,string
INFILE = "test"
creakfile = "./ELF-NoSoftwareBreakpoints"
pintool = "source/tools/ManualExamples/obj-ia32/inscount1.so"
CMD = "./pin -t " + pintool + " -- " + creakfile + " <" + INFILE
maxLength = 50
def execlCommand(command):
global f
fin,fout = popen2.popen2(command)
result1 = fin.readline()#获取程序自带打印信息,wrong或者correct
#print result1
#可以根据程序输出
# if(result1 != 'Input : Wrong\n'):#输出Correct时终止循环
# f = 0
result2 = fin.readline()#等待子进程结束,结果输出完成
fin.close()
#写出结果
def writefile(data):
fi = open(INFILE,'w')
fi.write(data)
fi.close()
l = 0#初始化计数器
for i in range(maxLength):
key = i * 'A'#测试字符串
print str(i),">",key
writefile(key)
execlCommand(CMD)
fi = open('inscount.out')
while(1):
try:
n = int(fi.read().split(' ')[1], 10)
break
except IndexError:
continue
fi.close()
print str(n)+'---->'+str(n-l)
if n-l>100 :
print '++++++++++++++++++'
l = n
print '----------------------------------------------'
Boomer
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import popen2,string
INFILE = "test"
creakfile = "./crypt4"
pintool = "source/tools/ManualExamples/obj-ia32/inscount1.so"
CMD = "./pin -t " + pintool + " -- " + creakfile + " <" + INFILE#运行后输入参数
choices = "ababcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZ!#$%&'()*+,-./:;<=>?@[\]^`{|}~"#自定义爆破字典顺序
input_length = 24#可能不会检查长度
flag = ''
threshold = 50#阀值设置很关键
def execlCommand(command):
global f
fin,fout = popen2.popen2(command)
result1 = fin.readline()#获取程序打印信息
#print result1
#可以根据程序输出
# if(result1 != 'Input : Wrong\n'):#输出Correct时终止循环
# f = 0
result2 = fin.readline()#等待子进程结束,结果输出完成
fin.close()
#写出结果
def writefile(data):
fi = open(INFILE,'w')
fi.write(data)
fi.close()
f = 1
while(f):
l = 0#初始化计数器
for i in choices:
key = flag + i + '-'*(input_length-len(flag))#测试字符串
print ">",key
writefile(key)
#CMD = "./pin -t " + pintool + " -- " + creakfile +' '+ key + " <" + INFILE #带参数运行
execlCommand(CMD)
fi = open('inscount.out')
while(1):
try:
n = int(fi.read().split(' ')[1], 10)
break
except IndexError:
continue
fi.close()
print str(n)+'---->'+str(n-l)
if(n-l > threshold and l):#阀值设置很关键, l!=0
print '+++++++'+'\n'
flag += i
break
else:
l = n
print '---------------------------------------------'
if len(flag) == input_length:
break
print flag
//工具还有检测函数输入参数与返回值的,执行代码的地址的
有时候程序执行的语句变少 也可能意味着字符输入正确,常见于mov混淆。 mov混淆可以说程序执行语句数是很稳定的,不会因为一个小的输入变化,让执行语句变多或少很多。 ——三遇mov混淆
xortool
一个用来猜xor密钥的工具 -c :最可能出现的字符(十六进制或某字符)(一般二进制文件为00,一般文本文件为20) -l :长度 -m :最长长度
xortool file.bin -c 20
会生成一个文件夹保存xor出来的文件和猜出来的key
base64
-d 解码
base64 -d code.txt > plan.txt base64 plan.txt > code.txt
xxd (类比于winhex)
xxd file.bin | head
An automated, modular cryptanalysis tool; i.e., a Weapon of Math Destruction
进入环境后
- 导入样本 import singlefile #导入一个文件,这个文件中只有一个样本 import multifile #导入一个文件,这个文件中有多个样本,用换行符分割 import clear #清除所有样本 samples #查看导入的样本
- 分析 analyze #程序猜测可能用了什么加密
- 根据分析结果载入模块 use 模块
- 运行 run
- 查看结果 result export #导出结果到文件
//如果没有什么思路,可以用暴力破解的方式。这个命令会自动分析样本,并用所有的攻击方式暴力破解。 //autopwn
//支持tab补全 //好像和hashcat一样厉害
大数分解
factor(23333333333333)
美国国安局的开源软件 (可以反编译出mips//当然ida加了插件也可以) 需要jdk11+
隐藏信息
outguess -k “my secret key” -d hidden.txt demo.jpg encoded.jpg
分离信息
outguess -k “my secret key” -r encoded.jpg hidden.txt
必须输出一个txt
在线 OCR 识别图片/pdf内的文字
uncompyle 反编译pyc 对于部分不完整的代码可以反编译出机器码
uncompyle6 flag.pyc //注意有个6
rsatool 主要功能:
- 给出p,q计算出n,d
- 给出n,d计算出p,q -o导出文件可以用openssl asn1parse读取
打印pdf信息 pdfinfo name.pdf pdf转文字 pdftotext name.pdf
Aircrack-ng
airmon-ng start wlan0
airodump-ng wlan0
#aireplay-ng -0 666 -a /*apmacaddr*/ [-c /*usermacaddr*/] wlan0
airodump-ng -c 11 --bssid 28:6C:07:60:CE:29 -w ~/Desktop/tryFUCK/wifiDump wlan0
aircrack-ng -w dictionary wifiDump-01.cap
Macchanger
macchanger -r wlan0