easy_wordle题目及附件

This commit is contained in:
2023-09-04 11:31:35 +08:00
parent e4795f0c89
commit ffbfe199d8
2 changed files with 2408 additions and 0 deletions

View File

@@ -0,0 +1,99 @@
from fileinput import filename
import socketserver
import signal
import random
import os
class Task(socketserver.BaseRequestHandler):
def _recvall(self):
BUFF_SIZE = 2048
data = b''
while True:
part = self.request.recv(BUFF_SIZE)
data += part
if len(part) < BUFF_SIZE:
break
return data.strip()
def send(self, msg, newline=True):
try:
if newline:
msg += b'\n'
self.request.sendall(msg)
except:
pass
def recv(self, prompt=b'[-] '):
self.send(prompt, newline=False)
return self._recvall()
def wordle_game(self, word_list):
target = random.choice(word_list)
attempts = 6
self.send("欢迎来到Wordle!".encode())
self.send("你有6次机会猜出一个5个字母的单词。".encode())
while attempts > 0:
guess = self.recv(f"尝试{7 - attempts}: ".encode())
guess = guess.decode().lower()
if len(guess) != 5:
self.send("请输入一个5个字母的单词!")
continue
feedback = self.get_feedback(target, guess)
feedback = " ".join(feedback)
feedback = feedback.encode()
self.send(feedback)
if guess == target:
self.send("恭喜你猜对了!".encode())
return True
else:
attempts -= 1
print(f"很遗憾,你没有猜出来。正确答案是{target}")
return False
def get_feedback(self, target, guess):
feedback = []
for t, g in zip(target, guess):
if t == g:
feedback.append('绿')
elif g in target:
feedback.append('')
else:
feedback.append('')
return feedback
def handle(self):
signal.alarm(60) # type: ignore
if not self.wordle_game(word_list):
self.send(b'[!] Wrong!')
return
self.send(b'here is your flag')
self.send(flag)
class ThreadedServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
pass
class ForkedServer(socketserver.ForkingMixIn, socketserver.TCPServer):# type: ignore
pass
if __name__ == "__main__":
# flag = bytes(os.getenv("FLAG"),"utf-8")
flag = b'flagis123'
with open('wordlist.txt', 'r') as file:
word_list = [line.strip() for line in file]
HOST, PORT = '0.0.0.0', 10001
server = ForkedServer((HOST, PORT), Task)
server.allow_reuse_address = True
print(HOST, PORT)
server.serve_forever()

File diff suppressed because it is too large Load Diff