def generate_word(reg_exp):
    limit = 25
    word = Xeger(limit=limit)
    word = word.xeger(reg_exp)
    while len(word) > 100:
        limit = limit - 2
        word = Xeger(limit=limit)
        word = word.xeger(reg_exp)
    return word
Esempio n. 2
0
	def generate_service_reply(self, payloads):
		random.shuffle(payloads)
		payload = None
		x = Xeger(limit=1)

		for regex in payloads:
			#payload = rstr.xeger(regex)
			#payload = exrex.getone(regex)
			payload = x.xeger(regex)

			match = re.match(regex, payload)
			if match:
				return payload

		# relax matcher

		for regex in payloads:
			payload = x.xeger(regex)

			match = re.match(regex, payload, re.IGNORECASE | re.MULTILINE)
			if match:
				return payload

		return payload
Esempio n. 3
0
def test_updateUser_telephone_beginAndEnd_WithSpace_034():
    logger = LogGen.loggen()
    com = common_updateUser_api()
    logger.info("****************  Test_034: Test updateUser when user sends  -  telephone begin with space ****************")
    logger.info("https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164311?projectId=50")
    print("****************  Test_034: Test updateUser when user sends  -  telephone begin with space ****************")
    print("Jama link is ::https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164311?projectId=50")

    # Body
    list = com.getUsersList()
    userName = random.choice(list)
    print("Updating user ::", userName)
    x = Xeger(limit=20)
    telephone = com.telephone_RegEx()
    telephoneNumber=" "+x.xeger(telephone)+" "

    file = open("./tests_admin/testCases/update_user_api.json", 'r')
    body = json.loads(file.read())
    body['userName'] = userName
    body['telephoneNumber'] = telephoneNumber

    com.update_user_negative(body, userName)

    com.verify_updated_user_from_sm_with_api(userName)
Esempio n. 4
0
    def _make_ids(self, name, field_metadata, length):
        field_subtype = field_metadata.get('subtype', 'integer')
        if field_subtype == 'string':
            regex = field_metadata.get('regex', '[a-z][A-Z]+')
            xeger = Xeger(limit=10)
            values = {xeger.xeger(regex) for _ in range(length)}
            for _ in range(10):
                done = len(values)
                if done >= length:
                    break

                remaining = length - done
                generate = int(round((remaining / done) * length))
                values.update({xeger.xeger(regex) for _ in range(generate)})

            else:
                msg = 'Unable to generate {} unique values for field {} regex "{}"'.format(
                    length, name, regex
                )
                raise ValueError(msg)

            return pd.Series(list(values)[:length])
        else:
            return pd.Series(np.arange(length))
Esempio n. 5
0
 def emailId_RegEx(self):
     first = "^([a-zA-Z0-9_\-\.]+)$"
     last = "^(\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|([a-zA-Z0-9.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"
     # emailId = "^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"
     x = Xeger(limit=64)
     before = x.xeger(first)
     y = Xeger(limit=256)
     after = y.xeger(last)
     emailId = before + "@" + after
     return emailId
Esempio n. 6
0
def test_createUser_middleInitial_RegEx_039():
    logger = LogGen.loggen()
    com = common_createUser_api()
    logger.info(
        "****************  Test_039: Test CreateUser when user sends  -  MiddleInitial RegEx ****************"
    )
    print(
        "In Description :Test_039: Test CreateUser when user sends  -  MiddleInitial RegEx"
    )
    logger.info(
        "Jama Link :: https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164308?projectId=50"
    )
    print(
        "Jama Link :: https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164308?projectId=50"
    )
    # URL
    url = ReadConfig.sm()

    # Additional headers.
    headers = com.headers()

    # Body
    x = Xeger(limit=10)
    name = com.userName_RegEx()
    middle = com.middleInitial_RegEx()
    userName = x.xeger(name)
    y = Xeger(limit=1)
    middleInitial = y.xeger(middle)

    file = open("./tests_admin/testCases/create_user_api.json", 'r')
    body = json.loads(file.read())
    body['middleInitial'] = middleInitial
    body['userName'] = userName

    com.create_user_positive(body, userName)

    com.verify_users_from_sm_with_api(userName)

    e = com.verify_user_options(userName)
    assert e['userName'] == userName
    assert e['firstName'] == 'v'
    assert e['middleInitial'] == middleInitial
    assert e['lastName'] == 'j'
    assert e['emailAddress'] == '*****@*****.**'
    assert e['telephoneNumber'] == '23'
    assert e['extension'] == '5309'
    assert e['password'] == 'Password123'
    assert e['userRoleName'] == 'Operator'
    assert e['deactivated'] == False
    assert e['hidden'] == False
    assert e['isADUser'] == False
    print("All the options are matched with the request")
Esempio n. 7
0
 def send_confirmPassword_textbox(self):
     confirmPassword = self.driver.find_element_by_id(self.textbox_confirmPassword_ID)
     confirmPassword_value = confirmPassword.get_attribute("value")
     if (len(confirmPassword_value) == 0):
         print("\n password Name field is empty")
         x = Xeger(limit=50)
         y = x.xeger("^(?=.*[0-9])(?=.*[A-Z]).{8,32}$")
         self.driver.find_element_by_id(self.textbox_confirmPassword_ID).send_keys(y)
         print("Entered text in the 'confirmpassword' textbox is ::" + y)
         self.logger.info("****************  confirmpassword entered   ****************")
         return y
     else:
         confirmPassword = self.driver.find_element_by_id(self.textbox_confirmPassword_ID)
         confirmPassword_value = confirmPassword.get_attribute("value")
         print("\n Existing confirm_password  is :::", confirmPassword_value)
         x = Xeger(limit=50)
         y = x.xeger("^(?=.*[0-9])(?=.*[A-Z]).{8,32}$")
         self.driver.find_element_by_id(self.textbox_confirmPassword_ID).send_keys(y)
         print("Entered text in the 'confirmpassword' textbox is ::" + y)
         self.logger.info("****************  confirmpassword entered   ****************")
         return y
Esempio n. 8
0
 def send_username_textbox(self):
     userName = self.driver.find_element_by_id(self.textbox_Username_ID).text
     if(len(userName) == 0):
         print("UserName field is empty")
         x = Xeger(limit=34)
         y = x.xeger("^[a-zA-Z0-9]+$")
         self.driver.find_element_by_id(self.textbox_Username_ID).clear()
         self.driver.find_element_by_id(self.textbox_Username_ID).send_keys(y)
         print("Entering 'UserName'  ::" + y)
         self.logger.info("****************  UserName entered   ****************")
         return y
     else:
         userid_null = self.driver.find_element_by_id(self.textbox_Username_ID).text
         print("Username field value is :::", userName)
         self.driver.find_element_by_id(self.textbox_Username_ID).clear()
         x = Xeger(limit=34)
         y = x.xeger("^[a-zA-Z0-9]+$")
         self.driver.find_element_by_id(self.textbox_Username_ID).send_keys(y)
         print("Updated 'UserName' is ::" + y)
         self.logger.info("****************  UserName entered   ****************")
         return y
Esempio n. 9
0
 def send_lastname_textbox(self):
     lastname = self.driver.find_element_by_id(self.textbox_lastname_ID)
     lastname_value = lastname.get_attribute("value")
     if (len(lastname_value) == 0):
         print("\n lastname Name field is empty")
         x = Xeger(limit=50)
         y = x.xeger("^([a-zA-Z '-]+)$")
         self.driver.find_element_by_id(self.textbox_lastname_ID).clear()
         self.driver.find_element_by_id(self.textbox_lastname_ID).send_keys(y)
         print(" Entered text in the 'lastname' textbox is ::" + y)
         self.logger.info("****************  lastname entered   ****************")
         return y
     else:
         lastname = self.driver.find_element_by_id(self.textbox_MiddleInitial_ID)
         lastname_value = lastname.get_attribute("value")
         print("\n Existing lastname is :::", lastname_value)
         x = Xeger(limit=50)
         y = x.xeger("^([a-zA-Z '-]+)$")
         self.driver.find_element_by_id(self.textbox_lastname_ID).clear()
         self.driver.find_element_by_id(self.textbox_lastname_ID).send_keys(y)
         print("\n Entered text in the 'lastname' textbox is ::" + y)
         self.logger.info("****************  lastname entered   ****************")
         return y
Esempio n. 10
0
 def send_firstname_textbox(self):
     firstName = self.driver.find_element_by_id(self.textbox_firstname_ID)
     firstname_value = firstName.get_attribute("value")
     if (len(firstname_value) == 0):
         print("\n First Name field is empty")
         x = Xeger(limit=50)
         y = x.xeger("^([a-zA-Z '-]+)$")
         self.driver.find_element_by_id(self.textbox_firstname_ID).clear()
         self.driver.find_element_by_id(self.textbox_firstname_ID).send_keys(y)
         print("Entered text in the 'FirstName' textbox is ::" + y)
         self.logger.info("****************  FirstName entered   ****************")
         return y
     else:
         firstName = self.driver.find_element_by_id(self.textbox_firstname_ID)
         firstname_value = firstName.get_attribute("value")
         print("\n Existing Firstname is :::", firstname_value)
         x = Xeger(limit=50)
         y = x.xeger("^([a-zA-Z '-]+)$")
         self.driver.find_element_by_id(self.textbox_Username_ID).clear()
         self.driver.find_element_by_id(self.textbox_firstname_ID).send_keys(y)
         print("Entered text in the 'FirstName' textbox is ::" + y)
         self.logger.info("****************  FirstName entered   ****************")
         return y
Esempio n. 11
0
 def send_middleinitial_textbox(self):
     middleinitial = self.driver.find_element_by_id(self.textbox_MiddleInitial_ID)
     middleinitial_value = middleinitial.get_attribute("value")
     if (len(middleinitial_value) == 0):
         print("\n MiddleInitial field is empty")
         x = Xeger(limit=1)
         y = x.xeger("^([a-zA-Z]+)$")
         self.driver.find_element_by_id(self.textbox_MiddleInitial_ID).clear()
         self.driver.find_element_by_id(self.textbox_MiddleInitial_ID).send_keys(y)
         print(" Entered text in the 'middleinitial' textbox is ::" + y)
         self.logger.info("****************  middleinitial entered   ****************")
         return y
     else:
         middleinitial = self.driver.find_element_by_id(self.textbox_MiddleInitial_ID)
         middleinitial_value = middleinitial.get_attribute("value")
         print("\n Existing middleInitial is :::", middleinitial_value)
         x = Xeger(limit=1)
         y = x.xeger("^([a-zA-Z]+)$")
         self.driver.find_element_by_id(self.textbox_MiddleInitial_ID).clear()
         self.driver.find_element_by_id(self.textbox_MiddleInitial_ID).send_keys(y)
         print("Entered text in the 'Middle Initial' textbox is ::" + y)
         self.logger.info("****************  Middle Initial entered   ****************")
         return y
Esempio n. 12
0
def touch_test_file(line_num, word_num):
    """创建测试文件,随机生成字符,用于测试"""

    _x = Xeger()
    words = lambda: _x.xeger(r'[a-zA-Z][a-zA-Z0-9]*')  # 随机生成有效单词
    non_word = lambda: _x.xeger(r'\d[a-zA-Z0-9]*')  # 随机生成开头为数字的单词
    separator = lambda: _x.xeger(r'[^a-zA-Z0-9\n\r]')  # 随机生成非字母数字回车换行符的字符
    space = lambda: _x.xeger(r'\n[\s]*\n')  # 随机生成回车空白字符回车

    # 统计生成的文件中字符、单词、有效行、词频
    result = {
        'chars': 0,
        'words': word_num * line_num,
        'lines': line_num,
        'container': {}
    }

    # 创建文件,随机生成字符
    file_obj = open(TEMP_FILE, 'w')
    for _ in range(line_num):
        for _ in range(word_num):
            word = words()
            chars = word + separator() + non_word() + separator()
            result['chars'] += len(chars)
            result['container'][word.lower()] = result['container'].get(
                word.lower(), 0) + 1
            file_obj.write(chars)
        chars = space()
        result['chars'] += len(chars)
        file_obj.write(chars)
    file_obj.close()

    # 获取排序后的词频结果
    sort_result = sorted(result['container'].items(),
                         key=lambda x: (-x[1], x[0]))[:10]
    result['container'] = sort_result
    return result
Esempio n. 13
0
 def __init__(self):
     self.name = Xeger().xeger(r'^[A-Z]{2}\d{3}$')
Esempio n. 14
0
RANGE = d["Prop2"]["range"]
#print(RANGE)
DISTRIBUTION = d["Prop2"]["distribution"]

if DISTRIBUTION == "gaussian":
    mu, sigma = 5, 0.5  # mean and standard deviation
    FLOAT = (np.random.normal(mu, sigma, d["Prop2"]["n"]))

    FLOAT = FLOAT.tolist()
    for i in range(TABLE_ROWS - d["Prop2"]["n"]):
        FLOAT.append('')
    print(FLOAT)

# STRINGS :-
x = Xeger(limit=d["Prop3"]["limit"])

STRINGS = []

for i in range(d["Prop3"]["n"]):
    STRINGS.append(x.xeger(str(d["Prop3"]["matching_regex"][0])))

for i in range(TABLE_ROWS - d["Prop3"]["n"]):
    STRINGS.append('')

print(STRINGS)

# Query :- Top k items with maximum element

k = d["Prop3"]["k"]
Counter = Counter(STRINGS)
Esempio n. 15
0
from selenium.webdriver.common.by import By
from xeger import Xeger

URL = "http://192.168.102.50:6433/"  #定义URL

xeger = Xeger()

#登录
public_username_input = By.ID, "username"  #登录用户名ID
public_password_input = By.ID, "password"  #登录密码ID
login_button = By.CSS_SELECTOR, ".ant-btn"  #登录按钮

#竖向导航栏的功能tab切换
navigation_Tab_ZMJK = By.XPATH, "/html/body/div/section/aside/div/div/ul/li[1]/span" #点击竖向导航栏:闸门监控管理
navigation_Tab_SWJK = By.XPATH, "/html/body/div/section/aside/div/div/ul/li[2]/span" #点击竖向导航栏:水文监控管理
navigation_Tab_RYJK = By.XPATH, "/html/body/div/section/aside/div/div/ul/li[3]/span" #点击竖向导航栏:人员监控管理
navigation_Tab_CBJK = By.XPATH, "/html/body/div/section/aside/div/div/ul/li[4]" #点击竖向导航栏:船舶监控管理
navigation_Tab_LSGJ = By.XPATH, "/html/body/div/section/aside/div/div/ul/li[5]/span" #点击竖向导航栏:历史告警
navigation_Tab_XTSZ = By.XPATH, "/html/body/div/section/aside/div/div/ul/li[6]/span" #点击竖向导航栏:系统设置
navigation_Tab_SXTSZ = By.XPATH, "/html/body/div/section/aside/div/div/ul/li[7]/span" #点击竖向导航栏:摄像头设置


#闸门监控管理-历史数据
history_tab = By.XPATH, ".//*[@id='root']/section/section/main/div/div/div[1]/div/div/div/div/div[1]/div[2]"  #历史数据tab
history_tab_zmPosition = By.CSS_SELECTOR, "#upDownEnum > div > div"  #闸门位置选项
history_tab_zmPosition_WZ = By.CSS_SELECTOR, "li.ant-select-dropdown-menu-item:nth-child(1)"  #闸门位置选择二线下游
history_tab_zmJKX = By.CSS_SELECTOR, "#senseType > div > div > div"
history_tab_zmJKX_QX = By.XPATH, "/html/body/div[3]/div/div/div/ul/li[3]"  #监控项选择倾斜
history_tab_zmBeginTime = By.CSS_SELECTOR, "#beginDateStr > div > input"  #选择开始时间点击
history_tab_zmBeginTime_Now = By.LINK_TEXT, "此刻"
history_tab_zmSearch_button = By.CSS_SELECTOR, "#root > section > section > main > div > div > div.ant-tabs-content.ant-tabs-content-animated.ant-tabs-top-content > div.ant-tabs-tabpane.ant-tabs-tabpane-active > div.style_historicalContainer__2X1G5 > div.style_search__3u0Ny > form > div:nth-child(6) > div > div > span > button.ant-btn.ant-btn-primary"
Esempio n. 16
0
 def userRolename_characters(self):
     x = Xeger(limit=34)
     roleName = x.xeger("^[a-zA-Z0-9]*$")
     print("\n Trying to create role :::", roleName)
     return roleName
Esempio n. 17
0
        )

for snr in (-8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 10, 20, 40):
    wpm = 25
    tone = 600
    write_file(
            "CQ CQ DE JH1UMV JH1UMV PSE K",
            "/tmp/dataset/cw-samples/{}dB-{}wpm-{}Hz".format(snr, wpm, tone),
            maxlength=20,
            snr=snr,
            wpm=wpm,
            tone=tone,
            use_bandpass=True,
            )

string_random = Xeger(limit=10).xeger
executor = concurrent.futures.ProcessPoolExecutor(max_workers=multiprocessing.cpu_count())

phase_count = 2
snr = (0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 40)
wpm = (20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 35, 40)
config = list(itertools.product(wpm, snr))

total = phase_count * len(config) * 2
n = 0
for ti, ty in enumerate( ('train', 'test') ):
    for phase in range(phase_count):
        for wpm, snr in config:
            n += 1
            init_random_seed(ti << 31 | snr << 24 | wpm << 16 | phase)
            text = " ".join(  string_random('[KMURESNAPTLWI.JZ=FOY,VG5/Q92H38B?47C1D60X]+') for n in range(20) )
Esempio n. 18
0
 def do_draw(self, **kwargs):
     x = Xeger(limit=self.max_size)
     if self.pattern and isinstance(self.pattern, str):
         return x.xeger(self.pattern)
     return fake.pystr(min_chars=self.min_size, max_chars=self.max_size)
Esempio n. 19
0
def generate_number():
    regex = "([a-z]{1,3}[- ]{0,4}\d{8,13})|([a-z]{1,3}\d{0,3}[- ]{1,4}\d{8,13})|([a-z]{2,3}[- ]{0,4}[\d/]{8,15}$)|([a-z]{2,3}[- ]{0,4}[\d/]{8,15}$)|([a-z]{2,3}[- ]{0,4}[\d/]{8,15})|([a-z]{1,2}\d{,2}[- ]{,2}[\d/]{8,12})|([a-z]{1,2}[- ]{1,3}[\d ]{9,15})|([a-z]{1,2}[\d /]{12,18})|(\d{8,15}$)"
    x = Xeger(limit=20)
    randnum = x.xeger(regex)
    return randnum
Esempio n. 20
0
from xeger import Xeger
from random import *

operatorNoPat = "[+-]\\ {0,2}"
operatorPat = "\\ {0,2}[+-]\\ {0,2}"
multPat = "\\ {0,2}\\*\\ {0,2}"
consPat = "[+-]?[1-9][0-9]{0,1}"
monoPat = "x( {0,1}\\^ {0,1}[+-]?[1-9])?"
leftPat = "\\ {0,2}\\(\\ {0,2}"
rightPat = "\\ {0,2}\\)\\ {0,2}"
indexPat = "(\\^ {0,1}[+-]?[1-9])?"
pat = Xeger(limit=20)
nest = 0

# togetherPat = "(" + monoPat + "|" + sinPat + "|" + cosPat + "|" + consPat + ")"
# firstPat = "([+-] {0,2}){1,2}" + togetherPat
# midPat = "( {0,2}\\* {0,2}" + togetherPat + "){0,3} {0,2}"
# termPat = firstPat + midPat


def generator():
    s = generate_poly()
    while len(s) > 200:
        s = generate_poly()
    return s


def generate_poly():
    poly = ""
    operator = randint(0, 1)
    if operator:
Esempio n. 21
0
        ruleName = ''
        regexRule = ''
        if (fullString[:5] == 'match'):
            clippedMatch = fullString[6:]
            endRuleName = clippedMatch.find(' ')
            ruleName = clippedMatch[:endRuleName]
            ruleStart = clippedMatch.find('m|')
            regexRule = clippedMatch[ruleStart + 2:]
        if (fullString[:9] == 'softmatch'):
            clippedMatch = fullString[10:]
            endRuleName = clippedMatch.find(' ')
            ruleName = clippedMatch[:endRuleName]
            ruleStart = clippedMatch.find('m|')
            regexRule = clippedMatch[ruleStart + 2:]

        x = Xeger(limit=10)  # default limit = 10
        if (ruleName != ''):
            try:
                print(ruleName)
                header = x.xeger(regexRule)
                if (header == ''):
                    print(regexRule)
                rule['name'] = ruleName
                rule['header'] = str(header)
                serviceRules.append(rule)
            except:
                pass

out = json.dumps(serviceRules)
with open('serviceHeaders.json', 'w') as outfile:
    outfile.write(out)
Esempio n. 22
0
class ProbeServer(object):
    SO_ORIGINAL_DST = 80

    max_ports_per_service = 200
    BUFFER_SIZE = 256
    max_replies = 10
    socket_threads = []
    ssl_context = None

    def __init__(self, listen_port, max_ports_per_service, max_replies,
                 create_rules):
        self.max_replies = max_replies
        self.max_ports_per_service = max_ports_per_service
        self.listen_port = listen_port

        self.sockets = []
        self.ports = []
        self.fingerprint_to_probes = {}
        self.port_options = {}
        self.match_idx = {}
        self.ssl = None
        self.rand = SystemRandom()
        self.create_rules = create_rules
        self.add_server(listen_port, False, False, '127.0.0.1')
        self.small_gen = Xeger(limit=80)
        self.large_gen = Xeger(limit=900)

    def _add_iptables_rule(self, is_udp, from_port, to_port):
        subprocess.run([
            'iptables', '-t', 'nat', '-A', 'PREROUTING', '-p',
            'udp' if is_udp else 'tcp', '--dport',
            str(from_port), '-j', 'REDIRECT', '--to-port',
            str(to_port)
        ])

    def add_from_config(self, port, config):
        if port == self.listen_port:
            logging.warning(
                "Not adding listen port '%s' to list. Cannot spoof and forward to port simultaneously."
            )
            return False
        if config.has_directive('sslport') and not self.ssl_context:
            self.ssl_context = SSLContext(PROTOCOL_TLS)
            self.ssl_context.load_cert_chain('cacert.pem', 'private.key')
            ssl_ports = config.get_directives('sslport').ports
            ssl = port in ssl_ports
        else:
            ssl = False
        self.ssl = ssl

        probe_directive = config.get_directives('probe')[0]
        is_udp = probe_directive.protocol == 'UDP'
        if self.create_rules:
            if which('iptables') is not None:
                self._add_iptables_rule(is_udp, port, self.listen_port)
            else:
                logging.warning(
                    "Unable to automatically forward using iptables. You will need to manually configure your"
                    " firewall to redirect ports to {}".format(
                        self.listen_port))

        matches = config.get_directives('match')
        if not matches:
            logging.warning("Match directive not found. Skipping!")
            return False

        CLAIMED_PORTS.append(port)
        self.port_options[port] = matches
        self.match_idx[port] = 0
        self.ports.append(port)

    def add_server(self, port, udp, ssl, hostname):
        if udp:
            server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        else:
            server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

        if ssl:
            server = self.ssl_context.wrap_socket(server,
                                                  server_hostname=hostname)

        logging.info("Listening on {} port {}".format('UDP' if udp else 'TCP',
                                                      port))

        try:
            server.bind(("0.0.0.0", port))
        except OSError as e:
            logging.info('Unable to bind to port {}: {}'.format(port, e))
            return

        logging.info("Bound to port {}".format(port))
        if not udp:
            server.listen(32)
        self.socket_threads.append(server)

    def run(self):
        while True:
            readable_streams, _, _ = select.select(self.socket_threads, [], [])
            server = readable_streams[0]
            try:
                connection, address = server.accept()
            except OSError:
                continue
            except:
                traceback.print_exc()
                continue

            threading.Thread(target=self.handle_client,
                             args=(connection, address)).start()

    def handle_client(self, client, address):
        client_reply_map = {}
        is_udp = client.family == socket.SOCK_DGRAM
        while True:
            try:
                if is_udp:
                    data, _ = client.recvfrom(self.BUFFER_SIZE)
                else:
                    data = client.recv(self.BUFFER_SIZE)
                if not data:
                    raise SocketException(
                        'Client {} disconnected.'.format(address))

                dst = client.getsockopt(socket.SOL_IP, self.SO_ORIGINAL_DST,
                                        16)
                port, srv_ip = struct.unpack("!2xH4s8x", dst)
                # Please block this port externally!
                if port == 11337:
                    client.close()
                    logging.error(
                        "Detected direct traffic to port 11337 from ip '%s'! Blocked!",
                        srv_ip)
                    return

                logging.info("[%s:%s] -> S(%d): %s %s", address[0], address[1],
                             port, str(data), '(SSL)' if self.ssl else '')

                if port not in client_reply_map:
                    client_reply_map[port] = 0
                elif client_reply_map[port] >= self.max_replies:
                    logging.info(
                        'Client exceeded chatter for port {}. Killing connection...'
                        .format(port))
                    break

                client_reply_map[port] += 1
                matches = self.port_options[port]
                match = self.rand.choice(matches)
                pattern = match.pattern

                # Try with small/normal size, then try a larger pattern limit if we hit  a value error.
                try:
                    response = self.small_gen.xeger(pattern)
                except ValueError:
                    logging.warning(
                        'Unable to generate small response for repeat in regex "%s". Trying larger generator...',
                        pattern)
                    try:
                        response = self.large_gen.xeger(pattern)
                    except ValueError:
                        logging.error(
                            'Unable to generate response for overly long repeat in regex "%s"',
                            pattern)
                        response = ''

                response = response.encode('utf-8').decode()
                if is_udp:
                    client.sendto(response.encode(), address)
                else:
                    client.send(response.encode())
            except (SocketException, ConnectionResetError,
                    BrokenPipeError) as e:
                client.close()
                return False
            except Exception as e:
                logging.info(
                    "Encountered unknown error when handling data from %s.",
                    address)
                logging.exception(e)
                client.close()
                return False
Esempio n. 23
0
# -*- coding:utf-8 -*-

#生成随机的URL供测试用,数据格式为URL+5-20位数字,生成的文件名为test1.txt
from xeger import Xeger
_x = Xeger()
#num = 300
for i in range(100000):#生成100000条URL
   testStr = _x.xeger(r'URL^[0-9]{5,20}$')
   f = open('./test1.txt', 'a')
   f.write(testStr + ' ')
   #print(testStr)
   i += 1
Esempio n. 24
0
# !/usr/bin/env python
# -*- coding: utf-8 -*-
"""生成符合正则表达式的字符串"""
import sys
from xeger import Xeger

_x = Xeger(limit=4)
out = _x.xeger(r"[A-Z]\d[A-Z]")
print(out)  # A5G:这个就是随机生成的服务上面正则表达式的字符串


print(sys.maxsize)       # 9223372036854775807
xe = Xeger(limit=sys.maxsize)
bucket_name = xe.xeger("^[A-Za-z0-9]{3,64}$")
print(bucket_name)
print(len(bucket_name))  # 存储空间的命名规范:bucket的长度为3-64位,只能包括小写字母,数字和短横线
Esempio n. 25
0
from telegram.ext import Updater
import json
from telegram.ext import CommandHandler, MessageHandler, ConversationHandler, Filters, CallbackQueryHandler
from telegram import InlineKeyboardButton, InlineKeyboardMarkup
import logging
import requests
import regex as re
from xeger import Xeger
import datetime
import time
from copy import copy
from shutil import copyfile

# random string generator
xeger = Xeger(limit=16)

# Enable logging
logging.basicConfig(
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    level=logging.INFO)
logger = logging.getLogger(__name__)

try:
    with open("token") as f:
        token = f.readline().strip()
except:
    print(
        "No token! Create file named \"token\" under the same directory with main.py!"
    )
    exit(1)
try:
Esempio n. 26
0
print(regex)
x = Xeger()
posset = set()
for i in range(0,10):
    posset.add(x.xeger(repr(regex)))
for index, i in enumerate(posset):
    print(i)
exit()'''

no = 0
while no < 1000:
    regex = rand_example(limit)

    if len(repr(regex)) < 7:
        continue
    x = Xeger()

    posset = set()
    endcount = 0
    while endcount < 50 and len(posset) < 10:
        posset.add(x.xeger(repr(regex)))
        endcount += 1

    negset = set()
    for i in range(0, 1000):
        # random regex생성
        str_list = []

        for j in range(0, random.randrange(1, 15)):
            if random.random() < 0.5:
                str_list.append('0')
Esempio n. 27
0
def exec_java(expr):
    obj = subprocess.Popen(["java", "oo.assignment1.PolyDerivation"],
                           stdin=subprocess.PIPE,
                           stdout=subprocess.PIPE,
                           stderr=subprocess.PIPE)
    expr = expr.encode("utf-8")
    obj.stdin.write(expr)
    obj.stdin.close()
    cmd_out = obj.stdout.read()
    obj.stdout.close()
    cmd_out = cmd_out.decode()
    res = cmd_out.replace('^', '**')
    return res


_x = Xeger()

newStr = r"(([+-][+-]?[1-9][0-9]{0,5})|([+-][+-]?[1-9][0-9]{0,5}\*x\^[+-]?[1-9][0-9]{0,1})|([+-][+-]?x\^[+-]?[1-9][0-9]{0,1})|([+-][+-]?[1-9][0-9]{0,5}\*x)|([+-][+-]?x)){1,20}"


def test_generator():
    tests = []
    for i in range(200):
        testStr = _x.xeger(newStr)
        tests.append(testStr)
    return tests


'''

each = "-+x^384++3226505*x^8-840*x^-6244647-2069*x^-10901-2*x++5*x+x"
Esempio n. 28
0
# 作者      : pengcheng
# 创建时间  : 2020/11/25 14:21

from xeger import Xeger
import exrex
from faker import Faker
import rstr
from strgen import StringGenerator

x = Xeger(limit=10)
# print(x.xeger("^[a-z](?=.*[\u4E00-\u9FA5])[^\*/])"))

# print(exrex.getone("(^[a-z](?=.*[\u4E00-\u9FA5])[^\*/])",limit=10))
# fake = Faker("zh_CN")
# print(fake.name())
# print(fake.address())
# print(fake.ssn())
# print(fake.phone_number())
# print(fake.user_agent())
# print(fake.text(max_nb_chars=5))
# print(exrex.getone('[1-9]([^0-9]{4,10})'))
print(
    exrex.getone(
        '[a-zA-Z0-9\u4e00-\u4fa5~!@#$%^&*()_+`\-={}|\[\]\\:"<>?;\',\./]{12}'))

# print(rstr.rstr('[a-zA-Z]',10,include='1$%'))
# print(StringGenerator('[爱到覅据我i恩京拉萨大家发xdfgbdf]{10}&[\p]{2}').render_list(5,unique=True))
Esempio n. 29
0
class RegexGen:  #some lines are missing at the end with faster method
    def __init__(self):
        SetTitle('[One Man Builds Customizable Gen] ^| [REGEX GENERATION]')
        clear()
        self.title = """
                         ╔═════════════════════════════════════════════════════════════════╗
                                   ╦═╗╔═╗╔═╗╔═╗═╗ ╦  ╔═╗╔═╗╔╗╔╔═╗╦═╗╔═╗╔╦╗╦╔═╗╔╗╔
                                   ╠╦╝║╣ ║ ╦║╣ ╔╩╦╝  ║ ╦║╣ ║║║║╣ ╠╦╝╠═╣ ║ ║║ ║║║║
                                   ╩╚═╚═╝╚═╝╚═╝╩ ╚═  ╚═╝╚═╝╝╚╝╚═╝╩╚═╩ ╩ ╩ ╩╚═╝╝╚╝
                         ╚═════════════════════════════════════════════════════════════════╝
        """
        print(self.title)
        self.method = int(input('\t\t\t [>] [1]Faster [2]Accurate: '))
        self.threads = 1

        if self.method == 1:
            self.threads = int(input('\t\t\t [>] Threads: '))

        self.amount = int(input('\t\t\t [>] Amount (0 for unlimited): '))
        self.pattern = str(input('\t\t\t [>] Pattern: '))
        self.x = Xeger()
        self.generated = 0
        print('')

    def RegexGen(self):
        try:
            string = self.x.xeger(self.pattern)
            self.generated += 1
            print(f'\t\t\t [{self.generated}] {string}')
            with open('regex_generated.txt', 'a', encoding='utf8') as f:
                f.write(string + '\n')
        except:
            self.RegexGen()

    def Start(self):
        if self.method == 1:
            if self.amount > 0:
                threads = []
                for i in range(self.amount):
                    Run = True
                    while Run:
                        if active_count() <= self.threads:
                            thread = Thread(target=self.RegexGen)
                            threads.append(thread)
                            thread.start()
                            Run = False

                for x in threads:
                    x.join()

                print('')
                print('\t\t\t [#] REGEX GENERATION DONE! RETURNING TO MENU')
                sleep(2)
            else:
                while True:
                    if active_count() <= self.threads:
                        Thread(target=self.RegexGen).start()
        else:
            if self.amount > 0:
                for i in range(self.amount):
                    self.RegexGen()
                print('')
                print('\t\t\t [#] REGEX GENERATION DONE! RETURNING TO MENU')
                sleep(2)
            else:
                while True:
                    self.RegexGen()
Esempio n. 30
0
from xeger import Xeger
import aes_cbc_decryptor as ACD
import aes_cbc_encryptor as ACE
import random
import base64
import math

filename = '/home/jethromagbanua/Downloads/text_set'
with open(filename, 'rb') as rb:
    contents = rb.read()

ENCRYPTION_COUNT = 100
x = Xeger(limit=16)
encrypted_messages = []

for i in range(ENCRYPTION_COUNT):
    message = ''
    try:
        start = random.randint(0, int(math.floor(len(contents) - 401)))
        message = contents[start:400 + (start) + random.randint(0, 100)]
        print(start)
    except Exception as e:
        print("Boundary exceeded...trying again")
        i -= 1
        continue
    key = x.xeger("[a-zA-Z0-9]{16}")

    encrypted = ACE.encrypt_cbc(message, key)

    encrypted_messages.append([encrypted, key])