
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
Welcome to the course!
An overview of what we will be covering in this course and how it is structured.
We take a look at a quick example of a log analysis security tool.
This is the kind of tool that you will be able to build using Python once you finish this course.
We will use https://repl.it/ for this example.
The code for the log analyzer tool. Be sure to download the access.log file from the lecture resources to try as your sample input.
We take a look at another security tool, this time it is a password checker.
You will be able to easily build Python tools like these once you finish this course.
We will use the https://haveibeenpwned.com API for this example.
We go over the development environment that we will be using for this course.
repl.it is at https://repl.it/
We will add latest updates relating to the course in this text
An introductory look at what is covered in section 2
We explore what is meant by cyber security in the modern world and what actually comprises the work of a cyber security professional.
We will review the methodology of cyber security professionals.
In this brief text summary we will talk about Python and the crash course that's available as a bonus in section 7
An overview of repl.it and how to use Python with this great, free tool
Penetration Testing is a key practice for cyber security professionals. Here we go over the basics of what it is and the variables involved.
Demonstrate a python-based penetration testing workflow by sending requests, evaluating status codes, and probing for admin panels and potential vulnerabilities on a simple web site.
Explore remediation in penetration testing with honeypots that trap attackers and network delays that slow suspicious activity, plus traffic masking to mislead attackers while preserving legitimate tests.
Port scanning checks for open ports across a network and fingerprints software and operating systems. Defend by closing default ports, limiting information exposure, and monitoring for scans.
Build a simple port scanner in Python using the socket library, check ports with zero return codes, and log open or closed results while noting legal cautions.
Configure firewalls to hide open ports and enforce a white list, disable unused services like telnet and mail, and modify banners to mislead port scanners.
As the number of Internet-connected devices continue to grow, botnets are a dominant cause for concern in today's cyber security and information technology landscape. This is an overview of what they are and how they work, including an explanation of DDoS attacks.
Explore a simple Python example that dumps environment variables to a dict, converts to JSON, and posts secrets to a server to simulate botnet data collection and phoning home.
The lecture demonstrates a Python botnet code example that collects secrets, saves them to a file, and posts data to a remote endpoint, plus a basic denial-of-service scenario.
Learn botnet remediation by applying malware protection, regular patching, network monitoring, and asset management to prevent and detect compromised devices, with firewall filtering and multi-factor authentication safeguards.
Understand how code exploits enable remote or local unauthorized code execution and data access, and examine zero days, bug bounty programs, and the Madis ploy framework.
Learn how a code exploit can overflow buffers by feeding a binary file of crafted bytes using Python, revealing how garbage data can leak passwords when the file is processed.
Stay informed about vulnerabilities and patches, apply timely updates, test systems after patches, and use authorized sources with multi-factor authentication to prevent exploits.
Explore computer forensics in cybersecurity by recovering data from hardware, memory, and storage, reconstructing event timelines, and analyzing logs and device data as evidence.
Explore a Python-based digital forensics example that fingerprints two dissimilar-looking text files with hashes, encodes in utf-8, and strips whitespace to reveal identical content.
Maintain regular backups and tamper-proof audit trails, including access logs, to prevent the need for forensic investigation and to reconstruct past events for compliance.
Analyze network traffic by inspecting packets across connections to detect authorized vs rogue activity and build audit trails with tools like Nmap, peak cap, and Wireshark.
Explore network traffic analysis with a Python code example using scapy to sniff packets on a specified interface, print packet summaries, and run with administrator privileges.
Implement remediation for network traffic analysis by disabling vulnerable ports and services, enforcing firewall rules, patching default servers, segmenting network zones, and encrypting traffic.
Explore how wireless connectivity relates to cybersecurity, covering wardriving, rogue access points, and the risks of zero physical access and default credentials.
Explore wireless analysis with Python using the airport utility on macOS and the subprocess module to list SSIDs, channels, and security status on a local machine with admin privileges.
Address wireless vulnerabilities by hiding SSIDs, separating guest and internal networks, and changing default credentials. Implement WPA and WPA2, and apply MAC address filtering to harden the network.
Explore web reconnaissance as a passive information-gathering activity used to plan attacks or defend assets, using tools like BuiltWith, Netcraft, recon-ng, and SpiderFoot.
Demonstrates web reconnaissance with Python by fetching a domain via requests, detecting SSL, stylesheets, and JavaScript, and cataloging results into a JSON profile with a unique digest.
Implement remediation for web reconnaissance by logging and monitoring, minimize exposed data, and apply default policies plus robots.txt to limit bot indexing.
We explore the topic of antivirus evasion and how an application can bypass an antivirus scan.
Examine how a simple Python command can be concealed with base64 encoding and obfuscated code to bypass antivirus checks, including writing and evaluating decoded content.
Explore antivirus evasion remediation by updating virus definitions, applying signatures across devices, and integrating a security tool suite with firewalls, authentication, and monitoring to prevent and detect malicious code.
We take a look at the various non-technical ways in which attackers can get sensitive information and compromise information systems.
Demonstrates social engineering through a convincing fake bank webpage, showing how attackers clone trusted sites to harvest usernames and passwords via urgent prompts to log in.
Cultivate a security culture to combat social engineering through education, password hygiene, and verification to prevent phishing and spearfishing while avoiding sharing codes or letting others borrow devices.
An introductory look at the content covered in section 3
Build a Python security tool named Achilles with a command line interface, using argument parsing, input validation, and HMO document parsing to perform vulnerability analysis and output a report.
Learn how to manage Python dependencies with pip, install packages via Python 3, and handle admin permissions while using popular packages like Django, requests, and validators.
Verify Python 3 is installed locally and write a simple script. Create a tool directory with the Sublime editor, add a shebang, make it executable, and run to print hello.
Explore printing command line arguments in Python using the sys module, see the program name and first real argument, and preview transitioning to argparse.
Learn to implement argument parsing in Python by creating a parser, adding version and URL arguments, understanding short flags and usage output, and distinguishing required versus optional arguments.
We build a tool that parses command-line arguments as a namespace and validates the user role with a validators dependency, then uses if statements to handle valid and invalid input.
Learn to validate a url and send web requests with Python using the requests library, fetching page text from your own sites and handling invalid urls with clear error messages.
Parse HTML documents served by a local http server using urllib.parse and BeautifulSoup, inspect forms with find_all, and assess elements for vulnerability reporting.
Parse forms from requests and evaluate their action and scheme to determine if they submit to secure endpoints, marking each form as secure or non-secure for vulnerability analysis.
Generate a report from our analysis by flagging non-secure forms in the document. Print the issue report for form vulnerabilities and prepare for the next check.
Add a second check to detect secrets in file comments using BeautifulSoup and a lambda function, reporting hidden keys without printing the comments.
Analyze a demo security page by checking HTML forms for plain text password fields and verify password inputs use the proper password type to prevent exposure.
Improve the report by validating empty reports, printing secure messages when no issues exist, and generating a vulnerability report for found issues, while preparing for configurable output.
Explore adding a configurable option with an optional --config argument, reading a yaml file, and loading it into a Python object to guide app behavior.
Load YAML config files with the yemo library, converting streams or strings into Python objects. Override a default config with file values and merge conflicts to ensure correct settings.
Merge the existing default configs with new file data into a combined dictionary, updating common keys and enabling file output. Similarly validate behavior by disabling forms and passwords.
Learn how to add a file output option for reports in a Python command-line tool, including a new flag, file path handling, opening for writing, and constructing the report header.
Learn to back up your Python cybersecurity tool by creating a public GitHub repository, initializing git, staging files, committing, and pushing to the upstream master branch.
Understand how to test a Python security tool with integration testing, treating it as a black-box by feeding inputs and validating outputs, including error conditions on the command line.
Create usage documentation for your tool with a markdown readme on GitHub, and generate docs using pydoc, docstrings, Sphinx, and reStructuredText hosted on Read the Docs.
Package and distribute your Python tool using wheel and PyPI, with readme and license files. Consider conda as an alternative and host on GitHub or GitLab, or store private packages.
A brief look at the content covered in section 4
Explore why web application security matters in a browser-based, common-technology world. Learn how input creates attack surfaces and how the open web application security project's top 10 risks guide protection.
Explore the open web application security project, its top 10 risks, and how to address injection, broken authentication, sensitive data exposure, and cross-site scripting in modern web apps.
Explore the OWASP top 10 vulnerabilities, understand why they are dangerous, review Rails examples, and identify injection types and broken authentication subcategories.
Explore the Ruby on Rails framework with its beginner-friendly design and built-in features, and examine top 10 vulnerabilities in a Rails app with security focus and bounty program.
Explore PHP's role in the web, from the lamp stack to WordPress, Drupal, and MediaWiki. Assess its beginner-friendly nature and the security considerations of its many configurable surfaces.
Explain how command injection exploits rely on unsanitized input to execute code on a server, often targeting Linux-based systems with Java, AWS, Red Hat, and other stacks.
Demonstrates command injection in a Rails app by showing unsanitized input triggering os commands, and explains stopping it by sanitizing input and applying a character blacklist.
Explore how command injection arises in a PHP workflow through input-driven exec calls and string concatenation. Learn to remediate with escape shell command techniques to prevent leaking confidential output.
Examine SQL injection as a common vulnerability from unsanitized inputs and poorly structured queries. Learn how proper query discipline and input sanitization protect databases in web apps.
Explain sql injection in rails by showing how unsafely built queries can return all users, and demonstrate fixing it with parameterized queries.
Examine sql injection vulnerabilities in a php example, showing how concatenated user input can reveal data via or 1=1, and preview remediation in the next lecture.
Explore how PHP data objects (PDO) enable prepared queries, bind variables to placeholders, and scrub inputs to prevent SQL injection in PHP applications.
Examine broken authentication and how password complexity shapes security, highlighting risks of weak or reused passwords across systems and legacy eight-character or restricted rules in web applications.
examine password complexity and information leakage in a Rails app, contrast hand-written login with Devise, and demonstrate enforcing minimum password length and user alerts.
Explore password complexity and how weak passwords create a vulnerability in sign up forms, as the PHP example shows length checks and rules to enforce longer, more complex passwords.
Explore information leakage as a form of broken authentication caused by weak secret handling and data guards, with examples of insecure login feedback and plain text password resets.
illustrates information leakage in authentication with a Rails login example, showing how specific messages reveal username or password errors and how generic failure messages remediate security risk.
Explain how information leakage arises in a PHP login page on a local server, review conditional responses, and fix with generic errors to avoid revealing which credential failed.
Protect sensitive data by preventing information leakage, enforcing encryption, and restricting data returned to users to avoid exposing passwords, cookies, or personal records.
Identify and fix sensitive data exposure in a Rails app by removing password visibility from index, edit, login, and new user views to prevent information leakage.
Explore how sensitive data exposure arises in web applications, demonstrated with a PHP example where default admin credentials are exposed in HTML and insecure code creates security holes.
Explore the xml external entities (xxe) vulnerability, where external entity references are evaluated during xml processing, risking malicious input and remote code execution in web apps.
Explore how Rails defaults can enable XML external entities (XXE) attacks that expose secrets, and prevent it by turning off parsing by default and validating content with safe libraries.
Examine xml external entities (XXE) vulnerabilities where external entities load local files, exposing sensitive data; learn to defend by disabling external entity loading and scanning inputs for patterns.
Identify and prevent broken access control by enforcing proper authorization rules, guarding against manipulated requests and role-based access, to protect sensitive data and avoid data leaks.
Identify and prevent broken access control by enforcing proper authorization for admin actions in a Rails app, highlighting role-based restrictions, input validation, and controller-level protections against form tampering.
Explore how broken access control exposes admin functionality when authorization isn't done correctly. See why server-side authorization and true user-based checks prevent access, avoiding client-side flags and insecure serializations.
Explore how security misconfiguration affects any web app stack—from data layers to gateways—through insecure defaults, unnecessary features, and outdated software, and how to harden with proper configuration.
identify how plain text passwords appear in Rails logs and implement parameter filtering to remove sensitive data like passwords and usernames, reducing log-based vulnerabilities.
Highlight security misconfiguration as a vulnerability that exposes credentials and internal file details in web apps. Learn production hardening by suppressing verbose errors and adjusting PHP settings for safer deployment.
Explore cross-site scripting (xss) overview, showing how user input can inject and execute javascript in web applications, with Rails and other examples to illustrate dynamic front end risks.
Explore cross-site scripting (XSS) through a Rails example, showing unsanitized rendering versus sanitized content and how Rails protects against script execution.
Explore cross-site scripting (xss) as a vulnerability where unsanitized user input can execute javascript, reflected or stored, leading to malicious information and clickjacking.
Explore insecure deserialization vulnerabilities in modern web apps, where unsanitized input stored in serialized formats is evaluated as code, risking remote execution.
Explore insecure deserialization in a Rails example that loads yaml from user content and evaluates it, then learn remedies like inspecting yaml and using blacklisting and whitelisting.
Demonstrate how insecure deserialization in a PHP example lets an attacker tamper with cookies and gain admin rights by manipulating user data, and suggest encrypting and separating cookies.
Applications that use vulnerable components can often be the target of devastating breaches. It is important to understand the underlying issues with not keeping dependencies up to date.
A look at how using vulnerable components in Rails might happen and how to avoid and/or remediate it.
An example of how this vulnerability can look in a PHP app and how to remediate it.
A vulnerability that is often overlooked but one that can make a huge difference is not having enough logging and monitoring.
This is an explanation of why logging and monitoring are important.
We look at an example of insufficient logging and monitoring and how to remediate this vulnerability in Rails.
What does it look like when the "Insufficient Logging and Monitoring" vulnerability shows up in a PHP application? We take a look at that here.
We take a look at a popular web security analysis tool for Rails - Brakeman Security Scanner.
Explain how multi-factor authentication uses something you know, something you have, or something you are to prevent breaches, using smartphone authenticator apps and one-time passcodes.
Explore ethical hacking as white hat security research, focusing on vulnerability discovery and responsible disclosure. Learn how ethical hackers test systems to prevent breaches and protect user data.
Understand password complexity and entropy, and how longer mixed-case passwords with numbers and special characters defend against brute force, dictionary attacks, and password reuse.
Explore how physical security complements digital safeguards through access controls, surveillance, intrusion detection, and biometrics, with disaster protection and ethical hacking practices.
Understand data breaches, their causes, and downstream effects, and learn practical strategies such as data retention policy, encryption, intrusion detection, and clear communication plans to mitigate exposure.
Explore cloud security as organizations move to public and hybrid cloud models, focusing on identity and access management, role-based policies, logging, monitoring, and automated defense.
Master a command-line password encryption tool in python that hashes a password with salt, generating a random hash for secure storage.
Build a Python password hashing tool for secure storage and authentication. Learn why plain-text passwords are unsafe, and how salted hashing prevents recovery while still allowing login checks.
Check the python version, create a folder called incorruption, write a python file with a shebang, make it executable, and run it from the command line to print hello.
Learn to build a Python command line tool with argparse and pip, define a version, add a required password argument, parse inputs, and test printing before adding encryption logic.
Replace the placeholder with bcrypt encryption by hashing an ASCII-encoded password using a randomly generated salt to yield an encrypted password.
Evaluate a Python password hashing tool by printing the encrypted password and validating it with a check password function to confirm the encrypted and original passwords match, ensuring secure storage.
Tools we will use to learn python
Working with Strings in Python
In this lecture we learn how to work with numbers in Python
Investigate lists and tuples in Python
In this lecture we will explore dictionaries
We will explore adding conditional logic and make python respond to such logic along with writing functions
Explore how to work with imports and introduce the standard library
We explore basics of object oriented programming in this lecture
Thank you for taking the course!
*** Course updated 10/30/2018 (always kept up-to-date) ***
Learn a practical skill-set in detecting and defeating online threats and become a Cyber Security Specialist - not just in theory - but in practice.
Go from a beginner to advanced in this easy to follow expert course by building security analysis tools using the wildly popular Python programming language, along with analyzing web application security vulnerabilities and solutions using frameworks like Ruby on Rails and php.
There is NO platform dependency in this course - You can use any platform you choose - Windows, MacOS and Linux.
No prior experience required with Python or any of the topics covered in this course - There is a Python crash course included!
This course covers the fundamental building blocks of your required skill set - some key items include:
Vulnerability Analysis
Building and Publishing Security Tools - Dynamic web app security scanner, Password hashing and encrypt tool among many others!
Security Scanning
Phishing Protection
Web Application Vulnerability Mitigation
Password Complexity Analysis
Antivirus Evasion Remediation
Multi-Factor Authentication
Network Traffic Analysis
Cloud Security
Ethical Hacking
Web Reconnaissance
Wireless Access Point Protection
Programming with Python
We also cover the biggest threats in the information technology world today, including:
Botnets
Code Exploits
Sensitive Data Exposure
SQL Injection
Social Engineering
Cross-Site Scripting
Port Scanning
and many more!
You will get lifetime access to over 100 lectures and 11 hours of video lectures plus corresponding text guides for the lectures!
This course comes with a 30 day money back guarantee! If you are not satisfied in any way, you'll get your money back, no questions asked!
So what are you waiting for? Learn Cyber Security, Python for Cyber Security and Web Application Security in a way that will advance your career and increase your knowledge, all in a fun and practical way!