pdf to image conversion using c# : Change password on pdf file software Library project winforms .net wpf UWP grow-forensic-tools-taxonomy-python-libraries-helpful-forensic-analysis-334530-part1870

Interested in learning
more about security?
SANS Institute
InfoSec Reading Room
This paper is from the SANS Institute Reading Room site. Reposting is not permitted without express written permission.
Grow Your Own Forensic Tools: A Taxonomy of Python
Libraries Helpful for Forensic Analysis
Python, a high-level language, provides an outstanding interface for forensic  analysts to write scripts to
examine evidence. Python is the driving language for several current open-source forensic analysis projects
from Volatility, for memory analysis to libPST for abstracting the process of examining email. This paper
provides a taxonomy of the different forensics libraries and examples of code that a forensic analyst can
quickly generate using Python to further examine evidence.
Copyright SANS Institute
Author Retains Full Rights
AD
Change password on pdf file - C# PDF Password Library: add, remove, edit PDF file password in C#.net, ASP.NET, MVC, WinForms, WPF
Help to Improve the Security of Your PDF Document by Setting Password
creating password protected pdf; pdf document password
Change password on pdf file - VB.NET PDF Password Library: add, remove, edit PDF file password in vb.net, ASP.NET, MVC, WinForms, WPF
Help to Improve the Security of Your PDF Document by Setting Password
convert password protected pdf to excel online; create password protected pdf online
© 2010 The SANS Institute 
As part of the Information Security Reading Room 
Author retains full rights.
"
Key"fingerprint"="AF19"FA27"2F94"998D"FDB5"DE3D"F8B5"06E4"A169"4E46"
Grow Your Own Forensic Tools: A Taxonomy of 
Python Libraries Helpful for Forensic Analysis 
GIAC (GCFA) Gold Certification 
Author: T.J. OConnor, terrence.oconnor@usma.edu 
Advisor: Don Weber 
Accepted: April 1
st
, 2010 
Abstract 
Python, a high-level language, provides an outstanding interface for forensic 
analysts to write scripts to examine evidence. Python is the driving language for several 
current open-source forensic analysis projects from Volatility, for memory analysis to 
libPST for abstracting the process of examining email. This paper provides a taxonomy 
of the different forensics libraries and examples of code that a forensic analyst can 
quickly generate using Python to further examine evidence.  
Online Change your PDF file Permission Settings
to make it as easy as possible to change your PDF You can receive the locked PDF by simply clicking download and If we need a password from you, it will not be
add copy protection pdf; convert protected pdf to word online
VB.NET PDF File Compress Library: Compress reduce PDF size in vb.
list below is mainly to optimize PDF file with multiple Program.RootPath + "\\" 3_optimized.pdf"; 'create optimizing 150.0F 'to change image compression
add password to pdf preview; convert password protected pdf to excel
© 2010 The SANS Institute 
As part of the Information Security Reading Room 
Author retains full rights.
"
Key"fingerprint"="AF19"FA27"2F94"998D"FDB5"DE3D"F8B5"06E4"A169"4E46"
A Taxonomy of Python Libraries Helpful for Forensic Analysis! 2 
!
"#!$%&''&()!*+((+',+-&,&''&(./012-+3/!!
!
1. Introduction 
Forensics tools exist in abundance on the Web. Want to find a tool to dump the 
Windows SAM database out of volatile memory? Google and you will quickly find out 
that it exists. Want to mount and examine the contents of an iPhone backup? A tool exists 
to solve that problem as well. But what happens when a tool does not already exist? 
Anyone who has recently performed a forensic investigation knows that you are often left 
with a sense of frustration, knowing data existed only you had a tool that could access it. 
In response, we present this paper on a taxonomy of Python libraries to support 
forensic analysis. In the following sections, we examine how you can grow your own 
tools in-house to solve specific problems. Want to search for Cisco VPN Configuration 
files and crack them? Want to plot imagery metadata geo-location information on a 
Google map? What about your own custom Windows Registry analysis tool? Specific 
analysis of malware or network dumps? In the following sections, we will write tools to 
accomplish all of this.  
The high-level language Python has a omnipotence of modules and libraries, 
several of which can help us develop forensic tools. In this paper, we will examine how 
we can quickly put together tools for specific forensic investigations. In the following 
sections, we will take a look at using Python when working with encrypted files, 
extracting metadata, examining windows artifacts, tracking Web and email usage, foot-
printing applications, carving artifacts from volatile memory, carving file systems, and 
analyzing network traffic.  
2. Python for Forensic Analysis 
!
2.1 Introduction to Python Modules 
!
The Python programming language is a high-level, general-purpose language with 
clear syntax and a comprehensive standard library. Often referred to as a scripting 
language, security experts have singled out Python as a language to develop information 
security toolkits. The modular design, human-readable code, and fully developed suite of 
libraries provide a starting point for security researchers and experts to build tools. 
C# PDF File Compress Library: Compress reduce PDF size in C#.net
list below is mainly to optimize PDF file with multiple Program.RootPath + "\\" 3_optimized.pdf"; // create optimizing 150F; // to change image compression
add password to pdf; convert password protected pdf to word
Online Remove password from protected PDF file
Online Remove Password from Protected PDF file. Download Free Trial. Remove password from protected PDF file. Find your password-protected PDF and upload it.
create password protected pdf reader; pdf password
© 2010 The SANS Institute 
As part of the Information Security Reading Room 
Author retains full rights.
"
Key"fingerprint"="AF19"FA27"2F94"998D"FDB5"DE3D"F8B5"06E4"A169"4E46"
A Taxonomy of Python Libraries Helpful for Forensic Analysis! 3 
!
"#!$%&''&()!*+((+',+-&,&''&(./012-+3/!!
!
By default, Python comes with an extensive standard library which provides 
everything from built-in modules providing access to simple I/O to platform-specific API 
calls. The beauty of Python is user-contributed individual modules, packages, and 
frameworks. Several of these user-default and user-contributed libraries, modules, 
packages, and frameworks can assist forensic analysts with building tools to accomplish 
interesting tasks. In the following sections, we will look at how a forensic analyst can use 
these tools to aid in investigations. 
2.2 Crypto, Hash, and Conversion Functions 
Let’s begin by solving a very simple problem. Occasionally in the course of an 
investigation we run into encryption, where a target attempts to hide information. ROT-
13 provides a very simple method a target may use to hide information. Yes, our targets 
may use much more complex algorithms to encrypt information, but Python also provides 
libraries for those algorithms, as you will see shortly. We will first use ROT-13, though, 
so we can get an understanding of how Python works.  
The ROT-13 cipher is a simple cipher that substitutes each alphabetic character 
with the letter thirteen places further along, wrapping back if necessary, so the letter O 
becomes B, the letter P becomes C, etc. Encoding and decoding a ROT-13 cipher is 
relatively easy. The Python string library contains a function called maketrans that 
substitutes one character for another. Thus, we can declare a new function, ROT13 that 
performs ROT-13 cipher, as shown in Figure 1. 
ROT13 = string.maketrans('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
'
'nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM')  
import sys, os, string 
tring 
ROT13 = 
string.maketrans('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ','nopqrstuvwxyz
C# PDF Page Rotate Library: rotate PDF page permanently in C#.net
C#.NET PDF Library - Rotate PDF Page in C#.NET. Empower C# Users to Change the Rotation Angle of PDF File Page Using C# Programming Language in .NET Application
pdf protection remover; convert password protected pdf to word online
C# PDF File Permission Library: add, remove, update PDF file
to PDF; Merge PDF Files; Split PDF Document; Remove Password from PDF; Change PDF Permission Settings. C#: Convert PDF to Jpeg; C# File: Compress PDF; C# File
pdf password protect; adding password to pdf
© 2010 The SANS Institute 
As part of the Information Security Reading Room 
Author retains full rights.
"
Key"fingerprint"="AF19"FA27"2F94"998D"FDB5"DE3D"F8B5"06E4"A169"4E46"
A Taxonomy of Python Libraries Helpful for Forensic Analysis! 4 
!
"#!$%&''&()!*+((+',+-&,&''&(./012-+3/!!
!
abcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM' 
dictionaryFile = open("dictionary"
dictionary = dictionaryFile.readlines() 
for root, dir, files in os.walk(str(sys.argv[1])): 
[1])): 
for file in files: 
s: 
if ".txt" in str(file): 
le): 
foundWord = 0 
notFound = 0 
lines = open(file).readlines() 
nes() 
for line in lines: 
translatedLine=line.translate(ROT13) 
translatedWords=translatedLine.split() 
for eachWord in translatedWords: 
if (eachWord+'\n'in dictionary: 
onary: 
foundWord=foundWord+1 
1 
else: 
notFound = notFound+1 
1 
if (foundWord > notFound): 
print file+" may contain ROT-13 encoding."
ing."
VB.NET PDF File Permission Library: add, remove, update PDF file
to PDF; Merge PDF Files; Split PDF Document; Remove Password from PDF; Change PDF Permission Settings. C#: Convert PDF to Jpeg; C# File: Compress PDF; C# File
add password to pdf file without acrobat; create password protected pdf
C#: How to Draw and Customize Annotation in HTML5 Document Viewer
to PDF; Merge PDF Files; Split PDF Document; Remove Password from PDF; Change PDF Permission Settings. C#: Convert PDF to Jpeg; C# File: Compress PDF; C# File
pdf security password; break password pdf
© 2010 The SANS Institute 
As part of the Information Security Reading Room 
Author retains full rights.
"
Key"fingerprint"="AF19"FA27"2F94"998D"FDB5"DE3D"F8B5"06E4"A169"4E46"
A Taxonomy of Python Libraries Helpful for Forensic Analysis! 5 
!
"#!$%&''&()!*+((+',+-&,&''&(./012-+3/!!
!
Import os, sys, libCiscoCrack 
Crack 
for root, dir, files in os.walk(str(sys.argv[1])): 
[1])): 
for file in files: 
s: 
if ".pcf" in file
le: 
lines = open(file).readlines() 
nes() 
for line in lines: 
if "password" in line: 
ne: 
plainTextPass = libCiscoCrack.crack(line) 
print plainTextPass
s
import base64 
msg = raw_input("Enter Base64 Message:") 
print "Decoded Val:"+base64.decodestring(msg)
g(msg)
© 2010 The SANS Institute 
As part of the Information Security Reading Room 
Author retains full rights.
"
Key"fingerprint"="AF19"FA27"2F94"998D"FDB5"DE3D"F8B5"06E4"A169"4E46"
A Taxonomy of Python Libraries Helpful for Forensic Analysis! 6 
!
"#!$%&''&()!*+((+',+-&,&''&(./012-+3/!!
!
import base64, string 
ng 
from Crypto.Cipher import DES 
ES 
THRESH = 0.9 
keyFile = open("keys.txt"
keys = keyFile.readlines() 
ciph=base64.decodestring("cG0okyHpOAADuNLv8bRpxpyZeU8kMA2kWV2zoV+YUos="
for key in keys: 
obj=DES.new(key[0:8], DES.MODE_ECB)         
decodedStr=obj.decrypt(ciph) 
h) 
foundLetters = 0 
for eachChar in decodedStr: 
if eachChar.isalpha() or eachChar.isdigit()\ 
t()\ 
or eachChar.isspace(): 
foundLetters = foundLetters+1 
1 
if (float(foundLetters)/float(len(decodedStr)) > THRESH): 
THRESH): 
print "DES(ciphertext,"+key[0:8]+")="+decodedStr
+decodedStr
© 2010 The SANS Institute 
As part of the Information Security Reading Room 
Author retains full rights.
"
Key"fingerprint"="AF19"FA27"2F94"998D"FDB5"DE3D"F8B5"06E4"A169"4E46"
A Taxonomy of Python Libraries Helpful for Forensic Analysis! 7 
!
"#!$%&''&()!*+((+',+-&,&''&(./012-+3/!!
!
repositories over the DNS protocol. Using Python, we can write a script to scan a file 
system, submitting files to the database for comparison. For those files that hit on the 
Malware Hash Registry, we’ll print the information. Figure 6 shows this exact program, 
written by a student of mine, Kevin Cullberg (2010), in less than 30 lines of code.  
import os, hashlib, sys, socket, string 
, string 
for root, dir, files in os.walk(str(sys.argv[1])): 
[1])): 
for fp in files: 
try: 
# open a file and calculate the md5 hash 
fn = root+fp 
infile = open(fn, "rb") 
content = infile.read() 
infile.close() 
= hashlib.md5() 
m.update(content) 
hash = m.hexdigest() 
() 
# send the md5 hash the Team Cmuru for inspection 
mhr = socket.socket(socket.AF_INET,\     
socket.SOCK_STREAM) 
mhr.connect(("hash.cymru.com"43)) 
)) 
mhr.send(str(hash + "\r\n")) 
\n")) 
response = '' 
# wait for the response from Team Cymru 
while True: 
= mhr.recv(4096
response += d 
if d == '': 
break 
# if the response is malware - print filename 
if "NO_DATA" not in response: 
nse: 
print "<INFECTED>:"+str(fn) 
except: 
pass 
© 2010 The SANS Institute 
As part of the Information Security Reading Room 
Author retains full rights.
"
Key"fingerprint"="AF19"FA27"2F94"998D"FDB5"DE3D"F8B5"06E4"A169"4E46"
A Taxonomy of Python Libraries Helpful for Forensic Analysis! 8 
!
"#!$%&''&()!*+((+',+-&,&''&(./012-+3/!!
!
tool; it can even provide information such as where the file was created. Imagine the 
following scenario: we begin an investigation and find thousands of pictures taken with  
import string,sys,os 
os 
from PIL import Image 
ge 
from PIL.ExifTags import TAGS 
GS 
for root, dir, files in os.walk(str(sys.argv[1])): 
[1])): 
for fp in files: 
if ".JPG" in fp.upper(): 
er(): 
# open a file and extract exif 
fn = root+fp 
fp 
try 
= Image.open(fn) 
info = i._getexif() 
exif={} 
for tag, value in info.items(): 
(): 
decoded = TAGS.get(tag, tag) 
exif[decoded]=value 
# from the exif data, extract gps 
exifGPS = exif['GPSInfo'
latData = exifGPS[2] 
lonData = exifGPS[4
# calculate the lat / long 
latDeg = latData[0][0] / float(latData[0][1]) 
][1]) 
latMin = latData[1][0] / float(latData[1][1]) 
][1]) 
latSec = latData[2][0/ float(latData[2][1]) 
][1]) 
lonDeg = lonData[0][0/ float(lonData[0][1]) 
0][1]) 
lonMin = lonData[1][0/ float(lonData[1][1]) 
][1]) 
lonSec = lonData[2][0/ float(lonData[2][1]) 
][1]) 
# correct the lat/lon based on N/E/W/S 
Lat = (latDeg + (latMin + latSec/60.0)/60.0
/60.0) 
if exifGPS[1== 'S': Lat = Lat * -1  
-1  
Lon = (lonDeg + (lonMin + lonSec/60.0)/60.0
60.0) 
if exifGPS[3== 'W': Lon = Lon * -1 
* -1 
# print file 
msg=fn+" located at "+str(Lat)+","+str(Lon) 
str(Lon) 
print msg 
except
pass
© 2010 The SANS Institute 
As part of the Information Security Reading Room 
Author retains full rights.
"
Key"fingerprint"="AF19"FA27"2F94"998D"FDB5"DE3D"F8B5"06E4"A169"4E46"
A Taxonomy of Python Libraries Helpful for Forensic Analysis! 9 
!
"#!$%&''&()!*+((+',+-&,&''&(./012-+3/!!
!
Next, we’ll use the extracted latitude and longitude coordinates to plot out a 
Google map. Google Maps use the KML file format to display geographic data 
(Apiolaza, 2009). To display our images, we’ll build a KML file that we can 
subsequently import into Google Maps. Figure 8 builds a KML document with the place 
marks of the geo-locations of the images we recently found. 
kmlheader = '<?xml version="1.0" encoding="UTF-8"?>\n'\ 
'\ 
'<kml xmlns="http://www.opengis.net/kml/2.2">\n' 
kml = ( 
'<Placemark>\n' 
' 
'<name>%s</name>\n' 
' 
'<Point>\n' 
' 
'<coordinates>%6f,%6f</coordinates>\n' 
n' 
'</Point>\n' 
' 
'</Placemark>\n' 
' 
'</kml>' 
%(fp,longitude, latitude) 
kmldoc = kmlheader + kml 
print kmldoc
Figure 9. Image locations plotted on Google Maps. 
Documents you may be interested
Documents you may be interested