“네트워크가 대체 왜 이래?” 소리 지르기 직전에 잡은 동아줄, SmartSniff 삽질기

“그냥 좀 보면 안 될까?”라는 간절함에서 시작된 검색

사무실에서 개발이나 운영 업무를 하다 보면 꼭 한 번씩 혈압이 오르는 순간이 온다. 분명 코드는 완벽한데 데이터가 안 들어올 때, 혹은 서버 팀에서는 보냈다고 하는데 내 쪽엔 아무것도 안 찍힐 때 말이다. 로그를 뒤져봐도 ‘연결 끊김’ 같은 성의 없는 메시지만 떠 있고, 그 중간 통로에서 대체 무슨 대화가 오가는지는 알 길이 없다. 이럴 때마다 누가 옆에서 실시간으로 네트워크 패킷을 좀 읊어줬으면 좋겠다는 생각을 한다.

유명한 도구인 와이어샤크(Wireshark)를 떠올려보기도 했지만, 사실 그건 너무 무겁다. 설치하는 것부터 일이고, 막상 실행하면 쏟아지는 정보량이 너무 많아서 내가 원하는 ‘그 한 줄’을 찾는 게 더 고역이다. 그래서 조금 더 가볍고, 지금 당장 내가 주고받는 텍스트만 딱 볼 수 있는 도구를 찾기 시작했다. 그러다 눈에 들어온 게 SmartSniff였다. 이름부터가 뭔가 영리하게 냄새를 잘 맡아줄 것 같은 느낌이라 일단 무작정 내려받았다.

설마 했는데 진짜 안 되네? Raw Sockets의 배신

SmartSniff를 실행하자마자 가장 먼저 고민에 빠진 건 패킷을 어떻게 잡을 것인가(Capture Method)였다. 옵션 중에 ‘Raw Sockets’라는 게 보였다. 설명을 읽어보니 별도의 드라이버 설치가 필요 없단다. 보안 정책이 까다로운 회사 PC에서 드라이버를 새로 설치하는 건 여간 눈치 보이는 일이 아니다. “오, 이거다!” 싶어서 바로 선택하고 시작 버튼을 눌렀다. 설치 과정 없이 바로 실행된다는 그 간편함에 취해 ‘역시 나는 도구를 잘 골라’라며 스스로를 대견해했다.

그런데 웬걸, 화면이 잠잠하다. 분명 브라우저를 띄우고 API를 호출하고 있는데 리스트에 아무것도 안 올라온다. 처음에는 필터를 잘못 설정했나 싶어서 이것저것 만져봤지만 여전히 정적만 흐른다. 한참을 헤매다 찾아보니, 윈도우 버전이나 네트워크 카드 환경에 따라 Raw Sockets 방식은 패킷을 제대로 못 잡아내는 경우가 허다하단다. 특히 속도가 조금만 빨라지거나 데이터 양이 많아지면 성능이 훅 떨어진단다. 설치 안 해도 된다고 좋아했더니만, 결국 알맹이 없는 깡통이었던 셈이다. 한 시간을 넘게 이 옵션만 붙잡고 씨름했는데, 결국 얻은 건 아무것도 없었다. 역시 세상에 공짜 점심은 없다는 교훈만 뼈저리게 느꼈다.

과거의 영광을 찾아서… Microsoft 드라이버라는 헛발질

두 번째 시도는 좀 더 ‘근본’ 있어 보이는 쪽으로 방향을 틀었다. 옵션 중에 ‘Microsoft Network Monitor Driver’라는 게 있었다. 마이크로소프트에서 만든 거라면 윈도우랑 찰떡궁합이겠지 싶었다. 그런데 이 드라이버는 기본으로 깔려 있지 않아서 수동으로 설치해야 한단다. 설명서를 보니 윈도우 XP 서비스 팩 2 지원 도구를 다운로드해서 ‘netcap.exe’를 실행하라느니 하는 소리가 써 있었다.

이때부터 무언가 잘못되었다는 걸 직감했어야 했다. 하지만 나는 이미 오기가 생길 대로 생겨버린 상태였다. 구글을 뒤져서 옛날 자료들을 찾고, 있지도 않은 CD-ROM 폴더를 상상하며 드라이버 파일을 찾아 헤맸다. 그러다 문득 정신이 번쩍 들었다. “잠깐, 지금이 2026년인데 내가 왜 윈도우 2000이나 XP에서나 쓰던 드라이버를 찾고 있지?” 내가 쓰고 있는 운영체제는 훨씬 최신 버전인데, 십수 년 전 유물을 어떻게든 살려보겠다고 덤비고 있었던 거다. 선택지가 눈앞에 있으니 일단 해봐야겠다는 생각에 매몰되어 정작 중요한 호환성 체크는 뒷전이었다. 헛웃음이 나왔다. 기술적으로 막힌 게 아니라 내 판단력이 막혔던 시간이었다.

결국은 정석대로, WinPcap이라는 귀찮은 선택

결국 돌고 돌아 가장 추천한다는 ‘WinPcap Capture Driver’를 설치하기로 했다. 처음부터 이걸 했으면 좋았겠지만, 왠지 모르게 ‘설치형’이라는 게 귀찮게 느껴져서 피했던 길이다. 하지만 이미 두 번의 실패로 만신창이가 된 상태라 더는 선택의 여지가 없었다. 공식 사이트에서 드라이버를 받고 설치하는 과정은 의외로 금방 끝났다.

설치 후 SmartSniff를 다시 켜고 WinPcap 모드로 시작을 누르니, 아까와는 비교도 안 될 정도로 시원하게 데이터가 쏟아져 들어오기 시작했다. HTTP 요청부터 DNS 조회까지, 네트워크의 흐름이 폭포처럼 쏟아졌다. 아, 이 단순한 진리를 왜 그렇게 멀리 돌아왔을까.

이 과정에서 한 가지 판단을 내렸다. 도구를 쓸 때는 ‘편한 방법’보다 ‘확실한 방법’을 먼저 택해야 한다는 것. Raw Sockets는 정말 급할 때나 써보는 최후의 수단이지, 메인으로 쓰기엔 너무 불안정하다는 걸 몸소 체험했다. 와이어샤크에 비하면 훨씬 가볍고 실행 속도도 빠르지만, 그래도 드라이버라는 기반이 없으면 제 성능을 못 낸다는 점은 변하지 않았다. 어떤 상황에서는 설치 없이 돌아가는 게 장점이지만, 지금처럼 정확한 데이터 분석이 필요한 상황에서는 오히려 그 편리함이 독이 되었다.

텍스트냐 16진수냐, 그 사이에서 헤매는 눈동자

이제 데이터는 잘 보이는데, 또 다른 고민이 생겼다. 보기 모드가 두 가지인데 뭘 써야 할지 감이 안 왔다. 처음에는 텍스트 위주의 ‘Ascii 모드’를 켰다. HTTP 통신 같은 걸 볼 때는 세상 편하다. 헤더 정보나 JSON 데이터가 눈에 쏙쏙 들어오니까. 서버랑 클라이언트가 나누는 대화가 마치 채팅 로그처럼 보여서 흐뭇했다. “그래, 내가 원한 게 바로 이거야!” 싶었다.

그런데 갑자기 이상한 문자들이 섞여 나오기 시작했다. 특정 서비스가 DNS 조회를 하거나 비텍스트 프로토콜을 쓸 때였는데, Ascii 모드에서는 다 깨진 글자로만 보였다. 당황해서 ‘헥스 덤프(Hex Dump) 모드’로 바꿨더니 이번에는 까만 바탕에 16진수 숫자들만 가득했다. 숫자를 보고 이게 무슨 데이터인지 머릿속으로 변환하려니 쥐가 날 것 같았다.

결국 상황에 따라 모드를 계속 스위칭해야 했다. HTTP처럼 뻔한 건 텍스트로, 알 수 없는 암호 같은 건 헥스로 놓고 분석하는 식이다. 이 과정이 처음에는 신기했지만 시간이 갈수록 번거로워졌다. 도구가 알아서 프로토콜별로 예쁘게 파싱해주는 게 아니라, 내가 보고 싶은 면을 수동으로 선택해야 하니까. ‘이 부분은 시도해봤지만 나랑 안 맞네’ 싶으면서도 대안이 없어서 계속 만지게 되는 묘한 애증의 관계가 형성됐다.

그래서 이제 행복하냐고 묻는다면…

SmartSniff를 써서 업무 효율이 올라갔냐고? 음, 절반은 그렇고 절반은 아니다. 확실히 가벼워서 메신저 켜두듯이 구석에 띄워놓고 보기엔 좋다. 서버 팀이랑 싸울 때 “여기 보세요, 패킷에 이렇게 찍히잖아요!”라며 캡처 화면을 보낼 수 있는 강력한 무기가 생긴 건 분명하다.

하지만 여전히 해결되지 않은 문제가 산더미다. 가장 큰 문제는 HTTPS다. 요즘 보안 때문에 웬만한 통신은 다 암호화되어 있는데, SmartSniff는 이걸 복호화해서 보여주는 기능이 약하다. 텍스트 모드로 봐도 의미 없는 문자열만 가득할 때면 허탈함이 밀려온다. 결국 이럴 때는 다시 무거운 와이어샤크를 꺼내거나 별도의 프록시 도구를 써야 한다.

결국 SmartSniff는 ‘가볍게 찍어보기엔 최고지만, 깊이 들어가면 한계가 뚜렷한 도구’라는 결론에 도달했다. 완전히 이 도구 하나로 정착할 수 있을 줄 알았는데, 현실은 여전히 상황에 맞춰 이 도구 저 도구를 전전하고 있다. 그래도 뭐 어떤가, 적어도 ‘Raw Sockets’나 ‘XP 시절 드라이버’ 같은 함정에는 다시 빠지지 않을 만큼은 성장했으니 그걸로 만족하기로 했다. 아직도 내 모니터 한구석에는 알 수 없는 데이터들이 흐르고 있고, 나는 여전히 그 의미를 찾기 위해 헥스 코드를 노려보고 있다. 아마 내일도, 모레도 이 삽질은 계속될 것 같다.

Similar Posts

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다