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,306 +0,0 @@
1
- module Rex
2
- module Proto
3
- module SMB
4
- class SimpleClient
5
-
6
- require 'rex/text'
7
- require 'rex/struct2'
8
- require 'rex/proto/smb/constants'
9
- require 'rex/proto/smb/exceptions'
10
- require 'rex/proto/smb/evasions'
11
- require 'rex/proto/smb/crypt'
12
- require 'rex/proto/smb/utils'
13
- require 'rex/proto/smb/client'
14
-
15
- # Some short-hand class aliases
16
- CONST = Rex::Proto::SMB::Constants
17
- CRYPT = Rex::Proto::SMB::Crypt
18
- UTILS = Rex::Proto::SMB::Utils
19
- XCEPT = Rex::Proto::SMB::Exceptions
20
- EVADE = Rex::Proto::SMB::Evasions
21
-
22
-
23
- class OpenFile
24
- attr_accessor :name, :tree_id, :file_id, :mode, :client, :chunk_size
25
-
26
- def initialize(client, name, tree_id, file_id)
27
- self.client = client
28
- self.name = name
29
- self.tree_id = tree_id
30
- self.file_id = file_id
31
- self.chunk_size = 48000
32
- end
33
-
34
- def delete
35
- begin
36
- self.close
37
- rescue
38
- end
39
- self.client.delete(self.name, self.tree_id)
40
- end
41
-
42
- # Close this open file
43
- def close
44
- self.client.close(self.file_id, self.tree_id)
45
- end
46
-
47
- # Read data from the file
48
- def read(length = nil, offset = 0)
49
- if (length == nil)
50
- data = ''
51
- fptr = offset
52
- ok = self.client.read(self.file_id, fptr, self.chunk_size)
53
- while (ok and ok['Payload'].v['DataLenLow'] > 0)
54
- buff = ok.to_s.slice(
55
- ok['Payload'].v['DataOffset'] + 4,
56
- ok['Payload'].v['DataLenLow']
57
- )
58
- data << buff
59
- if ok['Payload'].v['Remaining'] == 0
60
- break
61
- end
62
- fptr += ok['Payload'].v['DataLenLow']
63
-
64
- begin
65
- ok = self.client.read(self.file_id, fptr, self.chunk_size)
66
- rescue XCEPT::ErrorCode => e
67
- case e.error_code
68
- when 0x00050001
69
- # Novell fires off an access denied error on EOF
70
- ok = nil
71
- else
72
- raise e
73
- end
74
- end
75
- end
76
-
77
- return data
78
- else
79
- ok = self.client.read(self.file_id, offset, length)
80
- data = ok.to_s.slice(
81
- ok['Payload'].v['DataOffset'] + 4,
82
- ok['Payload'].v['DataLenLow']
83
- )
84
- return data
85
- end
86
- end
87
-
88
- def << (data)
89
- self.write(data)
90
- end
91
-
92
- # Write data to the file
93
- def write(data, offset = 0)
94
- # Track our offset into the remote file
95
- fptr = offset
96
-
97
- # Duplicate the data so we can use slice!
98
- data = data.dup
99
-
100
- # Take our first chunk of bytes
101
- chunk = data.slice!(0, self.chunk_size)
102
-
103
- # Keep writing data until we run out
104
- while (chunk.length > 0)
105
- ok = self.client.write(self.file_id, fptr, chunk)
106
- cl = ok['Payload'].v['CountLow']
107
-
108
- # Partial write, push the failed data back into the queue
109
- if (cl != chunk.length)
110
- data = chunk.slice(cl - 1, chunk.length - cl) + data
111
- end
112
-
113
- # Increment our painter and grab the next chunk
114
- fptr += cl
115
- chunk = data.slice!(0, self.chunk_size)
116
- end
117
- end
118
- end
119
-
120
- class OpenPipe < OpenFile
121
-
122
- # Valid modes are: 'trans' and 'rw'
123
- attr_accessor :mode
124
-
125
- def initialize(*args)
126
- super(*args)
127
- self.mode = 'rw'
128
- @buff = ''
129
- end
130
-
131
- def read_buffer(length, offset=0)
132
- length ||= @buff.length
133
- @buff.slice!(0, length)
134
- end
135
-
136
- def read(length = nil, offset = 0)
137
- case self.mode
138
- when 'trans'
139
- read_buffer(length, offset)
140
- when 'rw'
141
- super(length, offset)
142
- else
143
- raise ArgumentError
144
- end
145
- end
146
-
147
- def write(data, offset = 0)
148
- case self.mode
149
-
150
- when 'trans'
151
- write_trans(data, offset)
152
- when 'rw'
153
- super(data, offset)
154
- else
155
- raise ArgumentError
156
- end
157
- end
158
-
159
- def write_trans(data, offset=0)
160
- ack = self.client.trans_named_pipe(self.file_id, data)
161
- doff = ack['Payload'].v['DataOffset']
162
- dlen = ack['Payload'].v['DataCount']
163
- @buff << ack.to_s[4+doff, dlen]
164
- end
165
- end
166
-
167
-
168
- # Public accessors
169
- attr_accessor :last_error
170
-
171
- # Private accessors
172
- attr_accessor :socket, :client, :direct, :shares, :last_share
173
-
174
- # Pass the socket object and a boolean indicating whether the socket is netbios or cifs
175
- def initialize(socket, direct = false)
176
- self.socket = socket
177
- self.direct = direct
178
- self.client = Rex::Proto::SMB::Client.new(socket)
179
- self.shares = { }
180
- end
181
-
182
- def login( name = '', user = '', pass = '', domain = '',
183
- verify_signature = false, usentlmv2 = false, usentlm2_session = true,
184
- send_lm = true, use_lanman_key = false, send_ntlm = true,
185
- native_os = 'Windows 2000 2195', native_lm = 'Windows 2000 5.0', spnopt = {})
186
-
187
- begin
188
-
189
- if (self.direct != true)
190
- self.client.session_request(name)
191
- end
192
- self.client.native_os = native_os
193
- self.client.native_lm = native_lm
194
- self.client.verify_signature = verify_signature
195
- self.client.use_ntlmv2 = usentlmv2
196
- self.client.usentlm2_session = usentlm2_session
197
- self.client.send_lm = send_lm
198
- self.client.use_lanman_key = use_lanman_key
199
- self.client.send_ntlm = send_ntlm
200
- self.client.negotiate
201
- self.client.spnopt = spnopt
202
-
203
- ok = self.client.session_setup(user, pass, domain)
204
- rescue ::Interrupt
205
- raise $!
206
- rescue ::Exception => e
207
- n = XCEPT::LoginError.new
208
- n.source = e
209
- if(e.respond_to?('error_code'))
210
- n.error_code = e.error_code
211
- n.error_reason = e.get_error(e.error_code)
212
- end
213
- raise n
214
- end
215
-
216
- return true
217
- end
218
-
219
-
220
- def login_split_start_ntlm1(name = '')
221
-
222
- begin
223
-
224
- if (self.direct != true)
225
- self.client.session_request(name)
226
- end
227
-
228
- # Disable extended security
229
- self.client.negotiate(false)
230
- rescue ::Interrupt
231
- raise $!
232
- rescue ::Exception => e
233
- n = XCEPT::LoginError.new
234
- n.source = e
235
- if(e.respond_to?('error_code'))
236
- n.error_code = e.error_code
237
- n.error_reason = e.get_error(e.error_code)
238
- end
239
- raise n
240
- end
241
-
242
- return true
243
- end
244
-
245
-
246
- def login_split_next_ntlm1(user, domain, hash_lm, hash_nt)
247
- begin
248
- ok = self.client.session_setup_no_ntlmssp_prehash(user, domain, hash_lm, hash_nt)
249
- rescue ::Interrupt
250
- raise $!
251
- rescue ::Exception => e
252
- n = XCEPT::LoginError.new
253
- n.source = e
254
- if(e.respond_to?('error_code'))
255
- n.error_code = e.error_code
256
- n.error_reason = e.get_error(e.error_code)
257
- end
258
- raise n
259
- end
260
-
261
- return true
262
- end
263
-
264
- def connect(share)
265
- ok = self.client.tree_connect(share)
266
- tree_id = ok['Payload']['SMB'].v['TreeID']
267
- self.shares[share] = tree_id
268
- self.last_share = share
269
- end
270
-
271
- def disconnect(share)
272
- ok = self.client.tree_disconnect(self.shares[share])
273
- self.shares.delete(share)
274
- end
275
-
276
-
277
- def open(path, perm, chunk_size = 48000)
278
- mode = UTILS.open_mode_to_mode(perm)
279
- access = UTILS.open_mode_to_access(perm)
280
-
281
- ok = self.client.open(path, mode, access)
282
- file_id = ok['Payload'].v['FileID']
283
- fh = OpenFile.new(self.client, path, self.client.last_tree_id, file_id)
284
- fh.chunk_size = chunk_size
285
- fh
286
- end
287
-
288
- def delete(*args)
289
- self.client.delete(*args)
290
- end
291
-
292
- def create_pipe(path, perm = 'c')
293
- disposition = UTILS.create_mode_to_disposition(perm)
294
- ok = self.client.create_pipe(path, disposition)
295
- file_id = ok['Payload'].v['FileID']
296
- fh = OpenPipe.new(self.client, path, self.client.last_tree_id, file_id)
297
- end
298
-
299
- def trans_pipe(fid, data, no_response = nil)
300
- client.trans_named_pipe(fid, data, no_response)
301
- end
302
-
303
- end
304
- end
305
- end
306
- end
@@ -1,128 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- $:.unshift(File.join(File.dirname(__FILE__), '..', '..', '..'))
4
-
5
- require 'rex/test'
6
- require 'rex/proto/smb'
7
- require 'rex/proto/dcerpc'
8
- require 'rex/socket'
9
-
10
- class Rex::Proto::SMB::SimpleClient::UnitTest < Test::Unit::TestCase
11
-
12
- Klass = Rex::Proto::SMB::SimpleClient
13
-
14
- # Alias over the Rex DCERPC protocol modules
15
- DCERPCPacket = Rex::Proto::DCERPC::Packet
16
- DCERPCClient = Rex::Proto::DCERPC::Client
17
- DCERPCResponse = Rex::Proto::DCERPC::Response
18
- DCERPCUUID = Rex::Proto::DCERPC::UUID
19
- XCEPT = Rex::Proto::SMB::Exceptions
20
-
21
- FILE_CREATE = 0x10
22
- FILE_TRUNC = 0x02
23
- FILE_OPEN = 0x01
24
-
25
-
26
- def test_smb_open_share
27
- user = 'SMBTest'
28
- pass = 'SMBTest'
29
- share = 'C$'
30
-
31
- write_data = ('A' * (1024 * 8))
32
- filename = 'smb_tester.txt'
33
- begin
34
- Timeout.timeout($_REX_TEST_TIMEOUT) {
35
- s = Rex::Socket.create_tcp(
36
- 'PeerHost' => $_REX_TEST_SMB_HOST,
37
- 'PeerPort' => 445
38
- )
39
-
40
- c = Klass.new(s, true)
41
-
42
- begin
43
- c.login('*SMBSERVER', user, pass)
44
- rescue XCEPT::LoginError
45
- flunk('login failure')
46
- end
47
-
48
- c.connect(share)
49
-
50
- f = c.open(filename, 'rwct')
51
- f << write_data
52
- f.close
53
-
54
- f = c.open(filename, 'ro')
55
- d = f.read()
56
- f.close
57
-
58
- c.delete(filename)
59
- c.disconnect(share)
60
-
61
- s.close
62
- }
63
- rescue Timeout::Error
64
- flunk('timeout')
65
- end
66
- end
67
-
68
- def test_smb_dcerpc
69
- begin
70
- Timeout.timeout($_REX_TEST_TIMEOUT) {
71
- s = Rex::Socket.create_tcp(
72
- 'PeerHost' => $_REX_TEST_SMB_HOST,
73
- 'PeerPort' => 445
74
- )
75
-
76
- c = Klass.new(s, true)
77
-
78
- user = ''
79
- pass = ''
80
-
81
- begin
82
- c.login('*SMBSERVER', user, pass)
83
- rescue XCEPT::LoginError
84
- flunk('login failure')
85
- end
86
-
87
- c.connect('IPC$')
88
- f = c.create_pipe('\BROWSER')
89
-
90
- bind, ctx = DCERPCPacket.make_bind_fake_multi(
91
- '4b324fc8-1670-01d3-1278-5a47bf6ee188', '3.0',
92
- 10,
93
- 4
94
- )
95
-
96
- # Evasion techniques:
97
- # 1) Write the bind out a few bytes at a time with a random offset
98
- # 2) Read the response back a few bytes at a time with a random offset
99
-
100
- # Write the bind request out in random chunk sizes
101
- while (bind.length > 0)
102
- f.write( bind.slice!(0, (rand(20)+5)), rand(1024)+1 )
103
- end
104
-
105
- d = ''
106
- # Read the response back a few bytes a time
107
- begin
108
- while(true)
109
- t = (f.read((rand(20)+5), rand(1024)+1))
110
- last if ! t.length
111
- d << t
112
- end
113
- rescue XCEPT::NoReply
114
- end
115
-
116
- r = DCERPCResponse.new(d)
117
- assert_equal(r.type, 12)
118
- assert_equal(r.ack_result[ctx-0], 0)
119
- assert_equal(r.ack_result[ctx-1], 2)
120
-
121
- s.close
122
- }
123
- rescue Timeout::Error
124
- flunk('timeout')
125
- end
126
- end
127
- end
128
-
@@ -1,103 +0,0 @@
1
- require 'rex/text'
2
- require 'rex/proto/smb/constants'
3
-
4
- module Rex
5
- module Proto
6
- module SMB
7
- class Utils
8
-
9
- CONST = Rex::Proto::SMB::Constants
10
-
11
- # Creates an access mask for use with the CLIENT.open() call based on a string
12
- def self.open_mode_to_access(str)
13
- access = CONST::OPEN_ACCESS_READ | CONST::OPEN_SHARE_DENY_NONE
14
- str.each_byte { |c|
15
- case [c].pack('C').downcase
16
- when 'w'
17
- access |= CONST::OPEN_ACCESS_READWRITE
18
- end
19
- }
20
- return access
21
- end
22
-
23
- # Creates a mode mask for use with the CLIENT.open() call based on a string
24
- def self.open_mode_to_mode(str)
25
- mode = 0
26
-
27
- str.each_byte { |c|
28
- case [c].pack('C').downcase
29
- when 'x' # Fail if the file already exists
30
- mode |= CONST::OPEN_MODE_EXCL
31
- when 't' # Truncate the file if it already exists
32
- mode |= CONST::OPEN_MODE_TRUNC
33
- when 'c' # Create the file if it does not exist
34
- mode |= CONST::OPEN_MODE_CREAT
35
- when 'o' # Just open the file, clashes with x
36
- mode |= CONST::OPEN_MODE_OPEN
37
- end
38
- }
39
-
40
- return mode
41
- end
42
-
43
- # Returns a disposition value for smb.create based on permission string
44
- def self.create_mode_to_disposition(str)
45
- str.each_byte { |c|
46
- case [c].pack('C').downcase
47
- when 'c' # Create the file if it does not exist
48
- return CONST::CREATE_ACCESS_OPENCREATE
49
- when 'o' # Just open the file and fail if it does not exist
50
- return CONST::CREATE_ACCESS_EXIST
51
- end
52
- }
53
-
54
- return CONST::CREATE_ACCESS_OPENCREATE
55
- end
56
-
57
- # NOTE: the difference below came from: Time.utc("1970-1-1") - Time.utc("1601-1-1")
58
-
59
- # Convert a 64-bit signed SMB time to a unix timestamp
60
- def self.time_smb_to_unix(thi, tlo)
61
- (((thi << 32) + tlo) / 10000000) - 11644473600
62
- end
63
-
64
- # Convert a unix timestamp to a 64-bit signed server time
65
- def self.time_unix_to_smb(unix_time)
66
- t64 = (unix_time + 11644473600) * 10000000
67
- thi = (t64 & 0xffffffff00000000) >> 32
68
- tlo = (t64 & 0x00000000ffffffff)
69
- return [thi, tlo]
70
- end
71
-
72
- # Convert a name to its NetBIOS equivalent
73
- def self.nbname_encode(str)
74
- encoded = ''
75
- for x in (0..15)
76
- if (x >= str.length)
77
- encoded << 'CA'
78
- else
79
- c = str[x, 1].upcase[0,1].unpack('C*')[0]
80
- encoded << [ (c / 16) + 0x41, (c % 16) + 0x41 ].pack('CC')
81
- end
82
- end
83
- return encoded
84
- end
85
-
86
- # Convert a name from its NetBIOS equivalent
87
- def self.nbname_decode(str)
88
- decoded = ''
89
- str << 'A' if str.length % 2 != 0
90
- while (str.length > 0)
91
- two = str.slice!(0, 2).unpack('C*')
92
- if (two.length == 2)
93
- decoded << [ ((two[0] - 0x41) * 16) + two[1] - 0x41 ].pack('C')
94
- end
95
- end
96
- return decoded
97
- end
98
-
99
-
100
- end
101
- end
102
- end
103
- end