rbkb 0.6.10

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.
Files changed (101) hide show
  1. data/History.txt +74 -0
  2. data/README.rdoc +149 -0
  3. data/Rakefile +47 -0
  4. data/bin/b64 +5 -0
  5. data/bin/bgrep +5 -0
  6. data/bin/blit +5 -0
  7. data/bin/c +5 -0
  8. data/bin/crc32 +5 -0
  9. data/bin/d64 +5 -0
  10. data/bin/dedump +5 -0
  11. data/bin/feed +5 -0
  12. data/bin/hexify +5 -0
  13. data/bin/len +5 -0
  14. data/bin/plugsrv +271 -0
  15. data/bin/rex +10 -0
  16. data/bin/rstrings +5 -0
  17. data/bin/slice +5 -0
  18. data/bin/telson +5 -0
  19. data/bin/unhexify +5 -0
  20. data/bin/urldec +5 -0
  21. data/bin/urlenc +5 -0
  22. data/bin/xor +5 -0
  23. data/cli_usage.rdoc +285 -0
  24. data/doctor-bag.jpg +0 -0
  25. data/lib/rbkb.rb +51 -0
  26. data/lib/rbkb/cli.rb +219 -0
  27. data/lib/rbkb/cli/b64.rb +35 -0
  28. data/lib/rbkb/cli/bgrep.rb +86 -0
  29. data/lib/rbkb/cli/blit.rb +89 -0
  30. data/lib/rbkb/cli/chars.rb +24 -0
  31. data/lib/rbkb/cli/crc32.rb +35 -0
  32. data/lib/rbkb/cli/d64.rb +28 -0
  33. data/lib/rbkb/cli/dedump.rb +52 -0
  34. data/lib/rbkb/cli/feed.rb +229 -0
  35. data/lib/rbkb/cli/hexify.rb +65 -0
  36. data/lib/rbkb/cli/len.rb +76 -0
  37. data/lib/rbkb/cli/rstrings.rb +108 -0
  38. data/lib/rbkb/cli/slice.rb +47 -0
  39. data/lib/rbkb/cli/telson.rb +87 -0
  40. data/lib/rbkb/cli/unhexify.rb +50 -0
  41. data/lib/rbkb/cli/urldec.rb +35 -0
  42. data/lib/rbkb/cli/urlenc.rb +35 -0
  43. data/lib/rbkb/cli/xor.rb +43 -0
  44. data/lib/rbkb/extends.rb +725 -0
  45. data/lib/rbkb/http.rb +21 -0
  46. data/lib/rbkb/http/base.rb +172 -0
  47. data/lib/rbkb/http/body.rb +214 -0
  48. data/lib/rbkb/http/common.rb +74 -0
  49. data/lib/rbkb/http/headers.rb +370 -0
  50. data/lib/rbkb/http/parameters.rb +104 -0
  51. data/lib/rbkb/http/request.rb +58 -0
  52. data/lib/rbkb/http/response.rb +86 -0
  53. data/lib/rbkb/plug.rb +9 -0
  54. data/lib/rbkb/plug/blit.rb +222 -0
  55. data/lib/rbkb/plug/cli.rb +83 -0
  56. data/lib/rbkb/plug/feed_import.rb +74 -0
  57. data/lib/rbkb/plug/peer.rb +67 -0
  58. data/lib/rbkb/plug/plug.rb +215 -0
  59. data/lib/rbkb/plug/proxy.rb +26 -0
  60. data/lib/rbkb/plug/unix_domain.rb +75 -0
  61. data/lib_usage.rdoc +176 -0
  62. data/rbkb.gemspec +38 -0
  63. data/spec/rbkb_spec.rb +7 -0
  64. data/spec/spec_helper.rb +16 -0
  65. data/tasks/ann.rake +80 -0
  66. data/tasks/bones.rake +20 -0
  67. data/tasks/gem.rake +201 -0
  68. data/tasks/git.rake +40 -0
  69. data/tasks/notes.rake +27 -0
  70. data/tasks/post_load.rake +34 -0
  71. data/tasks/rdoc.rake +51 -0
  72. data/tasks/rubyforge.rake +55 -0
  73. data/tasks/setup.rb +292 -0
  74. data/tasks/spec.rake +54 -0
  75. data/tasks/svn.rake +47 -0
  76. data/tasks/test.rake +40 -0
  77. data/test/test_cli_b64.rb +35 -0
  78. data/test/test_cli_bgrep.rb +137 -0
  79. data/test/test_cli_blit.rb +11 -0
  80. data/test/test_cli_chars.rb +21 -0
  81. data/test/test_cli_crc32.rb +108 -0
  82. data/test/test_cli_d64.rb +22 -0
  83. data/test/test_cli_dedump.rb +118 -0
  84. data/test/test_cli_feed.rb +11 -0
  85. data/test/test_cli_helper.rb +96 -0
  86. data/test/test_cli_hexify.rb +63 -0
  87. data/test/test_cli_len.rb +96 -0
  88. data/test/test_cli_rstrings.rb +15 -0
  89. data/test/test_cli_slice.rb +73 -0
  90. data/test/test_cli_telson.rb +11 -0
  91. data/test/test_cli_unhexify.rb +43 -0
  92. data/test/test_cli_urldec.rb +50 -0
  93. data/test/test_cli_urlenc.rb +44 -0
  94. data/test/test_cli_xor.rb +71 -0
  95. data/test/test_helper.rb +5 -0
  96. data/test/test_http.rb +27 -0
  97. data/test/test_http_helper.rb +60 -0
  98. data/test/test_http_request.rb +136 -0
  99. data/test/test_http_response.rb +222 -0
  100. data/test/test_rbkb.rb +19 -0
  101. metadata +238 -0
@@ -0,0 +1,222 @@
1
+ require File.dirname(__FILE__) + '/test_http_helper.rb'
2
+
3
+ class TestHttpResponse < Test::Unit::TestCase
4
+ include HttpTestHelper::CommonInterfaceTests
5
+
6
+ include Rbkb::Http
7
+
8
+ def setup
9
+ @obj_klass = Response
10
+ @obj_opts = nil
11
+ @obj = @obj_klass.new(nil, @obj_opts)
12
+
13
+ @rawdat =<<_EOF_
14
+ HTTP/1.0 404 Not Found
15
+ Date: Thu, 26 Mar 2009 01:18:52 GMT
16
+ Server: Apache
17
+ Content-Type: text/html; charset=iso-8859-1
18
+ Content-Length: 190
19
+ Connection: Keep-Alive
20
+
21
+ <html><head>
22
+ <title>Error report</title></head>
23
+ <body><h1>HTTP Status 404</h1><HR size="1" noshade><p><u>The requested resource is not available.</u></p><HR size="1" noshade>
24
+ </body></html>
25
+ _EOF_
26
+
27
+ @hstr, @body = @rawdat.split(/^\n/, 2)
28
+ @rawdat_crlf = @hstr.gsub("\n", "\r\n") + "\r\n" + @body
29
+
30
+ @code = 404
31
+ @text = "Not Found"
32
+ @version = "HTTP/1.0"
33
+
34
+ @headers = [
35
+ ["Date", "Thu, 26 Mar 2009 01:18:52 GMT"],
36
+ ["Server", "Apache"],
37
+ ["Content-Type", "text/html; charset=iso-8859-1"],
38
+ ["Content-Length", "190"],
39
+ ["Connection", "Keep-Alive"]
40
+ ]
41
+
42
+ @content_length = 190
43
+ end
44
+
45
+ def do_type_tests(rsp)
46
+ assert_kind_of Response, rsp
47
+ assert_kind_of Headers, rsp.headers
48
+ assert_kind_of Body, rsp.body
49
+ assert_kind_of ResponseStatus, rsp.status
50
+ assert_kind_of ResponseHeaders, rsp.headers
51
+ end
52
+
53
+ def do_capture_value_tests(rsp)
54
+ assert_equal @headers, rsp.headers
55
+ assert_equal @body, rsp.body
56
+ assert_equal @code, rsp.status.code
57
+ assert_equal @text, rsp.status.text
58
+ assert_equal @version, rsp.status.version
59
+ assert_equal @content_length, rsp.content_length
60
+ end
61
+
62
+ def test_capture_crlf_headers
63
+ @obj.capture(@rawdat_crlf)
64
+ do_capture_value_tests(@obj)
65
+ do_type_tests(@obj)
66
+ assert_equal @rawdat_crlf, @obj.to_raw
67
+ end
68
+
69
+ def test_captured_body_type
70
+ @obj.capture(@rawdat)
71
+ assert_kind_of BoundBody, @obj.body
72
+ end
73
+ end
74
+
75
+
76
+ class TestHttpResponseChunked < TestHttpResponse
77
+ include Rbkb::Http
78
+
79
+ def setup
80
+ @obj_klass = Response
81
+ @obj_opts = {}
82
+ @obj = @obj_klass.new
83
+
84
+ @rawdat =<<_EOF_
85
+ HTTP/1.1 200 OK
86
+ Date: Thu, 26 Mar 2009 01:18:52 GMT
87
+ Server: Apache
88
+ Content-Type: text/html; charset=iso-8859-1
89
+ Transfer-Encoding: chunked
90
+ Connection: Keep-Alive
91
+
92
+ 20
93
+ This is a test of a chunked-enco
94
+
95
+ 10
96
+ ded HTTP request
97
+
98
+ 0
99
+ _EOF_
100
+
101
+ @hstr, @rawbody = @rawdat.split(/^\n/, 2)
102
+ @rawdat_crlf = @rawdat.gsub("\n", "\r\n")
103
+ @hdrs_crlf = @hstr.gsub("\n", "\r\n")
104
+
105
+ @body = "This is a test of a chunked-encoded HTTP request"
106
+
107
+ @code = 200
108
+ @text = "OK"
109
+ @version = "HTTP/1.1"
110
+
111
+ @headers = [
112
+ ["Date", "Thu, 26 Mar 2009 01:18:52 GMT"],
113
+ ["Server", "Apache"],
114
+ ["Content-Type", "text/html; charset=iso-8859-1"],
115
+ ["Transfer-Encoding", "chunked"],
116
+ ["Connection", "Keep-Alive"]
117
+ ]
118
+
119
+ @content_length = nil
120
+ @tc_chunk_size = 0x20
121
+ end
122
+
123
+ def test_captured_body_type
124
+ @obj.capture(@rawdat)
125
+ assert_kind_of ChunkedBody, @obj.body
126
+ end
127
+
128
+ def test_back_to_raw
129
+ @obj.capture(@rawdat)
130
+ do_capture_value_tests(@obj)
131
+ do_type_tests(@obj)
132
+ @obj.body.opts[:output_chunk_size] = @tc_chunk_size
133
+ assert_equal @rawdat_crlf, @obj.to_raw
134
+ end
135
+
136
+ def test_capture_crlf_headers
137
+ @obj.capture(@rawdat_crlf)
138
+ do_capture_value_tests(@obj)
139
+ do_type_tests(@obj)
140
+ @obj.body.opts[:output_chunk_size] = @tc_chunk_size
141
+ assert_equal @rawdat_crlf, @obj.to_raw
142
+ end
143
+
144
+ def test_default_chunk_size
145
+ if @body.size > ChunkedBody::DEFAULT_CHUNK_SIZE
146
+ assert "TESTCASE ERROR!!!", "make the setup() @body < DEFAULT_CHUNK_SIZE"
147
+ end
148
+ raw_tc = "#{@hdrs_crlf}\r\n#{@body.size.to_s(16)}\r\n#{@body}\r\n\r\n0\r\n"
149
+ @obj.capture(@rawdat_crlf)
150
+ do_capture_value_tests(@obj)
151
+ do_type_tests(@obj)
152
+ assert_equal raw_tc, @obj.to_raw
153
+ end
154
+ end
155
+
156
+ # This test-case simulates a HTTP response to a HEAD request. This type of
157
+ # response is special since it returns Content-Length: NNN or
158
+ # Transfer-Encoding: chunked headers without any actual body data.
159
+ # To handle this special situation, we use the 'ignore_content_length' and
160
+ # 'ignore_chunked_encoding' options.
161
+ class TestHttpResponseToHead < TestHttpResponse
162
+ def setup
163
+ @obj_klass = Response
164
+
165
+ # Technically, a server should only respond to HEAD with one of
166
+ # content length *or* chunked encoding. However, we ignore them both.
167
+ @obj_opts = {
168
+ :ignore_content_length => true,
169
+ :ignore_chunked_encoding => true
170
+ }
171
+ @obj = @obj_klass.new(nil, @obj_opts)
172
+
173
+ # Note, our test-case includes both content length and chunked encoding.
174
+ # A real server probably wouldn't do this, but we want to make sure
175
+ # we handle both.
176
+ @rawdat =<<_EOF_
177
+ HTTP/1.1 200 OK
178
+ Cache-Control: private, max-age=0
179
+ Date: Fri, 27 Mar 2009 04:27:27 GMT
180
+ Expires: -1
181
+ Content-Length: 9140
182
+ Content-Type: text/html; charset=ISO-8859-1
183
+ Server: Booble
184
+ Transfer-Encoding: chunked
185
+
186
+ _EOF_
187
+
188
+ @hstr, @body = @rawdat.split(/^\n/, 2)
189
+ @rawdat_crlf = @hstr.gsub("\n", "\r\n") + "\r\n" + @body
190
+
191
+ @code = 200
192
+ @text = "OK"
193
+ @version = "HTTP/1.1"
194
+
195
+ @headers = [
196
+ ["Cache-Control", "private, max-age=0"],
197
+ ["Date", "Fri, 27 Mar 2009 04:27:27 GMT"],
198
+ ["Expires", "-1"],
199
+ ["Content-Length", "9140"],
200
+ ["Content-Type", "text/html; charset=ISO-8859-1"],
201
+ ["Server", "Booble"],
202
+ ["Transfer-Encoding", "chunked"]
203
+ ]
204
+
205
+ # Content length should get ignored
206
+ @content_length = nil
207
+ end
208
+
209
+ def test_capture_crlf_headers
210
+ @obj.capture(@rawdat_crlf)
211
+ do_capture_value_tests(@obj)
212
+ do_type_tests(@obj)
213
+ assert_equal @rawdat_crlf, @obj.to_raw
214
+ end
215
+
216
+ def test_captured_body_type
217
+ @obj.capture(@rawdat)
218
+ assert_kind_of Body, @obj.body
219
+ end
220
+
221
+ end
222
+
data/test/test_rbkb.rb ADDED
@@ -0,0 +1,19 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ class TestRbkb < Test::Unit::TestCase
4
+
5
+ def setup
6
+ end
7
+
8
+ def test_truth
9
+ assert true
10
+ end
11
+
12
+ # Must... have... green...
13
+ def test_bones_stuff
14
+ assert_equal Rbkb::VERSION, Rbkb.version
15
+ assert_equal File.join(Rbkb::LIBPATH, "blah"), Rbkb.libpath("blah")
16
+ assert_equal File.join(Rbkb::PATH, "blah"), Rbkb.path("blah")
17
+ end
18
+
19
+ end
metadata ADDED
@@ -0,0 +1,238 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rbkb
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.6.10
5
+ platform: ruby
6
+ authors:
7
+ - Eric Monti
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-10-01 00:00:00 -04:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: eventmachine
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 0.12.8
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: bones
27
+ type: :development
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 2.5.1
34
+ version:
35
+ description: Rbkb is a collection of ruby-based pen-testing and reversing tools. Inspired by Matasano Blackbag.
36
+ email: emonti@matasano.com
37
+ executables:
38
+ - b64
39
+ - bgrep
40
+ - blit
41
+ - c
42
+ - crc32
43
+ - d64
44
+ - dedump
45
+ - feed
46
+ - hexify
47
+ - len
48
+ - plugsrv
49
+ - rex
50
+ - rstrings
51
+ - slice
52
+ - telson
53
+ - unhexify
54
+ - urldec
55
+ - urlenc
56
+ - xor
57
+ extensions: []
58
+
59
+ extra_rdoc_files:
60
+ - History.txt
61
+ - README.rdoc
62
+ - bin/b64
63
+ - bin/bgrep
64
+ - bin/blit
65
+ - bin/c
66
+ - bin/crc32
67
+ - bin/d64
68
+ - bin/dedump
69
+ - bin/feed
70
+ - bin/hexify
71
+ - bin/len
72
+ - bin/plugsrv
73
+ - bin/rex
74
+ - bin/rstrings
75
+ - bin/slice
76
+ - bin/telson
77
+ - bin/unhexify
78
+ - bin/urldec
79
+ - bin/urlenc
80
+ - bin/xor
81
+ - cli_usage.rdoc
82
+ - lib_usage.rdoc
83
+ files:
84
+ - History.txt
85
+ - README.rdoc
86
+ - Rakefile
87
+ - bin/b64
88
+ - bin/bgrep
89
+ - bin/blit
90
+ - bin/c
91
+ - bin/crc32
92
+ - bin/d64
93
+ - bin/dedump
94
+ - bin/feed
95
+ - bin/hexify
96
+ - bin/len
97
+ - bin/plugsrv
98
+ - bin/rex
99
+ - bin/rstrings
100
+ - bin/slice
101
+ - bin/telson
102
+ - bin/unhexify
103
+ - bin/urldec
104
+ - bin/urlenc
105
+ - bin/xor
106
+ - cli_usage.rdoc
107
+ - doctor-bag.jpg
108
+ - lib/rbkb.rb
109
+ - lib/rbkb/cli.rb
110
+ - lib/rbkb/cli/b64.rb
111
+ - lib/rbkb/cli/bgrep.rb
112
+ - lib/rbkb/cli/blit.rb
113
+ - lib/rbkb/cli/chars.rb
114
+ - lib/rbkb/cli/crc32.rb
115
+ - lib/rbkb/cli/d64.rb
116
+ - lib/rbkb/cli/dedump.rb
117
+ - lib/rbkb/cli/feed.rb
118
+ - lib/rbkb/cli/hexify.rb
119
+ - lib/rbkb/cli/len.rb
120
+ - lib/rbkb/cli/rstrings.rb
121
+ - lib/rbkb/cli/slice.rb
122
+ - lib/rbkb/cli/telson.rb
123
+ - lib/rbkb/cli/unhexify.rb
124
+ - lib/rbkb/cli/urldec.rb
125
+ - lib/rbkb/cli/urlenc.rb
126
+ - lib/rbkb/cli/xor.rb
127
+ - lib/rbkb/extends.rb
128
+ - lib/rbkb/http.rb
129
+ - lib/rbkb/http/base.rb
130
+ - lib/rbkb/http/body.rb
131
+ - lib/rbkb/http/common.rb
132
+ - lib/rbkb/http/headers.rb
133
+ - lib/rbkb/http/parameters.rb
134
+ - lib/rbkb/http/request.rb
135
+ - lib/rbkb/http/response.rb
136
+ - lib/rbkb/plug.rb
137
+ - lib/rbkb/plug/blit.rb
138
+ - lib/rbkb/plug/cli.rb
139
+ - lib/rbkb/plug/feed_import.rb
140
+ - lib/rbkb/plug/peer.rb
141
+ - lib/rbkb/plug/plug.rb
142
+ - lib/rbkb/plug/proxy.rb
143
+ - lib/rbkb/plug/unix_domain.rb
144
+ - lib_usage.rdoc
145
+ - rbkb.gemspec
146
+ - spec/rbkb_spec.rb
147
+ - spec/spec_helper.rb
148
+ - tasks/ann.rake
149
+ - tasks/bones.rake
150
+ - tasks/gem.rake
151
+ - tasks/git.rake
152
+ - tasks/notes.rake
153
+ - tasks/post_load.rake
154
+ - tasks/rdoc.rake
155
+ - tasks/rubyforge.rake
156
+ - tasks/setup.rb
157
+ - tasks/spec.rake
158
+ - tasks/svn.rake
159
+ - tasks/test.rake
160
+ - test/test_cli_b64.rb
161
+ - test/test_cli_bgrep.rb
162
+ - test/test_cli_blit.rb
163
+ - test/test_cli_chars.rb
164
+ - test/test_cli_crc32.rb
165
+ - test/test_cli_d64.rb
166
+ - test/test_cli_dedump.rb
167
+ - test/test_cli_feed.rb
168
+ - test/test_cli_helper.rb
169
+ - test/test_cli_hexify.rb
170
+ - test/test_cli_len.rb
171
+ - test/test_cli_rstrings.rb
172
+ - test/test_cli_slice.rb
173
+ - test/test_cli_telson.rb
174
+ - test/test_cli_unhexify.rb
175
+ - test/test_cli_urldec.rb
176
+ - test/test_cli_urlenc.rb
177
+ - test/test_cli_xor.rb
178
+ - test/test_helper.rb
179
+ - test/test_http.rb
180
+ - test/test_http_helper.rb
181
+ - test/test_http_request.rb
182
+ - test/test_http_response.rb
183
+ - test/test_rbkb.rb
184
+ has_rdoc: true
185
+ homepage: http://emonti.github.com/rbkb
186
+ licenses: []
187
+
188
+ post_install_message:
189
+ rdoc_options:
190
+ - --line-numbers
191
+ - --main
192
+ - README.rdoc
193
+ require_paths:
194
+ - lib
195
+ required_ruby_version: !ruby/object:Gem::Requirement
196
+ requirements:
197
+ - - ">="
198
+ - !ruby/object:Gem::Version
199
+ version: "0"
200
+ version:
201
+ required_rubygems_version: !ruby/object:Gem::Requirement
202
+ requirements:
203
+ - - ">="
204
+ - !ruby/object:Gem::Version
205
+ version: "0"
206
+ version:
207
+ requirements: []
208
+
209
+ rubyforge_project: rbkb
210
+ rubygems_version: 1.3.4
211
+ signing_key:
212
+ specification_version: 3
213
+ summary: Rbkb is a collection of ruby-based pen-testing and reversing tools
214
+ test_files:
215
+ - test/test_cli_b64.rb
216
+ - test/test_cli_bgrep.rb
217
+ - test/test_cli_blit.rb
218
+ - test/test_cli_chars.rb
219
+ - test/test_cli_crc32.rb
220
+ - test/test_cli_d64.rb
221
+ - test/test_cli_dedump.rb
222
+ - test/test_cli_feed.rb
223
+ - test/test_cli_helper.rb
224
+ - test/test_cli_hexify.rb
225
+ - test/test_cli_len.rb
226
+ - test/test_cli_rstrings.rb
227
+ - test/test_cli_slice.rb
228
+ - test/test_cli_telson.rb
229
+ - test/test_cli_unhexify.rb
230
+ - test/test_cli_urldec.rb
231
+ - test/test_cli_urlenc.rb
232
+ - test/test_cli_xor.rb
233
+ - test/test_helper.rb
234
+ - test/test_http.rb
235
+ - test/test_http_helper.rb
236
+ - test/test_http_request.rb
237
+ - test/test_http_response.rb
238
+ - test/test_rbkb.rb