8
8
* License: GNU/GPLv2
9
9
* @see LICENSE.txt
10
10
*
11
- * This file: The scanner (last modified: 2020.10.18 ).
11
+ * This file: The scanner (last modified: 2020.10.30 ).
12
12
*/
13
13
14
14
namespace phpMussel \Core ;
@@ -58,6 +58,8 @@ class Scanner
58
58
59
59
/**
60
60
* Construct the scanner.
61
+ *
62
+ * @param \phpMussel\Core\Loader $Loader The instantiated loader object, passed by reference.
61
63
*/
62
64
public function __construct (\phpMussel \Core \Loader &$ Loader )
63
65
{
@@ -992,13 +994,13 @@ private function dataHandler(string $str = '', int $Depth = 0, string $OriginalF
992
994
if (
993
995
strpos (',FD,FD-RX,FD-NORM,FD-NORM-RX, ' , ', ' . $ Fragment [0 ] . ', ' ) === false || (
994
996
$ Fragment [0 ] === 'FD ' &&
995
- strpos ("\x01 " . substr ($ str_hex , 0 , $ Fragment [3 ] * 2 ), "\x01 " . $ Fragment [1 ]) === false
997
+ strpos ("\1 " . substr ($ str_hex , 0 , $ Fragment [3 ] * 2 ), "\1 " . $ Fragment [1 ]) === false
996
998
) || (
997
999
$ Fragment [0 ] === 'FD-RX ' &&
998
1000
!preg_match ('/\A(?: ' . $ Fragment [1 ] . ')/i ' , substr ($ str_hex , 0 , $ Fragment [3 ] * 2 ))
999
1001
) || (
1000
1002
$ Fragment [0 ] === 'FD-NORM ' &&
1001
- strpos ("\x01 " . substr ($ str_hex_norm , 0 , $ Fragment [3 ] * 2 ), "\x01 " . $ Fragment [1 ]) === false
1003
+ strpos ("\1 " . substr ($ str_hex_norm , 0 , $ Fragment [3 ] * 2 ), "\1 " . $ Fragment [1 ]) === false
1002
1004
) || (
1003
1005
$ Fragment [0 ] === 'FD-NORM-RX ' &&
1004
1006
!preg_match ('/\A(?: ' . $ Fragment [1 ] . ')/i ' , substr ($ str_hex_norm , 0 , $ Fragment [3 ] * 2 ))
@@ -1031,13 +1033,13 @@ private function dataHandler(string $str = '', int $Depth = 0, string $OriginalF
1031
1033
!preg_match ('/\A(?: ' . $ Fragment [1 ] . ')/i ' , $ OriginalFilename )
1032
1034
) || (
1033
1035
$ Fragment [0 ] === 'FD ' &&
1034
- strpos ("\x01 " . $ str_hex , "\x01 " . $ Fragment [1 ]) === false
1036
+ strpos ("\1 " . $ str_hex , "\1 " . $ Fragment [1 ]) === false
1035
1037
) || (
1036
1038
$ Fragment [0 ] === 'FD-RX ' &&
1037
1039
!preg_match ('/\A(?: ' . $ Fragment [1 ] . ')/i ' , $ str_hex )
1038
1040
) || (
1039
1041
$ Fragment [0 ] === 'FD-NORM ' &&
1040
- strpos ("\x01 " . $ str_hex_norm , "\x01 " . $ Fragment [1 ]) === false
1042
+ strpos ("\1 " . $ str_hex_norm , "\1 " . $ Fragment [1 ]) === false
1041
1043
) || (
1042
1044
$ Fragment [0 ] === 'FD-NORM-RX ' &&
1043
1045
!preg_match ('/\A(?: ' . $ Fragment [1 ] . ')/i ' , $ str_hex_norm )
@@ -1174,7 +1176,7 @@ private function dataHandler(string $str = '', int $Depth = 0, string $OriginalF
1174
1176
'SectionHead ' => substr ($ str , $ PEArr ['Offset ' ] + 24 + $ PEArr ['OptHdrSize ' ] + ($ PEArr ['k ' ] * 40 ), $ NumOfSections * 40 )
1175
1177
];
1176
1178
$ PEArr ['SectionArr ' ][$ PEArr ['k ' ]]['SectionName ' ] =
1177
- str_ireplace ("\x00 " , '' , substr ($ PEArr ['SectionArr ' ][$ PEArr ['k ' ]]['SectionHead ' ], 0 , 8 ));
1179
+ str_ireplace ("\0 " , '' , substr ($ PEArr ['SectionArr ' ][$ PEArr ['k ' ]]['SectionHead ' ], 0 , 8 ));
1178
1180
$ PEArr ['SectionArr ' ][$ PEArr ['k ' ]]['VirtualSize ' ] =
1179
1181
$ this ->Loader ->unpackSafe ('S ' , substr ($ PEArr ['SectionArr ' ][$ PEArr ['k ' ]]['SectionHead ' ], 8 , 4 ));
1180
1182
$ PEArr ['SectionArr ' ][$ PEArr ['k ' ]]['VirtualSize ' ] =
@@ -1210,22 +1212,22 @@ private function dataHandler(string $str = '', int $Depth = 0, string $OriginalF
1210
1212
$ SizeOfRawData . ': ' . $ PEArr ['SectionArr ' ][$ PEArr ['k ' ]]['sha256 ' ] . ': '
1211
1213
];
1212
1214
}
1213
- if (strpos ($ str , "V \x00 a \x00 r \x00 F \x00 i \x00 l \x00 e \x00 I \x00 n \x00 f \x00 o \x00\x00\x00\x00\x00 \x24" ) !== false ) {
1214
- $ PEArr ['Parts ' ] = $ this ->Loader ->substrAfterLast ($ str , "V \x00 a \x00 r \x00 F \x00 i \x00 l \x00 e \x00 I \x00 n \x00 f \x00 o \x00\x00\x00\x00\x00 \x24" );
1215
+ if (strpos ($ str , "V \0 a \0 r \0 F \0 i \0 l \0 e \0 I \0 n \0 f \0 o \0\0\0\0\0 \x24" ) !== false ) {
1216
+ $ PEArr ['Parts ' ] = $ this ->Loader ->substrAfterLast ($ str , "V \0 a \0 r \0 F \0 i \0 l \0 e \0 I \0 n \0 f \0 o \0\0\0\0\0 \x24" );
1215
1217
$ PEArr ['FINFO ' ] = [];
1216
1218
foreach ([
1217
- ["F \x00 i \x00 l \x00 e \x00 D \x00 e \x00 s \x00 c \x00 r \x00 i \x00 p \x00 t \x00 i \x00 o \x00 n \x00\x00\x00 " , 'PEFileDescription ' ],
1218
- ["F \x00 i \x00 l \x00 e \x00 V \x00 e \x00 r \x00 s \x00 i \x00 o \x00 n \x00\x00\x00 " , 'PEFileVersion ' ],
1219
- ["P \x00 r \x00 o \x00 d \x00 u \x00 c \x00 t \x00 N \x00 a \x00 m \x00 e \x00\x00\x00 " , 'PEProductName ' ],
1220
- ["P \x00 r \x00 o \x00 d \x00 u \x00 c \x00 t \x00 V \x00 e \x00 r \x00 s \x00 i \x00 o \x00 n \x00\x00\x00 " , 'PEProductVersion ' ],
1221
- ["L \x00 e \x00 g \x00 a \x00 l \x00 C \x00 o \x00 p \x00 y \x00 r \x00 i \x00 g \x00 h \x00 t \x00\x00\x00 " , 'PECopyright ' ],
1222
- ["O \x00 r \x00 i \x00 g \x00 i \x00 n \x00 a \x00 l \x00 F \x00 i \x00 l \x00 e \x00 n \x00 a \x00 m \x00 e \x00\x00\x00 " , 'PEOriginalFilename ' ],
1223
- ["C \x00 o \x00 m \x00 p \x00 a \x00 n \x00 y \x00 N \x00 a \x00 m \x00 e \x00\x00\x00 " , 'PECompanyName ' ],
1219
+ ["F \0 i \0 l \0 e \0 D \0 e \0 s \0 c \0 r \0 i \0 p \0 t \0 i \0 o \0 n \0\0\0 " , 'PEFileDescription ' ],
1220
+ ["F \0 i \0 l \0 e \0 V \0 e \0 r \0 s \0 i \0 o \0 n \0\0\0 " , 'PEFileVersion ' ],
1221
+ ["P \0 r \0 o \0 d \0 u \0 c \0 t \0 N \0 a \0 m \0 e \0\0\0 " , 'PEProductName ' ],
1222
+ ["P \0 r \0 o \0 d \0 u \0 c \0 t \0 V \0 e \0 r \0 s \0 i \0 o \0 n \0\0\0 " , 'PEProductVersion ' ],
1223
+ ["L \0 e \0 g \0 a \0 l \0 C \0 o \0 p \0 y \0 r \0 i \0 g \0 h \0 t \0\0\0 " , 'PECopyright ' ],
1224
+ ["O \0 r \0 i \0 g \0 i \0 n \0 a \0 l \0 F \0 i \0 l \0 e \0 n \0 a \0 m \0 e \0\0\0 " , 'PEOriginalFilename ' ],
1225
+ ["C \0 o \0 m \0 p \0 a \0 n \0 y \0 N \0 a \0 m \0 e \0\0\0 " , 'PECompanyName ' ],
1224
1226
] as $ PEVars ) {
1225
1227
if (strpos ($ PEArr ['Parts ' ], $ PEVars [0 ]) !== false && (
1226
- $ {$ PEVars [1 ]} = trim (str_ireplace ("\x00 " , '' , $ this ->Loader ->substrBeforeFirst (
1228
+ $ {$ PEVars [1 ]} = trim (str_ireplace ("\0 " , '' , $ this ->Loader ->substrBeforeFirst (
1227
1229
$ this ->Loader ->substrAfterLast ($ PEArr ['Parts ' ], $ PEVars [0 ]),
1228
- "\x00\x00\x00 "
1230
+ "\0\0\0 "
1229
1231
)))
1230
1232
)) {
1231
1233
foreach (['md5 ' , 'sha1 ' , 'sha256 ' ] as $ TryHash ) {
@@ -1309,7 +1311,7 @@ private function dataHandler(string $str = '', int $Depth = 0, string $OriginalF
1309
1311
) {
1310
1312
$ this ->Loader ->InstanceCache ['LookupCount ' ] = 0 ;
1311
1313
$ URLScanner = [
1312
- 'FixedSource ' => preg_replace ('~(data|f(ile|tps?)|https?|sftp):~i ' , "\x01\\1: " , str_replace ("\\" , '/ ' , $ str_norm )) . "\x01 " ,
1314
+ 'FixedSource ' => preg_replace ('~(data|f(ile|tps?)|https?|sftp):~i ' , "\x01\\1: " , str_replace ("\\" , '/ ' , $ str_norm )) . "\1 " ,
1313
1315
'DomainsNoLookup ' => [],
1314
1316
'DomainsCount ' => 0 ,
1315
1317
'Domains ' => [],
@@ -1638,13 +1640,13 @@ private function dataHandler(string $str = '', int $Depth = 0, string $OriginalF
1638
1640
if ($ ThisSigPart [2 ] === 'A ' ) {
1639
1641
if (strpos (',FD,FD-RX,FD-NORM,FD-NORM-RX,META, ' , ', ' . $ ThisSigPart [0 ] . ', ' ) === false || (
1640
1642
$ ThisSigPart [0 ] === 'FD ' &&
1641
- strpos ("\x01 " . substr ($ str_hex , 0 , $ ThisSigPart [3 ] * 2 ), "\x01 " . $ ThisSigPart [1 ]) === false
1643
+ strpos ("\1 " . substr ($ str_hex , 0 , $ ThisSigPart [3 ] * 2 ), "\1 " . $ ThisSigPart [1 ]) === false
1642
1644
) || (
1643
1645
$ ThisSigPart [0 ] === 'FD-RX ' &&
1644
1646
!preg_match ('/\A(?: ' . $ ThisSigPart [1 ] . ')/i ' , substr ($ str_hex , 0 , $ ThisSigPart [3 ] * 2 ))
1645
1647
) || (
1646
1648
$ ThisSigPart [0 ] === 'FD-NORM ' &&
1647
- strpos ("\x01 " . substr ($ str_hex_norm , 0 , $ ThisSigPart [3 ] * 2 ), "\x01 " . $ ThisSigPart [1 ]) === false
1649
+ strpos ("\1 " . substr ($ str_hex_norm , 0 , $ ThisSigPart [3 ] * 2 ), "\1 " . $ ThisSigPart [1 ]) === false
1648
1650
) || (
1649
1651
$ ThisSigPart [0 ] === 'FD-NORM-RX ' &&
1650
1652
!preg_match ('/\A(?: ' . $ ThisSigPart [1 ] . ')/i ' , substr ($ str_hex_norm , 0 , $ ThisSigPart [3 ] * 2 ))
@@ -1682,13 +1684,13 @@ private function dataHandler(string $str = '', int $Depth = 0, string $OriginalF
1682
1684
!preg_match ('/\A(?: ' . $ ThisSigPart [1 ] . ')/i ' , $ OriginalFilename )
1683
1685
) || (
1684
1686
$ ThisSigPart [0 ] === 'FD ' &&
1685
- strpos ("\x01 " . $ str_hex , "\x01 " . $ ThisSigPart [1 ]) === false
1687
+ strpos ("\1 " . $ str_hex , "\1 " . $ ThisSigPart [1 ]) === false
1686
1688
) || (
1687
1689
$ ThisSigPart [0 ] === 'FD-RX ' &&
1688
1690
!preg_match ('/\A(?: ' . $ ThisSigPart [1 ] . ')/i ' , $ str_hex )
1689
1691
) || (
1690
1692
$ ThisSigPart [0 ] === 'FD-NORM ' &&
1691
- strpos ("\x01 " . $ str_hex_norm , "\x01 " . $ ThisSigPart [1 ]) === false
1693
+ strpos ("\1 " . $ str_hex_norm , "\1 " . $ ThisSigPart [1 ]) === false
1692
1694
) || (
1693
1695
$ ThisSigPart [0 ] === 'FD-NORM-RX ' &&
1694
1696
!preg_match ('/\A(?: ' . $ ThisSigPart [1 ] . ')/i ' , $ str_hex_norm )
@@ -1954,12 +1956,12 @@ private function dataHandler(string $str = '', int $Depth = 0, string $OriginalF
1954
1956
$ ThisString = $ $ DataSource ;
1955
1957
$ this ->dataConfineByOffsets ($ ThisString , $ xstrf , $ xstrt , $ SectionOffsets );
1956
1958
if ($ xstrf === 'A ' ) {
1957
- $ ThisString = "\x01 " . $ ThisString ;
1958
- $ ThisSig [0 ] = "\x01 " . $ ThisSig [0 ];
1959
+ $ ThisString = "\1 " . $ ThisString ;
1960
+ $ ThisSig [0 ] = "\1 " . $ ThisSig [0 ];
1959
1961
}
1960
1962
if ($ xstrt === 'Z ' ) {
1961
- $ ThisString .= "\x01 " ;
1962
- $ ThisSig [$ ThisSigCount - 1 ] .= "\x01 " ;
1963
+ $ ThisString .= "\1 " ;
1964
+ $ ThisSig [$ ThisSigCount - 1 ] .= "\1 " ;
1963
1965
}
1964
1966
for ($ ThisSigi = 0 ; $ ThisSigi < $ ThisSigCount ; $ ThisSigi ++) {
1965
1967
if (strpos ($ ThisString , $ ThisSig [$ ThisSigi ]) === false ) {
@@ -2406,7 +2408,7 @@ private function archiveRecursor(string $Data, string $File = '', int $ScanDepth
2406
2408
$ this ->Loader ->InstanceCache ['container ' ] = 'pkfile ' ;
2407
2409
}
2408
2410
} elseif (
2409
- substr ($ Data , 257 , 6 ) === "ustar \x00 " ||
2411
+ substr ($ Data , 257 , 6 ) === "ustar \0 " ||
2410
2412
strpos (',tar,tgz,tbz,tlz,tz, ' , ', ' . $ xt . ', ' ) !== false
2411
2413
) {
2412
2414
$ Handler = 'TarHandler ' ;
@@ -2936,7 +2938,7 @@ public function quarantine(string $In, string $Key, string $IP, string $ID): boo
2936
2938
}
2937
2939
$ k = strlen ($ Key );
2938
2940
$ FileSize = strlen ($ In );
2939
- $ Head = "\xa1phpMussel \x21" . $ this ->Loader ->hexSafe (hash ('md5 ' , $ In )) . pack ('l* ' , $ FileSize ) . "\x01 " ;
2941
+ $ Head = "\xa1phpMussel \x21" . $ this ->Loader ->hexSafe (hash ('md5 ' , $ In )) . pack ('l* ' , $ FileSize ) . "\1 " ;
2940
2942
$ In = gzdeflate ($ In , 9 );
2941
2943
$ Out = '' ;
2942
2944
$ i = 0 ;
@@ -2947,7 +2949,7 @@ public function quarantine(string $In, string $Key, string $IP, string $ID): boo
2947
2949
}
2948
2950
$ L = substr ($ In , $ i , 1 );
2949
2951
$ R = substr ($ Key , $ j , 1 );
2950
- $ Out .= ($ L === false ? "\x00 " : $ L ) ^ ($ R === false ? "\x00 " : $ R );
2952
+ $ Out .= ($ L === false ? "\0 " : $ L ) ^ ($ R === false ? "\0 " : $ R );
2951
2953
}
2952
2954
}
2953
2955
$ Out =
0 commit comments