PluginProbe ʕ •ᴥ•ʔ
Wordfence Security – Firewall, Malware Scan, and Login Security / 2.0.5
Wordfence Security – Firewall, Malware Scan, and Login Security v2.0.5
8.2.2 8.2.1 8.2.0 3.7.1 3.7.2 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.8.6 3.8.7 3.8.8 3.8.9 3.9.1 4.0.1 4.0.2 4.0.3 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.0.9 5.1.1 5.1.2 5.1.4 5.1.5 5.1.6 5.1.7 5.1.8 5.1.9 5.2.1 5.2.2 5.2.3 5.2.4 5.2.5 5.2.6 5.2.7 5.2.8 5.2.9 5.3.1 5.3.10 5.3.11 5.3.12 5.3.2 5.3.3 5.3.4 5.3.5 5.3.6 5.3.7 5.3.8 5.3.9 6.0.1 6.0.10 6.0.11 6.0.12 6.0.14 6.0.15 6.0.16 6.0.17 6.0.18 6.0.19 6.0.2 6.0.20 6.0.21 6.0.22 6.0.23 6.0.24 6.0.25 6.0.3 6.0.4 6.0.5 6.0.6 6.0.7 6.0.8 6.0.9 6.1.1 6.1.10 6.1.11 6.1.12 6.1.14 6.1.15 6.1.16 6.1.17 6.1.2 6.1.3 6.1.4 6.1.5 6.1.6 6.1.7 6.1.8 6.1.9 6.2.0 6.2.1 6.2.10 6.2.2 6.2.3 6.2.4 6.2.5 6.2.6 6.2.7 6.2.8 6.2.9 6.3.0 6.3.1 6.3.10 6.3.11 6.3.12 6.3.14 6.3.15 6.3.16 6.3.17 6.3.18 6.3.19 6.3.2 6.3.20 6.3.21 6.3.22 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.3.8 6.3.9 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1.0 7.1.1 7.1.10 7.1.11 7.1.12 7.1.14 7.1.15 7.1.16 7.1.17 7.1.18 7.1.19 7.1.2 7.1.20 7.1.3 7.1.4 7.1.5 7.1.6 7.1.7 7.1.8 7.1.9 7.10.0 7.10.1 7.10.2 7.10.3 7.10.4 7.10.5 7.10.6 7.10.7 7.11.0 7.11.1 7.11.2 7.11.3 7.11.4 7.11.5 7.11.6 7.11.7 7.2.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3.1 7.3.2 7.3.3 7.3.4 7.3.5 7.3.6 7.4.0 7.4.1 7.4.10 7.4.11 7.4.12 7.4.14 7.4.2 7.4.3 trunk 7.4.4 1.1 7.4.5 1.2 7.4.6 1.3 7.4.7 1.3.1 7.4.8 1.3.2 7.4.9 1.3.3 7.5.0 1.4.2 7.5.1 1.4.3 7.5.10 1.4.4 7.5.11 1.4.5 7.5.2 1.4.6 7.5.3 1.4.7 7.5.4 1.4.8 7.5.5 1.5.1 7.5.6 1.5.2 7.5.7 1.5.3 7.5.8 1.5.4 7.5.9 1.5.5 7.6.0 1.5.6 7.6.1 2.0.1 7.6.2 2.0.2 7.7.0 2.0.3 7.7.1 2.0.5 7.8.0 2.0.6 7.8.1 2.0.7 7.8.2 2.1.0 7.9.0 2.1.1 7.9.1 2.1.2 7.9.2 2.1.3 7.9.3 2.1.4 8.0.0 2.1.5 8.0.1 3.0.2 8.0.2 3.0.3 8.0.3 3.0.4 8.0.4 3.0.5 8.0.5 3.0.6 8.1.0 3.0.7 8.1.1 3.0.8 8.1.2 3.0.9 8.1.3 3.1.0 8.1.4 3.1.1 v1.4.1 3.1.2 3.1.4 3.1.6 3.2.1 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.4.1 3.4.4 3.4.5 3.5.1 3.5.2 3.6.1 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.6.8 3.6.9
wordfence / lib / wfModTracker.php
wordfence / lib Last commit date
Diff 14 years ago .htaccess 14 years ago Diff.php 14 years ago IPTraf.php 14 years ago diffResult.php 14 years ago dropAll.php 14 years ago email_genericAlert.php 14 years ago email_newIssues.php 14 years ago email_unlockRequest.php 14 years ago menu_activity.php 14 years ago menu_blockedIPs.php 14 years ago menu_config.php 14 years ago menu_options.php 14 years ago menu_scan.php 14 years ago sysinfo.php 14 years ago viewFullActivityLog.php 14 years ago wf503.php 14 years ago wfAPI.php 14 years ago wfAction.php 14 years ago wfBrowscap.php 14 years ago wfBrowscapCache.php 14 years ago wfConfig.php 14 years ago wfCrawl.php 14 years ago wfDB.php 14 years ago wfDict.php 14 years ago wfIssues.php 14 years ago wfLockedOut.php 14 years ago wfLog.php 14 years ago wfModTracker.php 14 years ago wfRate.php 14 years ago wfScanEngine.php 14 years ago wfSchema.php 14 years ago wfUnlockMsg.php 14 years ago wfUtils.php 14 years ago wfViewResult.php 14 years ago wordfenceClass.php 14 years ago wordfenceConstants.php 14 years ago wordfenceHash.php 14 years ago wordfenceScanner.php 14 years ago wordfenceURLHoover.php 14 years ago
wfModTracker.php
126 lines
1 <?php
2 require_once('wordfenceClass.php');
3 class wfModTracker {
4 private $themeSum = false;
5 private $pluginSum = false;
6 private $coreSum = false;
7 private $db = false;
8 private $changesTable = false;
9 private $anyFilesChangedCached = false;
10 public function __construct(){
11 global $wpdb;
12 $this->changesTable = $wpdb->base_prefix . 'wfFileChanges';
13 $this->status(2, 'info', "Getting file change DB handle");
14 $this->db = new wfDB();
15 $this->status(2, 'info', "Starting theme change check");
16 $this->themeSum = $this->makeSum(get_theme_root());
17 $this->status(2, 'info', "Starting plugin change scan");
18 $this->pluginSum = $this->makeSum(WP_PLUGIN_DIR);
19 $this->status(2, 'info', "Starting core file change scan");
20 $this->coreSum = $this->makeCoreSum();
21 $this->allFilesSum = array();
22 $this->status(2, 'info', "Getting changes in all other files");
23 $this->getAllFilesSum(ABSPATH);
24 $this->status(2, 'info', "Done compiling file changes");
25 }
26 public static function resetChanges(){
27 wfConfig::set('wfmdt_coreSum', '');
28 wfConfig::set('wfmdt_themeSum', '');
29 wfConfig::set('wfmdt_pluginSum', '');
30 $db = new wfDB();
31 global $wpdb;
32 $db->query("delete from " . $wpdb->base_prefix . 'wfFileChanges');
33 }
34 public function filesModifiedInCore(){ if(wfConfig::get('wfmdt_coreSum') != $this->coreSum){ return true; } else { return false; } }
35 public function filesModifiedInThemes(){ if(wfConfig::get('wfmdt_themeSum') != $this->themeSum){ return true; } else { return false; } }
36 public function filesModifiedInPlugins(){ if(wfConfig::get('wfmdt_pluginSum') != $this->pluginSum){ return true; } else { return false; } }
37 public function getChangedFiles($stripPath, $filterOutFiles){
38 $changed = array();
39 foreach($this->allFilesSum as $file => $md5){
40 if(in_array($file, $filterOutFiles)){ continue; }
41 $dbSig = $this->db->querySingle("select md5 from " . $this->changesTable . " where filenameHash='%s'", hash('sha256', $file));
42 if($dbSig != $md5){
43 $changed[] = substr($file, strlen($stripPath) - 1);
44 }
45 }
46 return $changed;
47 }
48 public function anyFilesChanged(){
49 if(! $this->anyFilesChangedCached){
50 $changed = false;
51 $q = $this->db->query("select file, md5 from " . $this->changesTable);
52 $knownDBFiles = array();
53 while($row = mysql_fetch_assoc($q)){
54 $knownDBFiles[$row['file']] = true;
55 if( (! isset($this->allFilesSum[$row['file']])) || $this->allFilesSum[$row['file']] != $row['md5']){
56 $changed = true;
57 //Can't break because we need to populate all of knownDBFiles
58 }
59 }
60 foreach($this->allFilesSum as $file => $md5){
61 if(! isset($knownDBFiles[$file])){
62 //We have a new file the DB doesn't know about
63 $changed = true;
64 break;
65 }
66 }
67 $this->anyFilesChangedCached = $changed ? 'true' : 'false';
68 }
69 return $this->anyFilesChangedCached == 'true' ? true : false;
70 }
71 public function logCurrentState(){
72 wfConfig::set('wfmdt_coreSum', $this->coreSum);
73 wfConfig::set('wfmdt_themeSum', $this->themeSum);
74 wfConfig::set('wfmdt_pluginSum', $this->pluginSum);
75 foreach($this->allFilesSum as $file => $md5){
76 $this->db->query("insert into " . $this->changesTable . " (file, md5, filenameHash) values ('%s', '%s', '%s') ON DUPLICATE KEY UPDATE md5='%s'", $file, $md5, hash('sha256', $file), $md5);
77 }
78 $q = $this->db->query("select file from " . $this->changesTable);
79 while($row = mysql_fetch_assoc($q)){
80 if(! isset($this->allFilesSum[$row['file']])){
81 $this->db->query("delete from " . $this->changesTable . " where filenameHash='%s'", hash('sha256', $row['file']));
82 }
83 }
84 }
85 private function getAllFilesSum($path){
86 $path = rtrim($path, '/');
87 $files = scandir($path);
88 foreach($files as $file){
89 if($file == '.' || $file == '..'){ continue; }
90 $file = $path . '/' . $file;
91 if(is_file($file)){
92 $md5 = @md5_file($file);
93 if($md5){ $this->allFilesSum[$file] = $md5; }
94 } else if(is_dir($file)){
95 $this->getAllFilesSum($file, $this->allFilesSum);
96 }
97 }
98 }
99 private function makeCoreSum(){
100 return md5(
101 $this->makeSum(ABSPATH, true) . //norecurse
102 $this->makeSum(ABSPATH . '/wp-admin/') .
103 $this->makeSum(ABSPATH . '/wp-includes/')
104 );
105 }
106 public function makeSum($dir, $norecurse = false, $str = ''){
107 $dir = rtrim($dir, '/');
108 $files = scandir($dir);
109 foreach($files as $file){
110 if($file == '.' || $file == '..'){ continue; }
111 $file = $dir . '/' . $file;
112 if(is_file($file)){
113 $md5 = @md5_file($file);
114 if($md5){ $str .= $md5; }
115 } else if((! $norecurse) && is_dir($file)){
116 $str .= md5($this->makeSum($file, $norecurse, $str));
117 }
118 }
119 return md5($str);
120 }
121 private function status($level, $type, $msg){
122 wordfence::status($level, $type, $msg);
123 }
124 }
125 ?>
126