I. ¿Qué es SnifferFox?
II. Cómo funciona SnifferFox
III. Estructura del directorio SnifferFox
IV.Descripción de la función SnifferFox.
V. Características de SnifferFox
VI.Extender SnifferFox
Autor
VIII.Conclusión
I. ¿Qué es SnifferFox?
SnifferFox es un rastreador (Sniffer) que se ejecuta en la plataforma Windows. Se utiliza para interceptar todos los paquetes de datos que pasan a través de la tarjeta de red especificada de la computadora local y analizar y recopilar estadísticas sobre estos paquetes.
SnifferFox está desarrollado en base a Winpcap, que es un proyecto de código abierto. Para obtener los paquetes de datos originales, lo elegimos (porque Socket funciona en la capa IP y no puede obtener paquetes ARP y RARP, por lo que no lo usamos). Por lo tanto, instale Winpcap antes de instalar SnifferFox; de lo contrario, se le indicará que no se puede encontrar la tarjeta de red.
Elegimos Borland C ++ Builder para desarrollar este Sniffer. Después de casi 2 meses de arduo trabajo, escribimos casi 6000 líneas de código (el archivo docs/codestat.txt tiene estadísticas detalladas) y finalmente el software se desarrolló básicamente. ahora podemos lanzar su versión Alpha. Sin embargo, es posible que todavía haya muchos errores que no hayamos descubierto y es posible que se corrijan en futuras versiones.
SnifferFox es un software gratuito y ecológico que no requiere instalación ni registro. Prometemos que nunca modificaremos el registro de su computadora y se puede ejecutar directamente (por supuesto, para su comodidad, hemos creado un paquete de instalación).
II. Principio de funcionamiento de SnifferFox El software primero configura la tarjeta de red en modo promiscuo, luego obtiene los datos recibidos por la tarjeta de red, analiza los paquetes de datos de acuerdo con el protocolo TCP/IP, filtra algunos paquetes de acuerdo con los requisitos del usuario y luego filtra los paquetes restantes. El paquete de datos se escribe en el búfer (un bloque de memoria de un tamaño específico, que se puede configurar manualmente de acuerdo con el tamaño de la memoria de la computadora del usuario) y se muestra en la interfaz de usuario. El búfer está lleno, el sistema escribirá automáticamente los datos en el búfer. Ir al almacenamiento externo.
La siguiente imagen es una ilustración sencilla.
SnifferFox es un sistema de subprocesos múltiples, que se puede dividir aproximadamente en 3 subprocesos (en realidad solo se usaron 2 durante la implementación), un subproceso de captura de paquetes (Sniffer Thread), un subproceso de filtrado y análisis de protocolos y una interfaz de usuario. Al trabajar en la capa de enlace de datos, puede obtener el marco de datos original, por lo que SnifferFox puede admitir protocolos subyacentes como ARP y RARP.
Dado que la cantidad de datos en los paquetes interceptados por Sniffer es bastante grande, no es realista almacenar todos estos paquetes en la memoria, por lo que aquí presentamos dos conceptos en el sistema operativo: caché y búfer. La caché es una lista vinculada que almacena temporalmente paquetes de datos. Para no sobrecargar demasiado la computadora del usuario, limitamos la longitud máxima de esta lista vinculada a 5000. Cuando la longitud de esta lista vinculada alcanza el límite superior establecido por el usuario, el sistema escribirá automáticamente los datos de la lista vinculada en el búfer y luego borrará la caché.
El búfer es un archivo binario que se compone de paquetes de datos uno por uno. También podríamos llamar a cada paquete un registro. Su longitud no es fija, principalmente porque no hay forma de determinar el tamaño del paquete de datos.
Consta de 4 partes, ID (4 bytes), desplazamiento de segmento (4 bytes), información relacionada con el marco de datos (16 bytes), datos (la longitud es variable, pero se puede calcular de acuerdo con la fórmula de cálculo en la figura). El desplazamiento del segmento es la longitud del registro, que se utiliza principalmente para determinar la posición final del registro y la posición inicial del siguiente registro.
III. Estructura de directorios de SnifferFox Por supuesto, lo que debemos explicar aquí es que la estructura de directorios de la versión de lanzamiento y la versión de desarrollo son diferentes. Hay más directorios en la versión de desarrollo y son más complejos, pero los directorios en la versión de lanzamiento lo son. todo está en la versión de lanzamiento, por lo que aquí solo presentamos el directorio de la versión de desarrollo, que se puede comparar con la versión de lanzamiento (consulte docs/dir.txt).
+Fox rastreador
+Bin El archivo binario compilado por el compilador tiene el archivo de biblioteca de enlace dinámico
+Archivo de configuración de configuración
+Imágenes fotos
+Archivo intermedio Obj generado por el compilador
+Directorio de documentos Docs
+ Directorio de proyectos de proyectos
+Código central, principalmente estructuras de datos autodefinidas y su implementación.
+Código GUI para implementar la interfaz gráfica.
+ Soporte multilingüe
+ Directorio de caché de caché, utilizado para almacenar archivos temporales
+Controles de terceros utilizados en el sistema 3Com
+Guardar directorio de usuario, utilizado para guardar archivos de usuario
IV.Descripción de la función SnifferFox
1. Intercepción de paquetes de datos Los usuarios pueden especificar la tarjeta de red de una computadora y luego usar SnifferFox para interceptar todos los paquetes de datos que pasan a través de esta tarjeta de red. Después de interceptar estos paquetes, el sistema mostrará la información resumida del paquete en forma de lista y la información específica del paquete en forma de panel según sea necesario.
2. Filtrado de paquetes: una vez que obtenemos los paquetes que cumplen con nuestros requisitos, podemos filtrar los paquetes interceptados según los diferentes requisitos, podemos definir 2 filtros diferentes: filtro de protocolo y filtro de dirección IP. Estos dos filtros funcionan al mismo tiempo. Solo se retendrán los paquetes que cumplan con estos dos requisitos y se descartarán otros paquetes que no cumplan con los requisitos.
3. Estadísticas de paquetes Para facilitar que los usuarios comprendan la distribución de paquetes interceptados, proporcionamos la función de estadísticas de paquetes de datos, que cuenta el porcentaje y la cantidad de paquetes según diferentes niveles de protocolo. Muéstrelo en forma de diagrama.
4. Análisis de protocolo Según el tipo de paquete, analizaremos y mostraremos los datos del paquete según diferentes situaciones. SnifferFox admite una gran cantidad de tipos de protocolos, desde la capa de enlace de datos hasta la capa de aplicación.
Los protocolos debajo de la capa de aplicación se analizaron en detalle y se eliminaron todos los campos del paquete de datos. En cuanto a la capa de aplicación, por el momento solo se han identificado 112 protocolos. Sin embargo, debido a que hay tantos protocolos de capa de aplicación y cada protocolo es bastante complejo, no hemos realizado un análisis en profundidad.
5. Clasificación inteligente Para facilitar que los usuarios encuentren rápidamente paquetes específicos, proporcionamos una función de clasificación inteligente. Cuando el usuario deja de interceptar paquetes de datos, solo necesita hacer clic en uno de los campos de la lista y el sistema los ordenará automáticamente. los datos en la lista. Para ordenar en orden ascendente, haga clic nuevamente para cambiar el método de clasificación.
6. Detectar información de la tarjeta de red El sistema puede detectar automáticamente la cantidad de tarjetas de red en el sistema (incluidas las tarjetas de red virtuales) y mostrarla dinámicamente en la lista del menú. Al mismo tiempo, puede detectar información relevante de la tarjeta de red.
7. Después de probarlo como un proceso demonio para interceptar paquetes, SnifferFox puede ejecutarse en la computadora durante varios días sin fallar. Por lo tanto, podemos usarlo como un programa especializado en interceptación de paquetes y ejecutarlo como un proceso demonio (por supuesto, esto tiene ciertas características). limitaciones Cuando hay demasiados paquetes interceptados, como varios gigabytes, es un poco difícil, porque en esta versión no hemos dividido el archivo de búfer en fragmentos. Esta característica se puede agregar en versiones futuras.
8. Visualización de estado dinámico Para no afectar el resto del trabajo del usuario al interceptar el paquete, podemos minimizar SnifferFox, y luego desaparecerá automáticamente en la barra de tareas y solo mostrará un pequeño ícono en la bandeja. Mientras está funcionando, su ícono parpadeará. dinámicamente y se congela cuando se detiene. Además, también creamos una pequeña ventana flotante para mostrar el estado del sistema, que se coloca en la parte superior de la ventana de forma predeterminada.
9. Guardar y cargar paquetes de datos. Los usuarios pueden guardar los paquetes interceptados en un archivo específico (extensión *.sni) y luego cargarlos a través de SnifferFox cuando sea necesario. De esta manera, los paquetes de datos y los paquetes interceptados se pueden ver allí. No hay ninguna diferencia, y también puede decidir dinámicamente qué página ver (el sistema ya tiene una función de paginación, y es paginación dinámica. Podemos definir el número de registros en cada página nosotros mismos).
10. El contenido de las opciones de usuario almacenadas y las opciones del sistema se guarda en config/config.ini, que es un archivo interno. Una vez que se cambian las configuraciones del usuario (como la interfaz, el idioma, etc.), los cambios se registrarán en el archivo. y se utilizará la próxima vez que se ejecute el sistema. Responderá automáticamente en función de esta configuración.
V. Características de SnifferFox
1. Simple y práctico nuestro objetivo es la simplicidad. Aunque el diseño y la implementación del sistema son relativamente complejos, preferimos que los usuarios vean un sistema simple y práctico.
2. Hermosa interfaz
No hay nada que decir sobre la interfaz de SnifferFox. El sistema contiene 5 conjuntos de interfaces estándar (Winxp, MacOS, Protein, DeepBlue, BlueGrass). La interfaz del sistema se puede reemplazar a tiempo sin reiniciar el sistema y es un reemplazo completo. (Por supuesto, esto es gracias a nuestros controles de terceros).
3. Compatibilidad con varios idiomas Tomamos en cuenta este problema al diseñar el sistema, por lo que SnifferFox admite varios idiomas. Podemos ampliarlo fácilmente. Solo necesitamos traducir el idioma/inglés al idioma correspondiente. . El sistema ya ofrece soporte para los idiomas chino e inglés, que se pueden cambiar fácilmente.
4. Tiene una escalabilidad relativamente buena. Hemos considerado completamente su escalabilidad en términos de lenguaje, interfaz y protocolo. Por lo tanto, es relativamente fácil desarrollar una nueva versión basada en esta versión. Esto le permite reutilizar muy bien el código existente.
5. Conveniencia de operación Este es un tema que consideramos mucho. Estamos haciendo todo lo posible para que el método de operación del sistema sea consistente con los hábitos de las personas, para que los usuarios lo encuentren conveniente y fácil de usar.
6. Admite una cantidad relativamente grande de protocolos En Ethernet, SnifferFox ha analizado casi todos los protocolos por debajo de la capa de aplicación de la familia TCP/IP y puede reconocer 112 protocolos de capa de aplicación.
VI.Extender SnifferFox
Ampliar SnifferFox no es una tarea fácil a menos que conozcas muy bien su estructura. Por supuesto, es difícil hacerlo con sólo leer este documento ahora. Podemos ampliarlo en 3 aspectos:
1. Extensión del protocolo
SnifferFox utiliza un método orientado a objetos para analizar el diseño y la implementación, por lo que para extenderlo, debe escribir la clase de análisis de protocolo correspondiente para resolver el problema y luego conectarlos en el programa principal. Esto requiere una comprensión detallada de la estructura del sistema actual.
2. La expansión de la interfaz se logra cambiando el control de terceros SUIPack (directorio 3com). Para obtener más información, consulte los documentos relevantes de SUIPack.
3. Expansión de idioma Esta es la parte más simple de la función de expansión en SnifferFox. Simplemente traduzca archivos Lang/inglés directamente.
Autor
Equipo FoxBackBone: zhengsh, gourf
VIII.Conclusión Aunque SnifferFox es sólo un pequeño software, sólo podemos entender una pequeña parte a través de este documento, por lo que si quieres entenderlo en detalle, definitivamente no es suficiente solo a través de este documento. La lectura adicional es solo el código fuente, porque no tenemos mucho tiempo para escribir el diseño del sistema en detalle.
Si tiene alguna sugerencia o idea sobre SnifferFox después de usarlo, ya sean elogios, críticas u otros aspectos, envíe sus comentarios a nuestro correo electrónico: shaohui_1983#163.com, gouruifeng_529#sohu.com, gracias por su apoyo.
Además, el componente Suipack y WinPcap se utilizan en el programa; descárguelos de este sitio