This workshop is to provide an overview and introduction to the version control system Git. Git has grown tremendously in popularity over the past 15 years since it was released, helped along especially due to code hosting services including GitHub.com, GitLab.com, and Bitbucket.org. These sites are where open-source projects most commonly live. Any time that you hear about a new open-source security tool being released, it is mostly likely to be found on one of these sites.
This workshop will help provide an introduction to security professionals that may have no background in software development, that would like to start using their favorite open-source tool, or even more, to find ways to contribute back.
No development experience is required, and participants will finish the workshop with the tools needed to make their first contribution the same day if they choose to.
This work was performed under the auspices of the U.S. Department of Energy by Lawrence Livermore National Laboratory
under contract DE-AC52-07NA27344. Lawrence Livermore National Security, LLC
Intro to Git for Security Professionals
Wild West Hackin’ Fest Way West
2021-06-18 Ian Lee
Can’t I just have the version in the name?
Code Hosting Platforms
Common Version Control Tools
Fear of Git
If that doesn't fix it, git.txt contains the
phone number of a friend of mine who
understands git. Just wait through a few
minutes of 'It's really pretty simple, just
think of branches as...' and eventually
you'll learn the commands that will fix
Staged vs not staged vs untracked
Working on a Git repo
Working with Remotes
Git Flow: Maintenance Branches
Working with remotes
Working on a Git repo with a remote
Working with Remotes
Working on a Git repo with a remote that has upstream changes
Working with Upstream Changes
Let’s Git To It!
▪ There are many choices out there…
▪ Don’t let wizards decry your preferences, just find something that works for you!
▪ For me:
— VS Code (https://code.visualstudio.com/)
• Remote Development Toolkit (https://code.visualstudio.com/docs/remote/remote-overview)
— Windows 10
• WSL 2 (https://docs.microsoft.com/en-us/windows/wsl/install-win10)
— macOS / Linux
• Homebrew (https://brew.sh/)
• ZSH + Oh My Zsh (https://ohmyz.sh/)
• Docker (https://www.docker.com/)
Kickstarting Your Development
▪ Windows 10 + WSL 2 (Ubuntu 20.04) + Docker + VS Code
▪ Spin up a new docker container
— docker run -it python /bin/bash
▪ Connect to it with VS Code + Remote Development
▪ Proof* that there is no Tom-foolery happening that you don’t see!
Kickstarting a Project
▪ python3 -m pip install poetry
▪ poetry new --name awesome
▪ Pull up the docs:
│ └── __init__.py
▪ Make it a git repo (`git init`)
▪ Update “authors”
— “Ian Lee "
▪ Add some dependencies
— poetry add requests
— poetry add –D black flake8
— poetry update
▪ Add a basic command line tool
▪ Let’s add a new Python module
▪ Run `poetry install` to update the
Let’s Git Out There
Committing Your Changes In The UI
▪ Reading the documentation, found a bug in the docs
Workflow Demo: ACM RITA
— Documentation updates?
— Add LICENSE file?
— Add a new exploit?
— Fix a bug in an existing exploit?
— Maybe consider adding some CI testing ?
Contribute to Security Tools
Contribute to ”Awesome” Lists
▪ Easy way to start a website
▪ Uses Jekyll (https://jekyllrb.com/)
▪ All on top of Git, Hosted by GitHub
— Becomes https://ianlee1521.com
Build your own website with GitHub Pages
▪ Start every code / documentation / note project with `git init `
▪ Even if you NEVER intend to share it with anyone, anywhere, ever!
▪ You don’t have to be a “1337 haxor dev ninja” to make a meaningful impact.
Leave things better than you found them.
$ cat git.txt
Ian Lee – @IanLee1521
This document was prepared as an account of work sponsored by an agency of the United States government. Neither
the United States government nor Lawrence Livermore National Security, LLC, nor any of their employees makes any
warranty, expressed or implied, or assumes any legal liability or responsibility for the accuracy, completeness, or
usefulness of any information, apparatus, product, or process disclosed, or represents that its use would not infringe
privately owned rights. Reference herein to any specific commercial product, process, or service by trade name,
trademark, manufacturer, or otherwise does not necessarily constitute or imply its endorsement, recommendation, or
favoring by the United States government or Lawrence Livermore National Security, LLC. The views and opinions of
authors expressed herein do not necessarily state or reflect those of the United States government or Lawrence
Livermore National Security, LLC, and shall not be used for advertising or product endorsement purposes.
▪ Computer Engineer
— 2010 – 2015: Primarily Software Development
• Python, Web, (some) System Administration
— 2016 – Present: Cyber Security
• 2016 – Present: Cyber Assessment Coordinator
– Red team on super computers
• 2018 – Present: Alternate Organization ISSO
— Discord: IanLee1521
▪ “Leave things better than you find them”
Who Am I ?
▪ Git Tutorials
▪ Commandline help
— $ man git
— $ git –help
▪ My Git Configuration: https://gist.github.com/IanLee1521/77b5dd14d203c27cb5856ae7b93c0cde
▪ WWHF October 2020 Workshop
▪ WW Hackin Cast January 2021
Good Commit Messages
Merge branch 'asdfasjkfdlas/alkdjf' into
What is version control?
▪ See also Marcello's awesome Pretty Little Python Secrets BHIS Webcasts last year
— Part 1: Installing Python Tools/ Libraries the Right Way
— Part 2: Python Development & Packaging as Beautiful as a Poem
Git Flow: Main Branches
Git Flow: Feature Branches
Git Flow: Release Branches