최고의 계층 네트워크 프로토콜을 이해 / 역 엔지니어링하는 좋은 도구

StackOverflow https://stackoverflow.com/questions/1437856

  •  08-07-2019
  •  | 
  •  

문제

당면한 흥미로운 문제가 있습니다. 클라이언트 애플리케이션 (브라우저가 아닌)을 통해 실행되는 롤 플레잉 MMOG가있어서 플레이어의 동작을 서버로 보내 모든 플레이어가 패킷을 다시 전송하여 동기화 할 수 있습니다.

이제이 게임은 TCP/IP를 통해 최상위 레이어 프로토콜을 사용하여 데이터를 전송합니다. 그러나 Wireshark는 어떤 프로토콜이 사용되고 있는지 알지 못하고 TCP 헤더를 넘어 덤프로 모든 것을 보여줍니다.

또한이 덤프에는 일반 텍스트 문자열이 없습니다. 게임에는 채팅 기능이 있지만이 덤프에서 전송되는 채팅 문자열은 어디서나 일반 텍스트로 표시되지 않습니다.

저의 임무는 패킷에 포함 된 데이터에 대한 매우 기본적인 것들을 찾기 위해 프로토콜을 조금 리버스 엔지니어링하는 것입니다.

채팅 문자열이 일반 텍스트로 보이지 않는 이유와 표준 최상위 프로토콜이 사용될 가능성이 있는지 아는 사람이 있습니까?

또한 덤프에서 데이터를 얻는 데 도움이되는 도구가 있습니까?

도움이 되었습니까?

해결책

그것이 당신을 암호화 한 경우 하다 기회가 있습니다 (실제로, 당신은 그것을 올바르게 처리하면 100% 기회가 있습니다) : 키는 컴퓨터 어딘가에 있어야합니다. 좋아하는 디버거를 열고, 소켓에서 나오는 데이터의 비트 (오류, 백 바이트 또는 희망)를보고 해당 데이터의 워치 포인트를 설정하고 액세스 할 수있는 스택 흔적을 살펴보십시오. 그것. 당신이 정말로 운이 좋으면, 당신은 그것이 해독 될 것인지 볼 수도 있습니다. 그렇지 않다면, 아마도 스택 트레이스 (운이 좋으면) 또는 IV / S-Box 프로파일러 중 하나를 사용하여 (학업을 피하십시오. 대부분은 많은 문제없이 작동하지 않습니다). 많은 암호화 알고리즘은 감지 할 수있는 "표준 데이터"의 블록을 사용합니다 (IVS / S- 박스). 다른 정보가없는 경우에 찾은 것입니다. 당신이 찾은 것이 무엇이든, Google을, 암호화 라이브러리를 무시하고 암호화/암호 해독 된 데이터를 덤프하십시오. 이 덤프에서는 무슨 일이 일어나고 있는지 알기가 비교적 쉬워야합니다.

암호화 된 세션을 진행하는 것은 많은 재미가있을 수 있지만 디버거와 많은 독서 기술이 필요합니다. 실망 스러울 수 있지만 방법을 배우는 데 시간을 보내면 미안하지 않습니다. :)

다른 팁

가장 좋은 추측 : 암호화 또는 압축.

텔넷조차도 전체 프로토콜이 전적으로 텍스트 기반이지만 (거의, 거의) 와이어를 통한 압축을 지원합니다.

일반적인 압축 유틸리티를 통해 데이터 스트림을 실행하려고 시도 할 수 있지만, 압축 헤더를 전송하지 않기 때문에 미리 정의 된 값이 시행되기 때문에 당신에게 많은 도움이 될 것입니다.

그것이 진정 된 암호화라면, 당신은 거의 망쳐졌습니다 (많은 노력 없이는 훨씬 더 많은 노력을 기울이지 않아도됩니다).

압축되거나 암호화 될 가능성이 높습니다.

암호화 된 경우 기회가 없습니다.

압축되면 어떻게 든 압축 된 데이터의 어떤 부분이 압축 된 부분, 압축 부품이 시작되는 위치 및 압축 알고리즘이 무엇인지 알아 내야합니다. 운이 좋으면 식별 할 수있는 표준 헤더가있을 것입니다.

이 중 어느 것도 간단하지 않습니다. 역 엔지니어링은 어렵습니다. 당신을 도울 수있는 표준 도구는 없으며, 당신이 그것을 알아낼 때까지 조사하고 시도하면됩니다. 저의 조언은 개발자에게 프로토콜 사양을 요청하고 그들이하려는 일을 지원하는 데 기꺼이 도움이되는지 확인하는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top