The Cms Sniffer Class
hamed.ramzi Offline
Junior Member
**
Posts: 12
Joined: May 2011
Post: #1
The Cms Sniffer Class
Ths Class The Cms Sniffer Class Can Be Used To Detect Web Applications Installed On The Website.

Written by: Hamed

Some Of The Code Is Derived From "Chrome Sniffer"
Url: Https://Chrome.Google.Com/Extensions/Det...Https://Chrome.Google.Com/Extensions/Detail/Homgcnaoacgigpkkljjjek


Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
class CMS_Detector
{
	public static function process($data)
	{
		$apps=array();
		
		//Meta tests
		$meta_tests = array(
			'Joomla'=> '/joomla/i',
			'vBulletin'=> '/vBulletin/i',
			'WordPress'=> '/wordPress/i',
			'XOOPS'=> '/xoops/i',
			'Plone'=> '/plone/i',
			'MediaWiki'=> '/MediaWiki/i',
			'CMSMadeSimple'=> '/CMS Made Simple/i',
			'SilverStripe'=> '/SilverStripe/i',
			'Movable Type'=> '/Movable Type/i',
			'Amiro.CMS'=> '/Amiro/i',
			'Koobi'=> '/koobi/i',
			'bbPress'=> '/bbPress/i',
			'DokuWiki'=> '/dokuWiki/i',
			'TYPO3'=> '/TYPO3/i',
			'PHP-Nuke'=> '/PHP-Nuke/i',
			'DotNetNuke'=> '/DotNetNuke/i',
			'Sitefinity'=> '/Sitefinity\s+(.*)/i',
			'WebGUI'=> '/WebGUI/i',
			'ez Publish'=> '/eZ\s*Publish/i',
			'BIGACE'=> '/BIGACE/i',
			'TypePad'=> '/typepad\.com/i',
			'Blogger'=> '/blogger/i',
			'PrestaShop'=> '/PrestaShop/i',
			'SharePoint'=> '/SharePoint/',
			'JaliosJCMS'=> '/Jalios JCMS/i',
			'ZenCart'=> '/zen-cart/i',
			'WPML'=> '/WPML/i',
			'PivotX'=> '/PivotX/i',
			'OpenACS'=> '/OpenACS/i',
			'phpBB'=> '/phpBB/i',
			//'Elgg'=> '/.+/',
			'Serendipity'=> '/Serendipity/i',
			'Avactis'=> '/Avactis Team/i'
		);
		
		$found=false;
		$i=strpos($data,"<meta ");
		while ($i!==false && $found==false)
		{
			$j=strpos($data,">",$i+1);
			if ($j===false)
			{
				$j=strlen($data)-1;
			}
			$meta_tag=substr($data,$i,$j-$i+1);
			
			foreach($meta_tests as $tag=>$regex)
			{
				preg_match($regex, $meta_tag, $matches);
				if (!empty($matches))
				{
					if (!in_array($tag,$apps))
					{
						array_push($apps,$tag);
					}
					$found=true;
					break;
				}
			}
			
			$i=strpos($data,"<meta ",$i+1);
		}
		
		
		$script_tests = array(
			'Google Analytics'=> '/google-analytics.com\/(ga|urchin).js/i',
			'Quantcast'=> '/quantserve\.com\/quant\.js/i',
			'Prototype'=> '/prototype\.js/i',
			'jQuery'=> '/jquery[a-z.]*\.js/i',
			'Joomla'=> '/\/components\/com_/',
			'Ubercart'=> '/uc_cart/i',
			'Closure'=> '/\/goog\/base\.js/i',
			'MODx'=> '/\/min\/b=.*f=.*/',
			'MooTools'=> '/mootools/i',
			'Dojo'=> '/dojo(\.xd)?\.js/i',
			'script.aculo.us'=> '/scriptaculous\.js/i',
			'Disqus'=> '/disqus.com\/forums/i',
			'GetSatisfaction'=> '/getsatisfaction\.com\/feedback/i',
			'Wibiya'=> '/wibiya\.com\/Loaders\//i',
			'reCaptcha'=> '/api\.recaptcha\.net\//i',
			'Mollom'=> '/mollom\/mollom\.js/i', // only work on Drupal now
			'ZenPhoto'=> '/zp-core\/js/i',
			'Gallery2'=> '/main\.php\?.*g2_.*/i',
			'AdSense'=> '/pagead\/show_ads\.js/',
			'XenForo'=> '/js\/xenforo\//i',
			'Cappuccino'=> '/Frameworks\/Objective-J\/Objective-J\.js/',
			'Avactis'=> '/\/avactis-themes\//i',
			'Volusion'=> '/a\/j\/javascripts\.js/',
			'AddThis'=> '/addthis\.com\/js/',
			'DataLife'=> "/dle_root/i",
			'ExtJS'=> "/ext[a-z.]*\.js/i"
		);
		
		$found=false;
		$i=strpos($data,"<script ");
		while ($i!==false && $found==false)
		{
			$j=strpos($data,"</script>",$i+9);
			if ($j===false)
			{
				$j=strlen($data)-1;
			}
			$meta_tag=substr($data,$i,$j-$i+9);
			foreach($script_tests as $tag=>$regex)
			{
				preg_match($regex, $meta_tag, $matches);
				if (!empty($matches))
				{
					if (!in_array($tag,$apps))
					{
						array_push($apps,$tag);
					}
					break;
				}
			}
			$i=strpos($data,"<script ",$i+1);
		}


detect by regexp

Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
		$text_tests = array(
			'SMF'=> "/<script .+\s+var smf_/i",
			'Magento'=> "/var BLANK_URL = '[^>]+js\/blank\.html'/i",
			'Tumblr'=> "/<iframe src=(\"|')http:\/\/\S+\.tumblr\.com/i",
			'WordPress'=> "/<link rel=(\"|')stylesheet(\"|') [^>]+wp-content/i",
			'Closure'=> "/<script[^>]*>.*goog\.require/is",
			'Liferay'=> "/<script[^>]*>.*LifeRay\.currentURL/is",
			'vBulletin'=> "/vbmenu_control/i",
			'MODx'=> "/(<a[^>]+>Powered by MODx<\/a>|var el= \$\('modxhost'\);|<script type=(\"|')text\/javascript(\"|')>var MODX_MEDIA_PATH = \"media\";)/i",
			'miniBB'=> "/<a href=(\"|')[^>]+minibb.+\s*<!--End of copyright link/is",
			'GetSatisfaction'=> "/asset_host\s*\+\s*\"javascripts\/feedback.*\.js/igm", // better recognization
			'Fatwire'=> "/\/Satellite\?|\/ContentServer\?/s",
			'Contao'=> "/powered by (TYPOlight|Contao)/is",
			'Moodle' => "/<link[^>]*\/theme\/standard\/styles.php\".*>/",
			'1c-bitrix' => "/<link[^>]*\/bitrix\/.*?>/i",
			'OpenCMS' => "/<link[^>]*\.opencms\..*?>/i",
			'GoogleFontApi'=> "/ref=[\"']?http:\/\/fonts.googleapis.com\//i",
			'Prostores' => "/-legacycss\/Asset\">/",
			'osCommerce'=> "/(product_info\.php\?products_id|_eof \/\/-->)/",
			'OpenCart'=> "/index.php\?route=product\/product/"
		);
		
		foreach($script_tests as $tag=>$regex)
		{
			preg_match($regex, $data, $matches);
			if (!empty($matches))
			{
				if (!in_array($tag,$apps))
				{
					array_push($apps,$tag);
				}
			}
		}
		
		return $apps;
	}
	
	public static function appToURL($app)
	{
		$apps = array(
			'Joomla'=> 'http://www.joomla.org',
			'vBulletin'=> 'http://www.vbulletin.com',
			'WordPress'=> 'http://www.wordpress.org',
			'XOOPS'=> 'http://www.xoops.org',
			'Plone'=> 'http://www.plone.org',
			'MediaWiki'=> 'http://www.mediawiki.org',
			'CMSMadeSimple'=> 'http://www.CMSMadeSimple.org',
			'SilverStripe'=> 'http://www.SilverStripe.org',
			'Movable Type'=> 'http://www.movabletype.org',
			'Amiro.CMS'=> 'http://www.amirocms.com',
			'Koobi'=> 'http://www.koobi.com',
			'bbPress'=> 'http://www.bbPress.org',
			'DokuWiki'=> 'http://www.dokuWiki.org',
			'TYPO3'=> 'http://www.typo3.com',
			'PHP-Nuke'=> 'http://phpnuke.org/',
			'DotNetNuke'=> 'http://www.dotnetnuke.com/',
			'Sitefinity'=> 'http://www.sitefinity.com/',
			'WebGUI'=> 'http://www.webgui.org/',
			'ez Publish'=> 'http://ez.no/',
			'BIGACE'=> 'http://www.bigace.de/',
			'TypePad'=> 'http://typepad.com',
			'Blogger'=> 'http://blogger.com',
			'PrestaShop'=> 'http://www.prestashop.com/',
			'SharePoint'=> 'http://sharepoint.microsoft.com',
			'JaliosJCMS'=> 'http://www.jalios.com',
			'ZenCart'=> 'http://www.zen-cart.com',
			'WPML'=> 'http://wpml.org/',
			'PivotX'=> 'http://pivotx.net',
			'OpenACS'=> 'http://openacs.org',
			'phpBB'=> 'http://www.phpbb.com',
			'Elgg'=> 'http://www.elgg.org/',
			'Serendipity'=> 'http://www.s9y.org/',
			'Avactis'=> 'http://www.avactis.com',
			
			'Google Analytics'=> 'http://www.google.com/analytics/',
			'Quantcast'=> 'http://www.quantcast.com/',
			'Prototype'=> 'http://www.prototypejs.org/',
			'Ubercart'=> 'http://www.ubercart.org/',
			'Closure'=> 'http://code.google.com/closure/',
			'MODx'=> 'http://modxcms.com/',
			'MooTools'=> 'http://mootools.net/',
			'Dojo'=> 'http://www.dojotoolkit.org/',
			'script.aculo.us'=> 'http://script.aculo.us/',
			'Disqus'=> 'http://disqus.com/',
			'GetSatisfaction'=> 'http://getsatisfaction.com',
			'Wibiya'=> 'http://wibiya.com/',
			'reCaptcha'=> 'http://recaptcha.net/',
			'Mollom'=> 'http://mollom.com', // only work on Drupal now
			'ZenPhoto'=> 'http://www.zenphoto.org',
			'Gallery2'=> 'http://gallery.menalto.com/',
			'AdSense'=> 'https://www.google.com/adsense',
			'XenForo'=> 'http://xenforo.com',
			'Cappuccino'=> 'http://cappuccino.org/',
			'Avactis'=> 'http://www.avactis.com',
			'Volusion'=> 'http://www.volusion.com',
			'AddThis'=> 'http://www.addthis.com',
			
			'SMF'=> "http://www.simplemachines.org/",
			'Magento'=> "http://www.magentocommerce.com/",
			'Tumblr'=> "http://tumblr.com",
			'Liferay'=> "http://www.liferay.com",
			'vBulletin'=> "http://www.vbulletin.com/",
			'miniBB'=> "http://www.minibb.com/",
			'Fatwire'=> "http://www.fatwire.com",
			'Contao'=> "http://www.contao.org",
			'Moodle' => "http://moodle.org",
			'1c-bitrix' => "http://www.1c-bitrix.ru/",
			'OpenCMS' => "http://www.opencms.org/",
			'GoogleFontApi'=> "http://code.google.com/apis/webfonts/",
			'Prostores' => "http://www.prostores.com",
			'osCommerce'=> "http://www.oscommerce.com",
			'OpenCart'=> "http://www.opencart.com",
			
			'DataLife'=> "http://www.datalifeengine.ir/",
			'jQuery'=> "http://jquery.com/",
			'ExtJS'=> "http://sencha.com/",
		);
		
		return $apps[$app];
	}
}

08-04-2011 04:21 PM
Find all posts by this user Quote this message in a reply
Gypaete Offline
Member
***
Posts: 82
Joined: Aug 2010
Post: #2
RE: The Cms Sniffer Class
This url: Https://Chrome.Google.Com/Extensions/Det...pignblkeae
it Doesn't exist.

[Image: selenab.png]
08-05-2011 08:12 PM
Find all posts by this user Quote this message in a reply

« Next Oldest | Next Newest »

 Standard Tools
Forum Jump: