网络安全实验室6.解密关
with open("dic.txt","w") as f:
for year in range(1990,2014):
for month in range(1,12):
for day in range(1,32):
f.write("%ddd\n" % (year,month,day))
- 邂逅对门的妹纸 点击Wifi-Crack 下载得到一个wifi-crack.cap包,根据提示信息可以发现,妹纸今年(2014年)上大三,猜测wifi密码可能是生日格式,出生应该在 1993 或 1994 年,看这样子密码应该是 8 位数字了,可以使用 EWSA 爆破。 写脚本生成一个字典dic.txt:
接下来,使用 EWSA 爆破,点击左上角导入数据 选中下载的wifi-crack.cap的文件,然后选择“OK”,这里一定要看下是不是有效包,无效的握手包,在图示位置就会显示无数据。 导入数据之后,继续添加字典
选择一个准备好的字典,点击确定 点击开始测试,找到密码19940808,MD5加密32位小写提交e1a45d0d24cb87490b9efb2fc2e8a2ba
- 万恶的Cisco 第一种方法:使用在线cisco交换机密码破解的网站:Cisco Password Cracker 得到key:aishishenmadongxi@Admin
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Date: 2014/11/30
# Created by 独自等待
# 博客 http://www.waitalone.cn/
try:
from cisco_decrypt import CiscoPassword
except ImportError:
raise SystemExit('\n模块导入错误,请使用pip进行安装!')
cisco_pass = '02070D48030F1C294940041801181C0C140D0A0A20253A3B'
crack = CiscoPassword()
password = crack.decrypt(cisco_pass)
print password
# coding=utf-8
from Crypto.Cipher import DES
def decode_char(c):
if c == 'a':
r = '?'
else:
r = c
return ord(r) - ord('!')
def ascii_to_binary(s):
assert len(s) == 24
out = [0]*18
i = 0
j = 0
for i in range(0, len(s), 4):
y = decode_char(s[i + 0])
y = (y << 6) & 0xffffff
k = decode_char(s[i + 1])
y = (y | k) & 0xffffff
y = (y << 6) & 0xffffff
k = decode_char(s[i + 2])
y = (y | k) & 0xffffff
y = (y << 6) & 0xffffff
k = decode_char(s[i + 3])
y = (y | k) & 0xffffff
out[j+2] = chr(y & 0xff)
out[j+1] = chr((y>>8) & 0xff)
out[j+0] = chr((y>>16) & 0xff)
j += 3
return "".join(out)
def decrypt_password(p):
r = ascii_to_binary(p)
r = r[:16]
d = DES.new("\x01\x02\x03\x04\x05\x06\x07\x08", DES.MODE_ECB)
r = d.decrypt(r)
return r.rstrip("\x00")
if __name__ == '__main__':
miwen = "aK9Q4I)J'#[Q=^Q`MAF4<1!!"
print u'明文' + decrypt_password(miwen)
第二种方法:使用python2脚本
- 万恶的加密 根据提示是某huawei/h3c交换机的加密密码,网上查找的脚本,可能是因为python2的Crypto.Cipher模块已无法安装,windows下无法运行此脚本,可以在kali下运行
得到key为84432079
- 喜欢泡网吧的小明 url: 首先点击链接,下载读取后的dump文件,接下来用WinHex编辑器打开该文件 看到 只有前8行有意义,70以后都是无用的重复字节
题目提示说,卡片数据产生了一个字节的错误,大概就是修改文件头部,文件头应该有始有终,测试后发现是将第一个AA改为8A 从刷卡的页面来看,显示的是100.00,我们知道10000的十六进制是2710
# coding=utf-8
from base64 import *
import re
def dfs(res, arr, pos):
res.append(''.join(arr))
i = pos
for i in range(i, len(arr)):
if arr[i] <= 'Z' and arr[i] >= 'A':
arr[i] = arr[i].lower()
dfs(res, arr, i + 1)
arr[i] = arr[i].upper()
arr = list('AGV5IULSB3ZLVSE=')
res = []
dfs(res, arr, 0)
res_decode = map(b64decode, res)
for i in res_decode:
if re.findall(r'\\x', repr(i)):
continue
else:
print i
根据题目要求要修改为200.00,而20000的十六进制是4e20 所以我们将两个1027改成204e就可以 得到key is cardcrackskillget!
- 异常数据 这道题目,第一眼看上去像是base64加密AGV5IULSB3ZLVSE= 但是解密后却不对ey!B҇vKU! 参考一下40huo同学写的脚本,非常厉害
脚本运行后,得到hey!IloveU!
- md5真的能碰撞嘛? url: 点击网页查看源码 大概意思就是找一个和!1793422703!md5值一样的字符串,且这个字符串不能是!1793422703! !1793422703!的MD5值是0e332932043729729062996282883873 本题会用到PHP处理0e开头的md5哈希字符串时的一个漏洞: PHP在处理哈希字符串时,会利用”!=”或”==”来对哈希值进行比较,它把每一个以”0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以”0E”开头的,那么PHP将会认为他们相同,都是0。 所以只要POST提交password的值经过md5加密后是0e开头就行,此处提供几个值password=s878926199a,240610708, QNKCDZO 得到yesyouareclever!
- 小明爱上了一个搞硬件的小姑凉 下载文件,用notepad++打开看看,发现SaleaeAsyncSerialAnalyzer 这就是提示里说的某逻辑分析仪 网上搜索,下载这个软件,把文件拖进去打开,右下角就出现了解码后的key:iloveyou,xiaoguniang!
git clone https://github.com/iagox86/hash_extender
sudo apt-get install g++ libssl-dev
cd hash_extender
make
这里需要注意里面的COMMA是逗号,自己转成 也可以自己搜索能打开后缀为logicdata格式的文件的软件,结果是一样的
- 有签名限制的读取任意文件 url: 根据提示本题需要MD5长度扩展攻击 本题我们使用的工具是hash_extender,推荐使用Ubuntu进行安装
编译安装完成之后就可以继续了 ./hash_extender -f md5 -l 32 -d '/etc/hosts' -s 'f3d366138601b5afefbd4fc15731692e' -a '' --out-data-format=html -d 原始数据 -f 代表加密方式 -l key的长度 -s 原始的hash值 -a 添加的值 --out-data-format 输出的格式 组合一下New string和New signature 最后payload如下 %2fetc%2fhosts%80P&sign=1b17d9594eb404c97c5090b11660ac63 得到Flag is: Md5LenghtExtAttackNowYouSee
- 美丽的邂逅与密码器的开门密码 点击下载二进制的exe文件,需要输入的字符串长度大于50 得到0hNouf0undm3 文笔生疏,措辞浅薄,望各位大佬不吝赐教,万分感谢。
免责声明:由于传播或利用此文所提供的信息、技术或方法而造成的任何直接或间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。