From e184d9871055c326c26c1aa276df06e5b653336d Mon Sep 17 00:00:00 2001 From: sangge <2251250136@qq.com> Date: Fri, 25 Aug 2023 02:40:09 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9D=9E=E9=A2=84=E6=9C=9F=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crypto/Claude_Shannon/crack.py | 46 ++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 crypto/Claude_Shannon/crack.py diff --git a/crypto/Claude_Shannon/crack.py b/crypto/Claude_Shannon/crack.py new file mode 100644 index 0000000..819ead6 --- /dev/null +++ b/crypto/Claude_Shannon/crack.py @@ -0,0 +1,46 @@ +from pwn import * # type: ignore +# context.log_level = 'debug' + +""" +(这题小小的放了水) +因为只有一轮,而最终的答案有128种情况,那我们不妨直接猜一个答案 +根据条件概率公式算一下 + +for i in range(0,1000,100): + print(i,":", 1 - (127/128) ** i) + +0 : 0.0 +100 : 0.5435690025908804 +200 : 0.7916707446041162 +300 : 0.9049120701701576 +400 : 0.9565989213461966 +500 : 0.9801904023814129 +600 : 0.990958285600675 +700 : 0.9958730812784277 +800 : 0.9981163463716863 +900 : 0.9991402420956556 +大概300次以内都出结果了 +""" + + + +for i in range(300): + try: + r = remote("localhost", 10011) + # r = process(['python3', 'main.py']) + for i in range(15): + r.sendlineafter(b":", b"1") + r.recvuntil(b"!") + + r.sendlineafter(b"chests:", b"0 0 1 0 0 1 0") + r.recvline() + flag = r.recvline() + if b"flag" in flag: + end_time = time.time() + print(flag) + break + else: + r.close() + + except EOFError: + pass