QUESTION 6 – CASE STUDY II [5+5+5+5+5 = 25 Marks] Reusable Passwords Case study adapted from: [Brooks hear. ICT Services Management (Custom Edition EBook), Pearson Education Australia, 2015. ProQuest Ebook Central, http://ebookcentral.proquest.com] Reusable Passwords The most common authentication credential is the reusable password, which is a string of characters that a user types to gain access to the resources associated with a certain username (account) on a computer. These are called reusable passwords because the user types the password each time he or she needs access to the resource. Unfortunately, the reusable password is the weakest form of authentication, and it is appropriate only for the least sensitive assets. Ease of Use and Low Cost: The popularity of password authentication is hardly surprising. For users, passwords are familiar and relatively easy to use. For corporate IT departments, passwords add no cost because operating systems and many applications have built-in password authentication. Dictionary Attacks The main problem with passwords is that most users pick very weak passwords. To break into a host by guessing and trying passwords, hackers often use password dictionaries. These are lists of passwords likely to succeed. Running through a password dictionary to see if a password is accepted for a username is called a dictionary attack. Password dictionaries typically have three types of entries: a list of common password, the words in standard dictionaries, and hybrid versions of words such as capitalizing the first letter and adding a digit at the end. If a password is in one of these dictionaries, the attacker may have to try a few thousand passwords, but this will only take seconds. No password that is in a cracker dictionary is adequately strong, no matter how long it is. Fortunately, good passwords cannot be broken by dictionary attacks. Good passwords have two characteristics. First, they are complex. It is essential to have a mix of upper and lower case letters that does not have a regular pattern such as alternating uppercase letters lowercase letters. It is also good— and some would say necessary— to include non-letter keyboard characters such as the digits (0 through 9) and other special characters (&, #./,?, etc.). If a password is complex, it can only be cracked by a brute-force attack, in which the cracker first tries all combinations of one character passwords, all combinations of two-character passwords, and so forth, until the attacker finds one that works. Complexity is not enough, however. Complex passwords must also be long. For short complex passwords, brute force attacks will still succeed. Beyond about 10 or 12 characters, however, there are too many combinations to try in a reasonable period of time. Overall, while long complex passwords can defeat determined attacks, most users select passwords that can be cracked with dictionary attacks. Reusable passwords are no longer appropriate in an era when password cracking programs can reveal most passwords in seconds or minutes. Passwords are only useful for non-sensitive assets. BN206 - System Administration and Management - Final Assessment Trimester 2, 2020 Page 8 of 10 Answer the following questions:
1. Discuss and explain the types of passwords are susceptible to dictionary attacks? [5 marks]
2. Can a password that can be broken by a dictionary attack be adequately strong if it is very long? Justify your answer. [5 marks]
3. Explain the types of passwords can be broken only by brute-force attacks. [5 marks]
4. What are the characteristics of passwords that are safe from even brute-force attacks? [5 marks]
5. Discuss why is it undesirable to use reusable passwords for anything but the least sensitive assets. [5 marks]
In: Computer Science
1. Give an example of the application for each of the following network models. (Do not explain model with layers. Provide examples where these models are used). a. DoD model
b. OSI
c. RINA
In: Computer Science
•Write a JAVA program to check a given password strength from a user's input.
•Create a method to check the number of characters. It must be more than 8.
•Create a method to check the password to have at least one uppercase letter.
•Create a method to check the password to have at least one lowercase letter.
•Create a method to check the password to have at least one digit.
•Create a method to check the password to have at least one special character (!, 2, #, %, &, *, (, ), etc.)
•Create a method called isValid to check if the password is valid.
In: Computer Science
PYTHON!!!!
Exercise 1 - Darcy-Weisbach GUI
Let's combine all of our Darcy-Weisbach formulas, give it a graphical interface (and finally put it to rest!).
Combine your Darcy-Weisbach formula from Assignment 4 with your improved function for fD for turbulent flow in Assignment 6 (leave it as a function and have your formula call it for the turbulent flow condition). Then create a GUI for your formula to enter the length, diameter and velocity input values, and display the resulting pressure drop. Make sure to give your window a title and include Calculate and Close (or "Quit") buttons.
In: Computer Science
Monitoring is the routine collection of information to track system activities and progress, evaluation is used to determine the relevance and fulfilment of efficiency, effectiveness, impact and sustainability on the organisation network. Explain the Realtime Monitoring Process and give examples of some tools that can be used to accomplish this.
In: Computer Science
The following code will
generate a Decision Tree. You need to run the code and explain the
tree. After you get the Tree. You need to explain how does it draw
like that.
install.packages("rpart.plot") # install package
rpart.plot
##########################################
# section 7.1.1 Overview of a Decision Tree
##########################################
library("rpart")
library("rpart.plot")
# Read the data
setwd("c:/data/")
banktrain <-
read.table("bank-sample-test.csv",header=TRUE,sep=",")
## drop a few columns to simplify the
tree
drops<-c("age", "balance", "day", "campaign", "pdays",
"previous", "month")
banktrain <- banktrain [,!(names(banktrain) %in%
drops)]
summary(banktrain)
# Make a simple decision tree by only keeping the
categorical variables
fit <- rpart(subscribed ~ job + marital + education + default
+ housing + loan + contact + poutcome,
method="class",
data=banktrain,
control=rpart.control(minsplit=1),
parms=list(split='information'))
summary(fit)
# Plot the tree
rpart.plot(fit, type=4, extra=2, clip.right.labs=FALSE,
varlen=0, faclen=3)
In: Computer Science
question: Draw a MPLS diagram with the following requirements: [ 2 + 8 = 10 marks]
1. 10 IPv6 routers: 4 routers in one segment, 3 routers in second segment, 1 router to connect these two segments
2. Explain MPLS operation in above network.
In: Computer Science
Network administrators warn against configuring a file server to use DHCP. Explain what would happen if a file server was configured to use DHCP and, due to a power outage, the file server and DHCP server rebooted at the same time? Justify your answer.
In: Computer Science
For this assignment, write a program that will calculate the quiz average for a student in the CSCI 240 course. The student's quiz information will be needed for later processing, so it will be stored in an array.
For the assignment, declare one array that will hold a maximum of 12 integer elements (ie. the quiz scores).
It is recommended that this program be written in two versions. The first version of the program will read a set of quiz scores from standard input (the keyboard), as has been done since the start of the semester. The second version of the program will alter the first version so that the program reads from an input file, rather than standard input. The second version is the only one that will be handed in for grading.
Version 1
As mentioned above, this version of the program will read the set of quiz scores from standard input. A quiz score of -1 will signal the end data.
NOTE: all of the functions mentioned in this logic are described below.
Declare an array of integers and an integer variable to hold the number of quizzes that have been completed. If any other variables are needed, those should also be declared.
Fill the array by calling the buildQuizArray() function. The buildQuizArray() function returns the number of quiz scores that it read. This returned value should be saved in the the integer variable that holds the number of quizzes that have been completed.
Call the calcQuizAverage() function to calculate the student's quiz average. The calculated quiz average that is returned from the calcQuizAverage() function should be displayed with 2 digits after the decimal point and an appropriate label.
Display the student's quiz scores by calling the printQuizArray() function. Use a title such as "Quiz Scores".
Functions to write and use
Write and use the following 5 functions in the program.
int buildQuizArray( int quizArray[] )
This function will fill the array with the quiz scores.
It takes as its arguments an array of integers that will hold the quiz scores. It returns an integer that is equal to the number of quiz scores that were read. Note about the return value: this value is important because it's possible that the student has not completed the semester and therefore has not taken all 12 quizzes yet.
The function should start by declaring any variables that are needed. At a minimum, there should be two integers: a subscript and another to hold the quiz score that is entered by the user.
Initialize the subscript to the beginning of the array.
Get the first quiz score from the user. Make sure to indicate that a quiz score of -1 will end the input.
In a loop that will execute as long as the quiz score is not -1, put the quiz score into the array at the subscript position, increment the subscript to the next spot in the array, and get the next quiz score from the user.
Finally, return the number of quizzes that were placed in the array (think about the subscript).
void printQuizArray( string title, int quizArray[], int numberOfQuizzes )
This function will display the information for the quizzes that have been completed.
It takes three arguments: the first argument is a string that holds the title for the report that is being displayed, the second argument is an array of integers that holds the quiz scores, and the third argument is an integer that holds the number of quiz scores in the array.
It returns nothing.
The function should first display the string argument followed by a line of dashes on the next line.
In a loop that executes numberOfQuizzes number of times, display the quiz number and quiz score out of 10 points.
Use the following as a basic format for the output (this assumes that the string argument holds "Quiz Scores" and that numberOfQuizzes holds the value 5):
Quiz Scores ---------------- Quiz 1: 4/10 Quiz 2: 10/10 Quiz 3: 5/10 Quiz 4: 10/10 Quiz 5: 8/10
double calcQuizAverage( int quizArray[], int numberOfQuizzes )
This function will calculate a student's quiz average.
It takes two arguments: the first argument is an array of integers that holds the quiz scores, and the second argument is an integer that holds the number of quiz scores in the array.
It returns a double: the calculated quiz average.
The function should start by executing a loop that will calculate the sum of the quiz scores in the array.
If the student has taken more than two quizzes, the quiz average is calculated as follows (NOTE: the formula is long. Make sure you're getting the entire formula):
(sum of quiz scores - sum of 2 lowest quiz scores) / (10 * (number of quizzes - 2)) * 100
Notice that the sum of the two lowest quiz scores is part of the formula. This sum can easily be found by sorting the quiz scores in ascending order and then adding up the values at positions [0] and [1] of the array. However, avoid changing the array argument that is passed to the function because the order that the quiz scores were entered by the user must be maintained. Instead, create an array of twelve integers and call the copyArray() function that is described below to copy the original values from the array argument into the new array. Call the sortArray() function to sort the new array and then calculate the sum of the two lowest quiz scores using the new array.
If the student has taken two quizzes or fewer, the quiz average is calculated as follows:
sum of quiz scores / (10 * number of quizzes) * 100
Once the quiz average has been calculated, it should be returned.
void sortArray( int array[], int numberOfQuizzes )
This function will use the selection sort algorithm that was presented in lecture to sort the array in ASCENDING order.
It takes two arguments: the first argument is an array of integers that holds the quiz scores, and the second argument is an integer that holds the number of quiz scores in the array.
It returns nothing.
void copyArray( int destination[], int source[], int numberOfValues )
This function will copy a specific number of values from one array into another array.
It takes three arguments: the first argument is an array of integers that values will be copied into, the second argument is an array of integers that values will be copied from, and the third argument is an integer that holds the number of values to be copied.
It returns nothing.
In a loop that executes numberOfValues number of times, copy a value from the source array into the corresponding location in the destination array.
Version 1 Program Requirements:
The array should be able to hold 12 elements. Use a symbolic constant to represent the maximum size of the array.
The array has the capability to hold 12 elements, however, that does not mean that it will all be used. This is the reason that the number of elements in the array is being passed to the printQuizArray, calcQuizAverage, sortArray, and copyArray functions. This value is the return value from buildQuizArray.
Version 1 Output:
Run 1
Enter your score for quiz 1 (-1 to quit): 10 Enter your score for quiz 2 (-1 to quit): 0 Enter your score for quiz 3 (-1 to quit): 8 Enter your score for quiz 4 (-1 to quit): 6 Enter your score for quiz 5 (-1 to quit): 9 Enter your score for quiz 6 (-1 to quit): -1 Your quiz average is 90.00% Quiz Scores ---------------- Quiz 1: 10/10 Quiz 2: 0/10 Quiz 3: 8/10 Quiz 4: 6/10 Quiz 5: 9/10
Run 2
Enter your score for quiz 1 (-1 to quit): 6 Enter your score for quiz 2 (-1 to quit): 7 Enter your score for quiz 3 (-1 to quit): -1 Your quiz average is 65.00% Quiz Scores ---------------- Quiz 1: 6/10 Quiz 2: 7/10
Run 3
Enter your score for quiz 1 (-1 to quit): 10 Enter your score for quiz 2 (-1 to quit): 10 Enter your score for quiz 3 (-1 to quit): 0 Enter your score for quiz 4 (-1 to quit): 6 Enter your score for quiz 5 (-1 to quit): 7 Enter your score for quiz 6 (-1 to quit): 8 Enter your score for quiz 7 (-1 to quit): 6 Enter your score for quiz 8 (-1 to quit): 0 Enter your score for quiz 9 (-1 to quit): 10 Enter your score for quiz 10 (-1 to quit): 8 Enter your score for quiz 11 (-1 to quit): 10 Enter your score for quiz 12 (-1 to quit): 8 Enter your score for quiz 13 (-1 to quit): -1 Your quiz average is 83.00% Quiz Scores ---------------- Quiz 1: 10/10 Quiz 2: 10/10 Quiz 3: 0/10 Quiz 4: 6/10 Quiz 5: 7/10 Quiz 6: 8/10 Quiz 7: 6/10 Quiz 8: 0/10 Quiz 9: 10/10 Quiz 10: 8/10 Quiz 11: 10/10 Quiz 12: 8/10
Version 2
This is the version of the program that will be submitted for grading. It does the same thing as Version 1 of the program, but the data will be read from an input file rather than standard input.
The majority of the changes for this version of the program will be made in the buildQuizArray function. The two changes that are not in buildQuizArray are to add #include <fstream> and #include <cstdlib> to the top of the code. The #includes are needed so that files can be used in the program.
Input File
The input for this version of the program will be read from a file named quizscores.txt. The file consists of a set of records that contain the quiz score that a student earned on a quiz in CSCI 240. Each record represents one quiz. The file resembles the following:
10 0 8 6 9
Changes to buildQuizArray
ifstream infile;
infile.open( "quizscores.txt" );
The open statement will open a file named quizscores.txt.
Windows Users: the quizscores.txt file MUST be located in the same directory as the CPP file.
Mac Users: there are two options available to handle the input file.
if ( infile.fail() ) { cout << "The quizscores.txt input file did not open"; exit(-1); }
If version 1 of the program had something like:
cout << "Enter the quiz score (-1 to quit): "; cin >> num;
In version 2 of the program, it should now be:
infile >> num;
while( infile )
As long as there is information in the file, the input file stream variable will remain valid (or true). Once the end of the data has been reached, the stream will become invalid (or false). Note: this test is only successful AFTER an attempt has been made to read data from the file. This means that a standard read loop pattern with a priming and secondary read should be followed.
infile.close();
Add a declaration for an input file stream to the variable declarations within buildQuizArray. For example:
Before getting the first quiz score from the user, open the input file. This will connect a variable in the program with the file of quiz scores.
Option 1: put in the set of double quotes ("") between the parenthesis for the open command, find where the file has been saved on your Mac, and then drag and drop the file in between the quotes. It should place the name of the file, including the complete path of where it is located on your Mac, between the quotes. If you use this option, before handing in the CPP file, remove the path name from the file name so that it only has quizscores.txt between the double quotes.
Option 2: Build the Program one time. In the Project Navigator (it's on the left side of the screen on my version of XCode), there should be two folders: one with the name of the project and another with the name Products. Click on the Products folder. There should be a file with the name of the project. Click on the file in the Products folder. In the File Inspector (it's on the right side of the screen on my version of XCode), there should be a "Full Path" label that is followed by the complete path where the executable for the project will be saved. Open this path in Finder by clicking on the small arrow after the path name. Put the quizscores.txt file in the location that opens in Finder. If you use this option, the open statement can be used as shown above.
Once the file has been opened, make sure that it opened correctly. This is an important step because a file cannot be processed if it doesn't exist or open correctly. To test if the file opened correctly:
In version 1 of the program, cin was used to get data from standard input (the keyboard). Since this version of the program is reading input from a file rather than standard input, substitute the name of the input file stream (infile in the example above) in place of cin. The cout statements that display a prompt for the user are not needed with the data being read from a file.
The input file does not have a quiz score -1 to indicate the end of data. Instead, the loop should test to see if there is data in the file. One way to do this is to use the input file stream variable as a boolean variable:
Finally, once all the data has been read from the file, the file should be closed. This should be placed after the closing curly brace for the loop but before the return statement for the function. To do this, execute the following:
Version 2 Output
The output that is produced with the quizscores.txt input file:
Your quiz average is 87.00% Quiz Scores ---------------- Quiz 1: 9/10 Quiz 2: 10/10 Quiz 3: 10/10 Quiz 4: 9/10 Quiz 5: 0/10 Quiz 6: 4/10 Quiz 7: 10/10 Quiz 8: 8/10 Quiz 9: 10/10 Quiz 10: 0/10 Quiz 11: 7/10 Quiz 12: 10/10
Version 2 Program Requirements:
Add #include <fstream> and #include <cstdlib> at the top of the program.
Copy the input file and write the program so that it reads the data from the current directory (ie. don't specify a file path).
As with program 6, each of the functions MUST have a documentation box that describes the function. This is the last reminder about function documentation that will appear in the assignment write-ups.
Hand in a copy of the source code using Blackboard.
Quiz Scores are as Follows:
9 10 10 9 0 4 10 8 10 0 7 10
In: Computer Science
The data-bound controls can be classified into .....? explain with Examples (C#)
In: Computer Science
This question is in C++
Problem 3
Write a templated C++ class to represent an itinerary.
An itinerary has a title, a source position and a destination position. In addition, it may include intermediate positions.
All positions have the same abstract type T. The real type can be decided later, for example it can be a cartesian point with x,y,z coordinates, or an airport code, or a city name, or a country name, etc ..
The itinerary includes a vector of times: departure time, arrival time at the next position, time of departure from the next position, and so on. The last entry in this vector is the time of arrival at the destination position.
Write a function to print the itinerary with the time schedule.
Overload the addition operator to add two itineraries.
Test your templated class in a main function.
It only requires time not date, based on a 24 hour clock (eg. 1 PM would be 13:00)
In: Computer Science
A consulting firm hired you to improve the network security of a Hospital by adding extra services for defence against external attacks.
1. In order to protect classified encrypted data from disclosure and transmission outside of the Hospital network, you need to choose among the following: proper configuration of DMZ, use of strong encryption algorithms, safeguards over keys. State your selection and justify your choice.
2. You want to use a packet firewall to protect the Hospital network but you are hesitant to choose the right location among the following: putting it on the web server at DMZ, putting it along with the IDS server, putting it on the screened subnet with DMZ, or putting it on the domain boundary. Recommend the right answer with justification as to why or why not.
3. Which one of the following can be used to protect a network against unauthorised external connections: VLAN, strong authentication, or an access control list of trusted devices? Justify your answer.
In: Computer Science
In this assignment you are developing a fraud detection system to detect fraudulent activities based on this Decision Three. Your program receives a comma separated transaction log with the below format as its input:
[amount],[# of transactions in last day],[area code],[transaction time]
Your program should use string operations to decompose the transaction log and store its elements in variables of appropriate types. Then, based on the values of those attributes and the decision three, it attaches either a ",fraud" or ",no fraud" at the end of the transaction log and prints it to the console. (Note: Assume that the area code can only be 31451,42683,90902,10267
For example, if the input is:
1000,4,90902,0602
The output will be:
1000,4,90902,0602,no fraud
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
/* Type your code here. */
int amount;
int noOfTransactions;
int areaCode;
String transactionTime;
}
}
In: Computer Science
a) Change requires more coordination than does the
performance of normal
organisational tasks. Any time you change something, you discover
its connections to
other parts of the system organisation, which must be changed as
well. Discuss the
importance of documentations in the context of change
management.
b) Why is it important to identify the information requirements of
a new system prior
to building the system? Discuss this in terms of change management
in IT
implementation?
In: Computer Science
(a) Illustrate how the list 5, 13, 2, 25, 7, 17, 20, 8, 4 is sorted with Mergesort. Count the number of comparisonsmade.
(b) Illustrate how the list 5, 13, 2, 25, 7, 17, 20, 8, 4 is sorted with Heapsort
In: Computer Science