-
Notifications
You must be signed in to change notification settings - Fork 1
/
typo3_fingerprinting
executable file
·78 lines (67 loc) · 2.34 KB
/
typo3_fingerprinting
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
#!/usr/bin/php
<?php
/***************************************************************
* Copyright notice
*
* (c) 2011 Adrien LUCAS <[email protected]>
* All rights reserved
*
* This script is part of the TYPO3 Fingerprinting project. The
* TYPO3 Fingerprinting project is free software but is not part of
* the TYPO3 project; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
include('inc/global_functions.php');
include('inc/fingerprinting_functions.php');
echo "TYPO3 Fingerprinting (1st release)\n";
if($argc < 2)
usage();
$_target = array_pop($argv);
$_ctx = stream_context_create( //feel free to change (except 'ignore_errors')
array('http' =>
array(
'method' => 'GET',
'header' => '',
'user_agent' => 'Mozilla/5.0 is not my user-agent.',
'ignore_errors' => !optionIsSet('debug')
)
)
);
//1st way : "Le bon"
if(($branch = matchBranchInMetatag()) !== FALSE)
$res = 'is '.$branch;
else
$res = 'not found';
echo "1. Branch $res (meta tag).\n";
//2nd way : "Le truand"
if(($version = matchVersionInChangelog(array('typo3/ChangeLog', 'typo3_src/ChangeLog', 'ChangeLog'))) !== FALSE)
$res = 'is '.$version;
else
$res = "not found";
echo "2. Release $res (changelog).\n";
//3rd way : "La brute"
include('fingerprints/filesums.php');
global $targetSums;
if(sizeof($versions = matchVersionsByFilesums($_filesums)) > 0){
$res = 'matched';
$displayed = 0;
foreach($versions as $v => $c){
$matched = intval($c*100/sizeof($targetSums));
if($displayed++ < 6 || $matched > 75) $res .= ' : '.$v.'('.$matched.'%)';
}
}else
$res = 'not matched';
echo "3. Possible version(s) $res (fingerprints).\n";
if(optionIsSet('debug')) echo "*. Target's fingerprints : ".var_export($targetSums, TRUE)."\n";