librex 0.0.13 → 0.0.15

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 (435) hide show
  1. data/README.markdown +1 -1
  2. data/Rakefile +1 -0
  3. metadata +3 -435
  4. data/lib/rex/LICENSE +0 -29
  5. data/lib/rex/arch.rb +0 -103
  6. data/lib/rex/arch/sparc.rb +0 -75
  7. data/lib/rex/arch/sparc.rb.ut.rb +0 -18
  8. data/lib/rex/arch/x86.rb +0 -513
  9. data/lib/rex/arch/x86.rb.ut.rb +0 -93
  10. data/lib/rex/assembly/nasm.rb +0 -104
  11. data/lib/rex/assembly/nasm.rb.ut.rb +0 -22
  12. data/lib/rex/codepage.map +0 -104
  13. data/lib/rex/compat.rb +0 -311
  14. data/lib/rex/constants.rb +0 -113
  15. data/lib/rex/elfparsey.rb +0 -11
  16. data/lib/rex/elfparsey/elf.rb +0 -123
  17. data/lib/rex/elfparsey/elfbase.rb +0 -258
  18. data/lib/rex/elfparsey/exceptions.rb +0 -27
  19. data/lib/rex/elfscan.rb +0 -12
  20. data/lib/rex/elfscan/scanner.rb +0 -207
  21. data/lib/rex/elfscan/search.rb +0 -46
  22. data/lib/rex/encoder/alpha2.rb +0 -31
  23. data/lib/rex/encoder/alpha2/alpha_mixed.rb +0 -68
  24. data/lib/rex/encoder/alpha2/alpha_upper.rb +0 -79
  25. data/lib/rex/encoder/alpha2/generic.rb +0 -114
  26. data/lib/rex/encoder/alpha2/unicode_mixed.rb +0 -117
  27. data/lib/rex/encoder/alpha2/unicode_upper.rb +0 -129
  28. data/lib/rex/encoder/ndr.rb +0 -89
  29. data/lib/rex/encoder/ndr.rb.ut.rb +0 -44
  30. data/lib/rex/encoder/nonalpha.rb +0 -61
  31. data/lib/rex/encoder/nonupper.rb +0 -64
  32. data/lib/rex/encoder/xdr.rb +0 -106
  33. data/lib/rex/encoder/xdr.rb.ut.rb +0 -29
  34. data/lib/rex/encoder/xor.rb +0 -69
  35. data/lib/rex/encoder/xor/dword.rb +0 -13
  36. data/lib/rex/encoder/xor/dword_additive.rb +0 -13
  37. data/lib/rex/encoders/xor_dword.rb +0 -35
  38. data/lib/rex/encoders/xor_dword_additive.rb +0 -53
  39. data/lib/rex/encoders/xor_dword_additive.rb.ut.rb +0 -12
  40. data/lib/rex/encoding/xor.rb +0 -20
  41. data/lib/rex/encoding/xor.rb.ts.rb +0 -14
  42. data/lib/rex/encoding/xor/byte.rb +0 -15
  43. data/lib/rex/encoding/xor/byte.rb.ut.rb +0 -21
  44. data/lib/rex/encoding/xor/dword.rb +0 -21
  45. data/lib/rex/encoding/xor/dword.rb.ut.rb +0 -15
  46. data/lib/rex/encoding/xor/dword_additive.rb +0 -92
  47. data/lib/rex/encoding/xor/dword_additive.rb.ut.rb +0 -15
  48. data/lib/rex/encoding/xor/exceptions.rb +0 -17
  49. data/lib/rex/encoding/xor/generic.rb +0 -146
  50. data/lib/rex/encoding/xor/generic.rb.ut.rb +0 -120
  51. data/lib/rex/encoding/xor/qword.rb +0 -15
  52. data/lib/rex/encoding/xor/word.rb +0 -21
  53. data/lib/rex/encoding/xor/word.rb.ut.rb +0 -13
  54. data/lib/rex/exceptions.rb +0 -275
  55. data/lib/rex/exceptions.rb.ut.rb +0 -44
  56. data/lib/rex/exploitation/cmdstager.rb +0 -9
  57. data/lib/rex/exploitation/cmdstager/base.rb +0 -175
  58. data/lib/rex/exploitation/cmdstager/debug_asm.rb +0 -142
  59. data/lib/rex/exploitation/cmdstager/debug_write.rb +0 -136
  60. data/lib/rex/exploitation/cmdstager/tftp.rb +0 -63
  61. data/lib/rex/exploitation/cmdstager/vbs.rb +0 -128
  62. data/lib/rex/exploitation/egghunter.rb +0 -277
  63. data/lib/rex/exploitation/egghunter.rb.ut.rb +0 -25
  64. data/lib/rex/exploitation/encryptjs.rb +0 -77
  65. data/lib/rex/exploitation/heaplib.js.b64 +0 -331
  66. data/lib/rex/exploitation/heaplib.rb +0 -94
  67. data/lib/rex/exploitation/javascriptosdetect.rb +0 -897
  68. data/lib/rex/exploitation/obfuscatejs.rb +0 -335
  69. data/lib/rex/exploitation/omelet.rb +0 -320
  70. data/lib/rex/exploitation/omelet.rb.ut.rb +0 -13
  71. data/lib/rex/exploitation/opcodedb.rb +0 -818
  72. data/lib/rex/exploitation/opcodedb.rb.ut.rb +0 -279
  73. data/lib/rex/exploitation/seh.rb +0 -92
  74. data/lib/rex/exploitation/seh.rb.ut.rb +0 -19
  75. data/lib/rex/file.rb +0 -112
  76. data/lib/rex/file.rb.ut.rb +0 -16
  77. data/lib/rex/image_source.rb +0 -12
  78. data/lib/rex/image_source/disk.rb +0 -60
  79. data/lib/rex/image_source/image_source.rb +0 -46
  80. data/lib/rex/image_source/memory.rb +0 -37
  81. data/lib/rex/io/bidirectional_pipe.rb +0 -157
  82. data/lib/rex/io/datagram_abstraction.rb +0 -35
  83. data/lib/rex/io/stream.rb +0 -319
  84. data/lib/rex/io/stream_abstraction.rb +0 -197
  85. data/lib/rex/io/stream_server.rb +0 -211
  86. data/lib/rex/job_container.rb +0 -187
  87. data/lib/rex/logging.rb +0 -4
  88. data/lib/rex/logging/log_dispatcher.rb +0 -179
  89. data/lib/rex/logging/log_sink.rb +0 -42
  90. data/lib/rex/logging/sinks/flatfile.rb +0 -55
  91. data/lib/rex/logging/sinks/stderr.rb +0 -43
  92. data/lib/rex/machparsey.rb +0 -9
  93. data/lib/rex/machparsey/exceptions.rb +0 -34
  94. data/lib/rex/machparsey/mach.rb +0 -209
  95. data/lib/rex/machparsey/machbase.rb +0 -408
  96. data/lib/rex/machscan.rb +0 -9
  97. data/lib/rex/machscan/scanner.rb +0 -217
  98. data/lib/rex/mime.rb +0 -9
  99. data/lib/rex/mime/header.rb +0 -77
  100. data/lib/rex/mime/message.rb +0 -144
  101. data/lib/rex/mime/part.rb +0 -20
  102. data/lib/rex/nop/opty2.rb +0 -108
  103. data/lib/rex/nop/opty2.rb.ut.rb +0 -23
  104. data/lib/rex/nop/opty2_tables.rb +0 -300
  105. data/lib/rex/ole.rb +0 -205
  106. data/lib/rex/ole/clsid.rb +0 -47
  107. data/lib/rex/ole/difat.rb +0 -141
  108. data/lib/rex/ole/directory.rb +0 -231
  109. data/lib/rex/ole/direntry.rb +0 -240
  110. data/lib/rex/ole/docs/dependencies.txt +0 -8
  111. data/lib/rex/ole/docs/references.txt +0 -1
  112. data/lib/rex/ole/fat.rb +0 -99
  113. data/lib/rex/ole/header.rb +0 -204
  114. data/lib/rex/ole/minifat.rb +0 -77
  115. data/lib/rex/ole/propset.rb +0 -144
  116. data/lib/rex/ole/samples/create_ole.rb +0 -27
  117. data/lib/rex/ole/samples/dir.rb +0 -35
  118. data/lib/rex/ole/samples/dump_stream.rb +0 -34
  119. data/lib/rex/ole/samples/ole_info.rb +0 -23
  120. data/lib/rex/ole/storage.rb +0 -395
  121. data/lib/rex/ole/stream.rb +0 -53
  122. data/lib/rex/ole/substorage.rb +0 -49
  123. data/lib/rex/ole/util.rb +0 -157
  124. data/lib/rex/parser/arguments.rb +0 -97
  125. data/lib/rex/parser/arguments.rb.ut.rb +0 -67
  126. data/lib/rex/parser/ini.rb +0 -185
  127. data/lib/rex/parser/ini.rb.ut.rb +0 -29
  128. data/lib/rex/parser/ip360_aspl_xml.rb +0 -102
  129. data/lib/rex/parser/ip360_xml.rb +0 -93
  130. data/lib/rex/parser/nessus_xml.rb +0 -118
  131. data/lib/rex/parser/netsparker_xml.rb +0 -94
  132. data/lib/rex/parser/nexpose_xml.rb +0 -131
  133. data/lib/rex/parser/nmap_xml.rb +0 -121
  134. data/lib/rex/parser/retina_xml.rb +0 -109
  135. data/lib/rex/payloads.rb +0 -1
  136. data/lib/rex/payloads/win32.rb +0 -2
  137. data/lib/rex/payloads/win32/common.rb +0 -26
  138. data/lib/rex/payloads/win32/kernel.rb +0 -53
  139. data/lib/rex/payloads/win32/kernel/common.rb +0 -54
  140. data/lib/rex/payloads/win32/kernel/migration.rb +0 -12
  141. data/lib/rex/payloads/win32/kernel/recovery.rb +0 -50
  142. data/lib/rex/payloads/win32/kernel/stager.rb +0 -194
  143. data/lib/rex/peparsey.rb +0 -12
  144. data/lib/rex/peparsey/exceptions.rb +0 -32
  145. data/lib/rex/peparsey/pe.rb +0 -212
  146. data/lib/rex/peparsey/pe_memdump.rb +0 -63
  147. data/lib/rex/peparsey/pebase.rb +0 -1680
  148. data/lib/rex/peparsey/section.rb +0 -136
  149. data/lib/rex/pescan.rb +0 -13
  150. data/lib/rex/pescan/analyze.rb +0 -309
  151. data/lib/rex/pescan/scanner.rb +0 -206
  152. data/lib/rex/pescan/search.rb +0 -56
  153. data/lib/rex/platforms.rb +0 -1
  154. data/lib/rex/platforms/windows.rb +0 -51
  155. data/lib/rex/poly.rb +0 -132
  156. data/lib/rex/poly/block.rb +0 -477
  157. data/lib/rex/poly/register.rb +0 -100
  158. data/lib/rex/poly/register/x86.rb +0 -40
  159. data/lib/rex/post.rb +0 -8
  160. data/lib/rex/post/dir.rb +0 -51
  161. data/lib/rex/post/file.rb +0 -172
  162. data/lib/rex/post/file_stat.rb +0 -220
  163. data/lib/rex/post/gen.pl +0 -13
  164. data/lib/rex/post/io.rb +0 -182
  165. data/lib/rex/post/meterpreter.rb +0 -4
  166. data/lib/rex/post/meterpreter/channel.rb +0 -445
  167. data/lib/rex/post/meterpreter/channel_container.rb +0 -54
  168. data/lib/rex/post/meterpreter/channels/pool.rb +0 -160
  169. data/lib/rex/post/meterpreter/channels/pools/file.rb +0 -62
  170. data/lib/rex/post/meterpreter/channels/pools/stream_pool.rb +0 -103
  171. data/lib/rex/post/meterpreter/channels/stream.rb +0 -87
  172. data/lib/rex/post/meterpreter/client.rb +0 -364
  173. data/lib/rex/post/meterpreter/client_core.rb +0 -274
  174. data/lib/rex/post/meterpreter/dependencies.rb +0 -3
  175. data/lib/rex/post/meterpreter/extension.rb +0 -32
  176. data/lib/rex/post/meterpreter/extensions/espia/espia.rb +0 -58
  177. data/lib/rex/post/meterpreter/extensions/espia/tlv.rb +0 -16
  178. data/lib/rex/post/meterpreter/extensions/incognito/incognito.rb +0 -94
  179. data/lib/rex/post/meterpreter/extensions/incognito/tlv.rb +0 -21
  180. data/lib/rex/post/meterpreter/extensions/networkpug/networkpug.rb +0 -57
  181. data/lib/rex/post/meterpreter/extensions/networkpug/tlv.rb +0 -15
  182. data/lib/rex/post/meterpreter/extensions/priv/fs.rb +0 -118
  183. data/lib/rex/post/meterpreter/extensions/priv/passwd.rb +0 -61
  184. data/lib/rex/post/meterpreter/extensions/priv/priv.rb +0 -111
  185. data/lib/rex/post/meterpreter/extensions/priv/tlv.rb +0 -28
  186. data/lib/rex/post/meterpreter/extensions/sniffer/sniffer.rb +0 -101
  187. data/lib/rex/post/meterpreter/extensions/sniffer/tlv.rb +0 -26
  188. data/lib/rex/post/meterpreter/extensions/stdapi/constants.rb +0 -333
  189. data/lib/rex/post/meterpreter/extensions/stdapi/fs/dir.rb +0 -282
  190. data/lib/rex/post/meterpreter/extensions/stdapi/fs/file.rb +0 -266
  191. data/lib/rex/post/meterpreter/extensions/stdapi/fs/file_stat.rb +0 -103
  192. data/lib/rex/post/meterpreter/extensions/stdapi/fs/io.rb +0 -48
  193. data/lib/rex/post/meterpreter/extensions/stdapi/net/config.rb +0 -144
  194. data/lib/rex/post/meterpreter/extensions/stdapi/net/interface.rb +0 -73
  195. data/lib/rex/post/meterpreter/extensions/stdapi/net/route.rb +0 -56
  196. data/lib/rex/post/meterpreter/extensions/stdapi/net/socket.rb +0 -137
  197. data/lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/tcp_client_channel.rb +0 -180
  198. data/lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/tcp_server_channel.rb +0 -167
  199. data/lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/udp_channel.rb +0 -208
  200. data/lib/rex/post/meterpreter/extensions/stdapi/railgun.rb.ts.rb +0 -6
  201. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/api_constants.rb +0 -38106
  202. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/api_constants.rb.ut.rb +0 -31
  203. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/buffer_item.rb +0 -47
  204. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/buffer_item.rb.ut.rb +0 -36
  205. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_advapi32.rb +0 -1818
  206. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_iphlpapi.rb +0 -96
  207. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_kernel32.rb +0 -3848
  208. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_netapi32.rb +0 -26
  209. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_ntdll.rb +0 -153
  210. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_shell32.rb +0 -21
  211. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_user32.rb +0 -3169
  212. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_ws2_32.rb +0 -599
  213. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll.rb +0 -318
  214. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_function.rb +0 -100
  215. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_function.rb.ut.rb +0 -42
  216. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_helper.rb +0 -148
  217. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_helper.rb.ut.rb +0 -127
  218. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/multicall.rb +0 -309
  219. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/railgun.rb +0 -204
  220. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/tlv.rb +0 -51
  221. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/util.rb +0 -630
  222. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/win_const_manager.rb +0 -75
  223. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/win_const_manager.rb.ut.rb +0 -103
  224. data/lib/rex/post/meterpreter/extensions/stdapi/stdapi.rb +0 -149
  225. data/lib/rex/post/meterpreter/extensions/stdapi/sys/config.rb +0 -97
  226. data/lib/rex/post/meterpreter/extensions/stdapi/sys/event_log.rb +0 -192
  227. data/lib/rex/post/meterpreter/extensions/stdapi/sys/event_log_subsystem/event_record.rb +0 -41
  228. data/lib/rex/post/meterpreter/extensions/stdapi/sys/power.rb +0 -61
  229. data/lib/rex/post/meterpreter/extensions/stdapi/sys/process.rb +0 -370
  230. data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/image.rb +0 -129
  231. data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/io.rb +0 -55
  232. data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/memory.rb +0 -336
  233. data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/thread.rb +0 -141
  234. data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry.rb +0 -279
  235. data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_key.rb +0 -193
  236. data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_value.rb +0 -102
  237. data/lib/rex/post/meterpreter/extensions/stdapi/sys/thread.rb +0 -180
  238. data/lib/rex/post/meterpreter/extensions/stdapi/tlv.rb +0 -211
  239. data/lib/rex/post/meterpreter/extensions/stdapi/ui.rb +0 -227
  240. data/lib/rex/post/meterpreter/extensions/stdapi/webcam/webcam.rb +0 -63
  241. data/lib/rex/post/meterpreter/inbound_packet_handler.rb +0 -30
  242. data/lib/rex/post/meterpreter/object_aliases.rb +0 -83
  243. data/lib/rex/post/meterpreter/packet.rb +0 -688
  244. data/lib/rex/post/meterpreter/packet_dispatcher.rb +0 -431
  245. data/lib/rex/post/meterpreter/packet_parser.rb +0 -94
  246. data/lib/rex/post/meterpreter/packet_response_waiter.rb +0 -83
  247. data/lib/rex/post/meterpreter/ui/console.rb +0 -137
  248. data/lib/rex/post/meterpreter/ui/console/command_dispatcher.rb +0 -62
  249. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/core.rb +0 -730
  250. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/espia.rb +0 -108
  251. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/incognito.rb +0 -241
  252. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/networkpug.rb +0 -231
  253. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv.rb +0 -61
  254. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv/elevate.rb +0 -98
  255. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv/passwd.rb +0 -51
  256. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv/timestomp.rb +0 -132
  257. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/sniffer.rb +0 -187
  258. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi.rb +0 -65
  259. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/fs.rb +0 -442
  260. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/net.rb +0 -298
  261. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/sys.rb +0 -486
  262. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/ui.rb +0 -315
  263. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/webcam.rb +0 -157
  264. data/lib/rex/post/meterpreter/ui/console/interactive_channel.rb +0 -95
  265. data/lib/rex/post/permission.rb +0 -26
  266. data/lib/rex/post/process.rb +0 -57
  267. data/lib/rex/post/thread.rb +0 -57
  268. data/lib/rex/post/ui.rb +0 -52
  269. data/lib/rex/proto.rb +0 -13
  270. data/lib/rex/proto.rb.ts.rb +0 -8
  271. data/lib/rex/proto/dcerpc.rb +0 -6
  272. data/lib/rex/proto/dcerpc.rb.ts.rb +0 -9
  273. data/lib/rex/proto/dcerpc/client.rb +0 -361
  274. data/lib/rex/proto/dcerpc/client.rb.ut.rb +0 -491
  275. data/lib/rex/proto/dcerpc/exceptions.rb +0 -150
  276. data/lib/rex/proto/dcerpc/handle.rb +0 -47
  277. data/lib/rex/proto/dcerpc/handle.rb.ut.rb +0 -85
  278. data/lib/rex/proto/dcerpc/ndr.rb +0 -72
  279. data/lib/rex/proto/dcerpc/ndr.rb.ut.rb +0 -41
  280. data/lib/rex/proto/dcerpc/packet.rb +0 -253
  281. data/lib/rex/proto/dcerpc/packet.rb.ut.rb +0 -56
  282. data/lib/rex/proto/dcerpc/response.rb +0 -187
  283. data/lib/rex/proto/dcerpc/response.rb.ut.rb +0 -15
  284. data/lib/rex/proto/dcerpc/uuid.rb +0 -84
  285. data/lib/rex/proto/dcerpc/uuid.rb.ut.rb +0 -46
  286. data/lib/rex/proto/dhcp.rb +0 -7
  287. data/lib/rex/proto/dhcp/constants.rb +0 -33
  288. data/lib/rex/proto/dhcp/server.rb +0 -292
  289. data/lib/rex/proto/drda.rb +0 -5
  290. data/lib/rex/proto/drda.rb.ts.rb +0 -17
  291. data/lib/rex/proto/drda/constants.rb +0 -49
  292. data/lib/rex/proto/drda/constants.rb.ut.rb +0 -23
  293. data/lib/rex/proto/drda/packet.rb +0 -252
  294. data/lib/rex/proto/drda/packet.rb.ut.rb +0 -109
  295. data/lib/rex/proto/drda/utils.rb +0 -123
  296. data/lib/rex/proto/drda/utils.rb.ut.rb +0 -84
  297. data/lib/rex/proto/http.rb +0 -5
  298. data/lib/rex/proto/http.rb.ts.rb +0 -12
  299. data/lib/rex/proto/http/client.rb +0 -821
  300. data/lib/rex/proto/http/client.rb.ut.rb +0 -95
  301. data/lib/rex/proto/http/handler.rb +0 -46
  302. data/lib/rex/proto/http/handler/erb.rb +0 -128
  303. data/lib/rex/proto/http/handler/erb.rb.ut.rb +0 -21
  304. data/lib/rex/proto/http/handler/erb.rb.ut.rb.rhtml +0 -1
  305. data/lib/rex/proto/http/handler/proc.rb +0 -60
  306. data/lib/rex/proto/http/handler/proc.rb.ut.rb +0 -24
  307. data/lib/rex/proto/http/header.rb +0 -161
  308. data/lib/rex/proto/http/header.rb.ut.rb +0 -46
  309. data/lib/rex/proto/http/packet.rb +0 -407
  310. data/lib/rex/proto/http/packet.rb.ut.rb +0 -165
  311. data/lib/rex/proto/http/request.rb +0 -356
  312. data/lib/rex/proto/http/request.rb.ut.rb +0 -214
  313. data/lib/rex/proto/http/response.rb +0 -90
  314. data/lib/rex/proto/http/response.rb.ut.rb +0 -149
  315. data/lib/rex/proto/http/server.rb +0 -369
  316. data/lib/rex/proto/http/server.rb.ut.rb +0 -79
  317. data/lib/rex/proto/ntlm.rb +0 -7
  318. data/lib/rex/proto/ntlm.rb.ut.rb +0 -177
  319. data/lib/rex/proto/ntlm/base.rb +0 -326
  320. data/lib/rex/proto/ntlm/constants.rb +0 -74
  321. data/lib/rex/proto/ntlm/crypt.rb +0 -415
  322. data/lib/rex/proto/ntlm/exceptions.rb +0 -9
  323. data/lib/rex/proto/ntlm/message.rb +0 -533
  324. data/lib/rex/proto/ntlm/utils.rb +0 -763
  325. data/lib/rex/proto/proxy/socks4a.rb +0 -440
  326. data/lib/rex/proto/rfb.rb +0 -19
  327. data/lib/rex/proto/rfb.rb.ut.rb +0 -37
  328. data/lib/rex/proto/rfb/cipher.rb +0 -84
  329. data/lib/rex/proto/rfb/client.rb +0 -207
  330. data/lib/rex/proto/rfb/constants.rb +0 -52
  331. data/lib/rex/proto/smb.rb +0 -7
  332. data/lib/rex/proto/smb.rb.ts.rb +0 -8
  333. data/lib/rex/proto/smb/client.rb +0 -1952
  334. data/lib/rex/proto/smb/client.rb.ut.rb +0 -223
  335. data/lib/rex/proto/smb/constants.rb +0 -1047
  336. data/lib/rex/proto/smb/constants.rb.ut.rb +0 -18
  337. data/lib/rex/proto/smb/crypt.rb +0 -36
  338. data/lib/rex/proto/smb/evasions.rb +0 -66
  339. data/lib/rex/proto/smb/exceptions.rb +0 -858
  340. data/lib/rex/proto/smb/simpleclient.rb +0 -306
  341. data/lib/rex/proto/smb/simpleclient.rb.ut.rb +0 -128
  342. data/lib/rex/proto/smb/utils.rb +0 -103
  343. data/lib/rex/proto/smb/utils.rb.ut.rb +0 -20
  344. data/lib/rex/proto/sunrpc.rb +0 -1
  345. data/lib/rex/proto/sunrpc/client.rb +0 -195
  346. data/lib/rex/proto/tftp.rb +0 -12
  347. data/lib/rex/proto/tftp/constants.rb +0 -39
  348. data/lib/rex/proto/tftp/server.rb +0 -497
  349. data/lib/rex/proto/tftp/server.rb.ut.rb +0 -28
  350. data/lib/rex/script.rb +0 -42
  351. data/lib/rex/script/base.rb +0 -59
  352. data/lib/rex/script/meterpreter.rb +0 -15
  353. data/lib/rex/script/shell.rb +0 -9
  354. data/lib/rex/service.rb +0 -48
  355. data/lib/rex/service_manager.rb +0 -141
  356. data/lib/rex/service_manager.rb.ut.rb +0 -32
  357. data/lib/rex/services/local_relay.rb +0 -423
  358. data/lib/rex/socket.rb +0 -684
  359. data/lib/rex/socket.rb.ut.rb +0 -107
  360. data/lib/rex/socket/comm.rb +0 -119
  361. data/lib/rex/socket/comm/local.rb +0 -412
  362. data/lib/rex/socket/comm/local.rb.ut.rb +0 -75
  363. data/lib/rex/socket/ip.rb +0 -130
  364. data/lib/rex/socket/parameters.rb +0 -345
  365. data/lib/rex/socket/parameters.rb.ut.rb +0 -51
  366. data/lib/rex/socket/range_walker.rb +0 -346
  367. data/lib/rex/socket/range_walker.rb.ut.rb +0 -55
  368. data/lib/rex/socket/ssl_tcp.rb +0 -184
  369. data/lib/rex/socket/ssl_tcp.rb.ut.rb +0 -39
  370. data/lib/rex/socket/ssl_tcp_server.rb +0 -122
  371. data/lib/rex/socket/ssl_tcp_server.rb.ut.rb +0 -61
  372. data/lib/rex/socket/subnet_walker.rb +0 -75
  373. data/lib/rex/socket/subnet_walker.rb.ut.rb +0 -28
  374. data/lib/rex/socket/switch_board.rb +0 -278
  375. data/lib/rex/socket/switch_board.rb.ut.rb +0 -52
  376. data/lib/rex/socket/tcp.rb +0 -76
  377. data/lib/rex/socket/tcp.rb.ut.rb +0 -64
  378. data/lib/rex/socket/tcp_server.rb +0 -67
  379. data/lib/rex/socket/tcp_server.rb.ut.rb +0 -44
  380. data/lib/rex/socket/udp.rb +0 -164
  381. data/lib/rex/socket/udp.rb.ut.rb +0 -44
  382. data/lib/rex/struct2.rb +0 -5
  383. data/lib/rex/struct2/c_struct.rb +0 -181
  384. data/lib/rex/struct2/c_struct_template.rb +0 -39
  385. data/lib/rex/struct2/constant.rb +0 -26
  386. data/lib/rex/struct2/element.rb +0 -44
  387. data/lib/rex/struct2/generic.rb +0 -73
  388. data/lib/rex/struct2/restraint.rb +0 -54
  389. data/lib/rex/struct2/s_string.rb +0 -72
  390. data/lib/rex/struct2/s_struct.rb +0 -111
  391. data/lib/rex/sync.rb +0 -6
  392. data/lib/rex/sync/event.rb +0 -94
  393. data/lib/rex/sync/read_write_lock.rb +0 -176
  394. data/lib/rex/sync/ref.rb +0 -57
  395. data/lib/rex/sync/thread_safe.rb +0 -82
  396. data/lib/rex/test.rb +0 -35
  397. data/lib/rex/text.rb +0 -1149
  398. data/lib/rex/text.rb.ut.rb +0 -190
  399. data/lib/rex/thread_factory.rb +0 -42
  400. data/lib/rex/time.rb +0 -65
  401. data/lib/rex/transformer.rb +0 -115
  402. data/lib/rex/transformer.rb.ut.rb +0 -38
  403. data/lib/rex/ui.rb +0 -21
  404. data/lib/rex/ui/interactive.rb +0 -254
  405. data/lib/rex/ui/output.rb +0 -78
  406. data/lib/rex/ui/output/none.rb +0 -18
  407. data/lib/rex/ui/progress_tracker.rb +0 -96
  408. data/lib/rex/ui/subscriber.rb +0 -149
  409. data/lib/rex/ui/text/color.rb +0 -97
  410. data/lib/rex/ui/text/color.rb.ut.rb +0 -18
  411. data/lib/rex/ui/text/dispatcher_shell.rb +0 -467
  412. data/lib/rex/ui/text/input.rb +0 -117
  413. data/lib/rex/ui/text/input/buffer.rb +0 -75
  414. data/lib/rex/ui/text/input/readline.rb +0 -129
  415. data/lib/rex/ui/text/input/socket.rb +0 -95
  416. data/lib/rex/ui/text/input/stdio.rb +0 -45
  417. data/lib/rex/ui/text/irb_shell.rb +0 -57
  418. data/lib/rex/ui/text/output.rb +0 -80
  419. data/lib/rex/ui/text/output/buffer.rb +0 -61
  420. data/lib/rex/ui/text/output/file.rb +0 -43
  421. data/lib/rex/ui/text/output/socket.rb +0 -43
  422. data/lib/rex/ui/text/output/stdio.rb +0 -40
  423. data/lib/rex/ui/text/progress_tracker.rb +0 -56
  424. data/lib/rex/ui/text/progress_tracker.rb.ut.rb +0 -34
  425. data/lib/rex/ui/text/shell.rb +0 -328
  426. data/lib/rex/ui/text/table.rb +0 -279
  427. data/lib/rex/ui/text/table.rb.ut.rb +0 -55
  428. data/lib/rex/zip.rb +0 -93
  429. data/lib/rex/zip/archive.rb +0 -184
  430. data/lib/rex/zip/blocks.rb +0 -182
  431. data/lib/rex/zip/entry.rb +0 -104
  432. data/lib/rex/zip/samples/comment.rb +0 -32
  433. data/lib/rex/zip/samples/mkwar.rb +0 -138
  434. data/lib/rex/zip/samples/mkzip.rb +0 -19
  435. data/lib/rex/zip/samples/recursive.rb +0 -58
@@ -1,279 +0,0 @@
1
- require 'rex/ui'
2
-
3
- module Rex
4
- module Ui
5
- module Text
6
-
7
- ###
8
- #
9
- # Prints text in a tablized format. Pretty lame at the moment, but
10
- # whatever.
11
- #
12
- ###
13
- class Table
14
-
15
- #
16
- # Initializes a text table instance using the supplied properties. The
17
- # Table class supports the following hash attributes:
18
- #
19
- # Header
20
- #
21
- # The string to display as a heading above the table. If none is
22
- # specified, no header will be displayed.
23
- #
24
- # HeaderIndent
25
- #
26
- # The amount of space to indent the header. The default is zero.
27
- #
28
- # Columns
29
- #
30
- # The array of columns that will exist within the table.
31
- #
32
- # Rows
33
- #
34
- # The array of rows that will exist.
35
- #
36
- # Width
37
- #
38
- # The maximum width of the table in characters.
39
- #
40
- # Indent
41
- #
42
- # The number of characters to indent the table.
43
- #
44
- # CellPad
45
- #
46
- # The number of characters to put between each horizontal cell.
47
- #
48
- # Prefix
49
- #
50
- # The text to prefix before the table.
51
- #
52
- # Postfix
53
- #
54
- # The text to affix to the end of the table.
55
- #
56
- def initialize(opts = {})
57
- self.header = opts['Header']
58
- self.headeri = opts['HeaderIndent'] || 0
59
- self.columns = opts['Columns'] || []
60
- # updated below if we got a "Rows" option
61
- self.rows = []
62
-
63
- self.width = opts['Width'] || 80
64
- self.indent = opts['Indent'] || 0
65
- self.cellpad = opts['CellPad'] || 2
66
- self.prefix = opts['Prefix'] || ''
67
- self.postfix = opts['Postfix'] || ''
68
- self.colprops = []
69
-
70
- # Default column properties
71
- self.columns.length.times { |idx|
72
- self.colprops[idx] = {}
73
- self.colprops[idx]['MaxWidth'] = self.columns[idx].length
74
- }
75
-
76
- # ensure all our internal state gets updated with the given rows by
77
- # using add_row instead of just adding them to self.rows. See #3825.
78
- opts['Rows'].each { |row| add_row(row) } if opts['Rows']
79
-
80
- # Merge in options
81
- if (opts['ColProps'])
82
- opts['ColProps'].each_key { |col|
83
- idx = self.columns.index(col)
84
-
85
- if (idx)
86
- self.colprops[idx].merge!(opts['ColProps'][col])
87
- end
88
- }
89
- end
90
-
91
- end
92
-
93
- #
94
- # Converts table contents to a string.
95
- #
96
- def to_s
97
- str = prefix
98
- str << header_to_s || ''
99
- str << columns_to_s || ''
100
- str << hr_to_s || ''
101
-
102
- rows.each { |row|
103
- if (is_hr(row))
104
- str << hr_to_s
105
- else
106
- str << row_to_s(row)
107
- end
108
- }
109
-
110
- str << postfix
111
-
112
- return str
113
- end
114
-
115
- #
116
- # Converts table contents to a csv
117
- #
118
- def to_csv
119
- str = ''
120
- str << ( columns.join(",") + "\n" )
121
- rows.each { |row|
122
- next if is_hr(row)
123
- str << ( row.map{|x|
124
- x.gsub(/[\r\n]/, ' ').gsub(/\s+/, ' ').gsub('"', '""')
125
- }.map{|x| "\"#{x}\"" }.join(",") + "\n" )
126
- }
127
- str
128
- end
129
-
130
- #
131
- #
132
- # Returns the header string.
133
- #
134
- def header_to_s # :nodoc:
135
- if (header)
136
- pad = " " * headeri
137
-
138
- return pad + header + "\n" + pad + "=" * header.length + "\n\n"
139
- end
140
-
141
- return ''
142
- end
143
-
144
- #
145
- # Prints the contents of the table.
146
- #
147
- def print
148
- puts to_s
149
- end
150
-
151
- #
152
- # Adds a row using the supplied fields.
153
- #
154
- def <<(fields)
155
- add_row(fields)
156
- end
157
-
158
- #
159
- # Adds a row with the supplied fields.
160
- #
161
- def add_row(fields = [])
162
- if fields.length != self.columns.length
163
- raise RuntimeError, 'Invalid number of columns!'
164
- end
165
- fields.each_with_index { |field, idx|
166
- if (colprops[idx]['MaxWidth'] < field.to_s.length)
167
- colprops[idx]['MaxWidth'] = field.to_s.length
168
- end
169
- }
170
-
171
- rows << fields
172
- end
173
-
174
- #
175
- # Adds a horizontal line.
176
- #
177
- def add_hr
178
- rows << '__hr__'
179
- end
180
-
181
- alias p print
182
-
183
- attr_accessor :header, :headeri # :nodoc:
184
- attr_accessor :columns, :rows, :colprops # :nodoc:
185
- attr_accessor :width, :indent, :cellpad # :nodoc:
186
- attr_accessor :prefix, :postfix # :nodoc:
187
-
188
- protected
189
-
190
- #
191
- # Defaults cell widths and alignments.
192
- #
193
- def defaults # :nodoc:
194
- self.columns.length.times { |idx|
195
- }
196
- end
197
-
198
- #
199
- # Checks to see if the row is an hr.
200
- #
201
- def is_hr(row) # :nodoc:
202
- return ((row.kind_of?(String)) && (row == '__hr__'))
203
- end
204
-
205
- #
206
- # Converts the columns to a string.
207
- #
208
- def columns_to_s # :nodoc:
209
- nameline = ' ' * indent
210
- barline = nameline.dup
211
- last_col = nil
212
- last_idx = nil
213
- columns.each_with_index { |col,idx|
214
- if (last_col)
215
- nameline << pad(' ', last_col, last_idx)
216
-
217
- remainder = colprops[last_idx]['MaxWidth'] - last_col.length
218
- if (remainder < 0)
219
- remainder = 0
220
- end
221
- barline << (' ' * (cellpad + remainder))
222
- end
223
- nameline << col
224
- barline << ('-' * col.length)
225
-
226
- last_col = col
227
- last_idx = idx
228
- }
229
-
230
- return "#{nameline}\n#{barline}"
231
- end
232
-
233
- #
234
- # Converts an hr to a string.
235
- #
236
- def hr_to_s # :nodoc:
237
- return "\n"
238
- end
239
-
240
- #
241
- # Converts a row to a string.
242
- #
243
- def row_to_s(row) # :nodoc:
244
- line = ' ' * indent
245
- last_cell = nil
246
- last_idx = nil
247
- row.each_with_index { |cell, idx|
248
- if (last_cell)
249
- line << pad(' ', last_cell.to_s, last_idx)
250
- end
251
- line << cell.to_s
252
- # line << pad(' ', cell.to_s, idx)
253
- last_cell = cell
254
- last_idx = idx
255
- }
256
-
257
- return line + "\n"
258
- end
259
-
260
- #
261
- # Pads out with the supplied character for the remainder of the space given
262
- # some text and a column index.
263
- #
264
- def pad(chr, buf, colidx, use_cell_pad = true) # :nodoc:
265
- remainder = colprops[colidx]['MaxWidth'] - buf.length
266
- val = chr * remainder;
267
-
268
- if (use_cell_pad)
269
- val << ' ' * cellpad
270
- end
271
-
272
- return val
273
- end
274
-
275
- end
276
-
277
- end
278
- end
279
- end
@@ -1,55 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- $:.unshift(File.join(File.dirname(__FILE__), '..', '..', '..'))
4
-
5
- require 'test/unit'
6
- require 'rex/ui/text/table'
7
-
8
- class Rex::Ui::Text::Table::UnitTest < Test::Unit::TestCase
9
-
10
- def new_table(opts = {})
11
- if (opts['Columns'] == nil)
12
- opts['Columns'] =
13
- [
14
- 'col1',
15
- 'col2',
16
- 'col3'
17
- ]
18
- end
19
-
20
- tbl = Rex::Ui::Text::Table.new(opts)
21
-
22
- tbl << [ "r1cell1", "r1cell2", "r1cell3" ]
23
- tbl << [ "r2cell1", "r2cell2", "r2cell3" ]
24
-
25
- return tbl
26
- end
27
-
28
- def test_basic
29
- tbl = new_table
30
-
31
- dstr = <<End
32
- col1 col2 col3
33
- ---- ---- ----
34
- r1cell1 r1cell2 r1cell3
35
- r2cell1 r2cell2 r2cell3
36
- End
37
-
38
- assert_equal(tbl.to_s, dstr)
39
- end
40
-
41
- def test_indent
42
- tbl = new_table(
43
- 'Indent' => 4)
44
-
45
- dstr = <<End
46
- col1 col2 col3
47
- ---- ---- ----
48
- r1cell1 r1cell2 r1cell3
49
- r2cell1 r2cell2 r2cell3
50
- End
51
-
52
- assert_equal(tbl.to_s, dstr)
53
- end
54
-
55
- end
data/lib/rex/zip.rb DELETED
@@ -1,93 +0,0 @@
1
- #!/usr/bin/env ruby
2
- #
3
- # Zip library
4
- #
5
- # Written by Joshua J. Drake <jduck [at] metasploit.com>
6
- #
7
- # Based on code contributed by bannedit, and the following SPEC:
8
- # Reference: http://www.pkware.com/documents/casestudies/APPNOTE.TXT
9
- #
10
-
11
- require 'zlib'
12
-
13
- module Rex
14
- module Zip
15
-
16
- ZIP_VERSION = 0x14
17
-
18
- # general purpose bit flag values
19
- #
20
- # bit 0
21
- GPBF_ENCRYPTED = 0x0001
22
- # bits 1 & 2
23
- # implode only
24
- GPBF_IMP_8KDICT = 0x0002
25
- GPBF_IMP_3SFT = 0x0004
26
- # deflate only
27
- GPBF_DEF_MAX = 0x0002
28
- GPBF_DEF_FAST = 0x0004
29
- GPBF_DEF_SUPERFAST = 0x0006
30
- # lzma only
31
- GPBF_LZMA_EOSUSED = 0x0002
32
- # bit 3
33
- GPBF_USE_DATADESC = 0x0008
34
- # bit 4
35
- GPBF_DEF_ENHANCED = 0x0010
36
- # bit 5
37
- GPBF_COMP_PATHCED = 0x0020
38
- # bit 6
39
- GPBF_STRONG_ENC = 0x0040
40
- # bit 7-10 unused
41
- # bit 11
42
- GPBF_STRS_UTF8 = 0x0800
43
- # bit 12 (reserved)
44
- # bit 13
45
- GPBF_DIR_ENCRYPTED = 0x2000
46
- # bit 14,15 (reserved)
47
-
48
-
49
- # compression methods
50
- CM_STORE = 0
51
- CM_SHRINK = 1
52
- CM_REDUCE1 = 2
53
- CM_REDUCE2 = 3
54
- CM_REDUCE3 = 4
55
- CM_REDUCE4 = 5
56
- CM_IMPLODE = 6
57
- CM_TOKENIZE = 7
58
- CM_DEFLATE = 8
59
- CM_DEFLATE64 = 9
60
- CM_PKWARE_IMPLODE = 10
61
- # 11 - reserved
62
- CM_BZIP2 = 12
63
- # 13 - reserved
64
- CM_LZMA_EFS = 14
65
- # 15-17 reserved
66
- CM_IBM_TERSE = 18
67
- CM_IBM_LZ77 = 19
68
- # 20-96 reserved
69
- CM_WAVPACK = 97
70
- CM_PPMD_V1R1 = 98
71
-
72
-
73
- # internal file attributes
74
- IFA_ASCII = 0x0001
75
- # bits 2 & 3 are reserved
76
- IFA_MAINFRAME_MODE = 0x0002 # ??
77
-
78
-
79
- # external file attributes
80
- EFA_ISDIR = 0x0001
81
-
82
-
83
- # various parts of the structure
84
- require 'rex/zip/blocks'
85
-
86
- # an entry in a zip file
87
- require 'rex/zip/entry'
88
-
89
- # the archive class
90
- require 'rex/zip/archive'
91
-
92
- end
93
- end
@@ -1,184 +0,0 @@
1
- ##
2
- # $Id: archive.rb 11175 2010-11-30 07:10:57Z egypt $
3
- ##
4
-
5
- module Rex
6
- module Zip
7
-
8
- #
9
- # This represents an entire archive.
10
- #
11
- class Archive
12
- attr_reader :entries
13
-
14
- def initialize(compmeth=CM_DEFLATE)
15
- @compmeth = compmeth
16
- @entries = []
17
- end
18
-
19
-
20
- def add_file(fname, fdata=nil, xtra=nil, comment=nil)
21
- if (not fdata)
22
- begin
23
- st = File.stat(fname)
24
- rescue
25
- return nil
26
- end
27
-
28
- ts = st.mtime
29
- if (st.directory?)
30
- attrs = EFA_ISDIR
31
- fname += '/'
32
- else
33
- f = File.open(fname, 'rb')
34
- fdata = f.read(f.stat.size)
35
- f.close
36
- end
37
- end
38
-
39
- @entries << Entry.new(fname, fdata, @compmeth, ts, attrs, xtra, comment)
40
- end
41
-
42
-
43
- def set_comment(comment)
44
- @comment = comment
45
- end
46
-
47
-
48
- def save_to(fname)
49
- f = File.open(fname, 'wb')
50
- f.write(pack)
51
- f.close
52
- end
53
-
54
-
55
- def pack
56
- ret = ''
57
-
58
- # save the offests
59
- offsets = []
60
-
61
- # file 1 .. file n
62
- @entries.each { |ent|
63
- offsets << ret.length
64
- ret << ent.pack
65
- }
66
-
67
- # archive decryption header (unsupported)
68
- # archive extra data record (unsupported)
69
-
70
- # central directory
71
- cfd_offset = ret.length
72
- idx = 0
73
- @entries.each { |ent|
74
- cfd = CentralDir.new(ent, offsets[idx])
75
- ret << cfd.pack
76
- idx += 1
77
- }
78
-
79
- # zip64 end of central dir record (unsupported)
80
- # zip64 end of central dir locator (unsupported)
81
-
82
- # end of central directory record
83
- cur_offset = ret.length - cfd_offset
84
- ret << CentralDirEnd.new(@entries.length, cur_offset, cfd_offset, @comment).pack
85
-
86
- ret
87
- end
88
-
89
- def inspect
90
- "#<#{self.class} entries = [#{@entries.map{|e| e.name}.join(",")}]>"
91
- end
92
-
93
- end
94
-
95
- class Jar < Archive
96
- attr_accessor :manifest
97
-
98
- def build_manifest(opts={})
99
- main_class = opts[:main_class] || nil
100
- existing_manifest = nil
101
-
102
- @manifest = "Manifest-Version: 1.0\r\n"
103
- @manifest << "Main-Class: #{main_class}\r\n" if main_class
104
- @manifest << "\r\n"
105
- @entries.each { |e|
106
- existing_manifest = e if e.name == "META-INF/MANIFEST.MF"
107
- next unless e.name =~ /\.class$/
108
- @manifest << "Name: #{e.name}\r\n"
109
- #@manifest << "SHA1-Digest: #{Digest::SHA1.base64digest(e.data)}\r\n"
110
- @manifest << "\r\n"
111
- }
112
- if existing_manifest
113
- existing_manifest.data = @manifest
114
- else
115
- add_file("META-INF/", '')
116
- add_file("META-INF/MANIFEST.MF", @manifest)
117
- end
118
- end
119
-
120
- def to_s
121
- pack
122
- end
123
-
124
- def length
125
- pack.length
126
- end
127
-
128
- #
129
- # Add multiple files from an array
130
- #
131
- # +files+ should be structured like so:
132
- # [
133
- # [ "path", "to", "file1" ],
134
- # [ "path", "to", "file2" ]
135
- # ]
136
- # and +path+ should be the location on the file system to find the files to
137
- # add. +base_dir+ will be prepended to the path inside the jar.
138
- #
139
- # Example:
140
- # <code>
141
- # war = Rex::Zip::Jar.new
142
- # war.add_file("WEB-INF/", '')
143
- # war.add_file("WEB-INF/", "web.xml", web_xml)
144
- # war.add_file("WEB-INF/classes/", '')
145
- # files = [
146
- # [ "servlet", "examples", "HelloWorld.class" ],
147
- # [ "Foo.class" ],
148
- # [ "servlet", "Bar.class" ],
149
- # ]
150
- # war.add_files(files, "./class_files/", "WEB-INF/classes/")
151
- # </code>
152
- #
153
- # The above code would create a jar with the following structure from files
154
- # found in ./class_files/ :
155
- #
156
- # +- WEB-INF/
157
- # +- web.xml
158
- # +- classes/
159
- # +- Foo.class
160
- # +- servlet/
161
- # +- Bar.class
162
- # +- examples/
163
- # +- HelloWorld.class
164
- #
165
- def add_files(files, path, base_dir="")
166
- files.each do |file|
167
- # Add all of the subdirectories if they don't already exist
168
- 1.upto(file.length - 1) do |idx|
169
- full = base_dir + file[0,idx].join("/") + "/"
170
- if !(entries.map{|e|e.name}.include?(full))
171
- add_file(full, '')
172
- end
173
- end
174
- # Now add the actual file, grabbing data from the filesystem
175
- fd = File.open(File.join( path, file ), "rb")
176
- data = fd.read(fd.stat.size)
177
- fd.close
178
- add_file(base_dir + file.join("/"), data)
179
- end
180
- end
181
- end
182
-
183
- end
184
- end