Land #4875, rm some old and crufty tools

bug/bundler_fix
William Vu 2015-03-10 00:02:04 -05:00
commit cd992d5ea6
No known key found for this signature in database
GPG Key ID: 68BD00CE25866743
6 changed files with 1 additions and 436 deletions

View File

@ -1,52 +0,0 @@
#!/usr/bin/env ruby
#
# $Id$
# $Revision$
#
path = ARGV.shift || exit
data = File.read(path)
outp = ""
endc = 0
data.each_line do |line|
if(line =~ /^\s*module\s+[A-Z]/)
endc += 1
next
end
if(line =~ /^(\s*)include (.*)/)
spaces = $1
inc = $2
if (inc !~ /Msf/)
line = "#{spaces}include Msf::#{inc.strip}\n"
end
end
if(line =~ /^(\s*)class ([^\<]+)\s*<\s*(.*)/)
prefix = ""
spaces = $1
parent = $3
if(parent !~ /^Msf/)
prefix = "Msf::"
end
line = "#{spaces}class Metasploit3 < #{prefix}#{parent.strip}\n"
end
outp += line
end
endc.downto(1) do |idx|
i = outp.rindex("end")
outp[i, 4] = "" if i
end
outp.rstrip!
outp << "\n"
fd = File.open(path, "wb")
fd.write(outp)
fd.close

View File

@ -1,55 +0,0 @@
#!/usr/bin/env ruby
# -*- coding: binary -*-
# Replace comment splat with something shorter and
# more sensible.
#
# Usage:
# metasploit-framework$ ./tools/dev/resplat.rb [path]
#
# Some cargo-culting of tools/dev/retab.rb
require 'fileutils'
require 'find'
dir = ARGV[0] || "."
raise ArgumentError, "Need a filename or directory" unless (dir and File.readable? dir)
def is_ruby?(fname)
return true if fname =~ /\.rb$/
end
def resplat(line)
if line =~ /This file is part of the Metasploit Framework/
# This module requires Metasploit: http://metasploit.com/download
elsif line =~ /# redistribution and commercial restrictions\./
return "# Current source: https://github.com/rapid7/metasploit-framework\n"
else
return nil
end
end
Find.find(dir) do |infile|
next if infile =~ /\.git[\x5c\x2f]/
next unless File.file? infile
next unless is_ruby? infile
outfile = infile
data = File.open(infile, "rb") {|f| f.read f.stat.size}
fixed = []
data.each_line do |line|
case line
when /^[\s]*#( ##)? This file is part of the Metasploit Framework and may be subject to/, /^[\s]*# redistribution and commercial restrictions\. Please see the Metasploit/, /^[\s]*# web site for more information on licensing and terms of use\./, /^[\s]*#[\s]{1,3}http:\/\/metasploit.com\/(framework\/)?/, /^# Framework web site for more information on licensing and terms of use./
new_line = resplat(line)
fixed << new_line if new_line
else
fixed << line
end
end
fh = File.open(outfile, "wb")
fh.write fixed.join
fh.close
puts "Resplatted #{fh.path}"
end

View File

@ -1,70 +0,0 @@
#!/usr/bin/env ruby
# -*- coding: binary -*-
# Replace leading tabs with 2-width spaces.
# I'm sure there's a sed/awk/perl oneliner that's
# a million times better but this is more readable for me.
#
# Usage:
# metasploit-framework$ ./tools/dev/retab.rb [path]
#
# If local backups are desired, prepend with "MSF_RETAB_BACKUPS" set,
# like so:
# metasploit-framework$ MSF_RETAB_BACKUPS=1 ./tools/dev/retab.rb [path]
require 'fileutils'
require 'find'
dir = ARGV[0] || "."
keep_backups = !!(ENV['MSF_RETAB_BACKUPS'] || ENV['MSF_RETAB_BACKUP'])
puts "Keeping .notab backups" if keep_backups
raise ArgumentError, "Need a filename or directory" unless (dir and File.readable? dir)
def is_ruby?(fname)
return true if fname =~ /\.rb$/
file_util = ""
begin
file_util = %x{which file}.to_s.chomp
rescue Errno::ENOENT
end
if File.executable? file_util
file_fingerprint = %x{#{file_util} #{fname}}
!!(file_fingerprint =~ /Ruby script/)
end
end
Find.find(dir) do |infile|
next if infile =~ /\.git[\x5c\x2f]/
next unless File.file? infile
next unless is_ruby? infile
outfile = infile
if keep_backups
backup = "#{infile}.notab"
FileUtils.cp infile, backup
end
data = File.open(infile, "rb") {|f| f.read f.stat.size}
fixed = []
data.each_line do |line|
fixed << line
next unless line =~ /^\x09/
index = []
i = 0
line.each_char do |char|
break unless char =~ /[\x20\x09]/
index << i if char == "\x09"
i += 1
end
index.reverse.each do |idx|
line[idx] = " "
end
fixed[-1] = line
end
fh = File.open(outfile, "wb")
fh.write fixed.join
fh.close
puts "Retabbed #{fh.path}"
end

View File

@ -1,178 +0,0 @@
#!/usr/bin/env ruby
#
# $Id$
# $Revision$
#
# Script which allows to import OWASP WebScarab sessions
# (http://www.owasp.org/index.php/Category:OWASP_WebScarab_Project)
# into the metasploit/WMAP database.
# By spinbad <spinbad.security () googlemail ! com>
require 'resolv'
require 'sqlite3'
puts "--- WMAP WebScarab Session Importer ---------------------------------------------"
puts
if ARGV.length < 2
$stderr.puts("Usage: #{File.basename($0)} wescarabdirectory sqlite3database [target] [startrequest]")
$stderr.puts
$stderr.puts("webscarabdirectory\tThe directory where you stored the webscarab session")
$stderr.puts("sqlite3database\t\tThe name of the database file")
$stderr.puts("target\t\t\tThe target (host or domain) you want to add to the database")
$stderr.puts("startrequest\tThe request to start with...")
$stderr.puts
$stderr.puts("Examples:")
$stderr.puts("#{File.basename($0)} /tmp/savedsession example.db")
$stderr.puts("#{File.basename($0)} /tmp/savedsession example.db www.example.com")
$stderr.puts("#{File.basename($0)} /tmp/savedsession example.db example.com")
$stderr.puts("#{File.basename($0)} /tmp/savedsession example.db www.example.com 21")
exit
end
ws_directory = ARGV.shift
db_file = ARGV.shift
target = ARGV.shift || nil
start_id = ARGV.shift.to_i || 1
# check if we have what we need...
if File.exists?(ws_directory+ File::SEPARATOR) == false then
$stderr.puts("ERROR: Can't find webscarab directory #{ws_directory}.")
exit
end
if File.file?(db_file) == false then
$stderr.puts("ERROR: Can't find sqlite3 database file #{db_file}.")
exit
end
# Prepare the database
puts("Opening database file: #{db_file}")
database = SQLite3::Database.new(db_file)
# Prepare the insert statement...
insert_statement = database.prepare("INSERT INTO requests(host,port,ssl,meth,path,headers,query,body,respcode,resphead,response,created)" +
" VALUES(:host,:port,:ssl,:meth,:path,:headers,:query,:body,:respcode,:resphead,:response,:created)");
# target hash -> Resolving dns names is soooo slow, I don't know why. So we use the
# following hash as a "micro hosts", so we don't have to call getaddress each time...
target_ips = {}
# Try to open the conversationlog file
File.open("#{ws_directory+File::SEPARATOR}conversationlog", "rb") do |log|
# regulare expressions to extract the stuff that we really need
# i know that the url stuff can be handeled in one request but
# i am toooo lazy...
regex_conversation = /^### Conversation : (\d+)/
regex_datetime = /^WHEN: (\d+)/
regex_method = /^METHOD: (\S+)/
regex_status = /^STATUS: (\d\d\d)/
regex_url = /^URL: (http|https)?:\/\/(\S+):(\d+)\/([^\?]*)\?*(\S*)/
while line = log.gets
if line =~ regex_conversation then
conversation_id = regex_conversation.match(line)[1]
next if conversation_id.to_i < start_id
# we don't care about scripts, commets
while (line =~ regex_datetime) == nil
line = log.gets
end
# Add a dot to the timestring so we can convert it more easily
date_time = regex_datetime.match(line)[1]
date_time = Time.at(date_time.insert(-4, '.').to_f)
method = regex_method.match(log.gets)[1]
# we don't care about COOKIES
while (line =~ regex_status) == nil
line = log.gets
end
status = regex_status.match(line)[1]
url_matcher = regex_url.match(log.gets)
puts "Processing (#{conversation_id}): #{url_matcher[0]}"
ssl = url_matcher[1] == "https"
host_name = url_matcher[2]
port = url_matcher[3]
path = url_matcher[4].chomp
query = url_matcher[5]
if host_name.match("#{target}$").nil? == true then
puts("Not the selected target, skipping...")
next
end
if(target_ips.has_key?(host_name)) then
host = target_ips[host_name]
else
ip = Resolv.getaddress(host_name)
target_ips[host_name] = ip
host = ip
end
# set the parameters in the insert query
insert_statement.bind_param("host", host)
insert_statement.bind_param("port", port)
insert_statement.bind_param("ssl", ssl)
insert_statement.bind_param("meth", method)
insert_statement.bind_param("path", path)
insert_statement.bind_param("query", query)
insert_statement.bind_param("respcode", status)
insert_statement.bind_param("created", date_time)
insert_statement.bind_param("respcode", status)
#Open the files with the requests and the responses...
request_filename = "#{ws_directory+File::SEPARATOR}conversations#{File::SEPARATOR+conversation_id}-request"
puts("Reading #{request_filename}")
request_file = File.open(request_filename, "rb")
# Analyse the request
request_header = ""
request_file.gets # we don't need the return code...
while(request_line = request_file.gets) do
request_header += request_line
break if request_line == "\r\n"
end
request_body = ""
while(request_line = request_file.gets) do
request_body += request_line
end
insert_statement.bind_param("headers", request_header)
insert_statement.bind_param("body", request_body)
request_file.close()
response_filename = "#{ws_directory+File::SEPARATOR}conversations#{File::SEPARATOR+conversation_id}-response"
puts("Reading #{response_filename}")
response_file = File.open("#{ws_directory+File::SEPARATOR}conversations#{File::SEPARATOR+conversation_id}-response", "rb")
# scip the first line
response_file.gets
# Analyse the response
response_header = ""
while(response_line = response_file.gets) do
response_header += response_line
break if response_line == "\r\n"
end
response_body = response_file.read
insert_statement.bind_param("resphead", response_header)
insert_statement.bind_param("response", response_body)
response_file.close()
insert_statement.execute()
end
end
end

View File

@ -1,80 +0,0 @@
#!/usr/bin/env ruby
#
# $Id$
#
# This script generates module changelogs
#
# $Revision$
#
msfbase = __FILE__
while File.symlink?(msfbase)
msfbase = File.expand_path(File.readlink(msfbase), File.dirname(msfbase))
end
$:.unshift(File.expand_path(File.join(File.dirname(msfbase), '..', 'lib')))
require 'msfenv'
$:.unshift(ENV['MSF_LOCAL_LIB']) if ENV['MSF_LOCAL_LIB']
require 'rex'
require 'msf/ui'
require 'msf/base'
def usage
$stderr.puts "#{$0} <src rev> [dst rev]"
exit(0)
end
src_rev = ARGV.shift || usage()
dst_rev = ARGV.shift || "HEAD"
$stderr.puts "[*] Extracting changes from Subversion..."
data = `svn diff -r #{src_rev}:#{dst_rev} --summarize https://www.metasploit.com/svn/framework3/trunk/modules/`
# Always disable the database (we never need it just to list module
# information).
framework_opts = { 'DisableDatabase' => true }
# Initialize the simplified framework instance.
framework = Msf::Simple::Framework.create(framework_opts)
madd = []
mdel = []
mmod = []
data.each_line do |line|
action, mname = line.strip.split(/\s+/, 2)
mname = mname.gsub(/^.*modules\//, '').gsub('exploits', 'exploit').gsub(/\.rb$/, '')
case action
when /^A/
# Added a new module
m = framework.modules.create(mname)
if m
madd << "\"#{m.name}\":http://www.metasploit.com/modules/#{mname}"
end
when /^D/
# Deleted a module
mdel << mname
when /^M/
# Modified a module
# Added a new module
m = framework.modules.create(mname)
if m
mmod << "\"#{m.name}\":http://www.metasploit.com/modules/#{mname}"
end
end
end
$stdout.puts "h2. New Modules\n\n"
madd.each { |x| $stdout.puts x }
$stdout.puts "\nh2. Modified Modules\n\n"
mmod.each { |x| $stdout.puts x }
$stdout.puts "\nh2. Removed Modules\n\n"
mdel.each { |x| $stdout.puts "* modules/#{x}" }

View File

@ -237,7 +237,7 @@ class Msftidy
def check_comment_splat
if @source =~ /^# This file is part of the Metasploit Framework and may be subject to/
warn("Module contains old license comment, use tools/dev/resplat.rb <filename>.")
warn("Module contains old license comment.")
end
end