I wrote these back at a time where I was learning lots of different parts of the Python Programming language and thought it would be a good idea to give this information back to the community along with the shortcuts I have found for myself along the way, they might not work for everyone but they have helped me gain a deeper understanding of the language as it has grown over the past decade.
A lot of these challenges have been created over the years for various meet up groups aimed at helping others up skill with programming as a whole!
One of the fun talking points is that the .ipy notebooks themselves were generated automatically from a small quick writer I created that would create the repository above and even upload these into Google for the class to copy and use. Neat, huh?
So let's get stuck in shall we!The PythonTutorials Repository
I had initially designed this repository to focus on the varying skill levels that would be attending the different meet ups, trying to rank the challenges and build a foundation of knowledge with each student before moving on to the next, harder topic. There is a point as the harder subjects sub-divide that I did wish I had raised them in series, e.g. Security Tasks vs Plain Coding tasks and a whole section just dedicated to the different ways of making games (which seems to be a subject with an ever increasing interest from new coders to the scene).
Beginners
InstallingPython
This would focus on the generics of what is happening during the installation of Python, no matter what Operating System you are going to install Python on, there will always be the common factors of what will be installed and what the installer will typically do.
InstallingPythonOnLinux
Does what is says on the tin, the very simplistic instructions for installing Python on *nix systems, as most ipy notebooks are Linux based this can even be demonstrated. It made for some fun reverse engineering of the environment for me while creating!
InstallingPythonOnMac
Despite Mac's being very similar to Linux, having used one for a long time I am always reminded of the following XKCD. I thought it might be wise to get a unified way of installing on Macs for the class to follow to avoid this scenario.
InstallingPythonOnWindows
Always the biggest problem from an installation point of view, for some reason there are more issues when it comes to installing on Windows, this guide hopefully helps get people around the discovered pitfalls and saves you time jumping in!
ExploringPythonObjects
My hidden toolkit of Python built-ins that have taught me how to code over the years, when probing an unknown variable this tool kit has proved invaluable. Another blog goes in to getting this data back out of a highly complex system.
IntroductionToPythonEnvironments
A primer to help a user gain an understanding in to what has been accomplished by installing and a little taste of what is now possible.
ExtendingPythonEnvironments
A look into growing the python environments capability with modules and virtualisation!
LogAllTheThings
To go with the above tutorial on Exploring Python objects, the logging tutorial will help get a user set up to prepare to log across different channels so that no matter where a developer needs to dig information on a random variable from, or test execution flow. They are able to extract this data without having to break the more in depth debugging tools that can be daunting to new users.
Intermediate
Cloud
AWS
Boto3Setup
Games
PyGameIntroduction
PyGame
Security
Red Team
Originally, I had planned to put the past 2 parts of the buffer overflow exercise here. However, when they were put to the class a lot of them had troubles and I felt they still needed more education in this subject, pushing them up a difficulty level. Sadly, I didn't get around to replacing these just yet but always on my TODO list!Blue Team
BlueGate-PythonPoCAt the time of authoring the BlueGate exploit had just become mainstream, there was a lot of panic to get this bug patched and I created an exercise to take the attack to pieces and create a testing tool for users to take back to their organisations and ensure they were covered, or alert their Security Teams.
IncidenceResponse-MargaritaShotgun
Another tool I had been playing with for a Proof of Concept for a client, was the idea of automatically snapshotting remote instances memory in a Cloud Environment, this seemed like the best tool for the job and was a lot of fun to play with, so I created a little tutorial that I hoped to expand with the Cloud Exercises above.Hard
Security
Red Team
BufferOverflow-Part1-4A Small guide helping students to learn the principles of the simple buffer overflow attack, the guides help to set up the binaries as well as provide instruction of how to use python to break into the binary and make it run our code as opposed to it's intended use.
Blue Team
Sadly, I didn't get around to writing any fun challenges for Blue Teams to handle, at least at the moment. I hope to be able to dust this repository off and give it some more love in the future, time is always a limited resource.
Give them a try and see what you think!
$ git clone https://github.com/s1l0uk/PythonTutorialsForAll