I. SnifferFox란 무엇입니까?
II. SnifferFox 작동 방식
III.SnifferFox 디렉토리 구조
IV.SnifferFox 기능 설명.
V. SnifferFox 기능
VI. SnifferFox 확장
Ⅶ.저자
Ⅷ. 결론
I. 스니퍼폭스(SnifferFox)란?
SnifferFox는 Windows 플랫폼에서 실행되는 스니퍼(Sniffer)입니다. 로컬 컴퓨터의 지정된 네트워크 카드를 통과하는 모든 데이터 패킷을 가로채서 이러한 패킷에 대한 통계를 분석하고 수집하는 데 사용됩니다.
SnifferFox는 오픈소스 프로젝트인 Winpcap을 기반으로 개발되었으며 원본 데이터 패킷을 얻기 위해 이를 선택했습니다(소켓은 IP 계층에서 작동하고 ARP 및 RARP 패킷을 얻을 수 없기 때문에 사용하지 않았습니다). 따라서 SnifferFox를 설치하기 전에 Winpcap을 설치하십시오. 그렇지 않으면 네트워크 카드를 찾을 수 없다는 메시지가 나타납니다.
우리는 이 스니퍼를 개발하기 위해 Borland C++Builder를 선택했습니다. 거의 2개월의 노력 끝에 우리는 거의 6,000줄의 코드를 작성했고(docs/codestat.txt 파일에 자세한 통계가 나와 있습니다) 마침내 소프트웨어가 기본적으로 개발되었습니다. 이제 알파 버전을 출시할 수 있습니다. 하지만 아직 발견하지 못한 오류가 많을 수 있으며, 향후 버전에서는 수정될 수 있습니다.
SnifferFox는 무료이며 설치나 등록이 필요 없는 친환경 소프트웨어입니다. 우리는 귀하의 컴퓨터 레지스트리를 절대 수정하지 않으며 직접 실행할 수 있음을 약속합니다(물론 귀하의 편의를 위해 설치 패키지를 만들었습니다).
II. SnifferFox의 작동 원리 소프트웨어는 먼저 네트워크 카드를 무차별 모드로 설정한 다음 네트워크 카드에서 수신한 데이터를 획득하고 TCP/IP 프로토콜에 따라 데이터 패킷을 분석하고 사용자의 요구 사항에 따라 일부 패킷을 필터링합니다. 그런 다음 나머지 패킷을 필터링합니다. 데이터 패킷은 버퍼(사용자 컴퓨터의 메모리 크기에 따라 수동으로 설정할 수 있는 지정된 크기의 메모리 블록)에 기록되고 사용자 인터페이스에 표시됩니다. 버퍼가 가득 차면 시스템이 자동으로 버퍼에 데이터를 씁니다.
아래 그림은 간단한 그림입니다.
SnifferFox는 멀티 스레드 시스템으로 크게 3개의 스레드(구현 중에 실제로 2개만 사용됨), 패킷 캡처 스레드(Sniffer Thread), 프로토콜 분석 및 필터링 스레드, 사용자 인터페이스로 나눌 수 있습니다. 데이터 링크 계층에서 작업하면 원본 데이터 프레임을 얻을 수 있으므로 SnifferFox는 ARP 및 RARP와 같은 기본 프로토콜을 지원할 수 있습니다.
Sniffer가 가로채는 패킷의 데이터 양이 상당히 크기 때문에 이러한 모든 패킷을 메모리에 저장하는 것은 비현실적이므로 여기서는 운영 체제의 두 가지 개념인 캐시와 버퍼를 소개합니다. 캐시는 데이터 패킷을 임시로 저장하는 연결 목록입니다. 사용자의 컴퓨터에 너무 많은 부담을 주지 않기 위해 이 연결 목록의 최대 길이를 5000개로 제한합니다. 이 연결된 목록의 길이가 사용자가 설정한 상한에 도달하면 시스템은 자동으로 연결된 목록의 데이터를 버퍼에 쓴 다음 캐시를 지웁니다.
버퍼는 데이터 패킷이 하나씩 구성된 바이너리 파일입니다. 각 패키지를 레코드라고 부를 수도 있습니다. 데이터 패킷의 크기를 결정할 수 있는 방법이 없기 때문에 길이는 고정되어 있지 않습니다.
ID(4바이트), 세그먼트 오프셋(4바이트), 데이터 프레임 관련 정보(16바이트), 데이터(길이는 가변적이지만 그림의 계산식에 따라 계산할 수 있음)의 4부분으로 구성됩니다. 세그먼트 오프셋은 레코드 길이로 주로 레코드의 끝 위치와 다음 레코드의 시작 위치를 결정하는 데 사용됩니다.
III.SnifferFox 디렉터리 구조 물론 여기서 설명해야 할 것은 릴리스 버전과 개발 버전의 디렉터리 구조가 다르다는 것입니다. 그러나 릴리스 버전의 디렉터리는 더 복잡합니다. 모두 릴리스 버전에 있으므로 여기서는 릴리스 버전과 비교할 수 있는 개발 버전의 디렉터리만 소개합니다(docs/dir.txt 참조).
+스니퍼폭스
+Bin 컴파일러에 의해 컴파일된 바이너리 파일에는 동적 링크 라이브러리 파일이 있습니다.
+구성 구성 파일
+이미지 사진
+컴파일러가 생성한 Obj 중간 파일
+Docs 문서 디렉토리
+프로젝트 프로젝트 디렉토리
+핵심 핵심 코드, 주로 자체 정의된 데이터 구조 및 구현
+그래픽 인터페이스 구현을 위한 GUI 코드
+Lang 다국어 지원
+임시 파일을 저장하는 데 사용되는 캐시 캐시 디렉터리
+3Com 시스템에서 사용되는 타사 컨트롤
+사용자 파일을 저장하는 데 사용되는 사용자 디렉토리 저장
IV.SnifferFox 기능 설명
1. 데이터 패킷 차단 사용자는 컴퓨터의 네트워크 카드를 지정한 다음 SnifferFox를 사용하여 이 네트워크 카드를 통과하는 모든 데이터 패킷을 차단할 수 있습니다. 시스템은 이러한 패키지를 차단한 후 필요에 따라 패키지의 요약 정보를 목록 형식으로 표시하고 패키지의 특정 정보를 패널 형식으로 표시합니다.
2. 패킷 필터링: 요구 사항을 충족하는 패킷을 얻은 후 다양한 요구 사항에 따라 프로토콜 필터와 IP 주소 필터라는 두 가지 필터를 정의할 수 있습니다. 이 두 필터는 동시에 작동합니다. 이 두 가지 요구 사항을 충족하는 패킷만 유지되고 요구 사항을 충족하지 않는 다른 패킷은 삭제됩니다.
3. 패킷 통계 사용자가 가로채는 패킷의 분포를 쉽게 이해할 수 있도록 다양한 프로토콜 수준에 따라 패킷의 비율과 수를 계산하는 데이터 패킷 통계 기능을 제공합니다. 다이어그램 형태로 표시합니다.
4. 프로토콜 분석 패킷 유형에 따라 다양한 상황에 따른 패킷 데이터를 분석하고 표시합니다. SnifferFox는 데이터 링크 계층에서 애플리케이션 계층까지 다양한 프로토콜 유형을 지원합니다.
애플리케이션 계층 아래의 프로토콜을 자세히 분석하고 데이터 패킷의 모든 필드를 제거했습니다. 애플리케이션 레이어의 경우 현재까지 112개의 프로토콜만 확인됐다. 그러나 애플리케이션 레이어 프로토콜이 너무 많고 각 프로토콜이 상당히 복잡해 심층적인 분석을 진행하지 못했다.
5. 스마트 정렬 사용자가 지정된 패키지를 신속하게 찾을 수 있도록 스마트 정렬 기능을 제공합니다. 사용자가 데이터 패킷 가로채기를 중지하면 목록의 필드 중 하나만 클릭하면 시스템이 자동으로 정렬됩니다. 목록의 데이터를 오름차순으로 정렬하려면 다시 클릭하여 정렬 방법을 전환하세요.
6. 네트워크 카드 정보 감지 시스템은 시스템의 네트워크 카드 수(가상 네트워크 카드 포함)를 자동으로 감지하고 이를 메뉴 목록에 동적으로 표시할 수 있습니다. 동시에 네트워크 카드의 관련 정보를 감지할 수 있습니다.
7. 패킷을 가로채기 위한 데몬 프로세스로 테스트한 후 SnifferFox는 컴퓨터에서 며칠 동안 충돌 없이 실행될 수 있습니다. 따라서 우리는 이를 특수 패킷 가로채기 프로그램으로 사용하여 데몬 프로세스처럼 실행할 수 있습니다. 가로채는 패킷이 수 기가바이트 등 너무 많은 경우에는 Buffer 파일을 덩어리로 나누지 않았기 때문에 다소 어렵습니다. 이 기능은 향후 버전에서 추가될 수 있습니다.
8. 동적 상태 표시 패키지를 가로챌 때 사용자의 다른 작업에 영향을 주지 않기 위해 SnifferFox를 최소화할 수 있습니다. 그러면 작업 표시줄에서 자동으로 사라지고 작동하는 동안 작은 트레이 아이콘만 표시됩니다. 동적으로 중지되면 정지됩니다. 또한 기본적으로 창 상단에 배치되는 시스템 상태를 표시하는 작은 부동 창도 만들었습니다.
9. 데이터 패킷 저장 및 로드 사용자는 차단된 패킷을 지정된 파일(확장자 *.sni)에 저장한 후 필요할 때 SnifferFox를 통해 로드할 수 있습니다. 전혀 차이가 없으며 어떤 페이지를 볼 것인지 동적으로 결정할 수도 있습니다(시스템에는 이미 페이징 기능이 있으며 이는 동적 페이징입니다. 각 페이지의 레코드 수를 직접 정의할 수 있습니다).
10. 저장된 사용자 옵션 및 시스템 옵션의 내용은 config/config.ini 파일에 저장됩니다. 이 파일은 사용자 설정(예: 인터페이스, 언어 등)이 변경되면 변경 사항이 파일에 기록됩니다. 파일이며 다음에 시스템이 실행될 때 사용되며 이러한 설정에 따라 자동으로 응답합니다.
V. SnifferFox 기능
1. 단순하고 실용적입니다. 시스템의 설계와 구현은 상대적으로 복잡하지만 사용자는 단순한 시스템과 실용적인 시스템을 선호합니다.
2. 아름다운 인터페이스
SnifferFox의 인터페이스에 대해서는 말할 것도 없습니다. 시스템에는 5가지 표준 인터페이스(Winxp, MacOS, Protein, DeepBlue, BlueGrass)가 포함되어 있으며 시스템을 다시 시작하지 않고도 제때에 교체할 수 있으며 완전히 교체됩니다. (물론 이는 타사 컨트롤 덕분입니다).
3. 다국어 지원 우리는 시스템을 설계할 때 이 문제를 고려했기 때문에 SnifferFox 자체가 다국어를 지원하므로 해당 언어로 Lang/English만 번역하면 됩니다. . 시스템은 이미 중국어와 영어를 지원하며 쉽게 전환할 수 있습니다.
4. 확장성이 비교적 좋습니다. 언어, 인터페이스, 프로토콜 측면에서 확장성을 충분히 고려했습니다. 따라서 이 버전을 기반으로 새 버전을 개발하는 것은 상대적으로 쉽습니다. 이를 통해 기존 코드를 매우 효과적으로 재사용할 수 있습니다.
5. 조작의 편의성 이것은 우리가 많이 고려하는 문제입니다. 우리는 사용자가 편리하고 쉽게 사용할 수 있도록 시스템의 조작 방법을 사람들의 습관과 일치시키기 위해 최선을 다하고 있습니다.
6. 비교적 많은 수의 프로토콜을 지원합니다. 이더넷에서 SnifferFox는 TCP/IP 제품군의 애플리케이션 계층 아래에 있는 거의 모든 프로토콜을 분석했으며 112개의 애플리케이션 계층 프로토콜을 인식할 수 있습니다.
VI. SnifferFox 확장
SnifferFox를 확장하는 것은 그 구조를 잘 알지 않는 한 쉬운 일이 아닙니다. 물론 지금 이 문서를 읽는 것만으로는 어렵습니다. 이를 3가지 측면으로 확장할 수 있습니다.
1. 프로토콜 확장
SnifferFox는 객체 지향 방법을 사용하여 설계 및 구현을 분석하므로 이를 확장하려면 해당 프로토콜 분석 클래스를 작성하여 문제를 해결한 다음 이를 메인 프로그램에 연결해야 합니다. 이를 위해서는 현재 시스템 구조에 대한 자세한 이해가 필요합니다.
2. 인터페이스 확장은 타사 컨트롤 SUIPack(3com 디렉터리)을 변경하여 수행됩니다. 자세한 내용은 SUIPack 관련 문서를 참조하세요.
3. 언어 확장 이것은 SnifferFox의 확장 기능 중 가장 간단한 부분입니다. Lang/english 파일을 직접 번역하면 됩니다.
Ⅶ. 저자
FoxBackBone 팀: zhengsh, gourf
VIII.결론 SnifferFox는 비록 작은 소프트웨어일 뿐이지만 이 문서를 통해서는 그 일부만을 이해할 수 있으므로, 자세히 이해하고 싶다면 이 문서만으로는 충분하지 않습니다. 더 읽어볼 내용은 소스 코드뿐입니다. 시스템 설계를 자세히 작성할 시간이 많지 않기 때문입니다.
SnifferFox를 사용한 후 칭찬, 비판 또는 기타 측면에 대한 제안이나 아이디어가 있으시면 이메일(shaohui_1983#163.com, gouruifeng_529#sohu.com)로 피드백을 보내주세요. 귀하의 지원에 감사드립니다.
또한 프로그램에는 Suipack 컴포넌트와 WinPcap이 사용됩니다. 이 사이트에서 다운로드하십시오.