작성
·
366
0
# 서버측 코드 server.py
from http.server import HTTPServer, BaseHTTPRequestHandler
import urllib.parse as parse
class ServerHandler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('content-type', 'text/html')
self.end_headers()
self.wfile.write('<p>hello world</p>'.encode())
self.wfile.write(self.path.encode())
self.wfile.write('<br>'.encode())
if '?' in self.path:
self.wfile.write(str(self.path.split('?')[1].split('&')).encode())
print(parse.parse_qsl(self.path.split('?')[1].encode()))
print(dict(parse.parse_qsl(self.path.split('?')[1].encode())))
def do_POST(self):
pass
PORT = 8080
server = HTTPServer(('', PORT), ServerHandler)
print(f"서버가 {PORT}으로 서비스 되고 있습니다.")
server.serve_forever()
# 브루트포스 코드
# import itertools
import requests
로그인패킷 = {
'id': 'hojun',
'pw': '1234',
}
address = requests.get('https://127.0.0.1:8080/?id=hojun&pw=1234')
# 문자열 = '0123456789'
# for 패스워드길이 in range(1, 5):
# for password in itertools.product(문자열, repeat=패스워드길이):
# print(password)
# print(''.join(password))
여기서 문제가 어딘지 하나도 모르겟습니다 ㅠ
127.0.0.1 - - [05/Jan/2024 17:53:47] "\x16\x03\x01\x02\x00\x01\x00\x01ü\x03\x03üiQ\x89\x03\x14ðw`ÕéKÔ\x955\\\x0d°\x9e \x1b\x87¦½'°ß´üT¯+ ý:FþYrTJðøþ\x99;Æ®§®Å-\x05M3EEà\x06õ"\x9c½ý_\x00$\x13\x02\x13\x03\x13\x01À,À0À+À/̨̩À$À(À#À'\x00\x9f\x00\x9e\x00k\x00g\x00ÿ\x01\x00\x01\x8f\x00\x0b\x00\x04\x03\x00\x01\x02\x00" 400 -
서버측에선 이렇게 뜨구 400 이라니까 오류인가요?
브루트포스 코드에선
(여기 파일 있었음), line 73, in get
return request("get", url, params=params, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
line 59, in request
return session.request(method=method, url=url, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
, line 589, in request
resp = self.send(prep, **send_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
, line 703, in send
r = adapter.send(request, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
line 517, in send
raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=8080): Max retries exceeded with url: /?id=hojun&pw=1234 (Caused by SSLError(SSLError(1, '[SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1006)')))
이러는데 어떻게 해야하나요? ㅠ
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
tyler.gweon님, 제시하신 코드와 관련된 실행 오류에 대해 답변드리겠습니다.
에러 메시지를 살펴보면, 브루트포스 코드에서 requests.get
을 사용하여 HTTPS
접속을 하려고 했지만, 서버측 코드인 server.py
는 HTTP
서버로 설정되어있어 발생한 문제로 보입니다.
HTTPS
와 HTTP
는 서로 다른 프로토콜이며, 보안 계층인 SSL/TLS에 대한 설정이 추가로 필요한데, 여기서 서버 코드는 HTTP
만을 처리하도록 되어있습니다. 따라서 브루트포스 코드에서 서버에 접속할 때 HTTPS
대신 HTTP
를 사용해야 합니다.
따라서 브루트포스 코드에서 address
변수에 할당된 URL을 https://127.0.0.1:8080/?id=hojun&pw=1234
에서 http://127.0.0.1:8080/?id=hojun&pw=1234
로 변경해주세요. https
를 http
로 바꾸는 것이 중요합니다.
또한 서버측 코드에서 400 에러는 클라이언트의 요청이 서버에서 처리할 수 없을 때 발생하는 HTTP 응답 코드입니다. 이 경우 SSL/TLS 핸드셰이크 실패 때문에 해당 에러가 발생했을 가능성이 높습니다.
요약하자면, 브루트포스 코드에서 requests.get
함수를 사용할 때, https://
가 아닌 http://
를 사용하여 서버에 접속해보시길 권장드립니다.