rbkb 0.6.10

Sign up to get free protection for your applications and to get access to all the features.
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