Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
jmrozanec__cron-utils_CVE-2021-41269_9-1-5 — Biblioteca Java para analizar, validar, migrar y describir expresiones cron con soporte para múltiples formatos (Unix, Quartz, Spring) y salida legible para humanos y específica de la configuración regional. | Kitploit
Herramientas/GitHubGitHub/shoucheng3/jmrozanec__cron-utils_cve-2021-41269_9-1-5
Utilidades de Propósito GeneralScripting y AutomatizaciónUtilidades y FrameworksAprendizaje y Educación
GitHubshoucheng3/jmrozanec__cron-utils_cve-2021-41269_9-1-5

jmrozanec__cron-utils_CVE-2021-41269_9-1-5

Biblioteca Java para analizar, validar, migrar y describir expresiones cron con soporte para múltiples formatos (Unix, Quartz, Spring) y salida legible para humanos y específica de la configuración regional.

Ver Repositorio
6hace 10 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

cron-utils

Definimos cron y los soportamos.

cron-utils es una librería Java para definir, analizar, validar, migrar cron y obtener descripciones legibles por humanos. El proyecto sigue la Convención de Versionado Semántico, proporciona metadatos OSGi y utiliza la licencia Apache 2.0.

Gitter Chat Build Status Quality Gate

Descarga

cron-utils está disponible en el repositorio Maven central.

root@kitploit:~
<dependency>
    <groupId>com.cronutils</groupId>
    <artifactId>cron-utils</artifactId>
    <version>9.2.1</version>
</dependency>

Para desarrolladores Android, cron-utils 7.0.0 asume Android 26+. Para versiones anteriores de Android, considere usar cron-utils 6.0.6. Si se usa ScheduleExpression de Java EE, esto debe proporcionarse como una dependencia en tiempo de ejecución.

Desarrollo actual

Actualmente estamos trabajando para actualizar la base de código hacia JDK 16, para asegurar que será totalmente compatible con JDK 17 cuando se lance.

Ahora estamos desarrollando una nueva generación de descriptores de cron usando traducción neuronal. Cualquier tipo de contribución es bienvenida: desde ayuda con la generación de conjuntos de datos hasta entrenamiento de modelos de aprendizaje automático y utilidades para cargarlos. Si está interesado, siga el issue #3.

Características

  • Cree expresiones cron arbitrarias: ¡puede definir su propio formato cron! Los campos soportados son: segundo, minuto, hora, día del mes, mes, día de la semana, año.
  • ¡Puede marcar el último campo como opcional!
  • Soporta todos los caracteres especiales de cron: * / , -
    • ¡Los caracteres no estándar L, W, LW, '?' y # también son soportados!
  • Soporta extensiones / apodos de cron: @yearly, @annually, @monthly, @weekly, @daily, @midnight, @hourly, @reboot
  • Imprime en formato legible por humanos específico para un locale (Chino, Inglés, Alemán, Griego, Indonesio, Japonés, Coreano, Polaco, Rumano, Español, Suajili y Turco tienen soporte completo. Holandés, Francés, Italiano, Portugués y Ruso tienen soporte básico).
  • Los procesos de análisis y descripción están desacoplados: ¡analice una vez y opere con el resultado!
  • Construya expresiones cron usando CronBuilder:
    • no es necesario recordar campos y restricciones para cada proveedor de cron.
    • los cron se desacoplan del proveedor de cron: en cualquier momento puede exportar a otro formato.
  • Verifique si las expresiones cron son equivalentes.
  • ¡Comprima múltiples expresiones cron en una sola!
  • Valide si las expresiones de cadena cron coinciden con una definición de cron.
  • Convierta cron entre diferentes definiciones de cron: si necesita migrar expresiones, ¡CronMapper puede ayudarle!
  • Se proporcionan definiciones predefinidas para las siguientes librerías de cron:
    • Unix
    • Cron4j
    • Quartz
    • Spring. Soporta dos definiciones: anteriores a v5.3 y a partir de v5.3.
  • Obtenga el tiempo de última/próxima ejecución así como el tiempo desde la última ejecución/hasta la próxima ejecución.
  • Calcule el número de ejecuciones entre dos días, y compare cron basados en sus frecuencias de ejecución.
  • Obtenga el recuento de días laborables entre dos fechas, considerando diferentes políticas de fin de semana así como días festivos.
  • ¿Necesita mapear constantes entre diferentes librerías de cron/tiempo? Use ConstantsMapper.

Ejemplos de uso

A continuación presentamos algunos ejemplos. Puede encontrar estos y otros en un repositorio de muestra que creamos para mostrar las librerías cron-utils.

Construir definiciones cron

root@kitploit:~
// Define your own cron: arbitrary fields are allowed and last field can be optional
CronDefinition cronDefinition =
    CronDefinitionBuilder.defineCron()
        .withSeconds().and()
        .withMinutes().and()
        .withHours().and()
        .withDayOfMonth()
            .supportsHash().supportsL().supportsW().and()
        .withMonth().and()
        .withDayOfWeek()
            .withIntMapping(7, 0) //we support non-standard non-zero-based numbers!
            .supportsHash().supportsL().supportsW().and()
        .withYear().optional().and()
        .instance();

// or get a predefined instance
cronDefinition = CronDefinitionBuilder.instanceDefinitionFor(QUARTZ);

Construir una expresión cron

root@kitploit:~
// Create a cron expression. CronMigrator will ensure you remain cron provider agnostic
import static com.cronutils.model.field.expression.FieldExpressionFactory.*;

Cron cron = CronBuilder.cron(CronDefinitionBuilder.instanceDefinitionFor(CronType.QUARTZ))
    .withYear(always())
    .withDoM(between(SpecialChar.L, 3))
    .withMonth(always())
    .withDoW(questionMark())
    .withHour(always())
    .withMinute(always())
    .withSecond(on(0))
    .instance();
// Obtain the string expression
String cronAsString = cron.asString(); // 0 * * L-3 * ? *

Analizar

root@kitploit:~
// Create a parser based on provided definition
CronParser parser = new CronParser(cronDefinition);
Cron quartzCron = parser.parse("0 23 * ? * 1-5 *");

... ¡incluso expresiones multi-cron! ¿Qué tal comprimir múltiples cron en una sola línea? En lugar de escribir 0 0 9 * * ? *, 0 0 10 * * ? *, 0 30 11 * * ? * y 0 0 12 * * ? * podemos envolverlo en 0 0|0|30|0 9|10|11|12 * * ? *

Describir

root@kitploit:~
// Create a descriptor for a specific Locale
CronDescriptor descriptor = CronDescriptor.instance(Locale.UK);

// Parse some expression and ask descriptor for description
String description = descriptor.describe(parser.parse("*/45 * * * * ?"));
// Description will be: "every 45 seconds"

description = descriptor.describe(quartzCron);
// Description will be: "every hour at minute 23 every day between Monday and Friday"
// which is the same description we get for the cron below:
descriptor.describe(parser.parse("0 23 * ? * MON-FRI *"));

Migrar

root@kitploit:~
// Migration between cron libraries has never been so easy!
// Turn cron expressions into another format by using CronMapper:
CronMapper cronMapper = CronMapper.fromQuartzToCron4j();

Cron cron4jCron = cronMapper.map(quartzCron);
// and to get a String representation of it, we can use
cron4jCron.asString();//will return: 23 * * * 1-5

Validar

root@kitploit:~
cron4jCron.validate()

Calcular tiempo desde/hasta la ejecución

root@kitploit:~
// Get date for last execution
ZonedDateTime now = ZonedDateTime.now();
ExecutionTime executionTime = ExecutionTime.forCron(parser.parse("* * * * * ? *"));
ZonedDateTime lastExecution = executionTime.lastExecution(now);

// Get date for next execution
ZonedDateTime nextExecution = executionTime.nextExecution(now);

// Time from last execution
Duration timeFromLastExecution = executionTime.timeFromLastExecution(now);

// Time to next execution
Duration timeToNextExecution = executionTime.timeToNextExecution(now);

Mapear constantes entre librerías

root@kitploit:~
// Map day of week value from Quartz to JodaTime
int jodatimeDayOfWeek =
        ConstantsMapper.weekDayMapping(
                ConstantsMapper.QUARTZ_WEEK_DAY,
                ConstantsMapper.JODATIME_WEEK_DAY
        );

Formato de fecha y hora para humanos!

Use htime - Formato de fecha y hora legible por humanos para Java. A pesar de que esta funcionalidad no está incluida en el mismo jar, es un proyecto de cron-utils que puede encontrar útil.

root@kitploit:~
// You no longer need to remember "YYYY-MM-dd KK a" patterns.
DateTimeFormatter formatter = 
	    HDateTimeFormatBuilder
		    .getInstance()
		    .forJodaTime()
		    .getFormatter(Locale.US)
		    .forPattern("June 9, 2011");
String formattedDateTime = formatter.print(lastExecution);
// formattedDateTime will be lastExecution in "dayOfWeek, Month day, Year" format

cron-utils CLI

Proporcionamos una interfaz CLI simple para usar cron-utils directamente desde la consola, ¡sin escribir un nuevo proyecto! La CLI es un proyecto satélite, disponible en cron-utils-cli

  • Usage: java -jar cron-utils.jar com.cronutils.cli.CronUtilsCLI --validate -f [CRON4J|QUARTZ|UNIX] -e '<cron expression>'

  • Example: java -jar cron-utils.jar com.cronutils.cli.CronUtilsCLI --validate -f UNIX -e '* 1 * * *'

Si desea un jar independiente sin requerir el 'cp', construya un uber jar con :

root@kitploit:~
mvn assembly:assembly -DdescriptorId=jar-with-dependencies

Luego, lance cli-utils (construido en el directorio target) con :

root@kitploit:~
java -jar cron-utils-<version>-jar-with-dependencies.jar com.cronutils.cli.CronUtilsCLI --validate -f [CRON4J|QUARTZ|UNIX] -e '<cron expression>'`

¡Contribuya y Soporte!

¡Las contribuciones son bienvenidas! Puede contribuir mediante

  • ¡dando estrella a este repo!
  • solicitando o añadiendo nuevas funcionalidades. ¡Consulte nuestra hoja de ruta!
  • mejorando el código existente: p. ej.: proporcionar casos de descripción más precisos
  • probando
  • mejorando la documentación
  • proporcionando traducciones para soportar nuevos locales
  • aportando sugerencias e informando errores
  • difundiendo la palabra
  • ¡contándonos cómo lo usa! ¡Esperamos incluirlo en nuestra wiki!

¡Visite nuestra página! Para estadísticas sobre el proyecto, puede visitar nuestro perfil de OpenHUB.

Otros proyectos cron-utils

Le invitamos a visitar y usar los siguientes proyectos cron-utils:

  • htime: Una librería Java para facilitar a los humanos el formateo de fechas. Ya no necesita recordar caracteres de formato de fecha y hora: simplemente escriba un ejemplo, y obtendrá el formateador adecuado.
  • cron-utils-spring: Una librería Java para describir expresiones cron en lenguaje legible por humanos en el framework Spring, usando cron-utils.
  • cron-utils-cli: Funcionalidades de cron-utils disponibles a través de una CLI.
  • cron-utils-sisyphus: Un planificador Scala que soporta múltiples notaciones cron.
  • cron-utils-scheduler: Un planificador de trabajos Java basado en la librería cron-utils.
Descargar herramienta