chore(curriculum): add instructions for certificate 09 (#44241)

This commit is contained in:
Alessia Vanni
2021-11-25 11:22:06 +01:00
committed by GitHub
parent 67d0061aa1
commit 56e394eb0e
2 changed files with 103 additions and 22 deletions

View File

@@ -9,22 +9,74 @@ dashedName: port-scanner
# --description--
You will be [working on this project with our Replit starter code](https://replit.com/github/freeCodeCamp/boilerplate-port-scanner).
We are still developing the interactive instructional part of the Python curriculum. For now, here are some videos on the freeCodeCamp.org YouTube channel that will teach you everything you need to know to complete this project:
- [Python for Everybody Video Course](https://www.freecodecamp.org/news/python-for-everybody/) (14 hours)
- [Learn Python Video Course](https://www.freecodecamp.org/news/learn-python-video-course/) (10 hours)
# --instructions--
Create a port scanner using Python.
You can access [the full project description and starter code on Replit](https://replit.com/github/freeCodeCamp/boilerplate-port-scanner).
In the `port_scanner.py` file, create a function called `get_open_ports` that takes a `target` argument and a `port_range` argument. `target` can be a URL or IP address. `port_range` is a list of two numbers indicating the first and last numbers of the range of ports to check.
After going to that link, fork the project. Once you complete the project based on the instructions in 'README.md', submit your project link below.
Here are examples of how the function may be called:
We are still developing the interactive instructional part of the Python curriculum. For now, here are some videos on the freeCodeCamp.org YouTube channel that will teach you some of the Python skills required for this project:
```py
get_open_ports("209.216.230.240", [440, 445])
get_open_ports("www.stackoverflow.com", [79, 82])
```
<ul>
<li>
<a href='https://www.freecodecamp.org/news/python-for-everybody/'>Python for Everybody Video Course</a> (14 hours)
</li>
<li>
<a href='https://www.freecodecamp.org/news/learn-python-basics-in-depth-video-course/'>Learn Python Video Course</a> (2 hours)
</li>
</ul>
The function should return a list of open ports in the given range.
The `get_open_ports` function should also take an optional third argument of `True` to indicate "Verbose" mode. If this is set to true, the function shourd return a descriptive string instead of a list of ports.
Here is the format of the string that should be returned in verbose mode (text inside `{}` indicates the information that should appear):
```bash
Open ports for {URL} ({IP address})
PORT SERVICE
{port} {service name}
{port} {service name}
```
You can use the dictionary in `common_ports.py` to get the correct service name for each port.
For example, if the function is called like this:
```py
port_scanner.get_open_ports("scanme.nmap.org", [20, 80], True)
```
It should return the following:
```bash
Open ports for scanme.nmap.org (45.33.32.156)
PORT SERVICE
22 ssh
80 http
```
Make sure to include proper spacing and new line characters.
If the URL passed into the `get_open_ports` function is invalid, the function should return the string: "Error: Invalid hostname".
If the IP address passed into the `get_open_ports` function is invalid, the function should return the string: "Error: Invalid IP address".
## Development
Write your code in `port_scanner.py`. For development, you can use `main.py` to test your code. Click the "run" button and `main.py` will run.
## Testing
The unit tests for this project are in `test_module.py`. We imported the tests from `test_module.py` to `main.py` for your convenience. The tests will run automatically whenever you hit the "run" button.
## Submitting
Copy your project's URL and submit it to freeCodeCamp.
# --hints--