Security Related Coding & algorithms¶
- The basics
- Conditions (if, else)
- Loops (for loops, while loops)
- Dictionaries
- Slices/lists/arrays
- String/array operations (split, contaings, length, regular expressions)
-
Pseudo code (concisely describing your approach to a problem)
-
Data structures
- Dictionaries / hash tables (array of linked lists, or sometimes a BST)
- Arrays
- Stacks
- SQL/tables
-
Bigtables
-
Sorting
-
Quicksort, merge sort
-
Searching
-
Binary vs linear
-
Big O
-
For space and time
-
Regular expressions
- Typically O(n) to match, but backtracking engines can hit exponential O(2^n) worst case (catastrophic backtracking)
-
It's useful to be familiar with basic regex syntax, too
-
Recursion
-
And when to prefer iteration instead (stack depth / performance)
-
Python
- List comprehensions and generators [ x for x in range() ]
- Iterators and generators
- Slicing [start:stop:step]
- Regular expressions
- Types (dynamic types), data structures
- Pros and cons of Python vs C, Java, etc.
- Understand common functions very well, be comfortable in the language
Security themed coding challenges¶
- Cyphers / encryption algorithms
-
Be able to implement basic cyphers
-
Parse arbitrary logs
-
Practice text parsing
-
Web scrapers
-
Another way to practice text parsing
-
Port scanners
-
Practice parsing network information
-
Botnets
-
How would you build ssh botnet
-
Password bruteforcer
- Scrape meta data from PDFs
- Script to recover deleted items
- A program that looks for malware signatures in binaries / code samples