서버 / IT 어떻게 해야 이 디렉토리 아래의 모든 파일들을 다운로드 받을 수 있을까요?
2021.02.07 00:03
특정 게임에 대한 이야기이긴 합니다만, 최대한 이해할 수 있게 써보겠습니다.
FastDL이라는 것을 이용해서 클라이언트로 하여금 파일을 다운로드 받게 하는 방식의 게임 서버가 있습니다. FastDL에는 몇가지 기능이 있는데, 그 중 하나가 적용된 모양인지, http://www.example.com/downloads/example1/example.vmt 와 같은 경로를 직접 입력하거나, 게임 클라이언트에서 서버에 연결할 때 자동으로 다운로드 되는 경우 이외에는 서버에 접근하기 힘들더군요.
http://www.example.com/downloads/example1/example.vmt 와 같이 파일명을 전부 입력해서 파일을 다운로드 받을 수 있지만,
http://www.example.com/downloads/ 와 같이 디렉토리명을 입력하면 403 Forbidden 오류를 반환합니다. 접근이 차단되었다는거죠.
와이어샤크로 패킷을 까보았는데, 대충 이런 모양으로 나왔습니다. IP 주소나 도메인 등은 적당히 편집했습니다.
Internet Protocol Version 4, Src: 123.456.789.0, Dst: 111.222.333.444
Transmission Control Protocol, Src Port: 12545, Dst Port: 80, Seq: 12038, Ack: 3004495, Len: 205
Hypertext Transfer Protocol
GET /downloads/example1/somefile.vmt HTTP/1.1\r\n
Referer: hl2://111.222.333.444:27015\r\n
User-Agent: Half-Life 2\r\n
Host: www.example.com\r\n
Connection: Keep-Alive\r\n
Cache-Control: no-cache\r\n
\r\n
[Full request URI: http://www.example.com/downloads/example1/somefile.vmt]
[HTTP request 59/61]
[Prev request in frame: 3416]
[Response in frame: 3420]
[Next request in frame: 3422]
이걸 보고 '아, HTTP 헤더를 적당히 편집하면 되지 않을까?' 하여 다음과 같은 배치 스크립트를 짜 실험해보았습니다.
@echo off
wget --recursive --no-parent -l2 -d -e robots=off --header="Referer: hl2://111.222.333.444:27015" --header="User-Agent: Half-Life 2" --header="Host: www.example.com" --header="Connection: Keep-Alive" --header="Cache-Control: no-cache" http://www.example.com/downloads/example1/
pause
여전히 403 Forbidden 코드를 반환하더군요.
어떻게 해야 특정 디렉토리 아래에 있는 모든 파일들을 원래 구조에 맞추어 다운로드 받을 수 있을까요?
테스트용 주소 (HTTP 200 OK): http://rssgo.co.케이알/ze_download/materials/rss/sprays/76561198055683832_1.vmt
테스트용 디렉토리: http://rssgo.co.케이알/ze_download/materials/
댓글 [5]
-
들풀 2021.02.07 01:10 -
ViArPl 2021.02.07 01:12
게임 클라이언트가 사전에 파일 목록을 받는건 아닌거로 아는데, 그러면 게임 클라이언트는 그 '디렉토리 리스팅'이 가능하다는 의미 아닌가요?
-
들풀 2021.02.07 01:24 게임클라이언트가 웹서버에 요청을 하면 서버는 요청시 받은 정보로
허용된 클라이언트임을 확인 후 그만큼 접근을 허용해주는 겁니다.
원하시는 작업을 하려면
게임 클라이언트와 서버의 패킷을 분석해서 주고 받는 정보를 분석해내고
실제 응용을 위해선 알아낸 정보를 서버로 보내야 하는데
그러려면 프로그램을 새로 짜야할 수준입니다.
물론 클라이언트와 서버가 주고받는 정보는 암호화가 되어 있습니다.
알아내려면 복호화해야하고
알아낸걸 전송시에는 또 암호화해서 보내야 합니다.
-
DarknessAngel 2021.02.07 09:36
가장 먼저 전체 목록을 받아오고, 거기 있는 URL대로 순차적으로 받는걸 수 도 있습니다
-
ViArPl 2021.02.07 14:07
결국 두 분 말을 종합하면, 서버와 통신할 때 먼저 서로 암호화된 데이터를 서로 교환해서 클라이언트가 유효한 클라이언트임을 확인받고 그 후에 그 인증한 정보를 갖고 파일을 받는다는거네요...
패킷을 까보았을 때 Application Data 뭐시기가 있기는 했는데 게임 서버와 관련 없는 다른 IP였던지라 이건 아니겠거니 하고 넘겼는데, 아마 여기서 암호화 관련 교환이 생겼을 수도 있겠네요. 서버 IP 주소와 관련된 기록에서는 특별히 암호화 관련 교환이 일어난 흔적을 못찾았던지라...
두분 모두 정보 감사합니다.
번호 | 제목 | 글쓴이 | 조회 | 등록일 |
---|---|---|---|---|
[공지] | 질문과 답변 게시판 이용간 유의사항 | gooddew | - | - |
18296 | 하드웨어| 바이오스 패스워드 초기화 문의 [9] | 해랑별이 | 466 | 12-07 |
18295 | 하드웨어| 휴대폰 커넥터가 망가진 것 같은데 사진 좀 봐주세요. [4] | 닷군 | 466 | 04-19 |
18294 | 기 타| 카톡에 연결된 전화번호가 휴대폰 전화에 등록되게 할 수 ... [1] | 복두꺼비 | 466 | 12-08 |
18293 | 윈 도 우| 윈도우11의 둥근모서리 예전처럼 사각으로 변경 안될까요. [3] | 건조한치는 | 466 | 12-08 |
18292 | 하드웨어| 디스크 버릴 준비 해야 하나요? [7] | do98 | 466 | 11-13 |
18291 | 윈 도 우| USB 보안 탭 [1] | koyotp | 466 | 11-10 |
18290 | 하드웨어| 삼성 SSD 870 EVO SATA에 대해서.. [1] | 컴알못러 | 466 | 02-26 |
18289 | 소프트웨어| Turbo Virtual Machine Executable [1] | knada | 466 | 01-28 |
18288 | 서버 / IT| 연결이 비공개로 설정되어 있지 않습니다 - 해결책? [4] | asklee | 466 | 03-07 |
18287 | 윈 도 우| ventoy로 PE부팅과 USB에 직접 세팅한게 차이가 나나요? [7] | 부앜어카앜 | 466 | 04-15 |
18286 | 소프트웨어| 자료요청 | 농심신난년 | 466 | 01-18 |
18285 | 윈 도 우| 윈도우 10 업데이트 기록보기 내역 삭제 일부는 계속 보이... [2] | 박카스디 | 466 | 12-12 |
18284 | 하드웨어| C타입 usb 허브 [4] | Airbrone13 | 466 | 11-02 |
18283 | 소프트웨어| 회사의 원노트와 집의 원노트가 다릅니다 ㅠ [2] | brucex | 466 | 08-31 |
18282 | 기 타| 토렌토 프러그램 좀 알려주세요 [2] | 커피한잔 | 466 | 07-19 |
18281 | 윈 도 우| 로컬 계정으로 변환 [5] | sinabro | 466 | 06-30 |
18280 | 윈 도 우| 어떤 오류인지 아시는분 계실까요? [6] | 고광렬 | 466 | 05-10 |
18279 | 기 타| vpn 국내로 연결하면 괜찮은가요? [4] | 눅스야 | 466 | 04-04 |
18278 | 소프트웨어| qBittorrent에서 열기 귀찮아요. [3] | 토니™짱야 | 466 | 04-01 |
18277 | 기 타| 파일 이름 랜덤변경 관련 [6] | Seesaw | 466 | 03-15 |
안될수밖에 없는게 해당 웹서버에서 보안 설정을 그렇게 한겁니다.
디렉토리 리스팅 취약점에 대한 조치를 한거죠.