예제 #1
0
 def __init__(self, project, arguments, **kw):
     ProjectProcess.__init__(self, project, arguments, **kw)
     self.options = 'Vqfldbv'
     VALUE_SET = DECIMAL_DIGITS | set('.:-/ ')
     self.stdin_generator = BytesGenerator(1, 5000)
     self.value_generator = BytesGenerator(1, 30, VALUE_SET)
     self.queue_generator = BytesGenerator(1, 1, ASCII0)
     self.filename_generator = UnixPathGenerator(100)
     self.min_opt = 0
     self.max_opt = 2
예제 #2
0
    def __init__(self, filename, module, module_name):
        self.simple_argument_generators = (
            self.genNone,
            self.genBool,
            self.genSmallUint,
            self.genInt,
            self.genLetterDigit,
            self.genString,
            self.genUnicode,
            self.genUnixPath,
            self.genFloat,
            self.genExistingFilename,
            self.genUserObject,
            self.genUserClass,
            #            self.genOpenFile,
            #            self.genException,
        )
        self.complex_argument_generators = self.simple_argument_generators + (
            self.genList,
            self.genTuple,
            self.genDict,
        )
        self.indent = ' ' * 4
        self.filename = filename
        self.base_level = 0
        self.smallint_generator = UnsignedGenerator(3)
        self.int_generator = IntegerGenerator(20)
        self.str_generator = BytesGenerator(0, 20)
        self.unix_path_generator = UnixPathGenerator(100)
        self.letters_generator = BytesGenerator(1, 8, LETTERS | DECIMAL_DIGITS)
        self.float_int_generator = IntegerGenerator(3)
        self.float_float_generator = UnsignedGenerator(3)
        self.module = module
        self.module_name = module_name

        self.functions, self.classes = self.getFunctions()
        if not self.functions and not self.classes:
            raise PythonFuzzerError("Module %s has no function and no class!" %
                                    self.module_name)
예제 #3
0
def fuzzit(pd, pck):
    #print "Start Fuzzing"
    s_len = pd.len
    s_info = pd.info
    datagen = BytesGenerator(800, 1100, PRINTABLE_ASCII)
    # heavy packets
    gen_and_send(pd, pck, datagen, 0)
    datagen = BytesGenerator(800, 1100, ASCII0)
    # heavy packets
    gen_and_send(pd, pck, datagen, 0)
    datagen = BytesGenerator(1, 255, PRINTABLE_ASCII)
    # regular checks
    gen_and_send(pd, pck, datagen, 0)
    datagen = BytesGenerator(1, 255, ASCII0)
    # regular checks
    gen_and_send(pd, pck, datagen, 0)
    datagen = BytesGenerator(1, 255, PRINTABLE_ASCII)
    gen_and_send(pd, pck, datagen, 1)
    # malformed packets
    datagen = BytesGenerator(1, 255, ASCII0)
    gen_and_send(pd, pck, datagen, 1)
    # malformed packets
    pd.len = s_len
    pd.info = s_info
예제 #4
0
 def __init__(self, project, *args):
     UnixSocketClient.__init__(self, project, *args)
     max_size = 100
     self.data_gen = BytesGenerator(1, max_size)
     self.max_tx_bytes = max_size * 20
     self.max_rx_bytes = max_size * 20
예제 #5
0
    def __init__(self, project, name):
        ProjectAgent.__init__(self, project, name)
        self.smart_string_generator = BytesGenerator(0, 10,
            LETTERS | DECIMAL_DIGITS | set(' '))
        self.string_generator = BytesGenerator(0, 40,
            LETTERS | DECIMAL_DIGITS | PUNCTUATION)
        self.random_string_generator = BytesGenerator(0, 200)
        self.character_generator = BytesGenerator(1, 1)
        self.digit_generator = BytesGenerator(1, 30, DECIMAL_DIGITS)
        self.integer_generator = IntegerGenerator(11)
        self.printf_set = list(LETTERS | set('%'))
        self.long_string = LengthGenerator(10000)
        self.functions = list(set((
            # Tests
            'COALESCE', 'GREATEST', 'ISNULL', 'INTERVAL', 'LEAST',
            'IF', 'IFNULL', 'NULLIF', 'STRCMP',

            # Math
            'ABS', 'ACOS', 'ASIN', 'ATAN', 'ATAN2', 'CEILING', 'CEIL',
            'COS', 'COT', 'CRC32', 'DEGREES', 'EXP', 'FLOOR',
            'LN', 'LOG', 'LOG2', 'LOG10', 'MOD', 'PI', 'POW', 'POWER',
            'RADIANS', 'RAND', 'ROUND', 'SIGN', 'SQRT', 'TAN',
            'TRUNCATE',

            # String
            'ASCII', 'BIN', 'BIT_LENGTH', 'CHAR', 'CHAR_LENGTH',
            'COMPRESS', 'CONCAT', 'CONCAT_WS', 'CONV', 'ELT',
            'EXPORT_SET', 'FIELD', 'FIND_IN_SET', 'HEX', 'INSERT',
            'INSTR', 'LCASE', 'LEFT', 'LENGTH', 'LOAD_FILE', 'LOCATE',
            'LOWER', 'LPAD', 'LTRIM', 'MAKE_SET',
            'MID', 'OCTET_LENGTH', 'ORD', 'QUOTE', 'REPEAT', 'REPLACE',
            'REVERSE', 'RIGHT', 'RPAD', 'RTRIM', 'SOUNDEX', 'SPACE',
            'SUBSTRING', 'SUBSTRING_INDEX',
            'TRIM', 'UCASE', 'UNCOMPRESS', 'UNCOMPRESSED_LENGTH',
            'UNHEX', 'UPPER',

            # Date
            'ADDDATE', 'ADDTIME', 'CURDATE', 'CURRENT_DATE',
            'CURTIME', 'CURRENT_TIME', 'CURRENT_TIMESTAMP',
            'DATE', 'DATEDIFF', 'DATE_FORMAT', 'DAY', 'DAYNAME', 'DAYOFMONTH',
            'DAYOFWEEK', 'DAYOFYEAR', 'EXTRACT', 'FROM_DAYS', 'FROM_UNIXTIME',
            'GET_FORMAT', 'HOUR', 'LAST_DAY', 'LOCALTIME', 'LOCALTIMESTAMP',
            'MAKEDATE', 'MAKETIME', 'MICROSECOND', 'MINUTE', 'MONTH', 'MONTHNAME',
            'NOW', 'PERIOD_ADD', 'PERIOD_DIFF', 'QUARTER', 'SECOND',
            'SEC_TO_TIME', 'STR_TO_DATE', 'SUBDATE', 'SUBTIME', 'SYSDATE',
            'TIME', 'TIMEDIFF', 'TIMESTAMP', 'TIMESTAMPADD', 'TIMESTAMPDIFF',
            'TIME_FORMAT', 'TIME_TO_SEC', 'TO_DAYS', 'UNIX_TIMESTAMP',
            'UTC_DATE', 'UTC_TIME', 'UTC_TIMESTAMP', 'WEEK', 'WEEKDAY',
            'WEEKOFYEAR', 'YEAR', 'YEARWEEK',

            # Encryption
            'AES_DECRYPT', 'AES_ENCRYPT',
            'DECODE', 'ENCODE',
            'DES_DECRYPT', 'DES_ENCRYPT',
            'ENCRYPT', 'MD5', 'OLD_PASSWORD', 'PASSWORD',
            'SHA', 'SHA1',

            # Information
            'BENCHMARK', 'CHARSET', 'COERCIBILITY', 'COLLATION', 'CONNECTION_ID',
            'CURRENT_USER', 'DATABASE', 'FOUND_ROWS', 'LAST_INSERT_ID',
            'SESSION_USER', 'SYSTEM_USER', 'USER', 'VERSION',

            # Autres
            'BIT_COUNT', 'FORMAT', 'GET_LOCK', 'INET_ATON', 'INET_NTOA',
            'IS_FREE_LOCK', 'IS_USED_LOCK', 'MASTER_POS_WAIT', 'RELEASE_LOCK',
            'UUID',
        )))
        self.min_nb_arg = 0
        self.max_nb_arg = 4
        self.min_nb_instr = 1
        self.max_nb_instr = 3
        self.booleans = ('true', 'false')
        self.create_value = (
            self.createCharacter,
            self.createString,
            self.createSmartString,
            self.createRandomString,
            self.createInteger,
            self.createFloat,
            self.createNull, self.createBoolean,
            self.createPrintf,
#            self.createLength,
        )
예제 #6
0
 def __init__(self, project):
     ProjectAgent.__init__(self, project, "proc")
     self.generator = BytesGenerator(1, 256)
예제 #7
0
 def __init__(self, name, arguments=None, type="void", random_bytes=400):
     FunctionC.__init__(self, name, arguments, type)
     self.bytes_generator = BytesGenerator(random_bytes, random_bytes)
     self.buffer_count = 0
     self.special_int32 = (0x8000, 0xffff, 0x80000000)