+1 (315) 557-6473 

Python Program to Implement Regular Expressions Assignment Solution.


Instructions

Objective
Write a python assignment program to implement regular expressions.

Requirements and Specifications

Using Regular Expressions (Regex)
Objectives:
  • Demonstrate ability to formulate regular expressions (regex) for common system administration tasks
  • Demonstrate ability to search for texts/files using regex (application area IP address search, etc.)
  • Demonstrate ability to pass regex as arguments to functions/methods that perform file searches (content and filename)
Tasks:
    1. The file attached (empdata.csv) contains records of employees. Upon reviewing your log files as a system administrator, you realized some employees’ computers have been compromised. The compromised computers are in the 200.10.15.0/24 subnet. Implement a function that would print the names, department, and email address of employees using such machines to a file called compromised.csv .Please note that, certain IP addresses in the given address range cannot be assigned to end-user computers.
    2. Following up on 1 above, you also realized that the function to enforce password complexity did not work properly. Given that the password policy has the requirements below, implement a function to print out the names of all employees with weak passwords.
  • At least 8 characters in length
  • Must have a combination of upper- and lower-case characters
  • Must have at least 1 digit
    1. Management of your organization has informed you that the name of the Accounting department has been changed to Finance. Write a function to create a new file (empdata-new.csv) containing information of all employees with the updated department names. Your program should display the names of employees from the Finance Department.
    2. Using the functions implemented above, implement a menu system that allows any of the functions above to be select by users and the corresponding tasks performed.
    NB: Submit a single script that addresses all the requirements stated above.
    Source Code
    import re
    def CompromisedComputers(lines):
    """This is the function for Question 1
    It receives a list of lines, and then searchs for compromised users
    Args:
    lines (List[str]): List containing all lines from file
    """
    # Create a line to store the matches
    matches = list()
    # Loop over lines
    for line in lines:
    # Split using regex
    row = re.split(',', line)
    first_name = row[0]
    last_name = row[1]
    email = row[2]
    ip_address = row[3]
    department = row[4]
    #Now, get the subnet using regex
    subnet = re.search('200.10.15.', ip_address)
    if subnet != None:
    #print(str(subnet), department)
    # Save match
    matches.append((first_name, last_name, department, email))
    # Now if there is at least one match, save to 'compromised.csv'
    if len(matches) > 0:
    fout = open('compromised.csv', 'w+')
    for match in matches:
    line = ','.join(list(match))
    fout.write(line+'\n')
    fout.close()
    ; else:
    print("There are no matches for the given subnet.")
    def PrintWeakPasswordEmployees(lines):
    # Loop over lines
    for line in lines:
    # Remove line breaks
    line = re.sub('\n', '', line)
    # Split
    row = re.split(',', line)
    # Get name
    firstname = row[0]
    lastname = row[1]
    # Get password
    password = row[6]
    # Check password conditions
    # CONDITION 1: Password must be at least 8 characters long
    condition1 = re.match(r"^[a-zA-Z]{8,}$", password)
    # CONDITION 2: Password must have combination of upper and lower cases
    ; condition2 = re.match(r"(?=.*[a-z])(?=.*[A-Z])", password)
    # CONDITION 3: Check that it has at least one digit
    condition3 = re.match(r"(?=.*\d)", password)
    # Now, if at least one of the three conditions are not met, consider it a weak password
    if not condition1 or not condition2 or not condition3:
    print(firstname, lastname)
    def ReplaceAccountingWithFinance(lines):
    # Open the output file
    fout = open('empdata-new.csv', 'w+')
    # Loop over lines
    for line in lines:
    # Remove line breaks
    line = re.sub('\n', '', line)
    # Now, if the line contains the word 'Accounting', replace with 'Finance'
    if re.search(r"Accounting", line):
    line = re.sub(r'\bAccounting\b', 'Finance', line)
    # Write to new empdata file
    fout.write(line+'\n')
    # Close
    fout.close()
    if __name__ == '__main__':
    # Read the file
    file = open('empdata.csv', 'r')
    ; # Read all lines
    lines = file.readlines()
    # Close file
    ; file.close()
    # Skip first line (headers)
    lines.pop(0)
    # Display menu
    print("1) Generate file with compromised computers.")
    print("2) Print employees with weak passwords.")
    print("3) Replace 'Accounting' department with 'Finance' and generate new data file.")
    # Ask for option
    option = int(input("Please enter option: "))
    if option == 1:
    print("Generating file with compromised employes... ", end="")
    CompromisedComputers(lines)
    print("done!")
    elif option == 2:
    print("The employees with weak passwords are:")
    PrintWeakPasswordEmployees(lines)
    elif option == 3:
    print("Generating new employees data... ", end="")
    ReplaceAccountingWithFinance(lines)
    print("done!")
    else:
    print("Invalid option. Exiting program...")