dstruct 0.0.1

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 (491) hide show
  1. checksums.yaml +15 -0
  2. data/README.markdown +23 -0
  3. data/examples/smb_example.rb +35 -0
  4. data/lib/rex.rb +108 -0
  5. data/lib/rex/LICENSE +29 -0
  6. data/lib/rex/arch.rb +104 -0
  7. data/lib/rex/arch/sparc.rb +75 -0
  8. data/lib/rex/arch/x86.rb +524 -0
  9. data/lib/rex/assembly/nasm.rb +104 -0
  10. data/lib/rex/codepage.map +104 -0
  11. data/lib/rex/compat.rb +389 -0
  12. data/lib/rex/constants.rb +124 -0
  13. data/lib/rex/elfparsey.rb +9 -0
  14. data/lib/rex/elfparsey/elf.rb +121 -0
  15. data/lib/rex/elfparsey/elfbase.rb +256 -0
  16. data/lib/rex/elfparsey/exceptions.rb +25 -0
  17. data/lib/rex/elfscan.rb +10 -0
  18. data/lib/rex/elfscan/scanner.rb +226 -0
  19. data/lib/rex/elfscan/search.rb +44 -0
  20. data/lib/rex/encoder/alpha2.rb +31 -0
  21. data/lib/rex/encoder/alpha2/alpha_mixed.rb +68 -0
  22. data/lib/rex/encoder/alpha2/alpha_upper.rb +79 -0
  23. data/lib/rex/encoder/alpha2/generic.rb +90 -0
  24. data/lib/rex/encoder/alpha2/unicode_mixed.rb +116 -0
  25. data/lib/rex/encoder/alpha2/unicode_upper.rb +123 -0
  26. data/lib/rex/encoder/bloxor/bloxor.rb +327 -0
  27. data/lib/rex/encoder/ndr.rb +90 -0
  28. data/lib/rex/encoder/nonalpha.rb +61 -0
  29. data/lib/rex/encoder/nonupper.rb +64 -0
  30. data/lib/rex/encoder/xdr.rb +107 -0
  31. data/lib/rex/encoder/xor.rb +69 -0
  32. data/lib/rex/encoder/xor/dword.rb +13 -0
  33. data/lib/rex/encoder/xor/dword_additive.rb +13 -0
  34. data/lib/rex/encoders/xor_dword.rb +35 -0
  35. data/lib/rex/encoders/xor_dword_additive.rb +53 -0
  36. data/lib/rex/encoding/xor.rb +20 -0
  37. data/lib/rex/encoding/xor/byte.rb +15 -0
  38. data/lib/rex/encoding/xor/dword.rb +21 -0
  39. data/lib/rex/encoding/xor/dword_additive.rb +92 -0
  40. data/lib/rex/encoding/xor/exceptions.rb +17 -0
  41. data/lib/rex/encoding/xor/generic.rb +146 -0
  42. data/lib/rex/encoding/xor/qword.rb +15 -0
  43. data/lib/rex/encoding/xor/word.rb +21 -0
  44. data/lib/rex/exceptions.rb +275 -0
  45. data/lib/rex/exploitation/cmdstager.rb +10 -0
  46. data/lib/rex/exploitation/cmdstager/base.rb +190 -0
  47. data/lib/rex/exploitation/cmdstager/bourne.rb +105 -0
  48. data/lib/rex/exploitation/cmdstager/debug_asm.rb +140 -0
  49. data/lib/rex/exploitation/cmdstager/debug_write.rb +134 -0
  50. data/lib/rex/exploitation/cmdstager/echo.rb +164 -0
  51. data/lib/rex/exploitation/cmdstager/printf.rb +122 -0
  52. data/lib/rex/exploitation/cmdstager/tftp.rb +71 -0
  53. data/lib/rex/exploitation/cmdstager/vbs.rb +126 -0
  54. data/lib/rex/exploitation/egghunter.rb +425 -0
  55. data/lib/rex/exploitation/encryptjs.rb +78 -0
  56. data/lib/rex/exploitation/heaplib.js.b64 +331 -0
  57. data/lib/rex/exploitation/heaplib.rb +107 -0
  58. data/lib/rex/exploitation/js.rb +6 -0
  59. data/lib/rex/exploitation/js/detect.rb +69 -0
  60. data/lib/rex/exploitation/js/memory.rb +81 -0
  61. data/lib/rex/exploitation/js/network.rb +84 -0
  62. data/lib/rex/exploitation/js/utils.rb +33 -0
  63. data/lib/rex/exploitation/jsobfu.rb +513 -0
  64. data/lib/rex/exploitation/obfuscatejs.rb +336 -0
  65. data/lib/rex/exploitation/omelet.rb +321 -0
  66. data/lib/rex/exploitation/opcodedb.rb +819 -0
  67. data/lib/rex/exploitation/powershell.rb +62 -0
  68. data/lib/rex/exploitation/powershell/function.rb +63 -0
  69. data/lib/rex/exploitation/powershell/obfu.rb +98 -0
  70. data/lib/rex/exploitation/powershell/output.rb +151 -0
  71. data/lib/rex/exploitation/powershell/param.rb +23 -0
  72. data/lib/rex/exploitation/powershell/parser.rb +183 -0
  73. data/lib/rex/exploitation/powershell/psh_methods.rb +70 -0
  74. data/lib/rex/exploitation/powershell/script.rb +99 -0
  75. data/lib/rex/exploitation/ropdb.rb +190 -0
  76. data/lib/rex/exploitation/seh.rb +93 -0
  77. data/lib/rex/file.rb +160 -0
  78. data/lib/rex/image_source.rb +10 -0
  79. data/lib/rex/image_source/disk.rb +58 -0
  80. data/lib/rex/image_source/image_source.rb +44 -0
  81. data/lib/rex/image_source/memory.rb +35 -0
  82. data/lib/rex/io/bidirectional_pipe.rb +161 -0
  83. data/lib/rex/io/datagram_abstraction.rb +35 -0
  84. data/lib/rex/io/ring_buffer.rb +369 -0
  85. data/lib/rex/io/stream.rb +312 -0
  86. data/lib/rex/io/stream_abstraction.rb +209 -0
  87. data/lib/rex/io/stream_server.rb +221 -0
  88. data/lib/rex/job_container.rb +200 -0
  89. data/lib/rex/logging.rb +4 -0
  90. data/lib/rex/logging/log_dispatcher.rb +180 -0
  91. data/lib/rex/logging/log_sink.rb +43 -0
  92. data/lib/rex/logging/sinks/flatfile.rb +56 -0
  93. data/lib/rex/logging/sinks/stderr.rb +44 -0
  94. data/lib/rex/mac_oui.rb +16581 -0
  95. data/lib/rex/machparsey.rb +9 -0
  96. data/lib/rex/machparsey/exceptions.rb +34 -0
  97. data/lib/rex/machparsey/mach.rb +209 -0
  98. data/lib/rex/machparsey/machbase.rb +408 -0
  99. data/lib/rex/machscan.rb +9 -0
  100. data/lib/rex/machscan/scanner.rb +217 -0
  101. data/lib/rex/mime.rb +10 -0
  102. data/lib/rex/mime/encoding.rb +17 -0
  103. data/lib/rex/mime/header.rb +78 -0
  104. data/lib/rex/mime/message.rb +150 -0
  105. data/lib/rex/mime/part.rb +50 -0
  106. data/lib/rex/nop/opty2.rb +109 -0
  107. data/lib/rex/nop/opty2_tables.rb +301 -0
  108. data/lib/rex/ole.rb +202 -0
  109. data/lib/rex/ole/clsid.rb +44 -0
  110. data/lib/rex/ole/difat.rb +138 -0
  111. data/lib/rex/ole/directory.rb +228 -0
  112. data/lib/rex/ole/direntry.rb +237 -0
  113. data/lib/rex/ole/docs/dependencies.txt +8 -0
  114. data/lib/rex/ole/docs/references.txt +1 -0
  115. data/lib/rex/ole/fat.rb +96 -0
  116. data/lib/rex/ole/header.rb +201 -0
  117. data/lib/rex/ole/minifat.rb +74 -0
  118. data/lib/rex/ole/propset.rb +141 -0
  119. data/lib/rex/ole/samples/create_ole.rb +27 -0
  120. data/lib/rex/ole/samples/dir.rb +35 -0
  121. data/lib/rex/ole/samples/dump_stream.rb +34 -0
  122. data/lib/rex/ole/samples/ole_info.rb +23 -0
  123. data/lib/rex/ole/storage.rb +392 -0
  124. data/lib/rex/ole/stream.rb +50 -0
  125. data/lib/rex/ole/substorage.rb +46 -0
  126. data/lib/rex/ole/util.rb +154 -0
  127. data/lib/rex/parser/acunetix_nokogiri.rb +406 -0
  128. data/lib/rex/parser/apple_backup_manifestdb.rb +132 -0
  129. data/lib/rex/parser/appscan_nokogiri.rb +367 -0
  130. data/lib/rex/parser/arguments.rb +108 -0
  131. data/lib/rex/parser/burp_session_nokogiri.rb +291 -0
  132. data/lib/rex/parser/ci_nokogiri.rb +193 -0
  133. data/lib/rex/parser/foundstone_nokogiri.rb +342 -0
  134. data/lib/rex/parser/fusionvm_nokogiri.rb +109 -0
  135. data/lib/rex/parser/group_policy_preferences.rb +185 -0
  136. data/lib/rex/parser/ini.rb +186 -0
  137. data/lib/rex/parser/ip360_aspl_xml.rb +103 -0
  138. data/lib/rex/parser/ip360_xml.rb +98 -0
  139. data/lib/rex/parser/mbsa_nokogiri.rb +256 -0
  140. data/lib/rex/parser/nessus_xml.rb +121 -0
  141. data/lib/rex/parser/netsparker_xml.rb +109 -0
  142. data/lib/rex/parser/nexpose_raw_nokogiri.rb +686 -0
  143. data/lib/rex/parser/nexpose_simple_nokogiri.rb +330 -0
  144. data/lib/rex/parser/nexpose_xml.rb +172 -0
  145. data/lib/rex/parser/nmap_nokogiri.rb +394 -0
  146. data/lib/rex/parser/nmap_xml.rb +166 -0
  147. data/lib/rex/parser/nokogiri_doc_mixin.rb +233 -0
  148. data/lib/rex/parser/openvas_nokogiri.rb +172 -0
  149. data/lib/rex/parser/outpost24_nokogiri.rb +240 -0
  150. data/lib/rex/parser/retina_xml.rb +110 -0
  151. data/lib/rex/parser/unattend.rb +171 -0
  152. data/lib/rex/parser/wapiti_nokogiri.rb +105 -0
  153. data/lib/rex/payloads.rb +2 -0
  154. data/lib/rex/payloads/win32.rb +3 -0
  155. data/lib/rex/payloads/win32/common.rb +27 -0
  156. data/lib/rex/payloads/win32/kernel.rb +54 -0
  157. data/lib/rex/payloads/win32/kernel/common.rb +55 -0
  158. data/lib/rex/payloads/win32/kernel/migration.rb +13 -0
  159. data/lib/rex/payloads/win32/kernel/recovery.rb +51 -0
  160. data/lib/rex/payloads/win32/kernel/stager.rb +195 -0
  161. data/lib/rex/peparsey.rb +10 -0
  162. data/lib/rex/peparsey/exceptions.rb +30 -0
  163. data/lib/rex/peparsey/pe.rb +210 -0
  164. data/lib/rex/peparsey/pe_memdump.rb +61 -0
  165. data/lib/rex/peparsey/pebase.rb +1662 -0
  166. data/lib/rex/peparsey/section.rb +128 -0
  167. data/lib/rex/pescan.rb +11 -0
  168. data/lib/rex/pescan/analyze.rb +366 -0
  169. data/lib/rex/pescan/scanner.rb +230 -0
  170. data/lib/rex/pescan/search.rb +68 -0
  171. data/lib/rex/platforms.rb +2 -0
  172. data/lib/rex/platforms/windows.rb +52 -0
  173. data/lib/rex/poly.rb +134 -0
  174. data/lib/rex/poly/block.rb +480 -0
  175. data/lib/rex/poly/machine.rb +13 -0
  176. data/lib/rex/poly/machine/machine.rb +830 -0
  177. data/lib/rex/poly/machine/x86.rb +509 -0
  178. data/lib/rex/poly/register.rb +101 -0
  179. data/lib/rex/poly/register/x86.rb +41 -0
  180. data/lib/rex/post.rb +7 -0
  181. data/lib/rex/post/dir.rb +51 -0
  182. data/lib/rex/post/file.rb +172 -0
  183. data/lib/rex/post/file_stat.rb +220 -0
  184. data/lib/rex/post/gen.pl +13 -0
  185. data/lib/rex/post/io.rb +182 -0
  186. data/lib/rex/post/meterpreter.rb +5 -0
  187. data/lib/rex/post/meterpreter/channel.rb +446 -0
  188. data/lib/rex/post/meterpreter/channel_container.rb +54 -0
  189. data/lib/rex/post/meterpreter/channels/pool.rb +160 -0
  190. data/lib/rex/post/meterpreter/channels/pools/file.rb +62 -0
  191. data/lib/rex/post/meterpreter/channels/pools/stream_pool.rb +103 -0
  192. data/lib/rex/post/meterpreter/channels/stream.rb +87 -0
  193. data/lib/rex/post/meterpreter/client.rb +483 -0
  194. data/lib/rex/post/meterpreter/client_core.rb +352 -0
  195. data/lib/rex/post/meterpreter/dependencies.rb +3 -0
  196. data/lib/rex/post/meterpreter/extension.rb +32 -0
  197. data/lib/rex/post/meterpreter/extensions/android/android.rb +128 -0
  198. data/lib/rex/post/meterpreter/extensions/android/tlv.rb +40 -0
  199. data/lib/rex/post/meterpreter/extensions/espia/espia.rb +58 -0
  200. data/lib/rex/post/meterpreter/extensions/espia/tlv.rb +17 -0
  201. data/lib/rex/post/meterpreter/extensions/extapi/adsi/adsi.rb +71 -0
  202. data/lib/rex/post/meterpreter/extensions/extapi/clipboard/clipboard.rb +169 -0
  203. data/lib/rex/post/meterpreter/extensions/extapi/extapi.rb +45 -0
  204. data/lib/rex/post/meterpreter/extensions/extapi/service/service.rb +104 -0
  205. data/lib/rex/post/meterpreter/extensions/extapi/tlv.rb +77 -0
  206. data/lib/rex/post/meterpreter/extensions/extapi/window/window.rb +56 -0
  207. data/lib/rex/post/meterpreter/extensions/extapi/wmi/wmi.rb +75 -0
  208. data/lib/rex/post/meterpreter/extensions/incognito/incognito.rb +94 -0
  209. data/lib/rex/post/meterpreter/extensions/incognito/tlv.rb +22 -0
  210. data/lib/rex/post/meterpreter/extensions/kiwi/kiwi.rb +361 -0
  211. data/lib/rex/post/meterpreter/extensions/kiwi/tlv.rb +76 -0
  212. data/lib/rex/post/meterpreter/extensions/lanattacks/dhcp/dhcp.rb +78 -0
  213. data/lib/rex/post/meterpreter/extensions/lanattacks/lanattacks.rb +43 -0
  214. data/lib/rex/post/meterpreter/extensions/lanattacks/tftp/tftp.rb +49 -0
  215. data/lib/rex/post/meterpreter/extensions/lanattacks/tlv.rb +17 -0
  216. data/lib/rex/post/meterpreter/extensions/mimikatz/mimikatz.rb +128 -0
  217. data/lib/rex/post/meterpreter/extensions/mimikatz/tlv.rb +16 -0
  218. data/lib/rex/post/meterpreter/extensions/networkpug/networkpug.rb +57 -0
  219. data/lib/rex/post/meterpreter/extensions/networkpug/tlv.rb +16 -0
  220. data/lib/rex/post/meterpreter/extensions/priv/fs.rb +118 -0
  221. data/lib/rex/post/meterpreter/extensions/priv/passwd.rb +61 -0
  222. data/lib/rex/post/meterpreter/extensions/priv/priv.rb +109 -0
  223. data/lib/rex/post/meterpreter/extensions/priv/tlv.rb +29 -0
  224. data/lib/rex/post/meterpreter/extensions/sniffer/sniffer.rb +117 -0
  225. data/lib/rex/post/meterpreter/extensions/sniffer/tlv.rb +27 -0
  226. data/lib/rex/post/meterpreter/extensions/stdapi/constants.rb +396 -0
  227. data/lib/rex/post/meterpreter/extensions/stdapi/fs/dir.rb +284 -0
  228. data/lib/rex/post/meterpreter/extensions/stdapi/fs/file.rb +399 -0
  229. data/lib/rex/post/meterpreter/extensions/stdapi/fs/file_stat.rb +104 -0
  230. data/lib/rex/post/meterpreter/extensions/stdapi/fs/io.rb +48 -0
  231. data/lib/rex/post/meterpreter/extensions/stdapi/net/arp.rb +59 -0
  232. data/lib/rex/post/meterpreter/extensions/stdapi/net/config.rb +256 -0
  233. data/lib/rex/post/meterpreter/extensions/stdapi/net/interface.rb +129 -0
  234. data/lib/rex/post/meterpreter/extensions/stdapi/net/netstat.rb +97 -0
  235. data/lib/rex/post/meterpreter/extensions/stdapi/net/resolve.rb +106 -0
  236. data/lib/rex/post/meterpreter/extensions/stdapi/net/route.rb +67 -0
  237. data/lib/rex/post/meterpreter/extensions/stdapi/net/socket.rb +139 -0
  238. data/lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/tcp_client_channel.rb +180 -0
  239. data/lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/tcp_server_channel.rb +168 -0
  240. data/lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/udp_channel.rb +209 -0
  241. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/api_constants.rb +38146 -0
  242. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/buffer_item.rb +48 -0
  243. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_advapi32.rb +2102 -0
  244. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_crypt32.rb +32 -0
  245. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_iphlpapi.rb +97 -0
  246. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_kernel32.rb +3852 -0
  247. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_netapi32.rb +100 -0
  248. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_ntdll.rb +168 -0
  249. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_psapi.rb +32 -0
  250. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_shell32.rb +32 -0
  251. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_user32.rb +3170 -0
  252. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_version.rb +41 -0
  253. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_wlanapi.rb +87 -0
  254. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_wldap32.rb +128 -0
  255. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_ws2_32.rb +613 -0
  256. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll.rb +388 -0
  257. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_function.rb +111 -0
  258. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_helper.rb +149 -0
  259. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_wrapper.rb +27 -0
  260. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/mock_magic.rb +515 -0
  261. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/multicall.rb +319 -0
  262. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/platform_util.rb +23 -0
  263. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/railgun.rb +301 -0
  264. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/tlv.rb +56 -0
  265. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/type/pointer_util.rb +106 -0
  266. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/util.rb +676 -0
  267. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/win_const_manager.rb +96 -0
  268. data/lib/rex/post/meterpreter/extensions/stdapi/stdapi.rb +151 -0
  269. data/lib/rex/post/meterpreter/extensions/stdapi/sys/config.rb +128 -0
  270. data/lib/rex/post/meterpreter/extensions/stdapi/sys/event_log.rb +192 -0
  271. data/lib/rex/post/meterpreter/extensions/stdapi/sys/event_log_subsystem/event_record.rb +41 -0
  272. data/lib/rex/post/meterpreter/extensions/stdapi/sys/power.rb +60 -0
  273. data/lib/rex/post/meterpreter/extensions/stdapi/sys/process.rb +408 -0
  274. data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/image.rb +129 -0
  275. data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/io.rb +55 -0
  276. data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/memory.rb +336 -0
  277. data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/thread.rb +141 -0
  278. data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry.rb +328 -0
  279. data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_key.rb +193 -0
  280. data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_value.rb +102 -0
  281. data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/remote_registry_key.rb +188 -0
  282. data/lib/rex/post/meterpreter/extensions/stdapi/sys/thread.rb +180 -0
  283. data/lib/rex/post/meterpreter/extensions/stdapi/tlv.rb +236 -0
  284. data/lib/rex/post/meterpreter/extensions/stdapi/ui.rb +259 -0
  285. data/lib/rex/post/meterpreter/extensions/stdapi/webcam/webcam.rb +201 -0
  286. data/lib/rex/post/meterpreter/inbound_packet_handler.rb +30 -0
  287. data/lib/rex/post/meterpreter/object_aliases.rb +83 -0
  288. data/lib/rex/post/meterpreter/packet.rb +709 -0
  289. data/lib/rex/post/meterpreter/packet_dispatcher.rb +543 -0
  290. data/lib/rex/post/meterpreter/packet_parser.rb +94 -0
  291. data/lib/rex/post/meterpreter/packet_response_waiter.rb +83 -0
  292. data/lib/rex/post/meterpreter/ui/console.rb +142 -0
  293. data/lib/rex/post/meterpreter/ui/console/command_dispatcher.rb +86 -0
  294. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/android.rb +383 -0
  295. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/core.rb +939 -0
  296. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/espia.rb +109 -0
  297. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/extapi.rb +65 -0
  298. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/extapi/adsi.rb +198 -0
  299. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/extapi/clipboard.rb +444 -0
  300. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/extapi/service.rb +199 -0
  301. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/extapi/window.rb +118 -0
  302. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/extapi/wmi.rb +108 -0
  303. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/incognito.rb +242 -0
  304. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/kiwi.rb +509 -0
  305. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/lanattacks.rb +60 -0
  306. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/lanattacks/dhcp.rb +254 -0
  307. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/lanattacks/tftp.rb +159 -0
  308. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/mimikatz.rb +182 -0
  309. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/networkpug.rb +232 -0
  310. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv.rb +62 -0
  311. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv/elevate.rb +97 -0
  312. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv/passwd.rb +52 -0
  313. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv/timestomp.rb +133 -0
  314. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/sniffer.rb +204 -0
  315. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi.rb +66 -0
  316. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/fs.rb +527 -0
  317. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/net.rb +448 -0
  318. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/sys.rb +906 -0
  319. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/ui.rb +318 -0
  320. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/webcam.rb +343 -0
  321. data/lib/rex/post/meterpreter/ui/console/interactive_channel.rb +99 -0
  322. data/lib/rex/post/permission.rb +26 -0
  323. data/lib/rex/post/process.rb +57 -0
  324. data/lib/rex/post/thread.rb +57 -0
  325. data/lib/rex/post/ui.rb +52 -0
  326. data/lib/rex/proto.rb +15 -0
  327. data/lib/rex/proto/addp.rb +218 -0
  328. data/lib/rex/proto/dcerpc.rb +7 -0
  329. data/lib/rex/proto/dcerpc/client.rb +362 -0
  330. data/lib/rex/proto/dcerpc/exceptions.rb +151 -0
  331. data/lib/rex/proto/dcerpc/handle.rb +48 -0
  332. data/lib/rex/proto/dcerpc/ndr.rb +73 -0
  333. data/lib/rex/proto/dcerpc/packet.rb +264 -0
  334. data/lib/rex/proto/dcerpc/response.rb +188 -0
  335. data/lib/rex/proto/dcerpc/uuid.rb +85 -0
  336. data/lib/rex/proto/dcerpc/wdscp.rb +3 -0
  337. data/lib/rex/proto/dcerpc/wdscp/constants.rb +89 -0
  338. data/lib/rex/proto/dcerpc/wdscp/packet.rb +94 -0
  339. data/lib/rex/proto/dhcp.rb +7 -0
  340. data/lib/rex/proto/dhcp/constants.rb +34 -0
  341. data/lib/rex/proto/dhcp/server.rb +334 -0
  342. data/lib/rex/proto/drda.rb +6 -0
  343. data/lib/rex/proto/drda/constants.rb +50 -0
  344. data/lib/rex/proto/drda/packet.rb +253 -0
  345. data/lib/rex/proto/drda/utils.rb +124 -0
  346. data/lib/rex/proto/http.rb +7 -0
  347. data/lib/rex/proto/http/client.rb +722 -0
  348. data/lib/rex/proto/http/client_request.rb +472 -0
  349. data/lib/rex/proto/http/handler.rb +47 -0
  350. data/lib/rex/proto/http/handler/erb.rb +129 -0
  351. data/lib/rex/proto/http/handler/proc.rb +61 -0
  352. data/lib/rex/proto/http/header.rb +173 -0
  353. data/lib/rex/proto/http/packet.rb +414 -0
  354. data/lib/rex/proto/http/request.rb +354 -0
  355. data/lib/rex/proto/http/response.rb +151 -0
  356. data/lib/rex/proto/http/server.rb +385 -0
  357. data/lib/rex/proto/iax2.rb +2 -0
  358. data/lib/rex/proto/iax2/call.rb +326 -0
  359. data/lib/rex/proto/iax2/client.rb +218 -0
  360. data/lib/rex/proto/iax2/codecs.rb +5 -0
  361. data/lib/rex/proto/iax2/codecs/alaw.rb +16 -0
  362. data/lib/rex/proto/iax2/codecs/g711.rb +2176 -0
  363. data/lib/rex/proto/iax2/codecs/mulaw.rb +17 -0
  364. data/lib/rex/proto/iax2/constants.rb +262 -0
  365. data/lib/rex/proto/ipmi.rb +57 -0
  366. data/lib/rex/proto/ipmi/channel_auth_reply.rb +89 -0
  367. data/lib/rex/proto/ipmi/open_session_reply.rb +36 -0
  368. data/lib/rex/proto/ipmi/rakp2.rb +36 -0
  369. data/lib/rex/proto/ipmi/utils.rb +125 -0
  370. data/lib/rex/proto/natpmp.rb +7 -0
  371. data/lib/rex/proto/natpmp/constants.rb +19 -0
  372. data/lib/rex/proto/natpmp/packet.rb +45 -0
  373. data/lib/rex/proto/ntlm.rb +8 -0
  374. data/lib/rex/proto/ntlm/base.rb +327 -0
  375. data/lib/rex/proto/ntlm/constants.rb +75 -0
  376. data/lib/rex/proto/ntlm/crypt.rb +412 -0
  377. data/lib/rex/proto/ntlm/exceptions.rb +17 -0
  378. data/lib/rex/proto/ntlm/message.rb +534 -0
  379. data/lib/rex/proto/ntlm/utils.rb +765 -0
  380. data/lib/rex/proto/ntp.rb +3 -0
  381. data/lib/rex/proto/ntp/constants.rb +12 -0
  382. data/lib/rex/proto/ntp/modes.rb +130 -0
  383. data/lib/rex/proto/pjl.rb +31 -0
  384. data/lib/rex/proto/pjl/client.rb +163 -0
  385. data/lib/rex/proto/proxy/socks4a.rb +441 -0
  386. data/lib/rex/proto/rfb.rb +13 -0
  387. data/lib/rex/proto/rfb/cipher.rb +82 -0
  388. data/lib/rex/proto/rfb/client.rb +205 -0
  389. data/lib/rex/proto/rfb/constants.rb +50 -0
  390. data/lib/rex/proto/sip.rb +4 -0
  391. data/lib/rex/proto/sip/response.rb +61 -0
  392. data/lib/rex/proto/smb.rb +8 -0
  393. data/lib/rex/proto/smb/client.rb +2064 -0
  394. data/lib/rex/proto/smb/constants.rb +1064 -0
  395. data/lib/rex/proto/smb/crypt.rb +37 -0
  396. data/lib/rex/proto/smb/evasions.rb +67 -0
  397. data/lib/rex/proto/smb/exceptions.rb +867 -0
  398. data/lib/rex/proto/smb/simpleclient.rb +173 -0
  399. data/lib/rex/proto/smb/simpleclient/open_file.rb +106 -0
  400. data/lib/rex/proto/smb/simpleclient/open_pipe.rb +57 -0
  401. data/lib/rex/proto/smb/utils.rb +104 -0
  402. data/lib/rex/proto/sunrpc.rb +2 -0
  403. data/lib/rex/proto/sunrpc/client.rb +196 -0
  404. data/lib/rex/proto/tftp.rb +13 -0
  405. data/lib/rex/proto/tftp/client.rb +344 -0
  406. data/lib/rex/proto/tftp/constants.rb +39 -0
  407. data/lib/rex/proto/tftp/server.rb +497 -0
  408. data/lib/rex/random_identifier_generator.rb +177 -0
  409. data/lib/rex/registry.rb +14 -0
  410. data/lib/rex/registry/hive.rb +132 -0
  411. data/lib/rex/registry/lfkey.rb +51 -0
  412. data/lib/rex/registry/nodekey.rb +54 -0
  413. data/lib/rex/registry/regf.rb +25 -0
  414. data/lib/rex/registry/valuekey.rb +67 -0
  415. data/lib/rex/registry/valuelist.rb +29 -0
  416. data/lib/rex/ropbuilder.rb +8 -0
  417. data/lib/rex/ropbuilder/rop.rb +271 -0
  418. data/lib/rex/script.rb +42 -0
  419. data/lib/rex/script/base.rb +61 -0
  420. data/lib/rex/script/meterpreter.rb +16 -0
  421. data/lib/rex/script/shell.rb +10 -0
  422. data/lib/rex/service.rb +49 -0
  423. data/lib/rex/service_manager.rb +154 -0
  424. data/lib/rex/services/local_relay.rb +424 -0
  425. data/lib/rex/socket.rb +788 -0
  426. data/lib/rex/socket/comm.rb +120 -0
  427. data/lib/rex/socket/comm/local.rb +526 -0
  428. data/lib/rex/socket/ip.rb +132 -0
  429. data/lib/rex/socket/parameters.rb +363 -0
  430. data/lib/rex/socket/range_walker.rb +470 -0
  431. data/lib/rex/socket/ssl_tcp.rb +345 -0
  432. data/lib/rex/socket/ssl_tcp_server.rb +188 -0
  433. data/lib/rex/socket/subnet_walker.rb +76 -0
  434. data/lib/rex/socket/switch_board.rb +289 -0
  435. data/lib/rex/socket/tcp.rb +79 -0
  436. data/lib/rex/socket/tcp_server.rb +67 -0
  437. data/lib/rex/socket/udp.rb +165 -0
  438. data/lib/rex/sslscan/result.rb +201 -0
  439. data/lib/rex/sslscan/scanner.rb +206 -0
  440. data/lib/rex/struct2.rb +5 -0
  441. data/lib/rex/struct2/c_struct.rb +181 -0
  442. data/lib/rex/struct2/c_struct_template.rb +39 -0
  443. data/lib/rex/struct2/constant.rb +26 -0
  444. data/lib/rex/struct2/element.rb +44 -0
  445. data/lib/rex/struct2/generic.rb +73 -0
  446. data/lib/rex/struct2/restraint.rb +54 -0
  447. data/lib/rex/struct2/s_string.rb +72 -0
  448. data/lib/rex/struct2/s_struct.rb +111 -0
  449. data/lib/rex/sync.rb +6 -0
  450. data/lib/rex/sync/event.rb +85 -0
  451. data/lib/rex/sync/read_write_lock.rb +177 -0
  452. data/lib/rex/sync/ref.rb +58 -0
  453. data/lib/rex/sync/thread_safe.rb +83 -0
  454. data/lib/rex/text.rb +1813 -0
  455. data/lib/rex/thread_factory.rb +43 -0
  456. data/lib/rex/time.rb +66 -0
  457. data/lib/rex/transformer.rb +116 -0
  458. data/lib/rex/ui.rb +22 -0
  459. data/lib/rex/ui/interactive.rb +304 -0
  460. data/lib/rex/ui/output.rb +85 -0
  461. data/lib/rex/ui/output/none.rb +19 -0
  462. data/lib/rex/ui/progress_tracker.rb +97 -0
  463. data/lib/rex/ui/subscriber.rb +160 -0
  464. data/lib/rex/ui/text/color.rb +98 -0
  465. data/lib/rex/ui/text/dispatcher_shell.rb +538 -0
  466. data/lib/rex/ui/text/input.rb +119 -0
  467. data/lib/rex/ui/text/input/buffer.rb +79 -0
  468. data/lib/rex/ui/text/input/readline.rb +129 -0
  469. data/lib/rex/ui/text/input/socket.rb +96 -0
  470. data/lib/rex/ui/text/input/stdio.rb +46 -0
  471. data/lib/rex/ui/text/irb_shell.rb +62 -0
  472. data/lib/rex/ui/text/output.rb +86 -0
  473. data/lib/rex/ui/text/output/buffer.rb +62 -0
  474. data/lib/rex/ui/text/output/buffer/stdout.rb +26 -0
  475. data/lib/rex/ui/text/output/file.rb +44 -0
  476. data/lib/rex/ui/text/output/socket.rb +44 -0
  477. data/lib/rex/ui/text/output/stdio.rb +53 -0
  478. data/lib/rex/ui/text/output/tee.rb +56 -0
  479. data/lib/rex/ui/text/progress_tracker.rb +57 -0
  480. data/lib/rex/ui/text/shell.rb +403 -0
  481. data/lib/rex/ui/text/table.rb +346 -0
  482. data/lib/rex/zip.rb +96 -0
  483. data/lib/rex/zip/archive.rb +130 -0
  484. data/lib/rex/zip/blocks.rb +184 -0
  485. data/lib/rex/zip/entry.rb +122 -0
  486. data/lib/rex/zip/jar.rb +283 -0
  487. data/lib/rex/zip/samples/comment.rb +32 -0
  488. data/lib/rex/zip/samples/mkwar.rb +138 -0
  489. data/lib/rex/zip/samples/mkzip.rb +19 -0
  490. data/lib/rex/zip/samples/recursive.rb +58 -0
  491. metadata +536 -0
@@ -0,0 +1,17 @@
1
+ # -*- coding: binary -*-
2
+ module Rex
3
+ module Proto
4
+ module IAX2
5
+ module Codecs
6
+ class MuLaw < G711
7
+
8
+
9
+ def self.decode(buff)
10
+ buff.unpack("C*").map{ |x| LOOKUP_ULAW2LIN16[x] }.pack('v*')
11
+ end
12
+
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,262 @@
1
+ # -*- coding: binary -*-
2
+ module Rex
3
+ module Proto
4
+ module IAX2
5
+
6
+
7
+ IAX2_DEFAULT_PORT = 4569
8
+
9
+
10
+ IAX_TYPE_VOICE = 2
11
+ IAX_TYPE_CONTROL = 4
12
+ IAX_TYPE_IAX = 6
13
+ IAX_TYPE_DTMF_BEGIN = 1
14
+ IAX_TYPE_DTMF_END = 12
15
+
16
+ IAX_CTRL_HANGUP = 1
17
+ IAX_CTRL_RINGING = 3
18
+ IAX_CTRL_ANSWER = 4
19
+ IAX_CTRL_BUSY = 5
20
+ IAX_CTRL_PROGRESS = 14
21
+ IAX_CTRL_PROCEED = 15
22
+
23
+ =begin
24
+ +-------------+---------------+-------------------------------------+
25
+ | VALUE | Name | Description |
26
+ +-------------+---------------+-------------------------------------+
27
+ | 0x01 | Hangup | The call has been hungup at the |
28
+ | | | remote end |
29
+ | | | |
30
+ | 0x02 | Reserved | Reserved for future use |
31
+ | | | |
32
+ | 0x03 | Ringing | Remote end is ringing (ring-back) |
33
+ | | | |
34
+ | 0x04 | Answer | Remote end has answered |
35
+ | | | |
36
+ | 0x05 | Busy | Remote end is busy |
37
+ | | | |
38
+ | 0x06 | Reserved | Reserved for future use |
39
+ | | | |
40
+ | 0x07 | Reserved | Reserved for future use |
41
+ | | | |
42
+ | 0x08 | Congestion | The call is congested |
43
+ | | | |
44
+ | 0x09 | Flash Hook | Flash hook |
45
+ | | | |
46
+ | 0x0a | Reserved | Reserved for future use |
47
+ | | | |
48
+ | 0x0b | Option | Device-specific options are being |
49
+ | | | transmitted |
50
+ | | | |
51
+ | 0x0c | Key Radio | Key Radio |
52
+ | | | |
53
+ | 0x0d | Unkey Radio | Unkey Radio |
54
+ | | | |
55
+ | 0x0e | Call Progress | Call is in progress |
56
+ | | | |
57
+ | 0x0f | Call | Call is proceeding |
58
+ | | Proceeding | |
59
+ | | | |
60
+ | 0x10 | Hold | Call is placed on hold |
61
+ | | | |
62
+ | 0x11 | Unhold | Call is taken off hold |
63
+ +-------------+---------------+-------------------------------------+
64
+ =end
65
+
66
+
67
+ IAX_SUBTYPE_NEW = 1
68
+ IAX_SUBTYPE_PING = 2
69
+ IAX_SUBTYPE_PONG = 3
70
+ IAX_SUBTYPE_ANSWER = 4
71
+ IAX_SUBTYPE_ACK = 4
72
+ IAX_SUBTYPE_HANGUP = 5
73
+ IAX_SUBTYPE_REJECT = 6
74
+ IAX_SUBTYPE_ACCEPT = 7
75
+ IAX_SUBTYPE_AUTHREQ = 8
76
+ IAX_SUBTYPE_AUTHREP = 9
77
+ IAX_SUBTYPE_INVAL = 10
78
+ IAX_SUBTYPE_LAGRQ = 11
79
+ IAX_SUBTYPE_LAGRP = 12
80
+ IAX_SUBTYPE_REGREQ = 13
81
+ IAX_SUBTYPE_REGAUTH = 14
82
+ IAX_SUBTYPE_REGACK = 15
83
+ IAX_SUBTYPE_REGREJ = 16
84
+ IAX_SUBTYPE_REGREL = 17
85
+ IAX_SUBTYPE_VNAK = 18
86
+
87
+ =begin
88
+ +------+-----------+-----------------------------------------+
89
+ | Hex | Name | Description |
90
+ +------+-----------+-----------------------------------------+
91
+ | 0x01 | NEW | Initiate a new call |
92
+ | | | |
93
+ | 0x02 | PING | Ping request |
94
+ | | | |
95
+ | 0x03 | PONG | Ping or poke reply |
96
+ | | | |
97
+ | 0x04 | ACK | Explicit acknowledgment |
98
+ | | | |
99
+ | 0x05 | HANGUP | Initiate call tear-down |
100
+ | | | |
101
+ | 0x06 | REJECT | Reject a call |
102
+ | | | |
103
+ | 0x07 | ACCEPT | Accept a call |
104
+ | | | |
105
+ | 0x08 | AUTHREQ | Authentication request |
106
+ | | | |
107
+ | 0x09 | AUTHREP | Authentication reply |
108
+ | | | |
109
+ | 0x0a | INVAL | Invalid message |
110
+ | | | |
111
+ | 0x0b | LAGRQ | Lag request |
112
+ | | | |
113
+ | 0x0c | LAGRP | Lag reply |
114
+ | | | |
115
+ | 0x0d | REGREQ | Registration request |
116
+ | | | |
117
+ | 0x0e | REGAUTH | Registration authentication |
118
+ | | | |
119
+ | 0x0f | REGACK | Registration acknowledgement |
120
+ | | | |
121
+ | 0x10 | REGREJ | Registration reject |
122
+ | | | |
123
+ | 0x11 | REGREL | Registration release |
124
+ | | | |
125
+ | 0x12 | VNAK | Video/Voice retransmit request |
126
+ | | | |
127
+ | 0x13 | DPREQ | Dialplan request |
128
+ | | | |
129
+ | 0x14 | DPREP | Dialplan reply |
130
+ | | | |
131
+ | 0x15 | DIAL | Dial |
132
+ | | | |
133
+ | 0x16 | TXREQ | Transfer request |
134
+ | | | |
135
+ | 0x17 | TXCNT | Transfer connect |
136
+ | | | |
137
+ | 0x18 | TXACC | Transfer accept |
138
+ | | | |
139
+ | 0x19 | TXREADY | Transfer ready |
140
+ | | | |
141
+ | 0x1a | TXREL | Transfer release |
142
+ | | | |
143
+ | 0x1b | TXREJ | Transfer reject |
144
+ | | | |
145
+ | 0x1c | QUELCH | Halt audio/video [media] transmission |
146
+ | | | |
147
+ | 0x1d | UNQUELCH | Resume audio/video [media] transmission |
148
+ | | | |
149
+ | 0x1e | POKE | Poke request |
150
+ | | | |
151
+ | 0x1f | Reserved | Reserved for future use |
152
+ | | | |
153
+ | 0x20 | MWI | Message waiting indication |
154
+ | | | |
155
+ | 0x21 | UNSUPPORT | Unsupported message |
156
+ | | | |
157
+ | 0x22 | TRANSFER | Remote transfer request |
158
+ | | | |
159
+ | 0x23 | Reserved | Reserved for future use |
160
+ | | | |
161
+ | 0x24 | Reserved | Reserved for future use |
162
+ | | | |
163
+ | 0x25 | Reserved | Reserved for future use |
164
+ +------+-----------+-----------------------------------------+
165
+ =end
166
+
167
+ IAX_IE_CALLED_NUMBER = 1
168
+ IAX_IE_CALLING_NUMBER = 2
169
+ IAX_IE_AUTH_METHODS = 3
170
+ IAX_IE_CALLING_NAME = 4
171
+ IAX_IE_USERNAME = 6
172
+ IAX_IE_DESIRED_CODEC = 9
173
+ IAX_IE_ORIGINAL_DID = 10
174
+ IAX_IE_ACTUAL_CODECS = 8
175
+ IAX_IE_PROTO_VERSION = 11
176
+ IAX_IE_REG_REFRESH = 19
177
+ IAX_IE_CHALLENGE_DATA = 15
178
+ IAX_IE_CHALLENGE_RESP = 16
179
+ IAX_IE_APPARENT_ADDR = 18
180
+ IAX_IE_REGREJ_CAUSE = 22
181
+ IAX_IE_HANGUP_CAUSE = 42
182
+
183
+ =begin
184
+ +------+----------------+-------------------------------------------+
185
+ | HEX | NAME | DESCRIPTION |
186
+ +------+----------------+-------------------------------------------+
187
+ | HEX | NAME | DESCRIPTION |
188
+ | 0x01 | CALLED NUMBER | Number/extension being called |
189
+ | 0x02 | CALLING NUMBER | Calling number |
190
+ | 0x03 | CALLING ANI | Calling number ANI for billing |
191
+ | 0x04 | CALLING NAME | Name of caller |
192
+ | 0x05 | CALLED CONTEXT | Context for number |
193
+ | 0x06 | USERNAME | Username (peer or user) for |
194
+ | | | authentication |
195
+ | 0x07 | PASSWORD | Password for authentication |
196
+ | 0x08 | CAPABILITY | Actual CODEC capability |
197
+ | 0x09 | FORMAT | Desired CODEC format |
198
+ | 0x0a | LANGUAGE | Desired language |
199
+ | 0x0b | VERSION | Protocol version |
200
+ | 0x0c | ADSICPE | CPE ADSI capability |
201
+ | 0x0d | DNID | Originally dialed DNID |
202
+ | 0x0e | AUTHMETHODS | Authentication method(s) |
203
+ | 0x0f | CHALLENGE | Challenge data for MD5/RSA |
204
+ | 0x10 | MD5 RESULT | MD5 challenge result |
205
+ | 0x11 | RSA RESULT | RSA challenge result |
206
+ | 0x12 | APPARENT ADDR | Apparent address of peer |
207
+ | 0x13 | REFRESH | When to refresh registration |
208
+ | 0x14 | DPSTATUS | Dialplan status |
209
+ | 0x15 | CALLNO | Call number of peer |
210
+ | 0x16 | CAUSE | Cause |
211
+ | 0x17 | IAX UNKNOWN | Unknown IAX command |
212
+ | 0x18 | MSGCOUNT | How many messages waiting |
213
+ | 0x19 | AUTOANSWER | Request auto-answering |
214
+ | 0x1a | MUSICONHOLD | Request musiconhold with QUELCH |
215
+ | 0x1b | TRANSFERID | Transfer Request Identifier |
216
+ | 0x1c | RDNIS | Referring DNIS |
217
+ | 0x1d | Reserved | Reserved for future use |
218
+ | 0x1e | Reserved | Reserved for future use |
219
+ | 0x1f | DATETIME | Date/Time |
220
+ | 0x20 | Reserved | Reserved for future use |
221
+ | 0x21 | Reserved | Reserved for future use |
222
+ | 0x22 | Reserved | Reserved for future use |
223
+ | 0x23 | Reserved | Reserved for future use |
224
+ | 0x24 | Reserved | Reserved for future use |
225
+ | 0x25 | Reserved | Reserved for future use |
226
+ | 0x26 | CALLINGPRES | Calling presentation |
227
+ | 0x27 | CALLINGTON | Calling type of number |
228
+ | 0x28 | CALLINGTNS | Calling transit network select |
229
+ | 0x29 | SAMPLINGRATE | Supported sampling rates |
230
+ | 0x2a | CAUSECODE | Hangup cause |
231
+ | 0x2b | ENCRYPTION | Encryption format |
232
+ | 0x2c | ENCKEY | Reserved for future Use |
233
+ | 0x2d | CODEC PREFS | CODEC Negotiation |
234
+ | 0x2e | RR JITTER | Received jitter, as in RFC 3550 |
235
+ | 0x2f | RR LOSS | Received loss, as in RFC 3550 |
236
+ | 0x30 | RR PKTS | Received frames |
237
+ | 0x31 | RR DELAY | Max playout delay for received frames in |
238
+ | | | ms |
239
+ | 0x32 | RR DROPPED | Dropped frames (presumably by jitter |
240
+ | | | buffer) |
241
+ | 0x33 | RR OOO | Frames received Out of Order |
242
+ | 0x34 | OSPTOKEN | OSP Token Block |
243
+ +------+----------------+-------------------------------------------+
244
+ =end
245
+
246
+
247
+ # Codecs
248
+ IAX_CODEC_G711_MULAW = 0x00000004
249
+ IAX_CODEC_G711_ALAW = 0x00000008
250
+ IAX_CODEC_LINEAR_PCM = 0x00000040
251
+
252
+ # Supported
253
+ IAX_SUPPORTED_CODECS = IAX_CODEC_G711_MULAW | IAX_CODEC_G711_ALAW | IAX_CODEC_LINEAR_PCM
254
+
255
+ # Default timings
256
+ IAX_DEFAULT_REG_REFRESH = 60
257
+ IAX_DEFAULT_TIMEOUT = 10
258
+
259
+
260
+ end
261
+ end
262
+ end
@@ -0,0 +1,57 @@
1
+ # -*- coding: binary -*-
2
+
3
+ require 'rex/proto/ipmi/utils'
4
+
5
+ module Rex
6
+ module Proto
7
+ module IPMI
8
+ require 'bit-struct'
9
+ require 'rex/proto/ipmi/channel_auth_reply'
10
+ require 'rex/proto/ipmi/open_session_reply'
11
+ require 'rex/proto/ipmi/rakp2'
12
+
13
+ #
14
+ # Move these into an IPMI stack or mixin at some point
15
+ #
16
+
17
+ #
18
+ # Payload types were identified from xCAT-server source code (IPMI.pm)
19
+ #
20
+ PAYLOAD_IPMI = 0
21
+ PAYLOAD_SOL = 1
22
+ PAYLOAD_RMCPPLUSOPEN_REQ = 0x10
23
+ PAYLOAD_RMCPPLUSOPEN_REP = 0x11
24
+ PAYLOAD_RAKP1 = 0x12
25
+ PAYLOAD_RAKP2 = 0x13
26
+ PAYLOAD_RAKP3 = 0x14
27
+ PAYLOAD_RAKP4 = 0x15
28
+
29
+
30
+ #
31
+ # Payload types were copied from xCAT-server source code (IPMI.pm)
32
+ #
33
+ RMCP_ERRORS = {
34
+ 1 => "Insufficient resources to create new session (wait for existing sessions to timeout)",
35
+ 2 => "Invalid Session ID", #this shouldn't occur...
36
+ 3 => "Invalid payload type",#shouldn't occur..
37
+ 4 => "Invalid authentication algorithm", #if this happens, we need to enhance our mechanism for detecting supported auth algorithms
38
+ 5 => "Invalid integrity algorithm", #same as above
39
+ 6 => "No matching authentication payload",
40
+ 7 => "No matching integrity payload",
41
+ 8 => "Inactive Session ID", #this suggests the session was timed out while trying to negotiate, shouldn't happen
42
+ 9 => "Invalid role",
43
+ 0xa => "Unauthorised role or privilege level requested",
44
+ 0xb => "Insufficient resources to create a session at the requested role",
45
+ 0xc => "Invalid username length",
46
+ 0xd => "Unauthorized name",
47
+ 0xe => "Unauthorized GUID",
48
+ 0xf => "Invalid integrity check value",
49
+ 0x10 => "Invalid confidentiality algorithm",
50
+ 0x11 => "No cipher suite match with proposed security algorithms",
51
+ 0x12 => "Illegal or unrecognized parameter", #have never observed this, would most likely mean a bug in xCAT or IPMI device
52
+ }
53
+
54
+
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,89 @@
1
+ # -*- coding: binary -*-
2
+
3
+ module Rex
4
+ module Proto
5
+ module IPMI
6
+
7
+ class Channel_Auth_Reply < BitStruct
8
+ unsigned :rmcp_version, 8, "RMCP Version"
9
+ unsigned :rmcp_padding, 8, "RMCP Padding"
10
+ unsigned :rmcp_sequence, 8, "RMCP Sequence"
11
+ unsigned :rmcp_mtype, 1, "RMCP Message Type"
12
+ unsigned :rmcp_class, 7, "RMCP Message Class"
13
+
14
+ unsigned :session_auth_type, 8, "Session Auth Type"
15
+ unsigned :session_sequence, 32, "Session Sequence Number"
16
+ unsigned :session_id, 32, "Session ID"
17
+ unsigned :message_length, 8, "Message Length"
18
+
19
+ unsigned :ipmi_tgt_address, 8, "IPMI Target Address"
20
+ unsigned :ipmi_tgt_lun, 8, "IPMI Target LUN"
21
+ unsigned :ipmi_header_checksum, 8, "IPMI Header Checksum"
22
+ unsigned :ipmi_src_address, 8, "IPMI Source Address"
23
+ unsigned :ipmi_src_lun, 8, "IPMI Source LUN"
24
+ unsigned :ipmi_command, 8, "IPMI Command"
25
+ unsigned :ipmi_completion_code, 8, "IPMI Completion Code"
26
+
27
+ unsigned :ipmi_channel, 8, "IPMI Channel"
28
+
29
+ unsigned :ipmi_compat_20, 1, "IPMI Version Compatibility: IPMI 2.0+"
30
+ unsigned :ipmi_compat_reserved1, 1, "IPMI Version Compatibility: Reserved 1"
31
+ unsigned :ipmi_compat_oem_auth, 1, "IPMI Version Compatibility: OEM Authentication"
32
+ unsigned :ipmi_compat_password, 1, "IPMI Version Compatibility: Straight Password"
33
+ unsigned :ipmi_compat_reserved2, 1, "IPMI Version Compatibility: Reserved 2"
34
+ unsigned :ipmi_compat_md5, 1, "IPMI Version Compatibility: MD5"
35
+ unsigned :ipmi_compat_md2, 1, "IPMI Version Compatibility: MD2"
36
+ unsigned :ipmi_compat_none, 1, "IPMI Version Compatibility: None"
37
+
38
+ unsigned :ipmi_user_reserved1, 2, "IPMI User Compatibility: Reserved 1"
39
+ unsigned :ipmi_user_kg, 1, "IPMI User Compatibility: KG Set to Default"
40
+ unsigned :ipmi_user_disable_message_auth, 1, "IPMI User Compatibility: Disable Per-Message Authentication"
41
+ unsigned :ipmi_user_disable_user_auth, 1, "IPMI User Compatibility: Disable User-Level Authentication"
42
+ unsigned :ipmi_user_non_null, 1, "IPMI User Compatibility: Non-Null Usernames Enabled"
43
+ unsigned :ipmi_user_null, 1, "IPMI User Compatibility: Null Usernames Enabled"
44
+ unsigned :ipmi_user_anonymous, 1, "IPMI User Compatibility: Anonymous Login Enabled"
45
+
46
+ unsigned :ipmi_conn_reserved1, 6, "IPMI Connection Compatibility: Reserved 1"
47
+ unsigned :ipmi_conn_20, 1, "IPMI Connection Compatibility: 2.0"
48
+ unsigned :ipmi_conn_15, 1, "IPMI Connection Compatibility: 1.5"
49
+
50
+ unsigned :ipmi_oem_id, 24, "IPMI OEM ID", :endian => 'little'
51
+
52
+ rest :ipm_oem_data, "IPMI OEM Data + Checksum Byte"
53
+
54
+
55
+ def to_banner
56
+ info = self
57
+ banner = "#{(info.ipmi_compat_20 == 1) ? "IPMI-2.0" : "IPMI-1.5"} "
58
+
59
+ pass_info = []
60
+ pass_info << "oem_auth" if info.ipmi_compat_oem_auth == 1
61
+ pass_info << "password" if info.ipmi_compat_password == 1
62
+ pass_info << "md5" if info.ipmi_compat_md5 == 1
63
+ pass_info << "md2" if info.ipmi_compat_md2 == 1
64
+ pass_info << "null" if info.ipmi_compat_none == 1
65
+
66
+ user_info = []
67
+ user_info << "kg_default" if (info.ipmi_compat_20 == 1 and info.ipmi_user_kg == 1)
68
+ user_info << "auth_msg" unless info.ipmi_user_disable_message_auth == 1
69
+ user_info << "auth_user" unless info.ipmi_user_disable_user_auth == 1
70
+ user_info << "non_null_user" if info.ipmi_user_non_null == 1
71
+ user_info << "null_user" if info.ipmi_user_null == 1
72
+ user_info << "anonymous_user" if info.ipmi_user_anonymous == 1
73
+
74
+ conn_info = []
75
+ conn_info << "1.5" if info.ipmi_conn_15 == 1
76
+ conn_info << "2.0" if info.ipmi_conn_20 == 1
77
+
78
+ if info.ipmi_oem_id != 0
79
+ banner << "OEMID:#{info.ipmi_oem_id} "
80
+ end
81
+
82
+ banner << "UserAuth(#{user_info.join(", ")}) PassAuth(#{pass_info.join(", ")}) Level(#{conn_info.join(", ")}) "
83
+ banner
84
+ end
85
+ end
86
+
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,36 @@
1
+ # -*- coding: binary -*-
2
+
3
+ module Rex
4
+ module Proto
5
+ module IPMI
6
+
7
+ class Open_Session_Reply < BitStruct
8
+ unsigned :rmcp_version, 8, "RMCP Version"
9
+ unsigned :rmcp_padding, 8, "RMCP Padding"
10
+ unsigned :rmcp_sequence, 8, "RMCP Sequence"
11
+ unsigned :rmcp_mtype, 1, "RMCP Message Type"
12
+ unsigned :rmcp_class, 7, "RMCP Message Class"
13
+
14
+ unsigned :session_auth_type, 8, "Authentication Type"
15
+
16
+ unsigned :session_payload_encrypted, 1, "Session Payload Encrypted"
17
+ unsigned :session_payload_authenticated, 1, "Session Payload Authenticated"
18
+ unsigned :session_payload_type, 6, "Session Payload Type", :endian => 'little'
19
+
20
+ unsigned :session_id, 32, "Session ID"
21
+ unsigned :session_sequence, 32, "Session Sequence Number"
22
+ unsigned :message_length, 16, "Message Length", :endian => "little"
23
+
24
+ unsigned :ignored1, 8, "Ignored"
25
+ unsigned :error_code, 8, "RMCP Error Code"
26
+ unsigned :ignored2, 16, "Ignored"
27
+ char :console_session_id, 32, "Console Session ID"
28
+ char :bmc_session_id, 32, "BMC Session ID"
29
+
30
+ rest :stuff, "The Rest of the Stuff"
31
+ end
32
+
33
+ end
34
+ end
35
+ end
36
+