From 15358c9055df9e87fc587065a8876ba2088c425d Mon Sep 17 00:00:00 2001 From: Mathieu Deous Date: Thu, 28 Jul 2016 17:53:15 +0200 Subject: add generation date to metadata in generated whitelists --- php-malware-finder/utils/mass_whitelist.py | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/php-malware-finder/utils/mass_whitelist.py b/php-malware-finder/utils/mass_whitelist.py index 3dd4769..82733fa 100755 --- a/php-malware-finder/utils/mass_whitelist.py +++ b/php-malware-finder/utils/mass_whitelist.py @@ -1,10 +1,10 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -import re import sys import tarfile from copy import copy +from datetime import datetime from collections import OrderedDict from hashlib import sha1 from urllib2 import urlopen, HTTPError @@ -25,7 +25,12 @@ Options: Examples: %(prog)s drupal https://ftp.drupal.org/files/projects/drupal-__version__.tar.gz 9 50 %(prog)s drupal https://ftp.drupal.org/files/projects/drupal-__version__.tar.gz 4-9 1-50 + %(prog)s wordpress https://wordpress.org/wordpress-__version__.tar.gz 4 15 + + %(prog)s symphony https://github.com/symfony/symfony/archive/v__version__.tar.gz 3 9 + + %(prog)s phpmyadmin https://files.phpmyadmin.net/phpMyAdmin/__version__/phpMyAdmin-__version__-all-languages.tar.gz 4 9 """ % {'prog': sys.argv[0]} @@ -110,19 +115,19 @@ for vmajor in range(Opts.MIN_MAJOR, Opts.MAX_MAJOR + 1): rules = generate_whitelist(version) if (rules is not None) and rules: whitelists[version] = rules - + has_mversion = False first_mloop = True for vminor in range(Opts.MIN_MINOR, Opts.MAX_MINOR + 1): # download without vpatch (but ignore if it doesn't exist) version = "%d.%d" % (vmajor, vminor) rules = generate_whitelist(version) - if rules is not None: + if rules is not None: has_mversion = True if rules: whitelists[version] = rules if (rules is None) and (has_mversion or not first_mloop): - break + break first_mloop = False has_pversion = False @@ -136,7 +141,8 @@ for vmajor in range(Opts.MIN_MAJOR, Opts.MAX_MAJOR + 1): whitelists[version] = rules # break loop if download failed and: # - a version has already been found during this loop - # - this is the 2nd iteration (if a version wasn't found, it means download failed twice) + # - this is the 2nd iteration (if a version wasn't found, + # it means download failed twice) if (rules is None) and (has_pversion or not first_ploop): break first_ploop = False @@ -172,10 +178,17 @@ for index, (version, rules) in enumerate(whitelists.items()): final_rule = """ import "hash" -rule %(name)s +private rule %(name)s { + meta: + generated = "%(gendate)s" + condition: %(conditions)s } -""" % {'name': Opts.CMS_NAME, 'conditions': '\n'.join(conditions)} -print final_rule +""" % { + 'name': Opts.CMS_NAME.title(), + 'gendate': datetime.now().isoformat(), + 'conditions': '\n'.join(conditions) +} +print final_rule -- cgit v1.3