up to date
commit
1e3466d809
|
@ -0,0 +1,66 @@
|
||||||
|
wchen-r7 <wchen-r7@github> sinn3r <msfsinn3r@gmail.com> # aka sinn3r
|
||||||
|
wchen-r7 <wchen-r7@github> Wei Chen <Wei_Chen@rapid7.com>
|
||||||
|
wchen-r7 <wchen-r7@github> sinn3r <wei_chen@rapid7.com>
|
||||||
|
todb-r7 <todb-r7@github> Tod Beardsley <todb@metasploit.com>
|
||||||
|
jvazquez-r7 <jvazquez-r7@github> jvazquez-r7 <juan.vazquez@metasploit.com>
|
||||||
|
hmoore-r7 <hmoore-r7@github> HD Moore <hd_moore@rapid7.com>
|
||||||
|
hmoore-r7 <hmoore-r7@github> HD Moore <hdm@digitaloffense.net>
|
||||||
|
jlee-r7 <jlee-r7@github> James Lee <egypt@metasploit.com> # aka egypt
|
||||||
|
jlee-r7 <jlee-r7@github> James Lee <James_Lee@rapid7.com>
|
||||||
|
dmaloney-r7 <dmaloney-r7@github> David Maloney <DMaloney@rapid7.com> # aka TheLightCosine
|
||||||
|
dmaloney-r7 <dmaloney-r7@github> David Maloney <David_Maloney@rapid7.com>
|
||||||
|
joev-r7 <joev-r7@github> Joe Vennix <Joe_Vennix@rapid7.com>
|
||||||
|
bturner-r7 <bturner-r7@github> Brandon Turner <brandon_turner@rapid7.com>
|
||||||
|
ecarey-r7 <ecarey-r7@github> Erran Carey <e@ipwnstuff.com>
|
||||||
|
limhoff-r7 <limhoff-r7@github> Luke Imhoff <luke_imhoff@rapid7.com>
|
||||||
|
todb-r7 <todb-r7@github> Tod Beardsley <tod_beardsley@rapid7.com>
|
||||||
|
tasos-r7 <tasos-r7@github> Tasos Laskos <Tasos_Laskos@rapid7.com>
|
||||||
|
shuckins-r7 <shuckins-r7@github> Samuel Huckins <samuel_huckins@rapid7.com>
|
||||||
|
bperry-r7 <bperry-r7@github> Brandon Perry <bperry@bperry-rapid7.(none)>
|
||||||
|
bperry-r7 <bperry-r7@github> Brandon Perry <bperry.volatile@gmail.com>
|
||||||
|
|
||||||
|
# Above this line are current Rapid7 employees Below this paragraph are
|
||||||
|
# volunteers, former employees, and potential Rapid7 employees who, at
|
||||||
|
# one time or another, had some largeish number of commits landed on
|
||||||
|
# rapid7/metasploit-framework master branch. This should be refreshed
|
||||||
|
# periodically. If you're on this list and would like to not be, just
|
||||||
|
# let todb@metasploit.com know.
|
||||||
|
|
||||||
|
Meatballs1 <Meatballs1@github> Meatballs <eat_meatballs@hotmail.co.uk>
|
||||||
|
Meatballs1 <Meatballs1@github> Meatballs1 <eat_meatballs@hotmail.co.uk>
|
||||||
|
Meatballs1 <Meatballs1@github> Ben Campbell <eat_meatballs@hotmail.co.uk>
|
||||||
|
jduck <jduck@github> Joshua Drake <github.jdrake@qoop.org>
|
||||||
|
jcran <jcran@github> Jonathan Cran <jcran@rapid7.com>
|
||||||
|
jcran <jcran@github> Jonathan Cran <jcran@0x0e.org>
|
||||||
|
bannedit <bannedit@github> David Rude <bannedit0@gmail.com>
|
||||||
|
darkoperator <darkoperator@github> Carlos Perez <carlos_perez@darkoperator.com>
|
||||||
|
scriptjunkie <scriptjunkie@github> Matt Weeks <scriptjunkie@scriptjunkie.us>
|
||||||
|
skape <skape@???> Matt Miller <mmiller@hick.org>
|
||||||
|
ceballosm <ceballosm@github> Mario Ceballos <mc@metasploit.com>
|
||||||
|
swtornio <swtornio@github> Steve Tornio <swtornio@gmail.com>
|
||||||
|
kris <kris@???> kris <>
|
||||||
|
spoonm <spoonm@github> Spoon M <spoonm@gmail.com>
|
||||||
|
fab <fab@???> fab <> # fab at revhosts.net (Fabrice MOURRON)
|
||||||
|
efraintorres <efraintorres@github> efraintorres <etlownoise@gmail.com>
|
||||||
|
efraintorres <efraintorres@github> et <>
|
||||||
|
r3dy <r3dy@github> Royce Davis <r3dy@Royces-MacBook-Pro.local>
|
||||||
|
r3dy <r3dy@github> Royce Davis <royce.e.davis@gmail.com>
|
||||||
|
mubix <mubix@github> Rob Fuller <jd.mubix@gmail.com>
|
||||||
|
nmonkee <nmonkee@github> nmonkee <dave@northern-monkee.co.uk>
|
||||||
|
rsmudge <rsmudge@github> Raphael Mudge <rsmudge@gmail.com> # Aka `butane
|
||||||
|
m-1-k-3 <m-1-k-3@github> m-1-k-3 <michael.messner@integralis.com>
|
||||||
|
kost <kost@github> Vlatko Kosturjak <kost@linux.hr>
|
||||||
|
ohdae <ohdae@github> ohdae <bindshell@live.com>
|
||||||
|
schierlm <schierlm@github> Michael Schierl <schierlm@gmx.de> # Aka mihi
|
||||||
|
corelanc0d3er <corelanc0d3er@github> Peter Van Eeckhoutte (corelanc0d3r) <peter.ve@corelan.be>
|
||||||
|
corelanc0d3er <corelanc0d3er@github> corelanc0d3r <peter.ve@corelan.be>
|
||||||
|
kernelsmith <kernelsmith@github> Joshua Smith <kernelsmith@kernelsmith.com>
|
||||||
|
kernelsmith <kernelsmith@github> kernelsmith <kernelsmith@kernelsmith>
|
||||||
|
h0ng10 <h0ng10@github> h0ng10 <hansmartin.muench@googlemail.com>
|
||||||
|
h0ng10 <h0ng10@github> Hans-Martin Münch <hansmartin.muench@googlemail.com>
|
||||||
|
nullbind <nullbind@github> nullbind <scott.sutherland@nullbind.com>
|
||||||
|
nevdull77 <nevdull77@github> Patrik Karlsson <patrik@cqure.net>
|
||||||
|
jgor <jgor@github> jgor <jgor@indiecom.org>
|
||||||
|
ChrisJohnRiley <ChrisJohnRiley@github> Chris John Riley <chris.riley@c22.cc>
|
||||||
|
ChrisJohnRiley <ChrisJohnRiley@github> Chris John Riley <reg@c22.cc>
|
||||||
|
FireFart <FireFart@github> Christian Mehlmauer <firefart@gmail.com>
|
|
@ -0,0 +1,70 @@
|
||||||
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
|
# The committer_count.rb is a way to tell who's been active over the last
|
||||||
|
# given period. It's of course, quite coarse -- someone with 10 commits in a day
|
||||||
|
# may or may not be more productive than someone with 3, but over long enough
|
||||||
|
# periods, it's an okay metric to measure involvement with the project, since
|
||||||
|
# large and small commits will tend to average out.
|
||||||
|
#
|
||||||
|
# Note that this includes merge commits by default (which usually means at least
|
||||||
|
# code review happened, so it's still a measure of work). You can get different
|
||||||
|
# stats by ignoring merge commits, once option parsing is implemented.
|
||||||
|
#
|
||||||
|
# Usage: ./committer_count.rb 2011-01-01 | head -10 # Since a particular date
|
||||||
|
# ./committer_count.rb 1y | head -10 # Last year
|
||||||
|
# ./committer_count.rb 6m | head -10 # Last six months
|
||||||
|
# ./committer_count.rb 12w | head -10 # Last twelve weeks
|
||||||
|
# ./committer_count.rb 100d | head -10 # Last hundred days
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# History with colors and e-mail addresses (respecting .mailmap):
|
||||||
|
# git log --pretty=format:"%C(white)%ad %C(yellow)%h %Cblue'%aN' <%aE> %Cgreen%f%Creset" --date=short
|
||||||
|
|
||||||
|
class GitLogLine < Struct.new(:date, :hash, :author, :message)
|
||||||
|
end
|
||||||
|
|
||||||
|
@history = `git log --pretty=format:"%ad %h '%aN' %f" --date=short --date-order`
|
||||||
|
@recent_history = []
|
||||||
|
@commits_by_author = {}
|
||||||
|
|
||||||
|
def parse_date(date)
|
||||||
|
case date
|
||||||
|
when /([0-9]+)y(ear)?s?/
|
||||||
|
seconds = $1.to_i* (60*60*24*365.25)
|
||||||
|
calc_date = (Time.now - seconds).strftime("%Y-%m-%d")
|
||||||
|
when /([0-9]+)m(onth)?s?/
|
||||||
|
seconds = $1.to_i* (60*60*24*(365.25 / 12))
|
||||||
|
calc_date = (Time.now - seconds).strftime("%Y-%m-%d")
|
||||||
|
when /([0-9]+)w(eek)?s?/
|
||||||
|
seconds = $1.to_i* (60*60*24*7)
|
||||||
|
calc_date = (Time.now - seconds).strftime("%Y-%m-%d")
|
||||||
|
when /([0-9]+)d(ay)?s?/
|
||||||
|
seconds = $1.to_i* (60*60*24)
|
||||||
|
calc_date = (Time.now - seconds).strftime("%Y-%m-%d")
|
||||||
|
else
|
||||||
|
calc_date = Time.new(date).strftime("%Y-%m-%d")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
date = ARGV[0] || "2005-03-22" # A day before the first SVN commit.
|
||||||
|
calc_date = parse_date(date)
|
||||||
|
|
||||||
|
@history.each_line do |line|
|
||||||
|
parsed_line = line.match(/^([^\s+]+)\s(.{7,})\s'(.*)'\s(.*)[\r\n]*$/)
|
||||||
|
next unless parsed_line
|
||||||
|
break if calc_date == parsed_line[1]
|
||||||
|
@recent_history << GitLogLine.new(*parsed_line[1,4])
|
||||||
|
end
|
||||||
|
|
||||||
|
@recent_history.each do |logline|
|
||||||
|
@commits_by_author[logline.author] ||= []
|
||||||
|
@commits_by_author[logline.author] << logline.message
|
||||||
|
end
|
||||||
|
|
||||||
|
puts "Commits since #{calc_date}"
|
||||||
|
puts "-" * 50
|
||||||
|
|
||||||
|
@commits_by_author.sort_by {|k,v| v.size}.reverse.each do |k,v|
|
||||||
|
puts "%-25s %3d" % [k,v.size]
|
||||||
|
end
|
||||||
|
|
|
@ -0,0 +1,64 @@
|
||||||
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
|
# Check the commit history of a module or tree of modules.
|
||||||
|
# and sort by number of commits.
|
||||||
|
#
|
||||||
|
# Usage: tools/module_commits.rb [module dir | module fname]
|
||||||
|
|
||||||
|
require 'find'
|
||||||
|
|
||||||
|
class GitLogLine < Struct.new(:date, :hash, :author, :message)
|
||||||
|
end
|
||||||
|
|
||||||
|
class CommitHistory < Struct.new(:fname, :total, :authors)
|
||||||
|
end
|
||||||
|
|
||||||
|
msfbase = __FILE__
|
||||||
|
while File.symlink?(msfbase)
|
||||||
|
msfbase = File.expand_path(File.readlink(msfbase), File.dirname(msfbase))
|
||||||
|
end
|
||||||
|
|
||||||
|
dir = ARGV[0] || File.join(msfbase, "modules", "exploits")
|
||||||
|
raise ArgumentError, "Need a filename or directory" unless (dir and File.readable? dir)
|
||||||
|
|
||||||
|
def check_commit_history(fname)
|
||||||
|
|
||||||
|
git_cmd = `git log --pretty=format:"%ad %h '%aN' %f" --date=short --date-order #{fname}`
|
||||||
|
commit_history = []
|
||||||
|
commits_by_author = {}
|
||||||
|
|
||||||
|
git_cmd.each_line do |line|
|
||||||
|
parsed_line = line.match(/^([^\s+]+)\s(.{7,})\s'(.*)'\s(.*)[\r\n]*$/)
|
||||||
|
commit_history << GitLogLine.new(*parsed_line[1,4])
|
||||||
|
end
|
||||||
|
|
||||||
|
commit_history.each do |logline|
|
||||||
|
commits_by_author[logline.author] ||= []
|
||||||
|
commits_by_author[logline.author] << logline.message
|
||||||
|
end
|
||||||
|
|
||||||
|
puts "Commits for #{fname} #{commit_history.size}"
|
||||||
|
puts "-" * 72
|
||||||
|
|
||||||
|
commits_by_author.sort_by {|k,v| v.size}.reverse.each do |k,v|
|
||||||
|
puts "%-25s %3d" % [k,v.size]
|
||||||
|
end
|
||||||
|
|
||||||
|
this_module = CommitHistory.new(fname,commit_history.size,commits_by_author)
|
||||||
|
return this_module
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
@module_stats = []
|
||||||
|
|
||||||
|
Find.find(dir) do |fname|
|
||||||
|
next unless fname =~ /rb$/
|
||||||
|
@module_stats << check_commit_history(fname)
|
||||||
|
end
|
||||||
|
|
||||||
|
puts "=" * 72
|
||||||
|
puts "Sorted modules by commit counts"
|
||||||
|
|
||||||
|
@module_stats.sort_by {|m| m.total }.reverse.each do |m|
|
||||||
|
puts "%-60s %d" % [m.fname, m.total]
|
||||||
|
end
|
|
@ -0,0 +1,49 @@
|
||||||
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
|
# Lists the current count of modules, by type, and outputs a bare CSV.
|
||||||
|
|
||||||
|
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 'fastlib'
|
||||||
|
require 'msfenv'
|
||||||
|
|
||||||
|
$:.unshift(ENV['MSF_LOCAL_LIB']) if ENV['MSF_LOCAL_LIB']
|
||||||
|
|
||||||
|
require 'rex'
|
||||||
|
require 'msf/ui'
|
||||||
|
require 'msf/base'
|
||||||
|
|
||||||
|
# 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)
|
||||||
|
Indent = ' '
|
||||||
|
|
||||||
|
i = 0
|
||||||
|
module_types = {
|
||||||
|
:exploit => 0,
|
||||||
|
:auxiliary => 0,
|
||||||
|
:post => 0,
|
||||||
|
:payload => 0,
|
||||||
|
:encoder => 0,
|
||||||
|
:nop => 0
|
||||||
|
}
|
||||||
|
|
||||||
|
$framework.modules.each do |name, mod|
|
||||||
|
this_mod = mod.new
|
||||||
|
[:exploit, :auxiliary, :post, :payload, :encoder, :nop].each do |meth|
|
||||||
|
interrogative = "#{meth}?".intern
|
||||||
|
if this_mod.send(interrogative)
|
||||||
|
module_types[meth] += 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
puts module_types.keys.map {|k| k.to_s}.join(",")
|
||||||
|
puts module_types.values.join(",")
|
Loading…
Reference in New Issue