-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpythonchallenge20.py
More file actions
66 lines (50 loc) · 1.74 KB
/
Copy pathpythonchallenge20.py
File metadata and controls
66 lines (50 loc) · 1.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# http://www.pythonchallenge.com/pc/hex/idiot2.html
import requests
import re
url = "http://www.pythonchallenge.com/pc/hex/idiot2.html"
response = requests.get(url,auth=('butter','fly'))
url_img = "http://www.pythonchallenge.com/pc/hex/unreal.jpg"
response = requests.get(url_img,auth=('butter','fly'))
response.headers
# Content-Range : bytes 0-30202/2123456789
# 전체 데이터중 앞에 30202바이트만 받은게 현재 이미지. 나머지 데이터 요청
headers = {
'Range' : 'bytes=30203-'
}
# 순차적으로 처리
while True:
try:
response = requests.get(url_img,auth=('butter','fly'),headers=headers)
next_bytes = re.findall('\d+',response.headers.get('Content-Range'))[1]
headers['Range'] = 'bytes={}-'.format(int(next_bytes)+1)
print(response.text)
except:
break
# 뒤에서 부터 시도
answer = ''
for i in range(100):
headers = {
'Range' : 'bytes={}-'.format(2123456788-i)
}
response = requests.get(url_img,auth=('butter','fly'),headers=headers)
print(response.headers)
try:
response.headers.get('Content-Range')
answer = response.text
print(answer[::-1])
# the password is your new nickname in reverse
break
except:
continue
headers['Range'] = 'bytes=2123456743-'
response = requests.get(url_img,auth=('butter','fly'),headers=headers)
print(response.headers.get('Content-Range'))
# bytes 2123456712-2123456743/2123456789
print(response.text)
# and it is hiding at 1152983631.
headers['Range'] = 'bytes=1152983631-'
response = requests.get(url_img,auth=('butter','fly'),headers=headers)
with open("result.zip","wb") as f:
f.write(response.content)
len(response.text[0:100])
print(response.content[0:100])