c# pdf library free : Batch edit pdf metadata control SDK system web page .net asp.net console thesis_v1.65-part223

5.2.1.1 Flash conversion script
To safely display the contents of uploaded documents back to the user, we convert them into 
a Flash file. The advantage of this approach is that we can keep the PDF files saved safely in 
non web accessible location and serve the Flash copies to the browser. The conversion is 
handled by pdf2swf script from SWTools bundle, using following command:
pdf2swf -T 8 -B rfxview.swf [path to pdf] -o [path to output flash file]
Parameter -T let's us specify a version of Flash to be used and parameter -B rfxview.swf tells 
the script to combine the file during conversion with a viewer. This allows the result to be 
browsed in Flash player and adds a navigation panel. 
5.2.1.2 Supplementing score system
To help determine whether uploaded file may be potentially harmful, the uploads are scored 
using a python script. The original concept was put forth by Brandon Dixon in 2010 [41] and 
it took advantage of the fact that malicious PDF files are usually small in size (less than 2 
megabytes), with single page, close all streams and objects and contain JavaScript. Many of 
the vulnerabilities that appeared in recent years took advantage of embedded files and Flash 
content without using JavaScript. As such, RichMedia needs to be After testing with fifteen 
malicious samples and twenty various clean samples, the following scoring system produced 
most reliable results.
• add 1 point to primary score for JavaScript or RichMedia
• add 0.25 to primary score each for size under 1.8 megabytes, less then 2 pages, 
number of obj equals number of endobj, number of stream equals number of 
endstream 
• add 0.5 to secondary score each for embedded files, JBIG2Decode, Launch, 
OpenAction, AA, Colors
Based on the totals the file is judged suspicious when primary score is 1.5 or higher or when 
primary score is 1 and and secondary score is 0.5 or higher. The file is judged to be high risk 
when the primary score is 2 or higher and secondary score is 0.5 or higher. Otherwise the file 
is marked as clean. Using this system, the biggest source of false positives are small forms 
that make use of JavaScript. Using this system, there were two false positives caused by small 
PDF forms that used JavaScript for form validation. However, since small files containing 
JavaScript should always warrant followup inspection, these false positives are acceptable. 
Out of fifteen tested malicious samples eight were marked as suspicious, seven as high risk 
and none as false negatives.
5.2.1.3 Uploader component security
The uploader component is a potential source of several security holes that need to be 
addressed. First, the security token, consisting of a md5 hash value of current timestamp 
51
Batch edit pdf metadata - add, remove, update PDF metadata in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Allow C# Developers to Read, Add, Edit, Update and Delete PDF Metadata
remove metadata from pdf acrobat; metadata in pdf documents
Batch edit pdf metadata - VB.NET PDF metadata library: add, remove, update PDF metadata in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Enable VB.NET Users to Read, Write, Edit, Delete and Update PDF Document Metadata
view pdf metadata in explorer; pdf metadata editor
concatenated with unique salt, needs to be validated by the server-side script. This is to make 
sure the user is accessing the upload functionality as intended. Additionally, it is not enough 
to validate file type on the client-side, as such checks can be easily bypassed. File type needs 
to be validated by the PHP script before saving the file. The upload directory needs to have 
permissions set up properly and ideally should be placed outside the document root. If it is 
not possible, extra measures need to be taken to make sure the contents cannot be publicly 
accessed. User's comment needs to be properly validated and processed so that they can be 
safely placed in a MySQL query and viewed in a browser.
5.2.2 File browser page
This page displays a list of all uploaded files. The list is displayed as jQuery's Accordion 
widget, where clicking on an item expands it and displays additional information. The 
markup is generated by instances of PHP class Rows (rows.class.php). Using a class to 
represent a table row ensures that we can easily implement AJAX functionality to modify the 
rows from the client-side, should we need it in the future. The layout of the file browser page 
is shown in figure 5.2.
Figure 5.2: File browser page layout
52
C# PDF Convert to Tiff SDK: Convert PDF to tiff images in C#.net
Studio .NET project. Powerful .NET control to batch convert PDF documents to tiff format in Visual C# .NET program. Free library are
remove pdf metadata; edit pdf metadata acrobat
C# PDF Convert to Word SDK: Convert PDF to Word library in C#.net
Powerful components for batch converting PDF documents in C#.NET program. In the daily-life applications, you often need to use and edit PDF document content
read pdf metadata online; add metadata to pdf file
5.2.3 Report page
Figure 5.3: Report page layout
The page displays a report based on the md5 hash specified in the URL. The PHP script 
(report.php) checks whether a report for a file with specified md5 hash already exists and 
displays it if it does. If it doesn't and a matching PDF file is found in the database, it proceeds 
to run the PDF X-Ray Lite script with the file as a parameter. Once the report is generated it 
is displayed to the user. Figure X. shows the report page layout. When the page is visited 
directly without any md5 specified, the user is presented with a search box instead. The 
report itself is divided into five categories:
• General information: displays hash value of the file (md5, SHA-1 and SHA-256) , PDF 
header and exact file size.
• Object order: shows a list of all objects in the file, their offsets and exact size. 
• Versions: displays version information extracted from the document. Each version 
entry has its  author, creator, producer and creation or modification date. 
• Suspicious objects: displays an accordion list (jQuery widget) of objects marked as 
suspicious due to their size or presence of JavaScript, Flash, automated actions or 
vulnerable encodings. Selecting an object displays its header data (with name 
obfuscation removed), hash, whether it was encrypted or not, list of references and in 
case of object streams, their decoded contents.
53
VB.NET Create PDF from Excel Library to convert xlsx, xls to PDF
NET edit PDF metadata, C#.NET edit PDF digital signatures, C#.NET edit PDF sticky note Professional .NET PDF converter component for batch conversion.
batch update pdf metadata; get pdf metadata
VB.NET PDF Convert to Jpeg SDK: Convert PDF to JPEG images in vb.
C#.NET edit PDF digital signatures, C#.NET edit PDF sticky note Best and free VB.NET PDF to jpeg converter SDK for Visual NET components to batch convert adobe
pdf xmp metadata editor; pdf metadata editor
• All objects: displays an accordion list of all objects found in the file. Each item can be 
expanded to display its header data, encryption information, reference list and 
decoded object stream contents (if applicable).
The comment system is based on a template written by Martin Angelov [42]. When user 
attaches new comment, the form (implemented in comment-form.php) is submitted via 
AJAX and received by back-end script (submit.php). The comment markup is generated by 
the Comment class (comment.class.php), where each instance represents a comment fetched 
from the database. Gravatar service is used to display an avatar associated with user's email 
address. Thorough validation of user input is necessary because it is stored in the database 
and then displayed in the browser. The validation is performed by static method validate() 
implemented in Comment class file. It takes the input from each form field and passes it 
through an appropriate filter and encodes all special characters so that it is safe to store and 
view.
5.3 Implementation overview
This section describes how the application functions as a framework and how additional 
scripts or formats could be integrated. The overall structure of the application follows the 
logic outlined in section 4.2 and as such is divided into upload, browser and report 
components. 
The Server side upload component (upload-server-side.php) not only saves the file 
into the upload folder and saves metadata into database, but also executes any scripts whose 
output we intend to display in the browser component. The code where additional scripts 
may be added is following:
switch ($fileParts['extension']) {
case "pdf":
// 1 represents PDF filetype
$filetype = 1;
[PDF related script execution code – quickscan, score and 
coversion here]
break;
}
Currently scripts that produce quickscan information, score and handle PDF to flash 
conversion are included. The output meant to be displayed in browser needs to be saved in 
database, or in case of conversion, saved into appropriate folder. Adding scripts for different 
filetype is a simple matter of adding another case to the switch. 
The browser component consists of Accordion widget that is populated from 
54
C# PDF File Merge Library: Merge, append PDF files in C#.net, ASP.
NET components for batch combining PDF documents in C#.NET class. Powerful library dlls for mering PDF in both C#.NET WinForms and ASP.NET WebForms.
remove metadata from pdf file; rename pdf files from metadata
VB.NET PDF Convert to Tiff SDK: Convert PDF to tiff images in vb.
NET control to batch convert PDF documents to Tiff format in Visual Basic. Qualified Tiff files are exported with high resolution in VB.NET.
analyze pdf metadata; pdf metadata extract
database by PHP script (rows.class.php). This script generates HTML markup for each 
database row (i.e. each uploaded file) and the result is displayed inside the Accordion widget 
sections. The code where output is customized is following:
switch($this->data['filetype']) {
// PDF file
case "1":
[code generating HTML markup for PDF files here]
break;
}
The overview information for other document types will presumably will be very different 
than the one that is used for PDF files. Adding new case to the switch and writing custom 
HTML markup will be necessary.
The report component (report.php) provides the all markup for the report page, 
except for the report itself. When the report script is called, it first checks that report for MD5 
specified in the GET method. If it does, it proceeds to display it on the page. If it doesn't exist 
it proceeds to run the PDF X-Ray script and displays the report once it is generated. The 
script output includes all HTML markup that is necessary to display the report in Accordion 
format. The makereport function that constructs the report out of JSON objects is located in 
malobjectclass.py, which can be found in the lib folder.  The code for inclusion of other 
scripts is similar to other two components: 
switch($this->data['filetype']) {
// PDF file
case "1":
[code executing analysis script and displaying the results]
break;
}
5.4 Deployment
The first thing we need to deploy the application is a web server that can serve PHP pages. 
Apache version 2.2.22 and PHP 5.3.13 were used during development. PHP version needs to 
be 5.2 or greater, because the application uses filter functions introduced in PHP 5.2.0. As 
mentioned previously, the application connects to MySQL database server and the 
connection is set up in file connect.php. The default values use a local root account to connect 
to the database, which is only acceptable for development purposes. If the application was to 
be deployed live, new user account with minimal privileges should be set up. To create the 
two tables used to store application data. This can be achieved with following SQL 
statements:
55
VB.NET PDF Convert to Word SDK: Convert PDF to Word library in vb.
project. Professional .NET library supports batch conversion in VB.NET. .NET control to export Word from multiple PDF files in VB.
edit pdf metadata; edit pdf metadata online
C# PDF Print Library: Print PDF documents in C#.net, ASP.NET
C#.NET edit PDF metadata, C#.NET edit PDF digital signatures, C#.NET edit PDF sticky note, C# Quicken PDF printer library allows C# users to batch print PDF
pdf metadata; change pdf metadata creation date
CREATE TABLE uploads (
id INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
filename VARCHAR(200) NOT NULL,
filetype INT(2) NOT NULL, 
filesize VARCHAR(20) NOT NULL,
filemd5 VARCHAR(32) NOT NULL,
filedate INT(11) NOT NULL,
filepath VARCHAR(200) NOT NULL,
filescan VARCHAR(4000) NOT NULL,
filescore VARCHAR(200) NOT NULL,
comment VARCHAR(150) NOT NULL default ''
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE comments (
id int(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(128) NOT NULL default '',
url VARCHAR(255) NOT NULL default '',
email VARCHAR(255) NOT NULL default '',
body TEXT NOT NULL,
dt TIMESTAMP NOT NULL default CURRENT_TIMESTAMP,
file_id_fk int(10) NOT NULL,
FOREIGN KEY(file_id_fk) REFERENCES uploads(id) ON DELETE CASCADE
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Python needs to be installed in order to run PDFiD and PDF X-Ray scripts. Latest production 
version of Python 2 should be used because some of the code used by PDF X-Ray is not 
compatible with Python 3. Version 2.7.3 was used during development. Additionally, PDF X-
Ray requires simplejson module to be installed. The module is packaged and distributed in 
the stand way, therefore installation is simple matter of executing the setup script from a 
terminal.
56
Conclusions and future work
Analyzing PDF documents isn't a simple task. The format itself is very diverse and to make 
matters worse, Acrobat Reader is very flexible when it comes to parsing the file. As a result 
malware developers are  provided with a lot of options when it comes to designing a new 
threat. PDF then represents a significant obfuscation layer that can be difficult to remove. 
Each AV vendor uses his own proprietary PDF parsing technology and overall detection 
rates have improved substantially over last two years. However, as Jose Miguel Esparza had 
shown during the proceedings of CARO 2011 Workshop, more sophisticated use of 
obfuscation techniques that is tailored to evade commonly used indicators can substantially 
decrease the chance of detection and even render some of the specialized tools ineffective. 
There are some online services for PDF analysis that allow users to share links to generated 
reports, but none that directly promote cooperation between analysts and could serve as a 
unified platform for malicious document analysis. Such a tool would be very useful when 
dealing with newly emerging threats.
The framework implemented as a part of this thesis, while functional as far as static 
analysis of PDF files is concerned, mostly represents a template of how I think analysis of 
malicious files can be done collectively. There are several areas that can be improved in the 
future – regarding both the PDF analysis functionality and the framework itself. On the 
framework side, a user login system could allow the users to manage their uploaded samples 
or track specific reports. Voting system could supplement the comment system to mark 
samples or any of their parts as benign or malicious. 
Another useful feature to consider is integration of some sort of cyber threat 
information sharing method, such as Open Indicators of Compromise (OpenIOC) [43] or 
Structured Threat Information eXpression (STIX) [44]. Furthermore, the tool currently 
doesn't incorporate any JavaScript or shellcode analysis functionality and external tools need 
to be used to examine them. Therefore, implementing a JavaScript deobfuscator or sandbox 
would further simplify the analysis process. Lastly, a potential area of interesting future 
research could be dynamic analysis of PDF files (not just extracted shellcode). 
57
References
[1]
Adobe Systems Inc.: Document Management – Portable Document Format – 
Part 1: PDF 1.7, First Edition [online] 2009, [ref. 25. 4 . 2012]. Available at:  
http://www.adobe.com/devnet/pdf/pdf_reference.html
[2]
Adobe Systems Inc.: Adobe Reader XI [online] 2012, [ref. 25. 4 . 2012]. 
Available at:  http://www.adobe.com/products/reader.html
[3]
Esparza, J.M.: Obfuscation and [non-] detection of malicious PDF files [online] 
2011, [ref. 15. 12 . 2012]. Available at:  http://eternal-
todo.com/blog/obfuscation-non-detection-malicious-pdf-files
[4]
Wikipedia: Free software [online] 2012, [ref. 15. 12 . 2012]. Available at:  
http://en.wikipedia.org/wiki/Free_software
[5]
Prepressure: The history of PDF [online] 2012, [ref. 25. 4 . 2012]. Available at:  
http://www.prepressure.com/pdf/basics/history
[6]
Selvaraj, K., Gutierrez N.F.: The Rise of PDF Malware [online] 2010, [ref. 20. 4 . 
2012]. Available at:  http://www.symantec.com/connect/blogs/rise-pdf-
malware
[7]
Malware tracker: pdf current threats [online] 2012, [ref. 20. 4. 2012]. Available 
at:  http://www.malwaretracker.com/pdfthreat.php
[8]
Itabashi, K.: Portable Document Format Malware [online] 2011, [ref. 20. 4. 
2012]. Available at:  http://www.symantec.com/connect/blogs/portable-
document-format-malware
[9]
Stevens, D.: Malicious PDF Analysis E-book [online] 2010, [ref. 20. 4. 2012]. 
Available at:  hhttp://blog.didierstevens.com/2010/09/26/free-malicious-pdf-
analysis-e-book/
[10]
Esparza, J.M.: peepdf [online] 2012, [ref. 20. 4. 2012]. Available at: 
http://eternal-todo.com/tools/peepdf-pdf-analysis-tool
[11]
Zimmer D.: PDF Stream Dumper  [online] 2010, [ref. 20. 4. 2012]. Available at: 
http://sandsprite.com/blogs/index.php?uid=7&pid=57
[12]
Sogeti ESEC Labs: Origami [online] 2010, [ref. 15. 4. 2012]. Available at: 
http://esec-lab.sogeti.com/pages/Origami
[13]
Hartstein B.: jsunpack [online] 2012, [ref. 20. 4. 2012]. Available at: 
58
http://jsunpack.jeek.org/
[14]
The Wepawet team: Wepawet [online] 2012, [ref. 20. 4. 2012]. Available at: 
http://wepawet.iseclab.org/
[15]
Malware tracker: pdf examiner [online] 2012, [ref. 20. 4. 2012]. Available at:  
http://www.malwaretracker.com/pdf.php
[16]
Dixon, B.: PDF X-Ray [online] 2012, [ref. 20. 12. 2012]. Available at: 
https://github.com/9b/pdfxray_public
[17]
Portable Document Format Reference Manual Version 1.2 [online] 1996, [ref. 
15. 3. 2013]. Available at:  http://www.pdf-tools.com/public/downloads/pdf-
reference/pdfreference12.pdf
[18]
Adobe Systems Inc.: PDF Reference, Second edition [online] 2000, [ref. 15. 3. 
2013]. Available at: 
http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devn
et/pdf/pdfs/pdf_reference_archives/PDFReference13.pdf
[19]
Adobe Systems Inc.: PDF Reference, Third edition [online] 2001, [ref. 15. 3. 
2013]. Available at: 
http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devn
et/pdf/pdfs/pdf_reference_archives/PDFReference.pdf
[20]
Adobe Systems Inc.: PDF Reference, Fourth edition [online] 2003, [ref. 15. 3. 
2013]. Available at: 
http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devn
et/pdf/pdfs/pdf_reference_archives/PDFReference15_v6.pdf
[21]
Adobe Systems Inc.: PDF Reference, Fifth edition [online] 2004, [ref. 15. 3. 
2013]. Available at: 
http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devn
et/pdf/pdfs/pdf_reference_archives/PDFReference16.pdf
[22]
Adobe Systems Inc.: PDF Reference, Sixth edition [online] 2006, [ref. 15. 3. 
2013]. Available at: 
http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devn
et/pdf/pdfs/pdf_reference_1-7.pdf
[23]
Adobe Systems Inc.: Document management – Portable document format – 
Part 1: PDF 1.7 [online] 2008, [ref. 15. 3. 2013]. Available at: 
http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/
devn
et/pdf/pdfs/PDF32000_2008.pdf
[24]
Adobe Systems Inc.: Adobe Supplement to the ISO 32000, Base Version 1.7, 
Extension Level 3 [online] 2008, [ref. 15. 3. 2013]. Available at: 
59
http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devn
et/pdf/pdfs/adobe_supplement_iso32000.pdf
[25]
Adobe Systems Inc.: Adobe Supplement to the ISO 32000, Base Version 1.7, 
Extension Level 5 [online] 2009, [ref. 15. 3. 2013]. Available at: 
http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devn
et/pdf/pdfs/adobe_supplement_iso32000_1.pdf
[26]
Ratanaworabhan, P., Livshits, B., Zorn, B.: Nozzle: A Defense Against Heap-
spraying Code Injection Attacks [online] 2009, [ref. 14. 4. 2013]. Available at: 
http://research.microsoft.com/pubs/81085/usenixsec09b.pdf
[27]
Zakas, N.Z.: JavaScript: Programujeme profesionálně. Brno: Computer Press, 
2009
[28]
Microsoft: COM: Component Model Object Technologies [online] 2012. 
Available at: https://github.com/9b/pdfxray_public
[29]
Adobe Systems Inc.: Adobe Flash Player [online] 2012, [ref. 25. 4 . 2012]. 
Available at:  http://www.adobe.com/software/flash/about/
[30]
The MITRE Corporation: Common Vulnerabilities and Exposures [online] 
2012, [ref. 25. 4 . 2012]. Available at:  http://cve.mitre.org/
[31]
Foxit Corporation: Foxit Reader [online] 2012, [ref. 20. 12 . 2012]. Available at:  
http://www.foxitsoftware.com/Secure_PDF_Reader/
[32]
Gal, A., et al: PDF.js [online] 2012, [ref 17. 4. 2013]. Available at: 
http://mozilla.github.io/pdf.js/
[33]
Barth, A., Reis, Ch., Jackson, C.: The security of the Chromium Browser 
[online] 2008, [ref. 20.4. 2013]. Available at: 
http://seclab.stanford.edu/websec/chromium/chromium-security-
architecture.pdf
[34]
Kramm, M., et al: SWFTools [online] 2003. [ref. 17.4 2013]. Available at: 
http://www.swftools.org/
[35]
The Gimp Development Team: Gimp User Manual [online] 2010. [ref. 17.4 
2013]. Available at: http://www.gimp.org/docs/
[36]
freedesktop.org: Poppler wiki [online] 2013. [ref. 17.4 2013]. Available at: 
http://freedesktop.org/wiki/Software/poppler/
[37]
Devaldi Ltd: Flexpaper Documentation [online] 2013. [ref. 17.4 2013]. 
Available at: http://flexpaper.devaldi.com/docs.htm
60
Documents you may be interested
Documents you may be interested