easy_wordle题目及附件
This commit is contained in:
		
							
								
								
									
										99
									
								
								misc/easy_wordle/easy_wordle.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										99
									
								
								misc/easy_wordle/easy_wordle.py
									
									
									
									
									
										Normal 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() | ||||
							
								
								
									
										2309
									
								
								misc/easy_wordle/wordlist.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2309
									
								
								misc/easy_wordle/wordlist.txt
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Reference in New Issue
	
	Block a user