Skip to content

Commit

Permalink
Merge pull request #4 from ablwr/digipres2
Browse files Browse the repository at this point in the history
Digipres2
  • Loading branch information
ablwr authored Jan 1, 2018
2 parents 9c26a8e + a271202 commit 86fe091
Show file tree
Hide file tree
Showing 18 changed files with 783 additions and 70 deletions.
1 change: 1 addition & 0 deletions _presentations/bash-scripting.html
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,7 @@
- [ExplainShell.com](https://explainshell.com/)
- [Script Ahoy](http://dd388.github.io/crals/)
- [the sourcecaster](https://datapraxis.github.io/sourcecaster/)
- [Backing Up Using Expect and Rsync](http://www.sitepoint.com/backing-up-using-expect-and-rsync/)

---
# Learning more
Expand Down
1 change: 1 addition & 0 deletions _presentations/cli.html
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,7 @@
---
# Additional Resources

- [awesome-shell](https://github.com/alebcay/awesome-shell)
- [Command Line Cheat Sheet](https://www.git-tower.com/blog/posts/command-line-cheat-sheet)
- [Command Prompt Cheat Sheet](http://simplyadvanced.net/blog/cheat-sheet-for-windows-command-prompt/)
- [Software Carpentry Course](http://swcarpentry.github.io/shell-novice/)
Expand Down
2 changes: 2 additions & 0 deletions _presentations/computers.html
Original file line number Diff line number Diff line change
Expand Up @@ -128,13 +128,15 @@

- [baseCS](https://medium.com/basecs)
- [baseCS podcast](https://www.codenewbie.org/basecs)
- [Corkami Basics of Computing visualizations](https://github.com/corkami/pics/blob/master/binary/README.md)
- [CS50: Introduction to Computer Science](https://www.edx.org/course/introduction-computer-science-harvardx-cs50x#!)
- [Hack the Kernal](https://www.ops-class.org/)
- [Open Source Society University: CS Degree](https://github.com/ossu/computer-science)
- [Information Technologies at Pratt Syllabus](https://github.com/hadro/654fa17)
- [The Programming Historian](https://programminghistorian.org/lessons/)
- [Python for Librarians](https://data-lessons.github.io/library-python/)
- [What is Code? by Paul Ford](http://www.bloomberg.com/graphics/2015-paul-ford-what-is-code/)
- [What is a digital file? by Nicole Martin](https://twobitpreservation.com/bits-blog/2017/5/15/what-is-a-digital-file)

---
# Hacking games
Expand Down
122 changes: 116 additions & 6 deletions _presentations/databases.html
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
---
layout: presentation
title: Databases
published: false
---
This page intentionally left blank. ⬇️, ➡️, or spacebar 🛰 to start slidedeck.
---
Expand All @@ -10,19 +9,130 @@
# Databases 🥞

---
# Things Databases Do
# Databases

A database is an organized collection of data that can easily be accessed and modified.

By this broad definition, a list is a database. An Excel spreadsheet is a database. Everything is a database!

---
# DBMS

*Database Management System*

But usually, when using the word "database," someone is referring to an entire database system.

Examples of DBMS are Microsoft Access, FileMaker, or Oracle, MySQL, PostgreSQL and Microsoft SQL Server
---
# Relational Databases

All of the previous examples were types of relational database framework. This relational model has been extremely popular since it was invented in the 1970s and is probably what people mean or are using when they talk about a database.

A relational database is a collection of schemas, tables, queries, reports, views, and other elements.

---
# How do databases work?

[This article](http://coding-geek.com/how-databases-work/) does a great job at in-depth explanations of how databases work. Here is an overview of some of the significant components of a database:

- Process manager
- Network manager
- File system manager
- Memory manager
- Security manager
- Client manager
- Backup manager
- Recovery manager
- Monitor manager
- Administration manager
- Query manager
- Data manager

---
# How do databases work?

That's a lot of management! And many of the components do multiple tasks. Databases are doing a lot of work so that you don't have to.

# (Very) basic pattern of interaction

- You deliver a command to the database, probably written or parsed down into SQL (more on that later)
- The client manager determines if you are allowed to do that
- The query manager checks your statement and optimizes it (determines the fastest way to get the answer)
- The hunt begins! (A lot of complex things happen here, computers doing computer stuff)
- The answer is returned to you, the user

---
# CRUD

The four basic functions of persistent storage.

**C** reate
**R** ead
**U** pdate
**D** elete

---
# Database Types
# ACID

*Atomicity, Consistency, Isolation, Durability*

**A** tomicity: each transaction be complete fully or not at all; no partial transactions.
**C** onsistency: any transaction will bring the database from one valid state to another.
**I** solation: if multiple transactions occur, they must have the same result regardless of order.
**D** urability: once a transaction has been committed, it will remain so, even if there's a crash or error.

---
# SQL

*Structured Query Language*

A way to talk to databases using simple but powerful, declarative statements.

It can be very finicky and frustrating, but appreciate all the work a database is doing for you!

Here are some major elements used in composing statements:

- SELECT
- FROM
- WHERE
- ORDER BY

---
# SQL
Commands look like this:

`SELECT * FROM Cats`: returns everything in the Cat table.

`SELECT Name FROM Cats WHERE Status = 'Kitten'`: returns the names of all cats with a kitten status.

Maybe you forgot to make a kitten status when you designed your database, but you do have all the cat birthdays. You can do something like this:

`SELECT Name FROM Cats WHERE BirthDate >= 2018-01-01` to find all cats born in the year 2018.

---
# SQL

Honestly, I find writing raw SQL statements to be a total nightmare and it feels impossible to get the syntax exactly right, which is made more frustrating by the syntax seeming to be so simple. A lot of database systems or interaction languages exist to translate SQL on your behalf, so you can more naturally tell the computer what you want.

---
# NoSQL

Some databases are "NoSQL" and work differently from relational databases.

Example frameworks:

- Relational
- Object-oriented
- NoSQL
- CouchDB
- MongoDB
- Redis

---
# Additional Resources

- [Codecademy: Intro to SQL](https://www.codecademy.com/learn/learn-sql)
- [Database Design for Mere Mortals](https://www.goodreads.com/book/show/31159597-database-design-for-mere-mortals)
- [How Databases Work](http://coding-geek.com/how-databases-work/)
- [GalaXQL](http://sol.gfxile.net/g3/) (a browser-based SQL learning game)
- [Khan Academy: Intro to SQL](https://www.khanacademy.org/computing/computer-programming/sql)

---
# Learning more
Expand Down
119 changes: 119 additions & 0 deletions _presentations/digital-forensics.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
---
layout: presentation
title: Digital Forensics
---
This page intentionally left blank. ⬇️, ➡️, or spacebar 🛰 to start slidedeck.
---
class: center, middle

# 💿 📀 💿
# Digital Forensics
# 📀 💿 📀

---
# Digital Forensics

- Imaging
- Write blockers
- Virtualization
- Data recovery
- Tools

---
# Imaging

Imaging is making a complete copy of everything on a storage device. Imaging is a fundamental part of digital forensics -- whether migrating optical media off of fragile medium or copying a partition of an acquired hard drive without tampering with the content. It is usually a complete clone of the original content, but stored differently.

---
# Write blockers

Write blockers prevent the computer for writing anything on the content -- this saves the original material from having technical/descriptive metadata overwritten. A notable example is the "last modified" date stored within files.

---
# Virtualization

Virtualization is the creation of a "virtual" version of something. It is a way for a computer to interpret and read an image as if it were being presented as its original format. Platform virtualization allows an operating system to be run inside of an already-running operating system.

Software emulation is a form of virtualization.

---
# Data recovery

Data recovery practices are anything involved with the restoration of data thought to be lost. Digital storage tends to "suppress memories" rather than actually wipe data clean. When you delete something from your computer (and also "empty the trash can"), it is gone according to you, but the data could still be held on the drive. The computer's file system has merely decided that the place where this data was stored can acceptably be written over. But it remains there until it needs to use that part of the storage system; you just cannot access it via the operating system any longer.

---
# Tools

There are many, many software and hardware tools. See a comprehensive table at the pages 72-80 of [this document](https://www.clir.org/wp-content/uploads/sites/6/pub149.pdf). Here are a few:

Machines
- [Kryoflux](https://kryoflux.com/)
- [Forensic Recovery of Evidence Device (FRED)](https://www.digitalintelligence.com/forensicsystems.php)

Software
- [Binwalk](https://tools.kali.org/forensics/binwalk)
- [BitCurator](https://www.bitcurator.net/)
- [Sleuth Kit](http://www.sleuthkit.org/)

---
# FRED

.left[![fred-small]({{ site.baseurl }}/img/fred-small.gif)]
.center[A computer designed for forensic analysis.]
.right[![fred-small]({{ site.baseurl }}/img/fred-small2.gif)]

---
# Kryoflux

For 3.5" and 5.25" floppy disk imaging, featuring a write blocker and a GUI with data visualization.

.center[![kryoflux]({{ site.baseurl }}/img/kryoflux.png)]

---
# Binwalk

Binwalk is a tool for searching a given binary image for embedded files and executable code. Specifically, it is designed for identifying files and code embedded inside of firmware images.

---
# BitCurator

An open source digital forensics environment that incorporates a variety of functionality and processing for born-digital materials.

- Pre-imaging data triage
- Forensic disk imaging
- File system analysis and reporting
- Identification of private and individually identifying information
- Export of technical and other metadata

---
# Sleuth Kit and Autopsy

Open source digital investigation tools.

Sleuth Kit is a series of command-line tools. Autopsy is a graphical user interface to support Sleuth Kit.
---
# Optical disk tools 📀

- [Dvdisaster](http://dvdisaster.net/en/index.html): "a computer program aimed to enhance data survivability on optical discs by creating error detection and correction data, which is used for data recovery. dvdisaster works exclusively at the image level."
- [disktype](http://disktype.sourceforge.net/): "detects the content format of a disk or disk image"
- [Guymager](http://guymager.sourceforge.net/): "a free forensic imager for media acquisition"
- [Handbrake](https://handbrake.fr/): "a free and open-source transcoder for digital video files"
- [Isolyzer](https://github.com/KBNLresearch/isolyzer): "verifies size of ISO 9660 image against Volume Descriptor fields"

---
# Additional Resources

- [An Introduction to Optical Media Preservation](http://journal.code4lib.org/articles/9581)
- [Denver Art Museum Disk Imaging Workflow](https://docs.google.com/document/d/1Z4LP8shWtdRYTkZrq1Q7nPomPWzJeoV369WC87kj0rM/edit)
- [Forensics Wiki](http://forensicswiki.org/wiki/Main_Page)
- [Extending Digital Repository Architectures to Support Disk Image Preservation and Access](https://ils.unc.edu/callee/p57-woods.pdf)
- [CLIR Digital Forensics and Born-Digital Content in Cultural Heritage Collections](https://www.clir.org/wp-content/uploads/sites/6/pub149.pdf)

---
# Learning more

- [Digital Preservation]({{ site.baseurl }}/presentations/digital-preservation.html)
- [Storage]({{ site.baseurl }}/presentations/storage.html)
- [Other Analysis Tools]({{ site.baseurl }}/presentations/other-analysis-tools.html)

[Home]({{ site.baseurl}}/)
Loading

0 comments on commit 86fe091

Please sign in to comment.