一、帕鲁情绪管理
1.题目大意:
nc上看一眼,最开始是一个简单的字符串四位哈希爆破,后四位字符输入正确,选择输入y后会打印出很多评价的文字,同时在文字开头会给出这段文字表达的心情,总共有三种分别为:positive、negative、neutral,再输入y开始challenge后会给出你一段话,让你快速输入对应的评价心情。
2.解题思路:
没有像其他队一样找到对应的数据集,本方法是使用nltk语言预测模型加爆破。整体思路就是将已经验证正确的评价对应心情存入一个txt中,(可以多跑几次,将选择challenge之前的评价数据也写入txt中当作数据)每次循环判断的时候优先从txt中遍历,如果没有就使用语言模型进行预测。
python代码如下:
from hashlib import sha256
import random
from pwn import *
import string
import time
import nltk
from nltk.sentiment.vader import SentimentIntensityAnalyzer
# 下载VADER情感分析器所需的数据
nltk.download('vader_lexicon')
# 创建情感分析器对象
sid = SentimentIntensityAnalyzer()
dir = string.ascii_letters + string.digits
# str_mess = ''
# def add_mess(res):
# with open("1.txt","a") as f:
# f.write(res)
p = remote("misc0.aliyunctf.com", 9999)
p.recvuntil('sha256(("')
salt = p.recv(28).strip().decode()
p.recvuntil('" + "????").encode()) = ')
hash = p.recv(64).strip().decode()
# print(salt,hash)
while True:
rand_str = salt + (''.join([random.choice(dir) for _ in range(4)]))
if sha256(rand_str.encode()).hexdigest() == hash:
print(rand_str[-4:])
p.sendlineafter('Please input the answer: ', rand_str[-4:])
break
message = p.recv(31).strip().decode()
p.sendline('y')
message = p.recv().strip().decode()
time.sleep(0.5)
# str_mess += message
p.sendlineafter('Now, Do you want to start challenge? (y/n) ', 'y')
num = 1
message = p.recv().strip().decode()
print(message)
while num :
# a = message
# if a[12:] in str_mess:
# mes_find = str_mess.find(a[12:])
# re = str_mess[12:mes_find]
# else:
# re = random.choice(['negative','positive','neutral'])
text = message
scores = sid.polarity_scores(text)
# 根据分数判断情感
if scores['compound'] >= 0.05:
sentiment = 'positive'
elif scores['compound'] <= -0.05:
sentiment = 'negative'
else:
sentiment = 'neutral'
re = sentiment
message = p.recv().strip().decode()
print(message)
p.sendline(re)
message = p.recv().strip().decode()
print(message)
if "Round" in message:
num = 1
else:
num = 0
p.close()
3.nltk模型搭建遇到的问题
在python自动下载VADER情感分析器所需的数据的时候可能会出现模型无法引入下载的情况,且报错为网络问题。这个时候就可以直接下载nltk_data,并把它解压到索引目录(就是python报错找不到的位置)。
如果嫌弃官网下载太慢可以参考下面这个佬的nltk_data下载地址:快速下载NLTK数据集nltk_data的方法_github - nltk/nltk_data: nltk data-CSDN博客