
정확히 어떤 프로그램이 어느 호스트로 바이트를 보내고 받는지 보여주는 단일 파일 네이티브 Windows 트레이 애플리케이션(C, Win32, 런타임 없음)입니다.
런타임이 필요 없는 단일 파일 네이티브 Windows 트레이 애플리케이션(C, Win32)으로, 어떤 프로그램이 어느 호스트로 바이트를 보내고 받는지 정확히 보여주고, Windows 연결 감사를 켜진 상태로 유지하며, 사용자 또는 AI 에이전트가 즉석에서 프로세스를 종료하거나 프로그램을 차단할 수 있게 하고, 명시적으로 허용한 프로그램만 사용할 수 있는 localhost 소켓을 통해 모든 것을 스트리밍합니다.
1.2에서는 Inspector가 추가되었습니다. 하나의 프로세스를 확대하여 그 연결(상태, RTT, 재전송, 연결 시간), 와이어에서 디코딩된 패킷(TLS SNI/ALPN, QUIC, DNS, HTTP), 프로세스 프로필(CPU, 메모리, 디스크, GPU, 사용자, 명령줄, 서명자) 및 타임라인(연결, 실패, 자식 프로세스, DLL 로드)을 확인할 수 있으며, pcapng 내보내기를 지원합니다. 이 모든 것은 Windows 자체의 커널 공급자와 ndiscap.sys에서 나오며, 설치할 드라이버는 없습니다.
1.3에서는 소켓이 동시에 여러 에이전트에 적합해졌습니다(SENTINEL.md의 Sentinel 설계). 명령이 워커 스레드에서 실행되므로 한 클라이언트의 느린 inspect가 더 이상 다른 클라이언트를 지연시키지 않습니다. 최대 4개의 pcapng 캡처가 동시에 실행되며, 프로세스당 하나입니다. conns는 모든 흐름을 페이지 단위로 넘기며 활성 흐름 또는 타임스탬프 이후로 접촉된 흐름으로 필터링할 수 있습니다. 감시자는 모든 프레임 대신 디코딩된 핸드셰이크만 요청할 수 있습니다. flowinfo 이벤트는 각 흐름의 SNI, ALPN, HTTP 요청 또는 TLS 버전이 디코딩되는 순간 이를 알립니다. 각 연결은 64개의 프로세스를 감시할 수 있습니다. inspect는 파일의 SHA-256을 보고하고 서명 검사를 캐시합니다.
실제 Hodometer 영상은 프로세스 검사, 패킷 캡처, 검증된 방화벽 차단을 거치는 통제된 업로드를 따라갑니다. Sentinel 부분은 명확히 라벨이 표시된 시뮬레이션 AI 조사이며, 점수와 드라이런 동작은 저장소 코드로 계산됩니다. 게시된 영상에서는 개인 정보와 무관한 프로세스가 제거되었습니다.
address:port를 표시합니다.
로컬 및 LAN 트래픽은 기본적으로 숨겨집니다(토글 버튼 또는 local on).host).history)
history.jsonl에 추가됩니다.auditpol /set /subcategory:"Filtering Platform Connection" /success:enable /failure:enable이 켜는 것). 꺼져 있으면
다시 켜고, 기록하고, 연결된 에이전트에 알립니다. 버튼으로 즉시 실행할 수도 있습니다.conn 이벤트로 전달합니다.spike 이벤트가 발생하고,
hodometer.log에 한 줄이 기록되며, 트레이 알림이 표시됩니다(최대 5분에 한 번).행을 더블 클릭하거나, 선택한 프로세스 검사를 누르거나, 마우스 오른쪽 버튼 메뉴를 사용하거나, 소켓을 통해
inspect <pid> show를 보내세요. 최대 8개의 검사기 창을 열 수 있으며, 각 창은 하나의 pid를 따릅니다.
capture_<name>_<pid>_<time>.pcapng에
기록하며, Wireshark에서 열립니다. 최대 4개의 캡처(프로세스당 하나, 또는 모든 프로세스에 대해 하나)를 동시에 실행할 수 있으며,
헤더에는 이 프로세스의 캡처가 표시되고 다른 캡처가 실행 중일 때 이를 알려줍니다. JSON 복사는 전체 Inspector 상태를 클립보드에
넣습니다(inspect 응답). 종료 및 차단은 이 프로세스에 작동합니다.작동 방식: 프레임은 Windows 자체의 ndiscap.sys(netsh trace 뒤에 있는 Microsoft-Windows-NDIS-PacketCapture 공급자)에서
두 번째 ETW 세션인 HodometerZoom을 통해 가져오며, 이 세션은 Inspector가 열려 있거나, 소켓
클라이언트가 감시 중이거나, 캡처가 실행 중일 때만(추가로 30초 유예 기간) 실행됩니다. 프레임에는 프로세스 id가 없으며, Hodometer는
커널 네트워크 이벤트로부터 구축한 연결 테이블에 대해 로컬 및 원격 주소와 포트를 대조하여 프레임을 귀속시킵니다.
이것이 pktmon과 Wireshark가 할 수 없는 프로세스별 패킷 처리를 가능하게 하는 방법입니다. SNI에서 학습한 이름은 DNS가 아무것도
밝혀내지 못한 경우(예: DNS over HTTPS를 사용하는 브라우저) 기본 테이블의 호스트 열도 채웁니다.
모든 새 소켓 클라이언트는 소유 프로세스(TCP 테이블을 통해), 실행 파일 경로 및 파일의 SHA-256으로 식별됩니다. 해당 프로그램이 이미 신뢰되지 않는 한, 표준 Windows 작업 대화 상자가 나타납니다(방패 아이콘, 세 개의 명령 링크 버튼):
trusted.jsonl에 기억되며, 파일이 변경되면 다시 묻습니다.intruder 이벤트 및 트레이 경고를 발생시킵니다.대화 상자는 60초 후 자동으로 거부되며(--auth-timeout N으로 변경 가능), 클라이언트가 포기하면 스스로 닫힙니다.
1분 이내에 연결 시도가 10회를 초과하면 5분 동안 프롬프트가 중단됩니다(알 수 없는 모든 것은 거부됨).
Hodometer는 관리자 권한으로 실행되므로 Windows의 무결성 격리(UIPI)가 비관리자 프로그램이 대화 상자를 직접 클릭하는 것을 막습니다.
클라이언트가 허용되기 전까지는 {"ev":"auth","status":"pending"}만 수신하며 해당 명령은
거부됩니다. pardon <substring>은 프로그램의 거부 기록과 해당 프로그램이 받은 방화벽 차단을 해제합니다.
build.ps1은 MinGW-w64(WinLibs gcc + windres)로 Hodometer.exe를 빌드하며, ws2_32, iphlpapi, dnsapi, advapi32,
shell32, user32, gdi32, comctl32, ole32, psapi, pdh, wintrust, crypt32, bcrypt를 정적으로 링크합니다. build.ps1 -Out Hodometer-new.exe는 Hodometer.exe가 실행 중일 때(실행 중인 exe는 잠김) 다른 이름으로 빌드합니다.install.ps1(관리자 권한으로 한 번 실행)은 로그온 작업 Hodometer(관리자 권한, UAC 프롬프트 없음)를 등록하고,
해당 작업을 시작하는 바탕 화면 바로 가기를 만들고, 이전 스크립트 감시자를 폐기한 뒤 앱을 시작합니다.--port N(기본값 48201), --tx MBPS, --rx MBPS, --auth-timeout SECONDS, --show, --local,
--no-audit-auto.Unregister-ScheduledTask -TaskName Hodometer -Confirm:$false를 실행하고 폴더와 바로 가기를 삭제합니다. 생성된 방화벽
규칙은 Hodometer block: ...으로 명명되며 Windows 방화벽에서 또는 unblock으로 제거할 수 있습니다.TCP 127.0.0.1:48201, 줄바꿈으로 구분된 JSON. 연결한 뒤 auth가 allowed를 반환할 때까지 기다린 후(사용자가 프롬프트를 클릭),
이벤트를 읽고 명령을 일반 단어 또는 JSON({"cmd":"kill","pid":123}, {"cmd":"block","path":"..."})으로 작성합니다.
명령은 네 개의 작업자 스레드에서 실행됩니다. 서로 다른 클라이언트는 병렬로 처리되며, 각 클라이언트의 명령은 보낸 순서대로
한 번에 하나씩 실행되므로 응답은 명령 순서대로 돌아옵니다(이벤트는 뒤섞이며, 응답은 reply 필드로 매칭). 모든 클라이언트에 걸쳐
128개를 초과하는 명령이 대기 중인 클라이언트는 {"reply":"error","error":"command queue full, try again"}을 받습니다. 최대 32개 클라이언트.
이벤트: