#!/usr/bin/env python

"""
Copyright (c) 2006-2024 sqlmap developers (https://sqlmap.org/)
See the file 'LICENSE' for copying permission
"""

import re

from lib.core.data import kb
from lib.core.enums import PRIORITY

__priority__ = PRIORITY.NORMAL

def dependencies():
    pass

def tamper(payload, **kwargs):
    """
    Replaces each keyword character with upper case value (e.g. select -> SELECT)

    Tested against:
        * Microsoft SQL Server 2005
        * MySQL 4, 5.0 and 5.5
        * Oracle 10g
        * PostgreSQL 8.3, 8.4, 9.0

    Notes:
        * Useful to bypass very weak and bespoke web application firewalls
          that has poorly written permissive regular expressions
        * This tamper script should work against all (?) databases

    >>> tamper('insert')
    'INSERT'
    """

    retVal = payload

    # 如果payload不为空
    if payload:
        # 在retVal中查找所有匹配[A-Za-z_]的正则表达式
        for match in re.finditer(r"[A-Za-z_]+", retVal):
            # 获取匹配的单词
            word = match.group()

            # 如果单词的大写形式在kb.keywords中
            if word.upper() in kb.keywords:
                # 将retVal中的单词替换为大写形式
                retVal = retVal.replace(word, word.upper())

    # 返回retVal
    return retVal
