Ir al contenido
GitHub

Búsqueda y colecciones

El menú Buscar reúne las colecciones y la búsqueda recursiva por nombre o contenido de archivo. Ambas muestran los resultados en una lista ordenable con la ruta de origen de cada archivo, y ambas funcionan con el visor y la vista previa rápida.

  • Ctrl-F: busca en la carpeta actual y en todo lo que contiene. Todas las palabras deben coincidir: main rs encuentra main.rs, y a | b encuentra cualquiera de las dos. Una palabra en minúsculas no distingue mayúsculas; si tiene alguna mayúscula, la coincidencia es exacta. También puedes usar patrones glob como *.log, frases entre comillas, rutas con barra como src/lib y -word para excluir coincidencias, además de los filtros ext:rs,toml, type:file, type:dir, type:link, size:>10M, size:1M..50M, mod:<7d (modificado en la última semana), mod:>1y e in:src (una carpeta en cualquier parte de la ruta). Las búsquedas recientes aparecen bajo el formulario, primero las hechas en la misma carpeta; haz clic en una, o pulsa Ctrl-P y Ctrl-N en el campo de consulta, para reutilizarla. El diálogo se abre con la consulta y las opciones que dejaste en él la última vez, en la carpeta donde estás. Los nombres coinciden en cualquier alfabeto sean cuales sean las mayúsculas del patrón glob, y las letras acentuadas coinciden sin importar cómo las guarde el sistema de archivos. Las coincidencias cercanas a la carpeta de búsqueda aparecen primero, mientras se sigue leyendo el resto del árbol.
  • Alt-K: reúne los archivos marcados, o el archivo actual, en una colección en el otro panel. Una colección guarda referencias, así que el contenido de los archivos no se copia.
  • Alt-V: elige una colección guardada en una lista desplazable que muestra cuántas entradas tiene cada una y una estimación de su tamaño. Pulsa F7 o N para crear una. Las colecciones se conservan al reiniciar Borg.
  • Esc: oculta los resultados y conserva el cursor, la posición de desplazamiento, las marcas, el filtro y la agrupación.
  • Alt-Shift-R: vuelve a mostrar los resultados ocultos. Un análisis sigue en marcha mientras sus resultados están ocultos.
  • Alt-D: abre Tamaños de carpeta para buscar carpetas por tamaño total o por número de archivos. Los archivos ocultos se incluyen por defecto. Alt-D abre el diálogo de Ctrl-F en Totales de carpeta; cambia el campo Buscar para alternar entre los dos modos. Ctrl-C detiene un análisis.
  • Alt-S: calcula los tamaños de la carpeta seleccionada. Alt-Shift-D: abre un árbol de tamaños de la carpeta actual.
  • Alt-W: maximiza o restaura el panel de resultados activo. Los resultados se abren en un panel normal por defecto. Puedes hacer clic en los controles [+] (maximizar), [=] (restaurar) y [-] (plegar) de la barra de título. Plegar oculta la vista; Alt-Shift-R la recupera con su disposición y su selección.
  • Ctrl-S: filtra los resultados por nombre o ruta de origen. Un filtro vacío lo muestra todo.

Escribe texto en Con el texto en el diálogo de Ctrl-F para ver los archivos bajo la carpeta que lo contienen. El patrón de nombre sigue aplicándose, así que *.rs con fn main en Con el texto encuentra los archivos Rust que lo tienen. Las opciones junto al campo funcionan como en la barra de búsqueda: Alt-C distingue mayúsculas y minúsculas (si no, una búsqueda en minúsculas encuentra cualquier combinación), Alt-W busca palabras completas y Alt-R interpreta el texto como una expresión regular. También puedes hacer clic en las opciones. Ctrl-P y Ctrl-N en el campo recuperan las búsquedas recientes de la barra de búsqueda y de búsquedas anteriores. Una búsqueda de texto solo muestra archivos, así que no admite totales de carpeta ni un mínimo de archivos, y Tamaños de carpeta no tiene el campo Con el texto.

Cada resultado muestra la primera línea que coincide, con su número de línea, en la columna Coincidencia, y la línea de estado añade el número de línea a la ruta del archivo. F3 abre el archivo en el visor en esa coincidencia, con la barra de búsqueda abierta con la consulta, para que Enter pase a la siguiente, y Ctrl-Q lo muestra ahí en la vista rápida, con la consulta marcada. Los archivos Markdown y JSON se abren como código fuente en ambos, porque la búsqueda leyó el archivo tal cual, y s cambia a la vista formateada. F4 abre el archivo en el editor de Borg en esa coincidencia, con la coincidencia seleccionada y la barra de búsqueda abierta con la consulta, y Alt-E hace lo mismo en el otro panel, para que los resultados sigan a la vista. Borg lee los archivos en segundo plano, y la línea de contexto cuenta los archivos leídos. Los archivos binarios (un byte NUL en los primeros 8 KiB) y los de más de 64 MiB quedan sin leer y cuentan como binarios o demasiado grandes. Ctrl-C detiene la búsqueda, que se para en 20.000 archivos como cualquier búsqueda.

Ctrl-R en los resultados, o Reemplazar en archivos… en el menú Archivo, reemplaza el texto en los archivos marcados, o en todos los archivos que muestran los resultados si no hay ninguno marcado. Escribe lo que va en su lugar y pulsa Enter; deja el campo vacío para quitar el texto. Una segunda pregunta indica el texto y los archivos, y empieza en No. Pulsa Y para cambiarlos. Borg no guarda una copia del texto anterior. Los interruptores de la búsqueda se aplican, así que una búsqueda de palabras completas reemplaza palabras completas, y con una expresión regular $1 devuelve el primer grupo. Borg escribe cada archivo como guarda su editor, así que los permisos y los enlaces se mantienen. Omite los archivos que no son texto, que pasan de 32 MiB o que cambiaron mientras la tarea se ejecutaba. La tarea aparece en Alt-J, y los resultados se actualizan cuando termina.

Pon Buscar en Coincidencias de reglas en el diálogo de Ctrl-F para analizar los archivos bajo la carpeta con reglas YARA: las que incluye Borg y las tuyas. El patrón de nombre, el Tamaño mínimo y Omitir resultados de compilación, cachés y archivos ignorados siguen aplicándose. Son las reglas las que deciden qué buscar, así que el diálogo deja de mostrar Con el texto y Mínimo de archivos.

Cada resultado muestra en la columna Coincidencia la regla más grave que coincide con el archivo, cuántas más coinciden y los primeros bytes que encontró esa regla, como texto entre comillas o en hexadecimal. F3 abre el archivo en el visor en esos bytes, con la barra de búsqueda rellenada con ellos, y F4 y la vista rápida también se abren ahí. La línea de contexto cuenta los archivos analizados y las reglas usadas. Los archivos de más de 64 MiB quedan sin leer y cuentan como demasiado grandes, y el análisis se para en 20.000 archivos como cualquier búsqueda. Ctrl-C lo detiene.

Las reglas propias de Borg buscan:

  • reverse_shell: una shell interactiva a través de /dev/tcp, nc o socat ejecutando una shell, o una shell lanzada en un pseudoterminal.
  • download_and_run: un script descargado y enviado directamente a una shell por una tubería.
  • decode_and_run: base64 decodificado y ejecutado como comando de shell o como código Python.
  • crypto_miner: la dirección de un pool de minería, o la configuración de un minero común.
  • upx_packed: un ejecutable empaquetado con UPX, que se desempaqueta a sí mismo en memoria.
  • execve_shellcode: la ruta de la shell que construye el código de un exploit antes de iniciar una shell.
  • ssh_key_planted: una clave pública añadida a un archivo authorized_keys.
  • reboot_job_fetch: una tarea cron que se ejecuta en cada arranque y descarga, decodifica o ejecuta algo desde una carpeta temporal.
  • password_prompt: un diálogo de AppleScript que pide una contraseña con la respuesta oculta, como hacen los programas que roban datos en macOS.
  • launch_agent_from_temp: un agente o daemon de arranque de macOS que inicia un programa desde una carpeta temporal o compartida.
  • preload_write: una escritura en /etc/ld.so.preload, que carga una biblioteca en todos los programas de Linux.
  • history_wiping: el historial de la shell desactivado, o los registros del sistema vaciados.
  • agent_unattended: un agente de programación con IA iniciado con las aprobaciones desactivadas, como hizo el ataque a la cadena de suministro de Nx para buscar secretos en las máquinas.
  • hidden_prompt: una serie de caracteres de etiqueta Unicode invisibles, que pueden ocultar instrucciones para modelos de IA en prompts, archivos de reglas y páginas web.
  • pickle_runs_code: un pickle, el formato en que Python y PyTorch guardan modelos, que ejecuta un comando al cargarse.

Pon tus propias reglas en la carpeta rules junto a config.toml: ~/.config/borg-commander/rules, o la misma carpeta bajo $XDG_CONFIG_HOME o $BORG_CONFIG_DIR. Borg lee todos los archivos .yar y .yara que hay ahí y en las carpetas inferiores, cada uno en su propio espacio de nombres, así que dos archivos pueden usar los mismos nombres de reglas. Cada archivo se compila por separado. Un archivo con un error se omite entero, la línea de estado lo nombra con el mensaje del compilador, la línea de contexto cuenta los archivos omitidos y los demás archivos siguen funcionando. Como cada archivo se carga por separado, un archivo que usa include también se omite, y los archivos que incluye funcionan por su cuenta.

Las reglas pueden importar los módulos hash, math, string, time, elf, macho, pe, dotnet y dex; un archivo que importa magic, cuckoo o console se omite. Las variables filename, filepath y extension contienen el nombre, la ruta y la extensión del archivo analizado, como esperan los conjuntos de reglas escritos para THOR y LOKI, y filetype y owner quedan vacías. El metadato severity de una regla fija la importancia de una coincidencia: alert, critical o high dan una alerta, warning, medium o suspicious una advertencia, y notice, low o info un aviso. Sin él, un score de 80 o más da una alerta, de 60 o más una advertencia, y por debajo un aviso. Una regla sin ninguno de los dos cuenta como advertencia. Sus campos description y false_positives aparecen con cada coincidencia.

Borg no incluye conjuntos de reglas públicos, porque sus licencias varían. Descarga los que te merezcan confianza en la carpeta de reglas y revisa cada licencia antes de usarlos en el trabajo:

Las reglas coinciden con patrones de bytes y no saben nada de intenciones. Los instaladores, las herramientas de seguridad y sus datos de prueba también coinciden, y un archivo con el que no coincide ninguna regla puede ser malicioso igualmente. Toma las coincidencias como pistas. Analizar la memoria con reglas explica lo que un análisis no puede ver.

Pon Buscar en Ejecutables empaquetados en el diálogo de Ctrl-F para listar los programas bajo la carpeta cuyo código es tan denso como los bytes comprimidos o cifrados. Los empaquetadores y los protectores dejan código así, igual que el malware que oculta su código hasta que se ejecuta. Borg lee las partes de cada archivo ELF, Mach-O y PE que el cargador mapea como ejecutables, incluida cada parte de un binario Mach-O universal, y mide la entropía de hasta 1024 bloques de 4 KiB repartidos de forma uniforme por ellas. Un programa aparece en la lista cuando al menos el 70 % de esos bloques llega a 7,2 bits por byte. El código compilado de la forma habitual queda muy por debajo. El patrón de nombre, el Tamaño mínimo y Omitir resultados de compilación, cachés y archivos ignorados siguen aplicándose, y el diálogo deja de mostrar Con el texto y Mínimo de archivos.

La columna Coincidencia indica la proporción de bloques con entropía alta y la entropía más alta encontrada, como “97% alta · máx. 8”. F3 abre el programa en las filas hexadecimales del visor, en el primer bloque con entropía alta, con la franja de entropía que describe Visor y vista rápida al lado. La línea de contexto cuenta los programas leídos y los demás archivos, en los que Borg no sabe encontrar código. Ctrl-C detiene la búsqueda, que se para en 20.000 archivos como cualquier búsqueda. Un programa empaquetado solo muestra su código real mientras se ejecuta, y el Análisis de entropía de todos los procesos examina los programas de esa forma.

Haz clic en el encabezado de una columna para ordenar por ella, y otra vez para invertir el orden. Los menús Izquierda y Derecha también permiten ordenar, y el menú Buscar añade la ordenación por carpeta de origen y la agrupación por carpeta o por tipo de archivo. Enter sobre el encabezado de un grupo lo pliega; Insert marca los archivos coincidentes que contiene. Las marcas se conservan al ordenar o filtrar, y el pie también cuenta los archivos marcados que el filtro oculta.

F3 y Ctrl-Q abren el archivo original y, tras una búsqueda de texto, lo abren en su primera coincidencia. La vista rápida sigue al cursor por los resultados y muestra cada archivo en su coincidencia, con la consulta marcada como la marca la barra de búsqueda. Alt-E abre el archivo en el editor de Borg en el otro panel, para que los resultados sigan a la vista. Esc o F10 cierra ese editor y devuelve el foco a los resultados, y la vista rápida vuelve si estaba abierta antes. F5 copia a una carpeta real; si el otro panel es una colección, F5 añade referencias a ella. F6 necesita una carpeta real como destino. En una colección, F8 quita referencias y deja los archivos intactos; en los resultados de búsqueda, F8 pide confirmación para eliminar los archivos originales. Shift-F8 también elimina los archivos originales desde una colección, tras confirmarlo. Si marcas una carpeta y archivos que contiene, la tarea procesa la carpeta una sola vez. Mostrar original o Alt-O abre la carpeta del archivo en el otro panel, con el cursor en el archivo. Left o Esc ocultan los resultados, y Alt-Shift-R los recupera tal como los dejaste. Tab cambia de panel incluso si el shell tiene un comando a medio escribir. El shell siempre permanece en una carpeta real. F10 siempre pregunta antes de salir.

Por ahora, las acciones de Git y de archivos comprimidos solo funcionan en paneles de carpetas reales. Para usarlas con un archivo de una colección, abre antes su carpeta con Mostrar original.

La búsqueda lee los nombres de archivo y los metadatos en un proceso en segundo plano que puedes cancelar, y se detiene al llegar a 20 000 coincidencias. La línea de contexto indica si la búsqueda ha terminado, los errores y las entradas omitidas, y si se alcanzó ese límite. Las carpetas ocultas solo se recorren cuando Mostrar archivos ocultos está activado. La búsqueda no sale del sistema de archivos donde empezó y no sigue enlaces simbólicos a carpetas. La ventana de búsqueda permite limitar los resultados a archivos o a carpetas y fijar un tamaño mínimo.

Elige Totales de carpeta para medir todos los archivos que hay bajo cada carpeta antes de filtrar por nombre, tamaño o número mínimo de archivos. Borg conserva las 20 000 carpetas coincidentes más grandes y las ordena por tamaño; haz clic en Archivos para ordenarlas por número de archivos. Usa un patrón como node_modules o *cache*, o * para ver todas las carpetas bajo la carpeta de inicio.

Los totales suman el contenido de los archivos. Al eliminar una carpeta, el espacio en disco que se libera puede ser otro. Las carpetas anidadas también cuentan en los totales de sus carpetas superiores. Nunca se siguen enlaces simbólicos, los análisis no salen del sistema de archivos donde empezaron y una carpeta que se contiene a sí misma (mediante un montaje bind o una carpeta con enlace duro) se cuenta una sola vez. Cuando un total está incompleto por uno de estos límites, o porque no se pudo leer o se dejó fuera una subcarpeta, se muestra con ≥. Los análisis de carpetas solo leen metadatos y no abren el contenido de los archivos. Los resultados aparecen cuando termina la medición, y puedes cancelar el análisis en cualquier momento.

Árbol de tamaños de carpetas muestra en el panel actual el total de la carpeta de inicio y de sus subcarpetas. Right despliega una rama, o entra en ella si ya está desplegada; Left pliega una rama o selecciona su carpeta superior. Enter abre la propia carpeta. Haz clic en la flecha de una rama para plegarla o desplegarla, o en el encabezado de una columna para ordenar por nombre, tamaño o número de archivos las carpetas del mismo nivel. Esc oculta el árbol, y Alt-Shift-R recupera sus ramas, marcas y cursor. Las operaciones con archivos actúan sobre las rutas reales, y si marcas una carpeta y una subcarpeta suya, una tarea de copia o eliminación solo recibe la carpeta.

Mientras Omitir resultados de compilación, cachés y archivos ignorados está marcado, las búsquedas por nombre omiten las carpetas generadas: node_modules, .git, las cachés y los entornos virtuales de Python, carpetas como target y dist que están junto a un archivo de compilación (Cargo.toml, package.json) y cualquier carpeta marcada con un archivo CACHEDIR.TAG. También omiten los archivos excluidos por .gitignore, .ignore, .rgignore o .borgignore, y los patrones glob de [search] exclude.

Para cambiar lo que se deja fuera, pulsa F4 en el diálogo de búsqueda o haz clic en F4 Editar. Puedes activar o desactivar las carpetas generadas y los archivos de exclusión, y añadir (Ins), editar (Enter) o quitar (Del) patrones. Los cambios se guardan en el archivo de configuración. Una carpeta excluida sigue apareciendo si su propio nombre coincide, y la línea de contexto indica cuántas carpetas se dejaron fuera. Añade excluded:yes a una consulta para buscar en todo por una vez, o hidden:yes para incluir los archivos ocultos. Los análisis de tamaño siempre lo leen todo.

En macOS, las búsquedas y los análisis de tamaño que empiezan por encima de ~/Library/Containers y ~/Library/Group Containers los omiten: leer ahí hace que macOS retenga la lectura hasta que alguien responda si se permite acceder a los datos de otra app. Una búsqueda que empieza dentro de una de estas carpetas sí la lee.

El historial de búsqueda se queda en esta computadora y solo tú puedes leerlo. Define history = false en [search] para dejar de guardarlo.

Buscar → Indexar esta carpeta para búsqueda instantánea mantiene un índice de todos los nombres bajo la carpeta activa, de modo que Ctrl-F en ella, o en cualquier carpeta que contenga, responde al instante. La línea de contexto indica cuándo se creó el índice. Borg reconstruye los índices en segundo plano al iniciarse y cada vez que un índice tiene más de 15 minutos, y el índice anterior sigue respondiendo hasta que el nuevo está listo. Una búsqueda que no deja nada fuera, o que usa otras exclusiones, lee las carpetas directamente, igual que una búsqueda de texto, porque el índice solo guarda nombres. Vuelve a elegir la opción del menú para dejar de indexar y eliminar el índice. Los índices se guardan en la carpeta de caché, junto a los análisis de tamaño, e [index] en la configuración enumera las carpetas indexadas.

Para medir tamaños sin dejar de usar los paneles de archivos normales, pulsa Alt-I o elige Buscar → Contar tamaños en segundo plano. Borg analiza todas las carpetas que hay bajo la actual, incluidos los archivos ocultos, y completa el total de cada carpeta cuando termina con ella. Mientras tanto, puedes seguir navegando o usar la consola. Las carpetas que aún se están midiendo muestran un total creciente marcado con ≥, y los totales se conservan si sales de una carpeta y vuelves. El pie del panel muestra el progreso; pulsa Alt-I de nuevo, o haz clic en el pie, para detener el análisis y conservar los totales medidos hasta ese momento. Al iniciar una tarea de copia, movimiento o eliminación se detiene el análisis de tamaños en curso. Los análisis terminados comparten su caché con el árbol de tamaños y con Totales de carpeta.

Los análisis terminados se guardan en esta computadora. Totales de carpeta y el árbol de tamaños reutilizan un análisis guardado de la misma carpeta con el mismo ajuste de archivos ocultos. Cuando vuelves a abrir una carpeta que ya se midió, sus tamaños guardados aparecen al instante, marcados con ~, con la fecha de la medición encima del árbol. Ctrl-R vuelve a analizar en cualquiera de las dos vistas de tamaño, y Ctrl-C cancela. El árbol anterior sigue visible mientras se actualiza, y se mantiene si el nuevo análisis se cancela o falla. Los listados normales de carpetas también muestran los totales guardados cuando existen. Los cambios hechos fuera de Borg pueden dejarlos desactualizados, y navegar nunca inicia por sí solo un análisis recursivo. Las tareas de copia, movimiento y eliminación de Borg descartan los análisis guardados que abarcan las rutas que modificaron.

La caché local de SQLite conserva todas las carpetas medidas de hasta 16 carpetas de inicio. Los árboles cargan las subcarpetas de una rama al desplegarla. Una rama muestra hasta 20 000 carpetas, y Totales de carpeta conserva las 20 000 coincidencias más grandes; estos límites de visualización no detienen el análisis ni cambian los totales. Una fila “Archivos en esta carpeta” recoge los bytes guardados directamente en una carpeta desplegada. Los errores y las subcarpetas omitidas marcan los totales como incompletos. La caché está en ~/.cache/borg-commander, o bajo XDG_CACHE_HOME si está definida; BORG_CACHE_DIR cambia la ubicación. La caché solo guarda mediciones que se pueden volver a generar, y es independiente de las colecciones. Un archivo con enlaces duros cuenta una vez por cada ruta que tiene. Todos los tamaños miden el contenido de los archivos, así que lo que un archivo ocupa en disco puede ser más o menos.

Esta guía sigue la rama main · Borg 0.11.0 · 1f6bce6
Puede que la última versión publicada no incluya todo lo que se describe aquí. Notas de la versión

Traducción de la guía en inglés. Las correcciones son bienvenidas. Los comandos y los atajos de teclado no se traducen.