whatweb wordpress.rb

##
# This file is part of WhatWeb and may be subject to
# redistribution and commercial restrictions. Please see the WhatWeb
# web site for more information on licensing and terms of use.
# http://www.morningstarsecurity.com/research/whatweb
##
# Version 0.5 # 2012-03-05
# Added regex version detection for /readme.html
##
# Version 0.4 # 2011-04-06 #
# Added aggressive md5 matches
##
# Version 0.3
# Now using :version=>// instead of a passive function, added description, examples and included relative /wp-content/ link detection
##
Plugin.define "WordPress" do
  author "Andrew Horton"
  version "0.5"
  description "WordPress is an opensource blogging system commonly used as a CMS. Homepage: http://www.wordpress.org/ "
  
  # Examples #
  examples %w| http://lonnroth.info/ http://mattbrett.com/ http://www.komodomedia.com/ http://bestwebgallery.com/ http://cssremix.com/ http://www.cssbloom.net/ http://www.screenz.de/ http://www.kineda.com/ http://ifelse.co.uk/ http://fadtastic.net/ http://www.funci.org/en/ |
    
    # Dorks #
    dorks [
           '"is proudly powered by WordPress"'
          ]
  
  # Matches #
matches [
         
         {:text=>"<meta name="generator" content="WordPress.com" />"},
         {:text=>"<a href="http://www.wordpress.com">Powered by WordPress</a>", :name=>"powered by link"},
         {:regexp=>/"[^"]+/wp-content/[^"]+"/, :name=>"wp-content", :certainty=>75 },
         
         {:version=>/<meta name="generator" content="(WordPress)[ ]?([0-9.]+)"/, :offset=>1  }, # if offset=>1 were missing then it would report "WordPress" as the version.
         
         # url exists, i.e. returns HTTP status 200
         {:url=>"/wp-cron.php"},
         
         #{:url=>"/admin/", :full=>true }, # full means that whatweb will run all plugins against this url - this isn't yet implemented as of 0.4.7
         
         # /wp-login.php  exists & contains a string
         {:url=>"/wp-login.php", :text=>'<a title="Powered by WordPress" href="http://wordpress.org/">'},
         {:url=>"/wp-login.php", :text=>'<a href="http://wordpress.org/" title="Powered by WordPress">', :name=>'wp3 login page'},
         {:url=>"/wp-login.php", :text=>'action=lostpassword'},
         
         {:url=>"/wp-login.php", :tagpattern=>"!doctype,html,head,title,/title,meta,link,link,script,/script,meta,/head,body,div,h1,a,/a,/h1,form,p,label,br,input,/label,/p,p,label,br,input,/label,/p,p,label,input,/label,/p,p,input,input,input,/p,/form,p,a,/a,/p,p,a,/a,/p,/div,script,/script,/body,/html"}, #note that WP plugins can add script tags. tags are delimited by commas so we can count how close it is
         {:url=>"favicon.ico", :md5=>'f420dc2c7d90d7873a90d82cd7fde315'}, # not common, seen on http://s.wordpress.org/favicon.ico
         {:url=>"favicon.ico", :md5=>'fa54dbf2f61bd2e0188e47f5f578f736'},  # on wordpress.com blogs  http://s2.wp.com/i/favicon.ico 
         
         {:url=>"/readme.html", :version=>/<h1.*WordPress.*Version ([0-9a-z.]+).*</h1>/m}
         
        ]
  
  # Passive #
  def passive
    m=[]
    
    # detect /wp-content/ on this site but don't be confused by links to other sites.
    #<link rel="stylesheet" href="http://bestwebgallery.com/wp-content/themes/master/style.css" type="text/css" />
    
    if @body =~ /(href|src)="[^"]*/wp-content/[^"]*/
      # is it a relative link or on the same site?
      links= @body.scan(/(href|src)="([^"]*/wp-content/[^"]*)/).map {|x| x[1].strip }.flatten
      links.each do |thislink|
        # join this link wtih target, check if host part is ==, if so, it's relative
        joined_uri=URI.join(@base_uri.to_s,thislink)
        
        if joined_uri.host == @base_uri.host
          #puts "yes, #{joined_uri.to_s} is relative to #{@base_uri.to_s}"
          m << {:name=>"Relative /wp-content/ link" }
          break
        end
      end
    end
    
    # Return passive matches
    m
  end
  
  # Aggressive #
  def aggressive
    m=[]
    
    # the paths are relative to the url path if they don't start with /
    # this path, with this md5 = this version

    versions = Hash[
                    "0.71-gold" =>
                    [["readme.html",
                      "0c1e4a01d4ccf6dbedda30bf3c5eeb9e"],
                     ["b2-include/xmlrpc.inc",
                      "14524c5d7f9f72394e04512d9941bc50"]],
                    "0.72-rc1" =>
                    [["readme.html",
                      "dacf325336ae55fffbcd54bd08de55b4"],
                     ["wp-layout.css",
                      "dc04833fd754c0b404ec157e0bb8e7ae"]],
                    "0.72-beta1" =>
                    [["readme.html",
                      "dacf325336ae55fffbcd54bd08de55b4"],
                     ["wp-layout.css",
                      "7edb4d6b89b4625f6e6c6b9e5cd589b6"]],
                    "1.0-rc1" =>
                    [["readme.html",
                      "613b5eca59267b5b62b6e81dd9536b1b"],
                     ["wp-sitetemplates/main/templates/top.html",
                      "120ca99e1b816915e0f27152b7d24a75"]],
                    "1.0-platinium" =>
                    [["readme.html",
                      "6e08f4bfb7f79de78a3278f0f4ad981f"]],
                    "1.0.1-rc1" =>
                    [["readme.html",
                      "11f6a057f13e9413edc98e4614230622"]],
                    "1.0.1-miles" =>
                    [["readme.html",
                      "7ccd56b1c5b7123ed9afb222e6e93924"]],
                    "1.0.2" =>
                    [["readme.html",
                      "c91375254e9f56e45939ffcc28424c72"]],
                    "1.0.2-blakey" =>
                    [["readme.html",
                      "c91375254e9f56e45939ffcc28424c72"]],
                    "1.2-rc1" =>
                    [["readme.html",
                      "790736d62d442117f9d28b64161919a2"]],
                    "1.2-rc2" =>
                    [["readme.html",
                      "790736d62d442117f9d28b64161919a2"]],
                    "1.2-beta" =>
                    [["readme.html",
                      "790736d62d442117f9d28b64161919a2"],
                     ["wp-layout.css",
                      "c3f4bd5f3146770c0cba45b10c385047"]],
                    "1.2-delta" =>
                    [["readme.html",
                      "790736d62d442117f9d28b64161919a2"],
                     ["wp-layout.css",
                      "1bcc9253506c067eb130c9fc4f211a2f"]],
                    "1.2-mingus" =>
                    [["readme.html",
                      "6c3c457ed408be44244edc121cada9a2"],],
                    "1.2.1" =>
                    [["readme.html",
                      "75eaf1c4b267e11fffd42c34e8832567"],
                     ["wp-layout.css",
                      "7140e06c00ed03d2bb3dad7672557510"]],
                    "1.2.2" =>
                    [["readme.html",
                      "6c3c457ed408be44244edc121cada9a2"],
                     ["wp-includes/js/scriptaculous/scriptaculous.js",
                      "d72a1c859799b4e1355ff65e4a1ad148"]],
                    "1.5-strayhorn" =>
                    [["readme.html",
                      "aaa2d12586d9632c76b7b7f03d58a9f6"]],
                    "1.5.1" =>
                    [["readme.html",
                      "c60692ee8e176db0ac0be5ca69ba6c24"]],
                    "1.5.1.1" =>
                    [["readme.html",
                      "c60692ee8e176db0ac0be5ca69ba6c24"]],
                    "1.5.1.2" =>
                    [["readme.html",
                      "c60692ee8e176db0ac0be5ca69ba6c24"]],
                    "1.5.1.3" =>
                    [["readme.html",
                      "aaa2d12586d9632c76b7b7f03d58a9f6"]],
                    "1.5.2" =>
                    [["readme.html",
                      "aaa2d12586d9632c76b7b7f03d58a9f6"]],
                    "2.0" =>
                    [["readme.html",
                      "010ac2a095f4d30b2a650b94cf3f8842"],
                     ["wp-content/themes/default/style.css",
                      "f786f66d3a40846aa22dcdfeb44fa562"]],
                    "2.0.1" =>
                    [["readme.html",
                      "010ac2a095f4d30b2a650b94cf3f8842"]],
                    "2.0.1-rc1" =>
                    [["readme.html",
                      "010ac2a095f4d30b2a650b94cf3f8842"]],
                    "2.0.4" =>
                    [["readme.html",
                      "010ac2a095f4d30b2a650b94cf3f8842"]],
                    "2.0.5" =>
                    [["readme.html",
                      "010ac2a095f4d30b2a650b94cf3f8842"]],
                    "2.0.5-rc1" =>
                    [["readme.html",
                      "010ac2a095f4d30b2a650b94cf3f8842"]],
                    "2.0.5-beta1" =>
                    [["readme.html",
                      "010ac2a095f4d30b2a650b94cf3f8842"]],
                    "2.0.6" =>
                    [["readme.html",
                      "010ac2a095f4d30b2a650b94cf3f8842"]],
                    "2.0.6-rc1" =>
                    [["readme.html",
                      "010ac2a095f4d30b2a650b94cf3f8842"]],
                    "2.0.7" =>
                    [["readme.html",
                      "010ac2a095f4d30b2a650b94cf3f8842"]],
                    "2.0.7-rc1" =>
                    [["readme.html",
                      "010ac2a095f4d30b2a650b94cf3f8842"]],
                    "2.0.7-rc2" =>
                    [["readme.html",
                      "010ac2a095f4d30b2a650b94cf3f8842"]],
                    "2.0.8" =>
                    [["readme.html",
                      "ec9a2ffad38a3f0185aa6d9c0b8d6673"]],
                    "2.0.8-rc1" =>
                    [["readme.html",
                      "ec9a2ffad38a3f0185aa6d9c0b8d6673"]],
                    "2.0.9" =>
                    [["readme.html",
                      "ec9a2ffad38a3f0185aa6d9c0b8d6673"]],
                    "2.0.9-rc1" =>
                    [["readme.html",
                      "ec9a2ffad38a3f0185aa6d9c0b8d6673"]],
                    "2.0.9-beta" =>
                    [["readme.html",
                      "ec9a2ffad38a3f0185aa6d9c0b8d6673"]],
                    "2.0.10" =>
                    [["readme.html",
                      "ec9a2ffad38a3f0185aa6d9c0b8d6673"]],
                    "2.0.10-rc1" =>
                    [["readme.html",
                      "ec9a2ffad38a3f0185aa6d9c0b8d6673"]],
                    "2.0.10-rc2" =>
                    [["readme.html",
                      "ec9a2ffad38a3f0185aa6d9c0b8d6673"]],
                    "2.0.10-rc3" =>
                    [["readme.html",
                      "ec9a2ffad38a3f0185aa6d9c0b8d6673"]],
                    "2.0.11" =>
                    [["readme.html",
                      "ec9a2ffad38a3f0185aa6d9c0b8d6673"]],
                    "2.0.11-rc1" =>
                    [["readme.html",
                      "ec9a2ffad38a3f0185aa6d9c0b8d6673"]],
                    "2.0.11-rc2" =>
                    [["readme.html",
                      "ec9a2ffad38a3f0185aa6d9c0b8d6673"]],
                    "2.0.11-rc3" =>
                    [["readme.html",
                      "ec9a2ffad38a3f0185aa6d9c0b8d6673"]],
                    "2.1" =>
                    [["readme.html",
                      "a5bc745849e1971abf8efb9a135ce764"]],
                    "2.1-rc1" =>
                    [["readme.html",
                      "1808e8f88b490dffdfe0e3ea0a951e86"]],
                    "2.1-rc2" =>
                    [["readme.html",
                      "a5bc745849e1971abf8efb9a135ce764"]],
                    "2.1-beta1" =>
                    [["readme.html",
                      "33228916bae952810ca10a09b23bc366"]],
                    "2.1-beta2" =>
                    [["readme.html",
                      "0bb72a5175266c98406b8b42a31114de"]],
                    "2.1-beta3" =>
                    [["readme.html",
                      "1808e8f88b490dffdfe0e3ea0a951e86"],
                     ["wp-includes/js/tinymce/plugins/inlinepopups/editor_plugin.js",
                      "527706a40c4a6939c1a47db7a6c4dbaf"]],
                    "2.1-beta4" =>
                    [["readme.html",
                      "1808e8f88b490dffdfe0e3ea0a951e86"]],
                    "2.1.1" =>
                    [["readme.html",
                      "a5bc745849e1971abf8efb9a135ce764"]],
                    "2.1.1-rc1" =>
                    [["readme.html",
                      "a5bc745849e1971abf8efb9a135ce764"]],
                    "2.1.1-beta" =>
                    [["readme.html",
                      "a5bc745849e1971abf8efb9a135ce764"]],
                    "2.1.2" =>
                    [["readme.html",
                      "a5bc745849e1971abf8efb9a135ce764"]],
                    "2.1.3" =>
                    [["readme.html",
                      "a5bc745849e1971abf8efb9a135ce764"]],
                    "2.1.3-rc1" =>
                    [["readme.html",
                      "a5bc745849e1971abf8efb9a135ce764"]],
                    "2.1.3-rc2" =>
                    [["readme.html",
                      "a5bc745849e1971abf8efb9a135ce764"]],
                    "2.1.3-rc3" =>
                    [["readme.html",
                      "a5bc745849e1971abf8efb9a135ce764"]],
                    "2.2" =>
                    [["readme.html",
                      "939a797929aec1b8e0039014e9a29433"]],
                    "2.2-rc1" =>
                    [["readme.html",
                      "939a797929aec1b8e0039014e9a29433"]],
                    "2.2-rc2" =>
                    [["readme.html",
                      "939a797929aec1b8e0039014e9a29433"]],
                    "2.2.1" =>
                    [["readme.html",
                      "939a797929aec1b8e0039014e9a29433"]],
                    "2.2.1-rc1" =>
                    [["readme.html",
                      "939a797929aec1b8e0039014e9a29433"]],
                    "2.2.1-rc2" =>
                    [["readme.html",
                      "939a797929aec1b8e0039014e9a29433"]],
                    "2.2.2" =>
                    [["readme.html",
                      "939a797929aec1b8e0039014e9a29433"]],
                    "2.2.3" =>
                    [["readme.html",
                      "939a797929aec1b8e0039014e9a29433"]],
                    "2.3" =>
                    [["readme.html",
                      "95803b846df1873416ee96c1577b3adf"]],
                    "2.3-rc1" =>
                    [["readme.html",
                      "95803b846df1873416ee96c1577b3adf"]],
                    "2.3-beta1" =>
                    [["readme.html",
                      "0384d4bdace37e066df6bb7a85b009aa"]],
                    "2.3-beta2" =>
                    [["readme.html",
                      "95803b846df1873416ee96c1577b3adf"]],
                    "2.3-beta3" =>
                    [["readme.html",
                      "95803b846df1873416ee96c1577b3adf"]],
                    "2.3.1" =>
                    [["readme.html",
                      "95803b846df1873416ee96c1577b3adf"]],
                    "2.3.1-rc1" =>
                    [["readme.html",
                      "95803b846df1873416ee96c1577b3adf"]],
                    "2.3.1-beta1" =>
                    [["readme.html",
                      "95803b846df1873416ee96c1577b3adf"]],
                    "2.3.2" =>
                    [["readme.html",
                      "95803b846df1873416ee96c1577b3adf"]],
                    "2.3.2-rc1" =>
                    [["readme.html",
                      "95803b846df1873416ee96c1577b3adf"]],
                    "2.3.2-beta1" =>
                    [["readme.html",
                      "95803b846df1873416ee96c1577b3adf"]],
                    "2.3.2-beta2" =>
                    [["readme.html",
                      "95803b846df1873416ee96c1577b3adf"]],
                    "2.3.2-beta3" =>
                    [["readme.html",
                      "95803b846df1873416ee96c1577b3adf"]],
                    "2.3.3" =>
                    [["readme.html",
                      "95803b846df1873416ee96c1577b3adf"]],
                    "2.5" =>
                    [["readme.html",
                      "c3024b888aeb1539f4c29df7b166d483"]],
                    "2.5-rc1" =>
                    [["readme.html",
                      "c3024b888aeb1539f4c29df7b166d483"],
                     ["wp-includes/js/autosave.js",
                      "c2fa52e7e956c340da6e2d2d86694cee"]],
                    "2.5-rc2" =>
                    [["readme.html",
                      "c3024b888aeb1539f4c29df7b166d483"],
                     ["wp-includes/js/autosave.js",
                      "d275157ac090ce476b4914505f8de24f"]],
                    "2.5-rc3" =>
                    [["readme.html",
                      "c3024b888aeb1539f4c29df7b166d483"]],
                    "2.5.1" =>
                    [["readme.html",
                      "c3024b888aeb1539f4c29df7b166d483"],
                     ["wp-includes/js/tinymce/tiny_mce.js",
                      "a3d05665b236944c590493e20860bcdb"]],
                    "2.6" =>
                    [["readme.html",
                      "5bca147a86a1d277328c298ab06b772b"]],
                    "2.6-rc1" =>
                    [["readme.html",
                      "c3024b888aeb1539f4c29df7b166d483"]],
                    "2.6-beta1" =>
                    [["readme.html",
                      "c3024b888aeb1539f4c29df7b166d483"],
                     ["wp-includes/js/tinymce/tiny_mce.js",
                      "35f98a53dd50907c60b872213da50deb"]],
                    "2.6-beta2" =>
                    [["readme.html",
                      "c3024b888aeb1539f4c29df7b166d483"],
                     ["wp-includes/js/tinymce/plugins/wpeditimage/editimage.html",
                      "48a67e901144ce41af63c8e7d680ac74"]],
                    "2.6-beta3" =>
                    [["readme.html",
                      "c3024b888aeb1539f4c29df7b166d483"],
                     ["wp-includes/js/tinymce/plugins/wpeditimage/editimage.html",
                      "e1e9459af693c6076a6d99997d851ab4"]],
                    "2.6.1" =>
                    [["readme.html",
                      "0377751ad219ccbb809d527952ff7325"]],
                    "2.6.1-beta1" =>
                    [["readme.html",
                      "5bca147a86a1d277328c298ab06b772b"],
                     ["wp-includes/js/tinymce/plugins/wpeditimage/editimage.html",
                      "cb6e865aa733445c260ac01899542756"]],
                    "2.6.1-beta2" =>
                    [["readme.html",
                      "5bca147a86a1d277328c298ab06b772b"]],
                    "2.6.2" =>
                    [["readme.html",
                      "0377751ad219ccbb809d527952ff7325"]],
                    "2.6.3" =>
                    [["readme.html",
                      "0377751ad219ccbb809d527952ff7325"]],
                    "2.6.5" =>
                    [["readme.html",
                      "0377751ad219ccbb809d527952ff7325"]],
                    "2.7" =>
                    [["readme.html",
                      "94c4cdfa20778d1bf9784941f9fca133"]],
                    "2.7-rc1" =>
                    [["readme.html",
                      "94c4cdfa20778d1bf9784941f9fca133"],
                     ["wp-includes/js/swfupload/handlers.js",
                      "a16a9cb39d37486aeacd3b2e1701f6aa"]],
                    "2.7-rc2" =>
                    [["readme.html",
                      "94c4cdfa20778d1bf9784941f9fca133"]],
                    "2.7-beta1" =>
                    [["readme.html",
                      "94c4cdfa20778d1bf9784941f9fca133"],
                     ["wp-includes/js/autosave.js",
                      "9ceecef42a279029e0f97b4def8e542b"]],
                    "2.7-beta2" =>
                    [["readme.html",
                      "94c4cdfa20778d1bf9784941f9fca133"],
                     ["wp-includes/js/autosave.js",
                      "c1ea7016092c130a51a44ffe232bc7c9"]],
                    "2.7-beta3" =>
                    [["readme.html",
                      "94c4cdfa20778d1bf9784941f9fca133"],
                     ["wp-includes/js/tinymce/tiny_mce.js",
                      "f73b7c82ff78af24cd7563862084000a"]],
                    "2.7.1" =>
                    [["readme.html",
                      "94c4cdfa20778d1bf9784941f9fca133"]],
                    "2.7.1-rc1" =>
                    [["readme.html",
                      "94c4cdfa20778d1bf9784941f9fca133"]],
                    "2.7-beta1" =>
                    [["readme.html",
                      "94c4cdfa20778d1bf9784941f9fca133"]],
                    "2.8" =>
                    [["readme.html",
                      "4a64408bdaaa6c8af7cab9346f0ce380"]],
                    "2.8-rc1" =>
                    [["readme.html",
                      "94c4cdfa20778d1bf9784941f9fca133"]],
                    "2.8-beta1" =>
                    [["readme.html",
                      "94c4cdfa20778d1bf9784941f9fca133"]],
                    "2.8-beta2" =>
                    [["readme.html",
                      "94c4cdfa20778d1bf9784941f9fca133"]],
                    "2.8.1" =>
                    [["readme.html",
                      "7ed95e0b7ae663cbd0a8e77d787a4637"]],
                    "2.8.1-rc1" =>
                    [["readme.html",
                      "4a64408bdaaa6c8af7cab9346f0ce380"]],
                    "2.8.1-beta1" =>
                    [["readme.html",
                      "4a64408bdaaa6c8af7cab9346f0ce380"],
                     ["wp-includes/js/autosave.js",
                      "40f836bb6cf8fa6007aa2bd335754590"]],
                    "2.8.1-beta2" =>
                    [["readme.html",
                      "4a64408bdaaa6c8af7cab9346f0ce380"],
                     ["wp-includes/js/autosave.js",
                      "8e58ac561fd6f038843395e7e18fbb0f"]],
                    "2.8.2" =>
                    [["readme.html",
                      "ef8665ddd2d87badccb3532705b95992"],
                     ["wp-content/plugins/akismet/readme.txt",
                      "48c52025b5f28731e9a0c864c189c2e7"]],
                    "2.8.3" =>
                    [["readme.html",
                      "de32a1268d126ea71127ad5f9fa8f60d"]],
                    "2.8.4" =>
                    [["readme.html",
                      "7d93c7feb3e2e2c2112474f92e3ee6f8"]],
                    "2.8.5" =>
                    [["readme.html",
                      "f32252ef12c927f6285e4fb29efce04f"]],
                    "2.8.5-beta1" =>
                    [["readme.html",
                      "f32252ef12c927f6285e4fb29efce04f"]],
                    "2.8.6" =>
                    [["readme.html",
                      "027283d03b08abae67279fd17a37760b"]],
                    "2.8.6-beta1" =>
                    [["readme.html",
                      "027283d03b08abae67279fd17a37760b"]],
                    "2.9" =>
                    [["readme.html",
                      "1eaf3b4f4c2d039d26a473c0e0b5622e"]],
                    "2.9-rc1" =>
                    [["readme.html",
                      "f182f41b25a96a12c393e35d9d063ed4"]],
                    "2.9-beta1" =>
                    [["readme.html",
                      "f182f41b25a96a12c393e35d9d063ed4"],
                     ["wp-includes/js/swfupload/handlers.js",
                      "67c19dd1aa288610db84ef258e0fde22"]],
                    "2.9-beta2" =>
                    [["readme.html",
                      "f182f41b25a96a12c393e35d9d063ed4"],
                     ["wp-includes/js/swfupload/handlers.js",
                      "829d0ee86744a34049329f5c461d12d0"]],
                    "2.9.1" =>
                    [["readme.html",
                      "80c4ecc8630395baeb7363a7cf4dad33"]],
                    "2.9.1-rc1" =>
                    [["readme.html",
                      "80c4ecc8630395baeb7363a7cf4dad33"]],
                    "2.9.1-beta1" =>
                    [["readme.html",
                      "1eaf3b4f4c2d039d26a473c0e0b5622e"]],
                    "2.9.2" =>
                    [["readme.html",
                      "6cfb514bbb51d883bb6fece65d5fd450"],
                     ["wp-content/themes/home/rtl.css",
                      "64231a50358031e1d92bb02ffcc5579d"]],
                    "3.0" =>
                    [["readme.html",
                      "9ea06ab0184049bf4ea2410bf51ce402"],
                     ["wp-content/themes/twentyten/languages/twentyten.pot",
                      "2ea37779cc9cbfc274f1a0273a6ea1b5"]],
                    "3.0-rc1" =>
                    [["readme.html",
                      "9ea06ab0184049bf4ea2410bf51ce402"],
                     ["wp-content/themes/twentyten/style.css",
                      "5e86e1dd9c095c1bf8ea8e5ec53bee1e"]],
                    "3.0-rc2" =>
                    [["readme.html",
                      "9ea06ab0184049bf4ea2410bf51ce402"],
                     ["wp-content/themes/twentyten/style.css",
                      "23fd2a602c38ec4c611559fb1552afcd"]],
                    "3.0-rc3" =>
                    [["readme.html",
                      "9ea06ab0184049bf4ea2410bf51ce402"],
                     ["wp-content/themes/twentyten/languages/twentyten.pot",
                      "497963f44fb84e2c7d425c1fd4eed76e"]],
                    "3.0-beta1" =>
                    [["readme.html",
                      "b051ca0b7f06618784dd286da1b3ce95"],
                     ["wp-includes/js/autosave.js",
                      "a27e28943c0ce3e0438c03c83092c919"]],
                    "3.0-beta2" =>
                    [["readme.html",
                      "9ea06ab0184049bf4ea2410bf51ce402"],
                     ["wp-includes/js/autosave.js",
                      "46149fb60863c31931ba3b4c2698bff4"]],
                    "3.0.1" =>
                    [["readme.html",
                      "a73cac84b8b9a99377917a6974c9eea2"]],
                    "3.0.2" =>
                    [["readme.html",
                      "0538342b887f11ed4a306d3e7c7d6ea7"]],
                    "3.0.3" =>
                    [["readme.html",
                      "0eb4f7981c3de98df925b3020c147a61"]],
                    "3.0.4" =>
                    [["readme.html",
                      "c7a01d814ffbbb790ee5f4f8f3631903"]],
                    "3.0.5" =>
                    [["readme.html",
                      "ed20f283f2c1b775219bdb12e5c6ba93"]],
                    "3.0.6" =>
                    [["readme.html",
                      "45119882b8d576a3462f76708b6bc1c5"]],
                    "3.1" =>
                    [["readme.html",
                      "f01635ffca23e49e01f47e98553ea75d"]],
                    "3.1-rc1" =>
                    [["readme.html",
                      "d48f95db161328051787e2f427148f4a"],
                     ["wp-content/themes/twentyten/languages/twentyten.pot",
                      "0aac287d00db838d3bc01a1d6d621d2f"]],
                    "3.1-rc2" =>
                    [["readme.html",
                      "d48f95db161328051787e2f427148f4a"],
                     ["wp-content/themes/twentyten/style.css",
                      "150c80e23ce93ebced5035e00e4d864b"]],
                    "3.1-rc3" =>
                    [["readme.html",
                      "f01635ffca23e49e01f47e98553ea75d"],
                     ["wp-includes/css/admin-bar-rtl.css",
                      "c032baf7fa4ed30d82b46946f75cbc69"]],
                    "3.1-rc4" =>
                    [["readme.html",
                      "f01635ffca23e49e01f47e98553ea75d"]],
                    "3.1-beta1" =>
                    [["readme.html",
                      "7a8b02d6ce7229e33bd64da8bef83ad7"],
                     ["wp-includes/css/admin-bar.css",
                      "d858495789b9a37ef8651f54a9f2e12b"]],
                    "3.1-beta2" =>
                    [["readme.html",
                      "d48f95db161328051787e2f427148f4a"],
                     ["wp-includes/css/admin-bar.css",
                      "912a71bf5137e3a06911d1ebd855c2b7"]],
                    "3.1.1" =>
                    [["readme.html",
                      "5be6140fc3f44126b476dfff5bc0c658"]],
                    "3.1.1-rc1" =>
                    [["readme.html",
                      "5be6140fc3f44126b476dfff5bc0c658"]],
                    "3.1.2" =>
                    [["readme.html",
                      "20f882b08b2804bc7431c0866a8999d1"]],
                    "3.1.3" =>
                    [["readme.html",
                      "ccc403368e01b3c3b0caf28079a710a5"]],
                    "3.1.4" =>
                    [["readme.html",
                      "fbebf5899944a9d7aedd00250bb71745"],
                     ["wp-content/themes/twentyten/languages/twentyten.pot",
                      "0702faf14edacb91bb82681870cb6da0"]],
                    "3.2" =>
                    [["readme.html",
                      "573e79628d2ee07670e889569059669e"]],
                    "3.2-rc1" =>
                    [["readme.html",
                      "573e79628d2ee07670e889569059669e"],
                     ["wp-content/themes/twentyeleven/style.css",
                      "5a13b9234881621dca42f9430bfdd885"]],
                    "3.2-rc2" =>
                    [["readme.html",
                      "573e79628d2ee07670e889569059669e"],
                     ["wp-content/themes/twentyeleven/style.css",
                      "31156206fec3debcc2f9b844ef83d9e1"]],
                    "3.2-rc3" =>
                    [["readme.html",
                      "573e79628d2ee07670e889569059669e"],
                     ["wp-content/themes/twentyeleven/style.css",
                      "81b2771858d8ab1ed3ae13d8d5866561"]],
                    "3.2-beta1" =>
                    [["readme.html",
                      "573e79628d2ee07670e889569059669e"],
                     ["wp-includes/js/autosave.js",
                      "3bf40ac97632994f5ee6d8d4fc72f0d3"]],
                    "3.2-beta2" =>
                    [["readme.html",
                      "573e79628d2ee07670e889569059669e"],
                     ["wp-includes/js/tinymce/plugins/wordpress/editor_plugin.js",
                      "708373211fb001cba51de1138ff9e748"]],
                    "3.2.1" =>
                    [["readme.html",
                      "98d3f05ff1e321dbd58ad154cc95e569"]],
                    "3.3" =>
                    [["readme.html",
                      "e0f97110b60c3a3c71dcd1d4d923495a"]],
                    "3.3-rc1" =>
                    [["readme.html",
                      "e0f97110b60c3a3c71dcd1d4d923495a"],
                     ["wp-includes/css/admin-bar.css",
                      "304a1620b044cc58cef73349359943b3"]],
                    "3.3-rc2" =>
                    [["readme.html",
                      "e0f97110b60c3a3c71dcd1d4d923495a"],
                     ["wp-includes/css/admin-bar.css",
                      "9bb37fe637ee3a53d9274fd2d0301260"]],
                    "3.3-rc3" =>
                    [["readme.html",
                      "e0f97110b60c3a3c71dcd1d4d923495a"]],
                    "3.3-beta1" =>
                    [["readme.html",
                      "e0f97110b60c3a3c71dcd1d4d923495a"],
                     ["wp-includes/css/admin-bar.css",
                      "7d21a462f3b5d5b9ad1f878c45f78e92"]],
                    "3.3-beta2" =>
                    [["readme.html",
                      "e0f97110b60c3a3c71dcd1d4d923495a"],
                     ["wp-includes/css/admin-bar.css",
                      "e8af3c520f06153ad674eebd7453971e"]],
                    "3.3-beta3" =>
                    [["readme.html",
                      "e0f97110b60c3a3c71dcd1d4d923495a"],
                     ["wp-includes/css/admin-bar.css",
                      "a30deaec087f1eab3183a2b9d50cd19b"]],
                    "3.3-beta4" =>
                    [["readme.html",
                      "e0f97110b60c3a3c71dcd1d4d923495a"],
                     ["wp-includes/css/admin-bar.css",
                      "4e6bda0b7acff641f480c4fd5d5b6910"]],
                    "3.3.1" =>
                    [["readme.html",
                      "c1ed266e26a829b772362d5135966bc3"]],
                    "3.3.2" =>
                    [["readme.html",
                      "628419c327ca5ed8685ae3af6f753eb8"]],
                    "3.3.2-rc1" =>
                    [["readme.html",
                      "628419c327ca5ed8685ae3af6f753eb8"]],
                    "3.3.3" =>
                    [["readme.html",
                      "36b2b72a0f22138a921a38db890d18c1"]],
                    "3.4" =>
                    [["readme.html",
                      "34b3071c2c48f0b1a611c2ee9f1b3516"]],
                    "3.4-rc1" =>
                    [["readme.html",
                      "34b3071c2c48f0b1a611c2ee9f1b3516"],
                     ["wp-includes/js/customize-preview.js",
                      "453a5ccf234fb8d8ce360aca3672ed95"]],
                    "3.4-rc2" =>
                    [["readme.html",
                      "34b3071c2c48f0b1a611c2ee9f1b3516"],
                     ["wp-includes/js/customize-preview.js",
                      "7b1408a3cd59c8287efa8c02bd43356e"]],
                    "3.4-rc3" =>
                    [["readme.html",
                      "34b3071c2c48f0b1a611c2ee9f1b3516"]],
                    "3.4-rc4" =>
                    [["readme.html",
                      "34b3071c2c48f0b1a611c2ee9f1b3516"]],
                    "3.4-beta1" =>
                    [["readme.html",
                      "8df86e1e534c349747292e0b56531f63"],
                     ["wp-includes/js/tinymce/tiny_mce.js",
                      "078bd9e2c8fa7b6c2ab231183f6ee2cb"]],
                    "3.4-beta2" =>
                    [["readme.html",
                      "8df86e1e534c349747292e0b56531f63"]],
                    "3.4-beta3" =>
                    [["readme.html",
                      "8df86e1e534c349747292e0b56531f63"],
                     ["wp-includes/js/customize-preview.js",
                      "e28df79d5eb55f26b46ae88bafadc2b9"]],
                    "3.4-beta4" =>
                    [["readme.html",
                      "8df86e1e534c349747292e0b56531f63"],
                     ["wp-includes/js/customize-preview.js",
                      "a8a259fc5197a78ffe62d6be38dc52f8"]],
                    "3.4.1" =>
                    [["readme.html",
                      "9ecbb128295ac324f63a6adc0b6e78ea"],
                     ["wp-includes/js/customize-preview.js",
                      "617d9fd858e117c7d1d087be168b5643"]],

                      "3.4.2" =>
                    [["readme.html", "c6514a15e04bd9ec96df4d9b78c17bc5"],
                      ["wp-includes/js/customize-preview.js", "617d9fd858e117c7d1d087be168b5643"],
                      ["/wp-admin/css/wp-admin.css", "dc906af62607ada3fe2baac62ac3cceb"] 
                    ],
                      "3.5" =>
                    [["readme.html", "066cfc0f9b29ae6d491aa342ebfb1b71"],
                      ["wp-admin/css/wp-admin.css", "c8c02c7d0318ddeb985e324f126a19e8"]
                    ],
                      "3.5.1" => 
                    [["readme.html", "05d50a04ef19bd4b0a280362469bf22f"],
                      ["wp-admin/css/wp-admin.css", "1906ac1bed40e0c5c7de71f2bc42dc20"]
                    ],
                      "3.5.2" =>
                    [["readme.html", "caf7946275c3e885419b1d36b22cb5f3"],
                      ["wp-admin/css/wp-admin.css", "1906ac1bed40e0c5c7de71f2bc42dc20"]
                    ],
                      "3.6" =>
                    [["readme.html", "477f1e652f31dae76a38e3559c91deb9"],
                      ["wp-admin/css/wp-admin.css", "25dd20710bf1eec392a00fc892b63fde"]
                    ],
                      "3.6.1" =>
                    [["readme.html", "e82f4fe7d3c1166afb4c00856b875f16"],
                      ["wp-admin/css/wp-admin.css", "25dd20710bf1eec392a00fc892b63fde"]
                    ],
                      "3.7" =>
                    [["readme.html", "4717bf89e299ff054760ec8b0768c9e1"],
                      ["wp-admin/css/wp-admin.css", "f0894fa9c9733d0e577fc5beddc726cd"]
                    ],
                      "3.7.1" =>
                    [["readme.html", "4717bf89e299ff054760ec8b0768c9e1"],
                      ["wp-admin/css/wp-admin.css", "f0894fa9c9733d0e577fc5beddc726cd"]
                    ],
                      "3.8" =>
                    [["readme.html", "38ee273095b8f25b9ffd5ce5018fc4f0"],
                      ["wp-admin/css/wp-admin.css", "25554fc81989c307119b7d4818dc3963"]
                    ],
                      "3.8.1" =>
                    [["readme.html", "0d0eb101038124a108f608d419387b92"],
                      ["wp-admin/css/wp-admin.css", "68600417d5dc22244168b4eeb84f0af4"]]
    ]
    
    v = Version.new("WordPress", versions, @base_uri)
    
    version = v.matches_format
    
    # Set version if present
    unless version.empty?
        version.each { |ver|
            m << {:name => "md5 sums of files", :version => ver}
        }
    end
    
    # Return aggressive matches
    m
  end
  
end
原文地址:https://www.cnblogs.com/tk091/p/3674462.html