pdf to image conversion using c# : Break a pdf password software SDK cloud windows wpf azure class grow-forensic-tools-taxonomy-python-libraries-helpful-forensic-analysis-334531-part1871

"
© 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! 10 
10 
!
"#!$%&''&()!*+((+',+-&,&''&(./012-+3/!!
!
After decoding information about the location of files, we may want to look at the 
authors of other file types. pyPDF provides a Python library capable of extracting such 
document information, document merging, splitting, cropping and encrypting and 
decrypting PDF files (Fenniak, 2010). The Document Information Class of PDF can 
return information about the author, creator, producer, subject, or title of a PDF File.  
Looking for files created by a particular author or length? Let’s write a small 
program that will look for PDF files longer than five pages, created by “Dr Evil”. You’ll 
notice that Figure 10 shows how we can import pyPDF in and define a PdfFileReader 
object that reads in each file, checking the title, author, and number of pages. If we pass 
our comparison test, we print the file name and length to the screen. You may also notice 
we suppress warnings and also use a try/except scheme to catch errors. If you try to parse 
through all the documents on a given file system, you will run into plenty of errors. If you 
want to know more about which files cause errors, you could add a print statement in the 
except scheme instead of just passing by; for now, our script helps by automating the 
process of finding some low-hanging forensics fruit. 
import warnings,sys,os,string 
tring 
from pyPdf import PdfFileWriter, PdfFileReader 
er 
warnings.filterwarnings("ignore"
for root, dir, files in os.walk(str(sys.argv[1])):  
1])):  
for fp in files: 
if ".pdf" in fp: 
fp: 
fn = root+"/"+fp 
fp 
try 
pdfFile = PdfFileReader(file(fn,"rb")) 
)) 
title = pdfFile.getDocumentInfo().title.upper() 
per() 
author = pdfFile.getDocumentInfo().author.upper() 
per() 
pages = pdfFile.getNumPages() 
if (pages > 5) and ("DR EVIL" in  author):              
resultStr = "Matched:"+str(fp)+"-"+str(pages) 
tr(pages) 
Figure 10. Metadata extraction from PDF file types. 
In addition to multimedia and PDF types, an investigator can find a rich source of 
metadata information inside of Microsoft Office documents. Microsoft Office stores 
information inside Word (DOC), Excel Workbook (XLS), and PowerPoint (PPT) 
presentations in binary format using a basic container structure called OLE2, which can 
contain information about everything from the author to the embedded pictures inside the 
Break a pdf password - 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
copy text from protected pdf; crystal report to pdf with password
Break a pdf password - 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
add password to pdf document; password protected 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! 11 
11 
!
"#!$%&''&()!*+((+',+-&,&''&(./012-+3/!!
!
document. Now, let’s see how we can use the OLE2 format to help a forensic 
investigation.  
Imagine a scenario where we suspect a user has downloaded a Microsoft Office 
document that has embedded VBA macros. The macros caused damage to the 
compromised system, so we want to identify the document that caused the problem and 
reverse-engineer it. We can use the OleFileIO_PL library to read the Microsoft OLE 
streams from files, detecting those that have “macro/vba” in their OLE data (see Figure 
11). Notice that we use the except/pass to walk right over files that raise an error for 
either not being an OLE2 file type or that contain no OLE2 streams. This allows us to 
find Microsoft OLE files missing a Microsoft Office extension.  
import OleFileIO_PL,os,sys,string 
tring 
for root, dir, files in os.walk(str(sys.argv[1])):  
[1])):  
for fp in files: 
fn = root+fp 
try
ole = OleFileIO_PL.OleFileIO(fn) 
if ole.exists('macros/vba'): 
): 
print fn+":"+" contains vba macros." 
os." 
except
pass 
C# PDF Convert: How to Convert Jpeg, Png, Bmp, & Gif Raster Images
Success"); break; case ConvertResult.FILE_TYPE_UNSUPPORT: Console.WriteLine("Fail: can not convert to PDF, file type unsupport"); break; case ConvertResult
break pdf password online; pdf password recovery
C# Image Convert: How to Convert Word to Jpeg, Png, Bmp, and Gif
RasterEdge.XDoc.PDF.dll. FileType.IMG_JPEG); switch (result) { case ConvertResult. NO_ERROR: Console.WriteLine("Success"); break; case ConvertResult
adding a password to a pdf; pdf password remover 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"
A Taxonomy of Python Libraries Helpful for Forensic Analysis! 12 
12 
!
"#!$%&''&()!*+((+',+-&,&''&(./012-+3/!!
!
provides a powerful interface for grabbing registry keys. But what if you want to access a 
Windows Registry during offline analysis inside a forensic distribution such as SIFT, 
DEFT, or HELIX?  
The RunMRU keu provides an interesting key inside the Windows Registry. It 
shows all the recently run commands from the start menu. Figure 12 shows how to pull 
the values out of this key and display them on the screen. Notice that we first open a 
winreg key, then enumerate through the list of values for the key. Each value is printed to 
the screen. 
import _winreg 
RunMRUKey = _winreg.OpenKey( 
_winreg.HKEY_CURRENT_USER, 
"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\RunMRU"
\RunMRU") 
try: 
= 0 
while 1
name, value, type = _winreg.EnumValue(RunMRUKey, i) 
, i) 
print name+":"+value 
lue 
+= 1 
except WindowsError: 
print
VB.NET PDF Page Insert Library: insert pages into PDF file in vb.
Forms. Support adding PDF page number. Offer PDF page break inserting function. Free SDK library for Visual Studio .NET. Independent
pdf password encryption; create pdf password
C# PDF File Split Library: Split, seperate PDF into multiple files
files online. Support to break a large PDF file into smaller files. Separate PDF file into single ones with defined pages. Divide PDF
adding a password to a pdf file; a 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! 13 
13 
!
"#!$%&''&()!*+((+',+-&,&''&(./012-+3/!!
!
Figure 13. Sample output from Vinetto. 
2.5 *NIX Artifacts 
PyUTMP module provides a Python-oriented interface to the utmp file on the 
Unix operating system (Clapper, 2010). The utmp file provides information about which 
users are currently logged onto a system. However, the utmp structure is binary and 
cannot be read by a simple text editor: rather, each Operating System (Solaris, Unix, 
Linux) provides a series of tools for reading the binary structure.  
Image a scenario where you must perform forensics on a live Linux system. You 
suspect that the standard binaries for displaying utmp information have been 
compromised by application-level root-kits and you want to read information in the utmp 
binary using a script. Further forensic analysis leads you to believe that the application-
level root-kit was installed the week of June 20
th
, 2010. Figure 14 shows how we can 
detect the users who logged into our system the week of June 20
th
, bypassing using 
standard binaries that may have been compromised in the initial attack. 
VB.NET PDF File Split Library: Split, seperate PDF into multiple
Support to break a large PDF file into smaller files in .NET WinForms. Separate source PDF document file by defined page range in VB.NET class application.
convert protected pdf to word document; open password protected pdf
C# PDF Page Insert Library: insert pages into PDF file in C#.net
Ability to add PDF page number in preview. Offer PDF page break inserting function. Free components and online source codes for .NET framework 2.0+.
pdf owner password; password on 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! 14 
14 
!
"#!$%&''&()!*+((+',+-&,&''&(./012-+3/!!
!
import time 
from pyutmp import UtmpFile 
le 
start = time.mktime(time.strptime("12:00-20.06.2010","%H:%M-%d.%m.%Y")) 
.%m.%Y")) 
end = time.mktime(time.strptime("12:00-27.06.2010","%H:%M-%d.%m.%Y")) 
.%m.%Y")) 
for utmp in UtmpFile(): 
checkTime = time.ctime(utmp.ut_time) 
me) 
if start < utmp.ut_time < end and\ 
and\ 
utmp.ut_user_process: 
print '%s logged in at %s' % (utmp.ut_user,\  
ser,\  
time.ctime(utmp.ut_time)) 
import poplib 
from email import parser 
er 
keyWordFile = open("keywords.txt") 
") 
keyWords = keyWordFile.readlines() 
pop_conn = poplib.POP3_SSL('pop.gmail.com'
pop_conn.user('username'
pop_conn.pass_('password'
messages = [pop_conn.retr(i) for i in range(1, len(pop_conn.list()[1]) + 1)] 
1]) + 1)] 
)] 
messages = ["\n".join(mssg[1]) for mssg in messages] 
messages] 
messages = [parser.Parser().parsestr(mssg) for mssg in  messages] 
ssages] 
pop_conn.quit() 
for message in messages: 
for keyWord in  keyWords: 
if keyWord in message['subject']: 
]: 
print message['subject']
]
C# TWAIN - Query & Set Device Abilities in C#
device.TwainTransferMode = method; break; } if (method == TwainTransferMethod.TWSX_FILE) device.TransferMethod = method; } // If it's not supported tell stop.
break password pdf; change password on pdf file
C# TWAIN - Install, Deploy and Distribute XImage.Twain Control
RasterEdge.XDoc.PDF.dll. device.TwainTransferMode = method; break; } if (method == TwainTransferMethod.TWSX_FILE) device.TransferMethod = method; } // If it's
copy protection pdf; convert password protected pdf to word
© 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! 15 
15 
!
"#!$%&''&()!*+((+',+-&,&''&(./012-+3/!!
!
example above (Figure 15),
2
we demonstrate how to connect to a pop server, dump the 
messages in their entirety and parse them against a list of keywords from the file 
keywords.txt.  
2.7 Footprinting Applications 
Windows uses the Portable Executable (PE) file format for executable code object 
code and Dynamic Link Libraries (DLLS). Using a combination of two libraries, PEFile 
(Carrera, 2006a) and PYDASM (Carrera, 2006b), we can build a small disassembler. 
This can help a forensic analyst to determine if a program loaded the address of a 
particular system call, for example the syscall, to bind a network socket (Seitz, 2009). 
A few years back the SPYLOCKED Trojan caused quite a bit of damage. 
SPYLOCKD downloaded a Trojan DLL and Executable to a computer and then notified 
the user that virus protection had expired and needed to be upgraded. If the user clicked 
and upgraded the virus protection, he/she further infected the box with malware. Almost 
immediately after the attack, anti-virus vendors created a signature for the malicious DLL 
that the application hooked to. Finding the DLL and deleting it from the system corrected 
the issue.  
But what if you wanted to know which pieces of new executable code on your 
system hooked to that DLL? Enter PEFile. We can write a quick Python script using the 
PEFile library to scan all executables in Figure 16, looking at which DLLs they are 
hooked to and printing out any executables that hook to “SPLOCKD.DLL.” We will also 
print out the other DLLS and IMPORTS used by the malicious executable for further 
analysis. 
import pefile,sys,os,sys
,sys
for root, dir, files in os.walk(str(sys.argv[1])):  
[1])):  
for fp in files: 
if ".exe" in  fp: 
fp: 
try                     
pe = pefile.PE(root+"/"+fp) 
fp) 
for entry in pe.DIRECTORY_ENTRY_IMPORT:                         
if "SPYLOCKD.dll" in  entry.dll: 
dll: 
print fp+" hooked to SPYLOCKD." 
C# TWAIN - Specify Size and Location to Scan
foreach (TwainStaticFrameSizeType frame in frames) { if (frame == TwainStaticFrameSizeType.LetterUS) { this.device.FrameSize = frame; break; } } }.
copy text from protected pdf; adding a password to a pdf
C# TWAIN - Acquire or Save Image to File
RasterEdge.XDoc.PDF.dll. if (device.Compression != TwainCompressionMode.Group4) device.Compression = TwainCompressionMode.Group3; break; } } acq.FileTranfer
create password protected pdf from word; protected 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! 16 
16 
!
"#!$%&''&()!*+((+',+-&,&''&(./012-+3/!!
!
except
#no linked DLLs - passing  
pass
import zipfile 
zFile = open(sys.argv[1],”r”) 
,”r”) 
passFile = open(sys.argv[2],”r”) 
,”r”) 
passwords = passFile.readlines() 
() 
for password in passwords: 
try
for info in  zfile.infolist():    
fname = info.filename          
print "trying..."+str(password) 
rd) 
data = zfile.read(fname,str(password)) 
rd)) 
print “password found:"+str(password)) 
break 
except Exception, e: 
print e 
if ('Bad password'in  e: pass  
ss  
© 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! 17 
17 
!
"#!$%&''&()!*+((+',+-&,&''&(./012-+3/!!
!
2.9 Carving Volatile Memory: Volatility 
Analyzing the contents of volatile memory (RAM) to find digital artifacts can 
give an investigator insight into the current state of a system. Volatile memory analysis 
can enable an investigator to discover open network connections, recently used 
passwords, deleted files, the process table, or even the contents of the Windows registry. 
However, carving those artifacts out of memory can be a rather challenging task. Enter 
Volatility. 
Volatility is currently one of the largest open-source projects for digital forensics, 
with a growing repository of code samples (Walters, 2010). The project provides a 
framework of Python libraries for extracting digital artifacts from volatile memory. 
Because the toolkit acts as a framework, it abstracts away the underlying operating 
system. This enables an investigator to build independent Operating System tools to 
examine the contents of the memory.  
The structure of Volatility allows investigators to develop modules for extracting 
specific information out of RAM. By default, the framework comes with plug-in modules 
to: 
•  Print the list of open connections and scan for connection objects 
•  Print a list of loaded dlls for each process 
•  Dump crash dump information and convert it to a raw dump 
•  Show the files open for each process and dump processes to executable 
•  Identify image properties, including data, time and location 
•  Print a list of registry keys for each process found in the process table 
The authors of Volatility created the code to be extensible: thus, several investigators 
have extended the Volatility framework by building third-party plug-in modules. Some of 
the more interesting plug-in modules include: 
•  CryptoScan – Finds TrueCrypt passphrases. 
•  Suspicious – Finds “suspicious” processes. 
•  Keyboardbuffer – Extracts keyboard buffer used by the BIOS. 
•  Getsids – Get information about what user (SID) started processes. 
Extending Volatility for your own purposes is relatively easy. To start, download 
Volatility from the distribution site and create a new file in the memory_plugins 
© 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! 18 
18 
!
"#!$%&''&()!*+((+',+-&,&''&(./012-+3/!!
!
directory. You can call the file whatever you wish. In our example, we will extract the 
running processes from a memory dump. This example is an abbreviated form of the 
examples included by the author, Aaron Walters (2010).  
In Figure 18, you will notice we have to declare a class for our new plug-in and 
define both help(self) and execute(self) methods. In our execute method, we use the built-
in function process_list() to dump the process list, we then iterate through the process list, 
printing the process name and process id for each process found in volatile memory. 
from vutils import * 
* 
from forensics.win32.tasks import * 
* 
class getPids(forensics.commands.command): 
and): 
def help(self): 
): 
return  "Print list running processes" 
def execute(self): 
): 
(addr_space, symtab, types) = \ 
load_and_identify_image(self.op, self.opts) 
ts) 
all_tasks = process_list(addr_space,types,symtab) 
print "%-20s %-6s" %('Name','Pid'
me','Pid') 
for task in all_tasks: 
if not addr_space.is_valid_address(task): continue 
inue 
image_file_name = \ 
process_imagename(addr_space, types, task) 
process_id = process_pid(addr_space,types,task) 
print "%-20s %-6d" % (image_file_name, process_id)
, process_id)
© 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! 19 
19 
!
"#!$%&''&()!*+((+',+-&,&''&(./012-+3/!!
!
What is really exciting is that an investigator can write four lines of a Scapy 
program to do what used to take hundreds of lines of C code or multiple-command 
switches in tcpdump. The capabilities for an investigator to investigate traffic are endless: 
make a graph of network destinations, count the number of 802.11 deauth packets in a 
time period to detect an attack, or make a table of the IP IDENT fields to detect covert 
TCP packets.  
Let’s examine a situation where an investigator may want to record statistics 
about the geo-location of the IP address source and destination. After importing Scapy, 
we’ll call the function sniff in our main() procedure. We can use a filter to detect only IP 
packets and then pass those packets with an IP layer to a subsequent function we define, 
called prnPkt. The subsequent function looks up the geo-location information for the 
source and destination based on the IP address fields extracted from each packet.  
import scapy, GeoIP 
oIP 
from scapy import * 
* 
gi = GeoIP.new(GeoIP.GEOIP_MEMORY_CACHE) 
HE) 
def prnPkt(pkt): 
src=pkt.getlayer(IP).src 
src 
dst=pkt.getlayer(IP).dst 
dst 
srcCo = gi.country_code_by_addr(src) 
dstCo = gi.country_code_by_addr(dst) 
print srcCo+">>"+dstCo 
Co 
try: 
while True: 
sniff(filter="ip",prn=prnPkt,store=0
0) 
except KeyboardInterrupt: 
print "\nExiting.\n"
\n"
"
Documents you may be interested
Documents you may be interested