{"action":"created","comment":{"url":"https://api.github.com/repos/rapid7/metasploit-framework/pulls/comments/36941150","id":36941150,"diff_hunk":"@@ -0,0 +1,273 @@\n+\n+##\n+# This module requires Metasploit: http://metasploit.com/download\n+# Current source: https://github.com/rapid7/metasploit-framework\n+##\n+\n+require 'msf/core'\n+require 'net/dns/resolver'\n+require 'rex'\n+\n+class Metasploit3 < Msf::Auxiliary\n+  include Msf::Auxiliary::Report\n+\n+  def initialize(info = {})\n+    super(update_info(info,\n+      'Name'         => 'Collect DNS Records Information',\n+      'Description'  => %q{\n+        This module can collect dns records (a, aaaa, mx, ns and so on).\n+        Dns query and dns bruteforce will be used.\n+      },\n+      'Author'       => [ 'Nixawk' ],\n+      'License'      => MSF_LICENSE\n+    ))\n+\n+    register_options(\n+      [\n+        OptString.new('DOMAIN', [ true, \"The target domain name\" ]),\n+        OptAddress.new('NS', [ false, \"Specify nameserver for dns queries\" ]),\n+        OptPath.new('WORDLIST', [ false, \"Wordlist file for subdomain bruteforce\", \"\"]),\n+        OptInt.new('TIMEOUT', [ false, \"Dns response timeout\", \"4\"]),\n+        OptInt.new('THREADS', [ false, \"Number of threads for subdomain bruteforce\", 1]),\n+        OptInt.new('RETRIES', [ false, \"Times to retry (nameservers give us no response)\", 2]),\n+        OptInt.new('RETRY_INTERVAL', [ false, \"Times to wait between first and second try)\", 2]),\n+      ], self.class)\n+\n+  end\n+\n+  def run\n+    domain = datastore['DOMAIN'].to_s\n+    nameserver = datastore['NS'].to_s\n+    wordlist = datastore['WORDLIST'].to_s\n+    threads = datastore['THREADS'].to_i\n+    threads = 1 if threads == 0\n+\n+    @dns = Net::DNS::Resolver.new()   # initialize it with args\n+\n+    retry_interval = datastore['RETRY_INTERVAL'].to_i\n+    @dns.retry_interval = 1 if retry_interval == 0\n+\n+    udp_timeout = datastore['TIMEOUT'].to_i\n+    @dns.udp_timeout = 4 if udp_timeout == 0\n+\n+    retry_number = datastore['RETRIES'].to_i\n+    @dns.retry_number = 2 if retry_number == 0\n+\n+    dns_ns_set(nameserver) unless nameserver.blank?\n+    dns_wildcard(domain)\n+    record = get_ns(domain, \"NS\")\n+\n+    get_a(domain, \"A\")\n+    get_a(domain, \"AAAA\")\n+    get_cname(domain, \"CNAME\")\n+    get_mx(domain, \"MX\")\n+    get_soa(domain, \"SOA\")\n+    get_txt(domain, \"TXT\")\n+\n+    dns_bruteforce(domain, wordlist, threads) unless wordlist.blank?\n+  end\n+\n+  def dns_ns_set(nameserver)\n+    print_status(\"set dns nameserver : #{nameserver}\")\n+    @dns.nameserver = (nameserver.to_s)\n+  end\n+\n+  def dns_query(domain, type=\"A\")\n+    print_status(\"enumerate [#{domain}] - #{type} record \")\n+    @dns.query(domain, type)\n+  end\n+\n+  def dns_wildcard(domain)\n+    prefix = Rex::Text::rand_text_alpha(30) # random domain for dns wildcard check\n+    result = get_a(\"#{prefix}.#{domain}\")\n+\n+    unless result[:address].blank?\n+      print_good(\"dns wildcard is enable / dns server is faked\")\n+      return false\n+    else\n+      print_good(\"dns wildcard is disable\")\n+      return true\n+    end\n+  end\n+\n+  def dns_bruteforce(domain, wordlist, threadnum)\n+    queue = ::Queue.new()\n+\n+    File.foreach(wordlist) do |line|\n+        queue << \"#{line.chomp}.#{domain}\"\n+    end\n+\n+    while(not queue.empty?)\n+      threads = []\n+      1.upto(threadnum.to_i) do\n+        threads << framework.threads.spawn(\"Module(#{self.refname})-#{domain}\", false, queue.shift) do |target|\n+          Thread.current.kill if not target\n+\n+          get_a(target, \"A\")\n+        end\n+      end\n+      threads.map{|x| x.join}\n+    end\n+  end\n+\n+  def db_filter(host)\n+    framework.db.hosts.each do |dbhost|\n+      if dbhost.address.to_s.include? host.to_s\n+        next\n+      else\n+        return false\n+      end\n+    end\n+    return true\n+  end\n+\n+  def db_record(domain, temp)\n+      record = {}\n+      record[:host] = domain\n+      record[:type] = type\n+      record[:address] = temp.join(\", \")\n+      return record","path":"modules/auxiliary/gather/dns_records.rb","position":129,"original_position":129,"commit_id":"5c6267e1c8cafe580701bd851c82dbfb87092de2","original_commit_id":"5c6267e1c8cafe580701bd851c82dbfb87092de2","user":{"login":"espreto","id":1926764,"avatar_url":"https://avatars.githubusercontent.com/u/1926764?v=3","gravatar_id":"","url":"https://api.github.com/users/espreto","html_url":"https://github.com/espreto","followers_url":"https://api.github.com/users/espreto/followers","following_url":"https://api.github.com/users/espreto/following{/other_user}","gists_url":"https://api.github.com/users/espreto/gists{/gist_id}","starred_url":"https://api.github.com/users/espreto/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/espreto/subscriptions","organizations_url":"https://api.github.com/users/espreto/orgs","repos_url":"https://api.github.com/users/espreto/repos","events_url":"https://api.github.com/users/espreto/events{/privacy}","received_events_url":"https://api.github.com/users/espreto/received_events","type":"User","site_admin":false},"body":"```return``` is redundant here.","created_at":"2015-08-13T05:03:39Z","updated_at":"2015-08-13T05:03:39Z","html_url":"https://github.com/rapid7/metasploit-framework/pull/5824#discussion_r36941150","pull_request_url":"https://api.github.com/repos/rapid7/metasploit-framework/pulls/5824","_links":{"self":{"href":"https://api.github.com/repos/rapid7/metasploit-framework/pulls/comments/36941150"},"html":{"href":"https://github.com/rapid7/metasploit-framework/pull/5824#discussion_r36941150"},"pull_request":{"href":"https://api.github.com/repos/rapid7/metasploit-framework/pulls/5824"}}},"pull_request":{"url":"https://api.github.com/repos/rapid7/metasploit-framework/pulls/5824","id":42201575,"html_url":"https://github.com/rapid7/metasploit-framework/pull/5824","diff_url":"https://github.com/rapid7/metasploit-framework/pull/5824.diff","patch_url":"https://github.com/rapid7/metasploit-framework/pull/5824.patch","issue_url":"https://api.github.com/repos/rapid7/metasploit-framework/issues/5824","number":5824,"state":"open","locked":false,"title":"collect dns records (a, aaaa, mx, ns, subdomains)","user":{"login":"all3g","id":7352479,"avatar_url":"https://avatars.githubusercontent.com/u/7352479?v=3","gravatar_id":"","url":"https://api.github.com/users/all3g","html_url":"https://github.com/all3g","followers_url":"https://api.github.com/users/all3g/followers","following_url":"https://api.github.com/users/all3g/following{/other_user}","gists_url":"https://api.github.com/users/all3g/gists{/gist_id}","starred_url":"https://api.github.com/users/all3g/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/all3g/subscriptions","organizations_url":"https://api.github.com/users/all3g/orgs","repos_url":"https://api.github.com/users/all3g/repos","events_url":"https://api.github.com/users/all3g/events{/privacy}","received_events_url":"https://api.github.com/users/all3g/received_events","type":"User","site_admin":false},"body":"In order to collect dns records in a simple way,  **Carlos Perez** creates [dns_bruteforce](https://github.com/rapid7/metasploit-framework/blob/master/modules/auxiliary/gather/dns_bruteforce.rb), [dns_cache_scraper](https://github.com/rapid7/metasploit-framework/blob/master/modules/auxiliary/gather/dns_cache_scraper.rb), [dns_info](https://github.com/rapid7/metasploit-framework/blob/master/modules/auxiliary/gather/dns_info.rb), [dns_reverse_lookup](https://github.com/rapid7/metasploit-framework/blob/master/modules/auxiliary/gather/dns_reverse_lookup.rb), [dns_srv_enum](https://github.com/rapid7/metasploit-framework/blob/master/modules/auxiliary/gather/dns_srv_enum.rb). \r\n\r\nDuring information gathering, we find an [issue](https://github.com/rapid7/metasploit-framework/issues/5816), and so [dns_record](https://github.com/all3g/metasploit-framework/blob/master/modules/auxiliary/gather/dns_records.rb) is created. Please check it. Thanks. \r\n\r\n```\r\nmsf auxiliary(dns_records) > show options \r\n\r\nModule options (auxiliary/gather/dns_records):\r\n\r\n   Name            Current Setting  Required  Description\r\n   ----            ---------------  --------  -----------\r\n   DOMAIN          google.com       yes       The target domain name\r\n   NS              8.8.8.8          no        Specify nameserver for dns queries\r\n   RETRIES         2                no        Times to retry (nameservers give us no response)\r\n   RETRY_INTERVAL  2                no        Times to wait between first and second try)\r\n   THREADS         1                no        Number of threads for subdomain bruteforce\r\n   TIMEOUT         4                no        Dns response timeout\r\n   WORDLIST                         no        Wordlist file for subdomain bruteforce\r\n\r\nmsf auxiliary(dns_records) > run\r\n\r\n[*] set dns nameserver : 8.8.8.8\r\n[*] enumerate [cHfBTlZQWqTXkJcpaIbknkqzsMVfHt.google.com] - A record \r\n[+] dns wildcard is disable\r\n[*] enumerate [google.com] - NS record \r\n[+] google.com: ns3.google.com.\r\n[+] google.com: ns2.google.com.\r\n[+] google.com: ns4.google.com.\r\n[+] google.com: ns1.google.com.\r\n[*] enumerate [google.com] - A record \r\n[+] google.com: 216.58.221.78\r\n[*] enumerate [google.com] - AAAA record \r\n[*] enumerate [google.com] - CNAME record \r\n[*] enumerate [google.com] - MX record \r\n[+] google.com: aspmx.l.google.com.\r\n[+] google.com: alt1.aspmx.l.google.com.\r\n[+] google.com: alt2.aspmx.l.google.com.\r\n[+] google.com: alt3.aspmx.l.google.com.\r\n[+] google.com: alt4.aspmx.l.google.com.\r\n[*] enumerate [google.com] - SOA record \r\n[+] google.com: ns1.google.com.\r\n[*] enumerate [google.com] - TXT record \r\n[+] google.com: v=spf1 include:_spf.google.com ~all \r\n[*] Auxiliary module execution completed\r\nmsf auxiliary(dns_records) > hosts \r\n\r\nHosts\r\n=====\r\n\r\naddress         mac  name  os_name  os_flavor  os_sp  purpose  info  comments\r\n-------         ---  ----  -------  ---------  -----  -------  ----  --------\r\n74.125.20.27               Unknown                    device         \r\n74.125.68.27               Unknown                    device         \r\n74.125.198.27              Unknown                    device         \r\n173.194.72.26              Unknown                    device         \r\n173.194.205.27             Unknown                    device         \r\n216.58.221.78              Unknown                    device         google.com\r\n216.239.32.10              Unknown                    device         \r\n216.239.34.10              Unknown                    device         \r\n216.239.36.10              Unknown                    device         \r\n216.239.38.10              Unknown                    device         \r\n\r\nmsf auxiliary(dns_records) > services \r\n\r\nServices\r\n========\r\n\r\nhost            port  proto  name  state  info\r\n----            ----  -----  ----  -----  ----\r\n74.125.20.27    25    tcp    smtp  open   \r\n74.125.68.27    25    tcp    smtp  open   \r\n74.125.198.27   25    tcp    smtp  open   \r\n173.194.72.26   25    tcp    smtp  open   \r\n173.194.205.27  25    tcp    smtp  open   \r\n216.58.221.78   53    udp    dns   open   v=spf1 include:_spf.google.com ~all \r\n216.239.32.10   53    udp    dns   open   nameserver\r\n216.239.34.10   53    udp    dns   open   nameserver\r\n216.239.36.10   53    udp    dns   open   nameserver\r\n216.239.38.10   53    udp    dns   open   nameserver\r\n```","created_at":"2015-08-12T03:35:47Z","updated_at":"2015-08-13T05:03:39Z","closed_at":null,"merged_at":null,"merge_commit_sha":"d081e25e0b2cfc57b751a6111b02892864a7cee2","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/rapid7/metasploit-framework/pulls/5824/commits","review_comments_url":"https://api.github.com/repos/rapid7/metasploit-framework/pulls/5824/comments","review_comment_url":"https://api.github.com/repos/rapid7/metasploit-framework/pulls/comments{/number}","comments_url":"https://api.github.com/repos/rapid7/metasploit-framework/issues/5824/comments","statuses_url":"https://api.github.com/repos/rapid7/metasploit-framework/statuses/5c6267e1c8cafe580701bd851c82dbfb87092de2","head":{"label":"all3g:master","ref":"master","sha":"5c6267e1c8cafe580701bd851c82dbfb87092de2","user":{"login":"all3g","id":7352479,"avatar_url":"https://avatars.githubusercontent.com/u/7352479?v=3","gravatar_id":"","url":"https://api.github.com/users/all3g","html_url":"https://github.com/all3g","followers_url":"https://api.github.com/users/all3g/followers","following_url":"https://api.github.com/users/all3g/following{/other_user}","gists_url":"https://api.github.com/users/all3g/gists{/gist_id}","starred_url":"https://api.github.com/users/all3g/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/all3g/subscriptions","organizations_url":"https://api.github.com/users/all3g/orgs","repos_url":"https://api.github.com/users/all3g/repos","events_url":"https://api.github.com/users/all3g/events{/privacy}","received_events_url":"https://api.github.com/users/all3g/received_events","type":"User","site_admin":false},"repo":{"id":30650192,"name":"metasploit-framework","full_name":"all3g/metasploit-framework","owner":{"login":"all3g","id":7352479,"avatar_url":"https://avatars.githubusercontent.com/u/7352479?v=3","gravatar_id":"","url":"https://api.github.com/users/all3g","html_url":"https://github.com/all3g","followers_url":"https://api.github.com/users/all3g/followers","following_url":"https://api.github.com/users/all3g/following{/other_user}","gists_url":"https://api.github.com/users/all3g/gists{/gist_id}","starred_url":"https://api.github.com/users/all3g/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/all3g/subscriptions","organizations_url":"https://api.github.com/users/all3g/orgs","repos_url":"https://api.github.com/users/all3g/repos","events_url":"https://api.github.com/users/all3g/events{/privacy}","received_events_url":"https://api.github.com/users/all3g/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/all3g/metasploit-framework","description":"Metasploit Framework","fork":true,"url":"https://api.github.com/repos/all3g/metasploit-framework","forks_url":"https://api.github.com/repos/all3g/metasploit-framework/forks","keys_url":"https://api.github.com/repos/all3g/metasploit-framework/keys{/key_id}","collaborators_url":"https://api.github.com/repos/all3g/metasploit-framework/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/all3g/metasploit-framework/teams","hooks_url":"https://api.github.com/repos/all3g/metasploit-framework/hooks","issue_events_url":"https://api.github.com/repos/all3g/metasploit-framework/issues/events{/number}","events_url":"https://api.github.com/repos/all3g/metasploit-framework/events","assignees_url":"https://api.github.com/repos/all3g/metasploit-framework/assignees{/user}","branches_url":"https://api.github.com/repos/all3g/metasploit-framework/branches{/branch}","tags_url":"https://api.github.com/repos/all3g/metasploit-framework/tags","blobs_url":"https://api.github.com/repos/all3g/metasploit-framework/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/all3g/metasploit-framework/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/all3g/metasploit-framework/git/refs{/sha}","trees_url":"https://api.github.com/repos/all3g/metasploit-framework/git/trees{/sha}","statuses_url":"https://api.github.com/repos/all3g/metasploit-framework/statuses/{sha}","languages_url":"https://api.github.com/repos/all3g/metasploit-framework/languages","stargazers_url":"https://api.github.com/repos/all3g/metasploit-framework/stargazers","contributors_url":"https://api.github.com/repos/all3g/metasploit-framework/contributors","subscribers_url":"https://api.github.com/repos/all3g/metasploit-framework/subscribers","subscription_url":"https://api.github.com/repos/all3g/metasploit-framework/subscription","commits_url":"https://api.github.com/repos/all3g/metasploit-framework/commits{/sha}","git_commits_url":"https://api.github.com/repos/all3g/metasploit-framework/git/commits{/sha}","comments_url":"https://api.github.com/repos/all3g/metasploit-framework/comments{/number}","issue_comment_url":"https://api.github.com/repos/all3g/metasploit-framework/issues/comments{/number}","contents_url":"https://api.github.com/repos/all3g/metasploit-framework/contents/{+path}","compare_url":"https://api.github.com/repos/all3g/metasploit-framework/compare/{base}...{head}","merges_url":"https://api.github.com/repos/all3g/metasploit-framework/merges","archive_url":"https://api.github.com/repos/all3g/metasploit-framework/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/all3g/metasploit-framework/downloads","issues_url":"https://api.github.com/repos/all3g/metasploit-framework/issues{/number}","pulls_url":"https://api.github.com/repos/all3g/metasploit-framework/pulls{/number}","milestones_url":"https://api.github.com/repos/all3g/metasploit-framework/milestones{/number}","notifications_url":"https://api.github.com/repos/all3g/metasploit-framework/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/all3g/metasploit-framework/labels{/name}","releases_url":"https://api.github.com/repos/all3g/metasploit-framework/releases{/id}","created_at":"2015-02-11T13:59:39Z","updated_at":"2015-04-29T07:56:26Z","pushed_at":"2015-08-12T09:44:36Z","git_url":"git://github.com/all3g/metasploit-framework.git","ssh_url":"git@github.com:all3g/metasploit-framework.git","clone_url":"https://github.com/all3g/metasploit-framework.git","svn_url":"https://github.com/all3g/metasploit-framework","homepage":"http://www.metasploit.com/","size":276143,"stargazers_count":0,"watchers_count":0,"language":"Ruby","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"rapid7:master","ref":"master","sha":"80f415074bee617fd874ba620586afd96bbd48ad","user":{"login":"rapid7","id":1013671,"avatar_url":"https://avatars.githubusercontent.com/u/1013671?v=3","gravatar_id":"","url":"https://api.github.com/users/rapid7","html_url":"https://github.com/rapid7","followers_url":"https://api.github.com/users/rapid7/followers","following_url":"https://api.github.com/users/rapid7/following{/other_user}","gists_url":"https://api.github.com/users/rapid7/gists{/gist_id}","starred_url":"https://api.github.com/users/rapid7/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rapid7/subscriptions","organizations_url":"https://api.github.com/users/rapid7/orgs","repos_url":"https://api.github.com/users/rapid7/repos","events_url":"https://api.github.com/users/rapid7/events{/privacy}","received_events_url":"https://api.github.com/users/rapid7/received_events","type":"Organization","site_admin":false},"repo":{"id":2293158,"name":"metasploit-framework","full_name":"rapid7/metasploit-framework","owner":{"login":"rapid7","id":1013671,"avatar_url":"https://avatars.githubusercontent.com/u/1013671?v=3","gravatar_id":"","url":"https://api.github.com/users/rapid7","html_url":"https://github.com/rapid7","followers_url":"https://api.github.com/users/rapid7/followers","following_url":"https://api.github.com/users/rapid7/following{/other_user}","gists_url":"https://api.github.com/users/rapid7/gists{/gist_id}","starred_url":"https://api.github.com/users/rapid7/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rapid7/subscriptions","organizations_url":"https://api.github.com/users/rapid7/orgs","repos_url":"https://api.github.com/users/rapid7/repos","events_url":"https://api.github.com/users/rapid7/events{/privacy}","received_events_url":"https://api.github.com/users/rapid7/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/rapid7/metasploit-framework","description":"Metasploit Framework","fork":false,"url":"https://api.github.com/repos/rapid7/metasploit-framework","forks_url":"https://api.github.com/repos/rapid7/metasploit-framework/forks","keys_url":"https://api.github.com/repos/rapid7/metasploit-framework/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rapid7/metasploit-framework/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rapid7/metasploit-framework/teams","hooks_url":"https://api.github.com/repos/rapid7/metasploit-framework/hooks","issue_events_url":"https://api.github.com/repos/rapid7/metasploit-framework/issues/events{/number}","events_url":"https://api.github.com/repos/rapid7/metasploit-framework/events","assignees_url":"https://api.github.com/repos/rapid7/metasploit-framework/assignees{/user}","branches_url":"https://api.github.com/repos/rapid7/metasploit-framework/branches{/branch}","tags_url":"https://api.github.com/repos/rapid7/metasploit-framework/tags","blobs_url":"https://api.github.com/repos/rapid7/metasploit-framework/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rapid7/metasploit-framework/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rapid7/metasploit-framework/git/refs{/sha}","trees_url":"https://api.github.com/repos/rapid7/metasploit-framework/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rapid7/metasploit-framework/statuses/{sha}","languages_url":"https://api.github.com/repos/rapid7/metasploit-framework/languages","stargazers_url":"https://api.github.com/repos/rapid7/metasploit-framework/stargazers","contributors_url":"https://api.github.com/repos/rapid7/metasploit-framework/contributors","subscribers_url":"https://api.github.com/repos/rapid7/metasploit-framework/subscribers","subscription_url":"https://api.github.com/repos/rapid7/metasploit-framework/subscription","commits_url":"https://api.github.com/repos/rapid7/metasploit-framework/commits{/sha}","git_commits_url":"https://api.github.com/repos/rapid7/metasploit-framework/git/commits{/sha}","comments_url":"https://api.github.com/repos/rapid7/metasploit-framework/comments{/number}","issue_comment_url":"https://api.github.com/repos/rapid7/metasploit-framework/issues/comments{/number}","contents_url":"https://api.github.com/repos/rapid7/metasploit-framework/contents/{+path}","compare_url":"https://api.github.com/repos/rapid7/metasploit-framework/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rapid7/metasploit-framework/merges","archive_url":"https://api.github.com/repos/rapid7/metasploit-framework/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rapid7/metasploit-framework/downloads","issues_url":"https://api.github.com/repos/rapid7/metasploit-framework/issues{/number}","pulls_url":"https://api.github.com/repos/rapid7/metasploit-framework/pulls{/number}","milestones_url":"https://api.github.com/repos/rapid7/metasploit-framework/milestones{/number}","notifications_url":"https://api.github.com/repos/rapid7/metasploit-framework/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rapid7/metasploit-framework/labels{/name}","releases_url":"https://api.github.com/repos/rapid7/metasploit-framework/releases{/id}","created_at":"2011-08-30T06:13:20Z","updated_at":"2015-08-12T19:47:29Z","pushed_at":"2015-08-13T02:12:23Z","git_url":"git://github.com/rapid7/metasploit-framework.git","ssh_url":"git@github.com:rapid7/metasploit-framework.git","clone_url":"https://github.com/rapid7/metasploit-framework.git","svn_url":"https://github.com/rapid7/metasploit-framework","homepage":"http://www.metasploit.com/","size":1077494,"stargazers_count":4267,"watchers_count":4267,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":3327,"mirror_url":null,"open_issues_count":237,"forks":3327,"open_issues":237,"watchers":4267,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/rapid7/metasploit-framework/pulls/5824"},"html":{"href":"https://github.com/rapid7/metasploit-framework/pull/5824"},"issue":{"href":"https://api.github.com/repos/rapid7/metasploit-framework/issues/5824"},"comments":{"href":"https://api.github.com/repos/rapid7/metasploit-framework/issues/5824/comments"},"review_comments":{"href":"https://api.github.com/repos/rapid7/metasploit-framework/pulls/5824/comments"},"review_comment":{"href":"https://api.github.com/repos/rapid7/metasploit-framework/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/rapid7/metasploit-framework/pulls/5824/commits"},"statuses":{"href":"https://api.github.com/repos/rapid7/metasploit-framework/statuses/5c6267e1c8cafe580701bd851c82dbfb87092de2"}}}}