pythonchallenge(0-4)

article/2025/9/12 15:18:14

pythonchallenge 0:网址:http://www.pythonchallenge.com/pc/def/0.html

网页提示:try to change the URL addres。网站的图片提示如下:
在这里插入图片描述
图片的意思是网址为2的38次方

print(2**38)

得到下一关的网址:http://www.pythonchallenge.com/pc/def/274877906944.html

pythonchallenge 1:网址:http://www.pythonchallenge.com/pc/def/274877906944.html

网页跳转到:http://www.pythonchallenge.com/pc/def/map.html
在这里插入图片描述
给出的提示是:everybody thinks twice before solving this.通过图片发现K->M,O->Q,E->G,典型的凯撒密码加密,密钥就是2。根据一下提示:
g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr’q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj.
经过测试:g fmnc wms解密之后就是i hope you,构建一下paylaod:

text='''g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. 
bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. 
sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj.'''
lst=list(text)
lst2=[]
for i in lst:numb=ord(i)if numb>96 and numb<123:numb2=ord(i)+2if numb2>96 and numb2<123:lst2.append(chr(numb2))else:lst2.append(chr(numb2-122+96))      else:lst2.append(i)print(''.join(lst2))

得到内容如下:i hope you didnt translate it by hand. thats what computers are for. doing it in by hand is inefficient and that’s why this text is so long. using string.maketrans() is recommended. now apply on the url.我希望你不是亲手翻译的。这就是电脑的用途。用手写是低效的,这就是为什么这篇文章这么长。建议使用str.maketrans()方法。现在在网址上申请。
maketrans()方法:用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。两个字符串的长度必须相同,为一一对应的关系。
语法:str.maketrans(intab, outtab)
参数:intab – 字符串中要替代的字符组成的字符串。outtab – 相应的映射字符的字符串。
返回值:返回字符串转换后生成的新字符串。
根据提示内容,使用语法构建payload:

text='''g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. 
bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. 
sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj.'''
intabs="abcdefghijklmnopqrstuvwxyz"
outtabs="cdefghijklmnopqrstuvwxyzab"
trantab = text.maketrans(intabs, outtabs)
print (text.translate(trantab))

依旧得到刚才的内容,将text的内容换为‘map’:

text='map'
intabs="abcdefghijklmnopqrstuvwxyz"
outtabs="cdefghijklmnopqrstuvwxyzab"
trantab = text.maketrans(intabs, outtabs)
print (text.translate(trantab))

输出:ocr,得到下一关的网址:http://www.pythonchallenge.com/pc/def/ocr.html

pythonchallenge 3:网址:http://www.pythonchallenge.com/pc/def/ocr.html

给出的提示是:recognize the characters. maybe they are in the book,but MAYBE they are in the page source.识别字符。它们可能在书中,也可能在页面源代码中。
在这里插入图片描述
查看源码,发现要找到稀有的文字,我们将以下内容保存在文本文档中(也可以在线获取)。根据题意需要统计文本内容中各个字符出现的次数,,使用most_common()函数,构建payload:

from collections import Counter
with open('e:/pythoncode/www.pythonchallenge.com/practice-02.txt','r') as f:text = f.read()
print(Counter(text).most_common())

得到:[(’)’, 6186), (’@’, 6157), (’(’, 6154), (’]’, 6152), (’#’, 6115), (’_’, 6112), (’[’, 6108), (’}’, 6105), (’%’, 6104), (’!’, 6080), (’+’, 6066), (’$’, 6046), (’{’, 6046), (’&’, 6043), (’*’, 6034), (’^’, 6030), (’\n’, 1221), (’-’, 4), (’<’, 1), (‘e’, 1), (‘q’, 1), (‘u’, 1), (‘a’, 1), (‘l’, 1), (‘i’, 1), (‘t’, 1), (‘y’, 1), (’>’, 1)]
稀有的字符:(’<’, 1), (‘e’, 1), (‘q’, 1), (‘u’, 1), (‘a’, 1), (‘l’, 1), (‘i’, 1), (‘t’, 1), (‘y’, 1), (’>’, 1)---->"<‘equality’>"
得到下一关的网址:http://www.pythonchallenge.com/pc/def/equality.html

pythonchallenge 4:网址:http://www.pythonchallenge.com/pc/def/equality.html

在这里插入图片描述
网页提示:One small letter, surrounded by EXACTLY three big bodyguards on each of its sides.一个小小的字母,两边各有三个魁梧的保镖。查看网页源码:
在这里插入图片描述
根据网页图片的提示url名称应该是三个大写一个小写再三个大写:AAAaAAA,大写的前后都不能再是大写,正则表达式提取:[^A-Z][A-Z]{3}([a-z])[A-Z]{3}[^A-Z],使用网页爬取的方式获取文本内容,构建payload:

import urllib.request
import  re
f=urllib.request.urlopen('http://www.pythonchallenge.com/pc/def/equality.html')
data=f.read()
data=data.decode('utf-8')
reg=re.compile('[^A-Z][A-Z]{3}([a-z])[A-Z]{3}[^A-Z]')
print (''.join(reg.findall(data)))

输出:linkedlist,得到下一关的网址:http://www.pythonchallenge.com/pc/def/linkedlist.html

pythonchallenge 5:网址:http://www.pythonchallenge.com/pc/def/linkedlist.html

访问网址提示跳转:http://www.pythonchallenge.com/pc/def/linkedlist.php,查看源码发现网站中的图片有链接地址,且有提示:
在这里插入图片描述
urllib may help. DON’T TRY ALL NOTHINGS, since it will never end. 400 times is more than enough. 提示说urllib库可能会有所帮助。大概尝试400次就足够了。
点击图片,网页跳转到了,/linkedlist.php?nothing=12345,并且提示:and the next nothing is 44827,继续访问/linkedlist.php?nothing=44827,又提示and the next nothing is 45439。循环获取网页中的数字,添加到url中,构建payload:

import requests,re
numbers = re.compile("\d+")
numbs='12345'
def answer1():global numbsfor i in range(401):#获取网页的文本source = requests.get("http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing="+numbs).text#提取网页中的数字numbs = re.findall(numbers,source)#判断是否含有数字,有的话继续测试,把内容打印出来没有打印出来if numbs:print(numbs[-1])numbs = numbs[-1]else:print(i,source)break
if __name__ == '__main__':answer1()

这里运行86次的时候提示:网页提示:Yes. Divide by two and keep going.,是的。除以2,继续。
在这里插入图片描述
改造answer1()函数,当提取到的网页中含有“Yes. Divide by two and keep going.”字符时将原来的数值/2,之后继续。

import requests,re
numbers = re.compile("\d+")
numbs='12345'
def answer2():global numbsfor i in range(401):#获取网页的文本source = requests.get("http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing="+numbs).text#判断网页中是否含有“and the next nothing is ”,有的话就继续寻找,没有的话就判断if source.find("and the next nothing is") != -1:#提取网页中的数字numbs = re.findall(numbers,source)numbs = numbs[-1]print(numbs)else:#有没有“Divide by two and keep going.”,有的话将原来的数字/2,继续寻找,没有的话报错,提示网页内容。if source.find("Divide by two and keep going.") != -1:numbs = str(int(numbs)/2)print(numbs)else:print(i,source)break
if __name__ == '__main__':answer2()

输出:250 peak.html,得到下一关的网址:http://www.pythonchallenge.com/pc/def/peak.html


http://chatgpt.dhexx.cn/article/fBiCqsjE.shtml

相关文章

Python Challenge

Level 0 [1] Hint: try to change the URL address. 第零关主要让人熟悉游戏规则和形式。首先观察标签栏主题显示的是warming up&#xff0c;表明这关的主题是热身。页面图片下标注一行小提示尝试改变url的地址。在没有别的提示下&#xff0c;明显是改成图片内的内容&#xff0…

pythonchallenge(5-9)

pythonchallenge 5&#xff1a;网址&#xff1a;http://www.pythonchallenge.com/pc/def/peak.html 查看页面源代码有提示.peak hell sounds familiar.考察的是标准库pickle的。pickle模块用来实现python对象的序列化,反序列化。构建payload: import urllib.request as urt i…

Python Challenge 题解 [0-4]

Challenge 0 转到 Python Challenge 题目0 分析 从图片中可看出,该题的答案应为2的38次方 完整程序 2**38Challenge 2 转到 Python Challenge 题目 everybody thinks twice before solving this. g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dm…

pythonchallenge闯关——第一弹

说在前面 pythonchallenge是一个很古老的很优秀的一款python学习路径&#xff0c;我也是知乎搜到后&#xff0c;这里安利给大家&#xff0c;网址是&#xff1a; pythonchallenge 界面是介样子的 &#xff1a; P.S. 本人也是python小白&#xff0c;在这里记录自己的学习路径&…

PythonChallenge闯关详解

前言 PythonChallenge是国外的一位工程师设计的一套编程闯关游戏&#xff0c;网址&#xff1a;PythonChallenge&#xff0c;每一关都可以用一段Python程序解决问题得到下一关的入口&#xff0c;本博文作为一个学习笔记&#xff0c;通过边学边记的方式分享我的闯关经验。 0 图片…

scanf返回值被忽略问题

解决Visual Studio中scanf返回值被忽略问题 最近在使用Visual Studio编写c语言时遇到了scanf返回值被忽略问题 总结了如下几种解决方法&#xff1a; 方法一&#xff08;不建议&#xff09; scanf修改成 scanf_s 可以说scanf_s是vs编译器特有的&#xff0c;它认为scanf不安全&…

scanf库函数的返回值

目录 一背景&#xff1a; 二 scanf返回值规则 1.在格式字符串为用%d的情况下 (1)输入5 6此时scanf能正确读入的数据为两个&#xff0c;返回值为2 scanf正确读入概念补充 (2)如果输入5 t此时能正确读入的数据为1个&#xff0c;返回值为1。 (3)如果输入1 2.5 (4)输入t 5&a…

scanf的返回值被忽略

scanf的返回值被忽略 在编译器VS2019和VS2022中&#xff0c;在使用scanf函数时会报错&#xff0c;具体错误scanf的返回值被忽略。 解决办法 方法一 可以直接将scanf改成scanf_s,因为编译器觉得scanf_s这是比较安全的函数。 方法二 我们可以关闭VS2019和VS2022编译器的安全检查…

scanf返回值被忽略的办法

1、右击项目&#xff0c;点击属性 2、在预处理定义中输入_CRT_SECURE_NO_WARNINGS&#xff0c;点击确认 需要注意的是如果再创建了一个项目需要重新再设置一次哦&#xff01;或者把sanf改为scanf_s也可以哦。

为什么VS/VsStudio当中警告返回值被忽略“scanf” ?VsStudio中scanf返回值被忽略的原因及其解决方法

警告原因&#xff1a;Vs 认为 scanf 函数不安全 所以提示警告⚠ 解决方案一&#xff1a; 只需将 scanf() 替换为 scanf_s() 原因&#xff1a;scanf_s 是 VsStudio自己定义的函数 功能和 scanf() 类似&#xff0c; 所以不会有警告 优点&#xff1a; 正常运行不会再有警告 …

VS2022中scanf返回值被忽略的原因及其解决方法

额 产生原因&#xff1a; scanf()函数在读取时不检查边界&#xff0c;所以可能会造成内存泄漏。有一定的安全隐患。 此时会提醒你把scanf换为scanf_s&#xff1b;BUT&#xff0c;scanf_s是VS特有的函数&#xff0c;写了之后在别的编译器上就无法执行&#xff0c;使得代码的可移…

scanf返回值

转载于:https://www.cnblogs.com/fairy-wzp/p/6926244.html

两个办法轻松解决VS中”scanf返回值被忽略“问题

出现原因&#xff1a; 在ANSI C中只有scanf()&#xff0c;没有scanf_s()&#xff0c;但是scanf()在读取时不检查边界&#xff08;忽略检查返回值&#xff09;&#xff0c;所以可能会造成内存泄漏&#xff0c;于是Microsoft公司在VS编译器中提供了scanf_s()&#xff08;注意只有…

【C语言入门】VS编译器:scanf返回值被忽略

一、发现问题 学习C语言中使用VS编译器&#xff0c;期间使用scanf函数会遇到报错警告&#xff1a;返回值被忽略&#xff1a;"scanf"的情况。 二、分析问题 这个问题是因为scanf不检查边界&#xff0c;会引起内存泄露&#xff0c;造成安全隐患。虽然微软VS编译器中…

解决“scanf返回值被忽略”一劳永逸的方法

首先我们需要下载一个软件&#xff1a;Notepad 然后在VS的安装路径中找到一个文件&#xff1a;newcfile.cpp 我的路径是上面那个&#xff0c;可能不同人的路径不一样&#xff0c;可以在搜索栏中直接搜索。 鼠标右击&#xff0c;点开红圈里的Notepad 来到一个界面&#xff0c;把…

VS2019:scanf返回值被忽略

一、问题再现 如下是笔者在学习数据结构中的二叉树时遇到的问题&#xff1a; 报错警告&#xff1a;返回值被忽略&#xff1a;"scanf"。 二、问题分析 百度一下之后大致原因是&#xff1a;scanf()函数在读取时不检查边界&#xff0c;所以可能会造成内存泄漏。有一定…

scanf返回值被忽略的原因及其解决方法(vs2019)

在使用Visual Studio 2019编写C语言程序时相信大家都遇见了scanf返回值被忽略这个问题 存在的问题就是scanf函数输入不安全&#xff0c;其实在vs编译器环境下&#xff0c;这种不安全的函数有很多。 为了解决这个问题&#xff0c;编译器给了三种方法 方法①&#xff1a; 是用…

解决Visual Studio中scanf返回值被忽略问题

昨天在使用Visual Studio 2022编写C语言程序时遇到了scanf返回值被忽略问题 Vs2022中scanf返回值被忽略原因是&#xff1a;scanf ()函数在读取时不检查边界&#xff0c;所以可能会造成内存泄漏&#xff0c;有一定的安全隐患。 总结了如下几种解决方法&#xff1a; 方法一 scan…

scanf返回值被忽略的原因及其解决方法

昨天在使用Visual Studio 2019编写C语言程序时遇到了scanf返回值被忽略问题 因为我也是刚开始使用VS2019学习C语言&#xff0c;第一次遇到这种问题&#xff0c;也不知道怎么回事&#xff0c;然后就上Chrome研究了一番&#xff0c;才知道原因&#xff0c;并且找到了几种分散在个…

VsStudio中scanf返回值被忽略的原因及其解决方法

相信有不少人在使用vs的时候会遇到以下这个问题&#xff1a;scanf返回值被忽略&#xff0c;接下来我就告诉大家该如何解决这个问题 出现问题的原因&#xff1a; 因为scanf()在读取数据时不检查边界&#xff0c;所以可能会造成内存泄漏。Microsoft公司觉得这个函数不安全&#x…