SOCKS5 클라이언트는 버전 5로 시작한 뒤 비밀번호 인증 중에 버전 1을 보냅니다. 그것이 반드시 다운그레이드나 잘못된 프록시는 아닙니다.

첫 번째 교환은 SOCKS5 인증 방법을 협상합니다. 사용자 이름/비밀번호가 선택되면 RFC 1929는 버전 필드가 0x01인 별도의 하위 협상을 정의합니다.

그 인증 요청에는 사용자 이름과 비밀번호의 길이와 바이트가 포함됩니다. 서버는 하위 협상의 버전과 상태를 반환합니다. 인증이 성공한 뒤에만 클라이언트가 SOCKS5 대상 요청을 보냅니다.

트레이스를 읽거나 클라이언트를 구현할 때 두 교환을 분리해 두십시오. 서비스 이름이 SOCKS5라서 0x05을 모든 곳에서 반복하면 잘못된 인증 메시지가 만들어집니다.

비밀번호 상태가 성공했다고 해서 요청한 대상이 허용된다는 뜻은 아닙니다. 이어지는 SOCKS 응답이 그 연결을 거부할 수 있습니다.

마지막으로, 이 사용자 이름/비밀번호 방식은 자격 증명을 암호화하지 않습니다. 버전 바이트는 메시지 형식을 식별할 뿐, 암호화되거나 더 강력한 로그인 모드를 뜻하지 않습니다.

관련 글