{"product_id":"new-final-project-guide-cybr-260-40a-security-scripting-with-python-champlain-college_id_266bbgqrt4","title":"(New Final Project Guide) CYBR-260-40A: Security Scripting with Python Champlain College","description":"\u003ch1 style=\"text-align: left;\" align=\"center\" class=\"MsoNormal\"\u003e\u003cb\u003e\u003cspan\u003eCYBR-260-40A: Security Scripting with Python Study Guide Solution\u003c\/span\u003e\u003c\/b\u003e\u003c\/h1\u003e\n\u003cp align=\"center\" class=\"MsoNormal\"\u003e \u003c\/p\u003e\n\u003cp align=\"center\" class=\"MsoNormal\"\u003e\u003cb\u003e\u003cspan\u003eFinal Design Document\u003c\/span\u003e\u003c\/b\u003e\u003cb\u003e\u003cspan\u003e\u003c\/span\u003e\u003c\/b\u003e\u003c\/p\u003e\n\u003cp align=\"center\" class=\"MsoNormal\"\u003e \u003c\/p\u003e\n\u003cp align=\"center\" class=\"MsoNormal\"\u003e\u003cspan\u003eChamplain College\u003c\/span\u003e\u003cspan\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp align=\"center\" class=\"MsoNormal\"\u003e\u003cspan\u003eCYBR-260-40A: Security Scripting with Python\u003c\/span\u003e\u003cspan\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp align=\"center\" class=\"MsoNormal\"\u003e\u003cspan\u003eProfessor Hartsel, Chad\u003c\/span\u003e\u003cspan\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003cb\u003e\u003cspan\u003e \u003c\/span\u003e\u003c\/b\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003c!-- [if !supportLists]--\u003e\u003cspan\u003e\u003cspan style=\"mso-list: Ignore;\"\u003e1) \u003c\/span\u003e\u003c\/span\u003e\u003c!--[endif]--\u003e\u003cb\u003e\u003cspan\u003eProblem description\u003c\/span\u003e\u003c\/b\u003e\u003cb\u003e\u003cspan\u003e\u003c\/span\u003e\u003c\/b\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003cspan\u003ePython is one of the programming languages that is widely used because of its versatility. Python can solve different problems that may occur by implementing security analysis or digital forensics operations. As one of the powerful programming languages globally, Python is used in key domains on the internet technologies such as web development, big data analytics, mobile application development, network forensics, and cloud computing (Lee et al., 2017). The versatility characteristic of Python comes from its ability to provide support and follow many programming paradigms like object-oriented, imperative, procedural, and functional.\u003c\/span\u003e\u003cspan\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003cspan\u003eNetwork security is often accomplished through the regular monitoring and control of network traffic. Penetration testers and network administrators often monitor network traffic to identify abnormalities that may comprise the system’s security features (Sinha, 2017). Network security professionals use port scanners to map traffic flow in the network to locate devices therein and learn the actions the users take on the devices to categorize them as threats or non-threats (Lubanovic, 2017). For an organization experiencing abnormal network traffic from the users, the network administrator or penetration tester can use a port scanner made from Python code that allows them to monitor the actions taken by users on the network.\u003c\/span\u003e\u003cspan\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003cspan\u003eThe port scanner created using Python will be used to find open ports in a network, which they can communicate with at the moment. The python port scanner will enable the network administrator and the penetration tester to find the status of the ports in a network. The provided report will help analyze the traffic in the network with emphasis placed on what ports are available, those which are occupied, and what the users are using the port form. The python port scanner will enable the network administrator and penetration tester to monitor network traffic effectively and prevent any threatening actions to the system’s security.\u003c\/span\u003e\u003cspan\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003cb\u003e\u003cspan\u003e \u003c\/span\u003e\u003c\/b\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003c!-- [if !supportLists]--\u003e\u003cspan\u003e\u003cspan style=\"mso-list: Ignore;\"\u003e2) \u003c\/span\u003e\u003c\/span\u003e\u003c!--[endif]--\u003e\u003cb\u003e\u003cspan\u003ePropose Solution\u003c\/span\u003e\u003c\/b\u003e\u003cb\u003e\u003cspan\u003e\u003c\/span\u003e\u003c\/b\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003cb\u003e\u003cspan\u003e \u003c\/span\u003e\u003c\/b\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003cspan\u003eA port scanner is a program designed to search a network host for open ports. This is used to check the security of their networks by using crackers to compromise it. To ports scan, a host is to scan for listening ports on a single target host. To port sweep, is to scan multiple hosts for a specific listening port.\u003c\/span\u003e\u003cspan\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003cspan\u003e \u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003cspan\u003eThe protocol stack that is most common on the Internet today is TCP\/IP. In this system, hosts and host services are referenced using two components: an address and a port number. There are 65536 distinct and usable port numbers.\u003c\/span\u003e\u003cspan\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003cspan\u003e \u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003cspan\u003eThe result of a scan on a port is usually generalized into one of three categories:\u003c\/span\u003e\u003cspan\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003cspan\u003eOpen or Accepted: The host sent a reply indicating that a service is listening on the port.\u003c\/span\u003e\u003cspan\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003cspan\u003eClosed or denied or not listening: The host sent a reply indicating that connections will be denied to the port.\u003c\/span\u003e\u003cspan\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003cspan\u003eFiltered, Dropped or Blocked: There was no reply from the host.\u003c\/span\u003e\u003cspan\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003cspan\u003e \u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003c!-- [if !supportLists]--\u003e\u003cspan\u003e\u003cspan style=\"mso-list: Ignore;\"\u003e3) \u003c\/span\u003e\u003c\/span\u003e\u003c!--[endif]--\u003e\u003cb\u003e\u003cspan\u003eInput, Output\u003c\/span\u003e\u003c\/b\u003e\u003cb\u003e\u003cspan\u003e\u003c\/span\u003e\u003c\/b\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003cspan\u003eMy program reads input from a csv file. The file consists of multi lines, each line includes host and range of ports. Here is a sample:\u003c\/span\u003e\u003cspan\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003cspan\u003e \u003c\/span\u003e\u003c\/p\u003e\n\u003ctable cellspacing=\"0\" border=\"1\" class=\"15\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd valign=\"top\" width=\"936\"\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003cspan\u003eHOST,RANGE_OF_PORTS\u003c\/span\u003e\u003cspan\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003cspan\u003e192.168.1.1,1024-49151\u003c\/span\u003e\u003cspan\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003cspan\u003e189.138.34.1,80-2048\u003c\/span\u003e\u003cspan\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003cspan\u003e \u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003cspan\u003eOutput: For each pair (host, port) from input the program will procedure status of host, port. It can be open or closed. Sqlite is used to store output data.\u003c\/span\u003e\u003cspan\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003cspan\u003eThe table schema:\u003c\/span\u003e\u003cspan\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003cspan\u003eCREATE TABLE IF NOT EXISTS output (\u003c\/span\u003e\u003cspan\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003cspan\u003e                                   id integer AUTO_INCREMENT,\u003c\/span\u003e\u003cspan\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003cspan\u003e                                   host text NOT NULL,\u003c\/span\u003e\u003cspan\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003cspan\u003e                                   port integer NOT NULL,\u003c\/span\u003e\u003cspan\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003cspan\u003e                                   status text NOT NULL,\u003c\/span\u003e\u003cspan\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003cspan\u003e                                   create_time datetime\u003c\/span\u003e\u003cspan\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003cspan\u003e                                   )\u003c\/span\u003e\u003cspan\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003cspan\u003e \u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003c!-- [if !supportLists]--\u003e\u003cspan\u003e\u003cspan style=\"mso-list: Ignore;\"\u003e4) \u003c\/span\u003e\u003c\/span\u003e\u003c!--[endif]--\u003e\u003cb\u003e\u003cspan\u003ePersistent Storage\u003c\/span\u003e\u003c\/b\u003e\u003cb\u003e\u003cspan\u003e\u003c\/span\u003e\u003c\/b\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003cspan\u003eI decide to use sqlite to store data instead of flat file or xml because:\u003c\/span\u003e\u003cspan\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003cspan\u003eOn the other hand if the data size is just a single or few lines then \u003c\/span\u003e\u003cb\u003e\u003cspan\u003eflat file\u003c\/span\u003e\u003c\/b\u003e\u003cspan\u003e is best option. What makes difference between them is, SQLite stores data in structured format, so it will be easier to find a record from multiple set of records which is very tedious process in case of flat file.\u003c\/span\u003e\u003cspan\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003cspan\u003eIf the data is going to change, the user is going to add stuff, or you need to retrieve different things at different times then I would say go with SQLite. It’s designed to do that and it’s very fast and lightweight. An XML document isn’t all that hard to do but XML isn’t as straightforward to use,\u003c\/span\u003e\u003cspan\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"MsoNormal\"\u003e\u003cspan\u003eSo i think using sqlite is a good choice in this case\u003c\/span\u003e\u003cb\u003e\u003cspan\u003e\u003c\/span\u003e\u003c\/b\u003e\u003c\/p\u003e","brand":"Take My Online Class","offers":[{"title":"Default Title","offer_id":53116303409427,"sku":null,"price":87.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0966\/3794\/4083\/files\/generate-a-banner-that-provides-a-cover-outline-to-provide-support-guide-and-assistance-to-students-with-their-1-protected-exams-2-assessments-3-proctored-tests-4-course-project-writi.png?v=1768692810","url":"https:\/\/takemyonlineclass.store\/products\/new-final-project-guide-cybr-260-40a-security-scripting-with-python-champlain-college_id_266bbgqrt4","provider":"Take My Online Class","version":"1.0","type":"link"}