smb_file_server.rb 791 B

123456789101112131415161718192021222324252627
  1. #!/usr/bin/env ruby
  2. require 'pathname'
  3. require 'ruby_smb'
  4. # we just need *a* default encoding to handle the strings from the NTLM messages
  5. Encoding.default_internal = 'UTF-8' if Encoding.default_internal.nil?
  6. options = RubySMB::Server::Cli.parse(defaults: { share_path: '.', username: 'metasploit' }) do |options, parser|
  7. parser.banner = <<~EOS
  8. Usage: #{File.basename(__FILE__)} [options]
  9. Start a read-only SMB file server.
  10. Options:
  11. EOS
  12. parser.on("--share-path SHARE_PATH", "The path to share (default: #{options[:share_path]})") do |path|
  13. options[:share_path] = path
  14. end
  15. end
  16. server = RubySMB::Server::Cli.build(options)
  17. server.add_share(RubySMB::Server::Share::Provider::Disk.new(options[:share_name], options[:share_path]))
  18. RubySMB::Server::Cli.run(server)