mirror of https://github.com/MISP/MISP
chg: [internal] Simplified ComplexTypeTool::checkFreeText
parent
e908a80656
commit
06c7af4f83
|
@ -60,17 +60,13 @@ class ComplexTypeTool
|
|||
switch ($type) {
|
||||
case 'File':
|
||||
return $this->checkComplexFile($input);
|
||||
break;
|
||||
case 'CnC':
|
||||
return $this->checkComplexCnC($input);
|
||||
break;
|
||||
case 'freetext':
|
||||
case 'FreeText':
|
||||
return $this->checkFreeText($input, $settings);
|
||||
break;
|
||||
case 'csv':
|
||||
return $this->checkCSV($input, $settings);
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
@ -198,7 +194,7 @@ class ComplexTypeTool
|
|||
|
||||
public function checkFreeText($input, $settings = array())
|
||||
{
|
||||
$charactersToTrim = array('\'', '"', ',', '(', ')', ' ');
|
||||
$charactersToTrim = '\'",() ' . "\t\n\r\0\x0B"; // custom + default PHP trim
|
||||
$iocArray = preg_split("/\r\n|\n|\r|\s|\s+|,|\<|\>|;/", $input);
|
||||
$quotedText = explode('"', $input);
|
||||
foreach ($quotedText as $k => $temp) {
|
||||
|
@ -211,32 +207,21 @@ class ComplexTypeTool
|
|||
}
|
||||
$iocArray = array_merge($iocArray, $this->__returnOddElements($quotedText));
|
||||
$resultArray = array();
|
||||
if (!empty($iocArray)) {
|
||||
foreach ($iocArray as $ioc) {
|
||||
$ioc = trim($ioc);
|
||||
$ioc = str_replace("\xc2\xa0", '', $ioc);
|
||||
foreach ($charactersToTrim as $c) {
|
||||
$ioc = trim($ioc, $c);
|
||||
}
|
||||
$ioc = preg_replace('/\p{C}+/u', '', $ioc);
|
||||
if (empty($ioc)) {
|
||||
continue;
|
||||
}
|
||||
if (isset($settings['excluderegex']) && !empty($settings['excluderegex'])) {
|
||||
if (preg_match($settings['excluderegex'], $ioc)) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
$typeArray = $this->__resolveType($ioc);
|
||||
if ($typeArray === false) {
|
||||
continue;
|
||||
}
|
||||
$temp = $typeArray;
|
||||
if (!isset($temp['value'])) {
|
||||
$temp['value'] = $ioc;
|
||||
}
|
||||
$resultArray[] = $temp;
|
||||
foreach ($iocArray as $ioc) {
|
||||
$ioc = str_replace("\xc2\xa0", '', $ioc); // remove non breaking space
|
||||
$ioc = trim($ioc, $charactersToTrim);
|
||||
$ioc = preg_replace('/\p{C}+/u', '', $ioc);
|
||||
if (empty($ioc)) {
|
||||
continue;
|
||||
}
|
||||
if (!empty($settings['excluderegex']) && preg_match($settings['excluderegex'], $ioc)) {
|
||||
continue;
|
||||
}
|
||||
$typeArray = $this->__resolveType($ioc);
|
||||
if ($typeArray === false) {
|
||||
continue;
|
||||
}
|
||||
$resultArray[] = $typeArray;
|
||||
}
|
||||
return $resultArray;
|
||||
}
|
||||
|
|
|
@ -5,6 +5,23 @@ use PHPUnit\Framework\TestCase;
|
|||
|
||||
class ComplexTypeToolTest extends TestCase
|
||||
{
|
||||
public function testCheckFreeTextHeader(): void
|
||||
{
|
||||
$complexTypeTool = new ComplexTypeTool();
|
||||
$results = $complexTypeTool->checkFreeText(<<<EOT
|
||||
# LAST 1000 # UTC UPDATE 2020-07-13 08:15:00
|
||||
127.0.0.1,(127.0.0.2), <127.0.0.3>
|
||||
EOT
|
||||
);
|
||||
$this->assertCount(3, $results);
|
||||
$this->assertEquals('127.0.0.1', $results[0]['value']);
|
||||
$this->assertEquals('ip-dst', $results[0]['default_type']);
|
||||
$this->assertEquals('127.0.0.2', $results[1]['value']);
|
||||
$this->assertEquals('ip-dst', $results[1]['default_type']);
|
||||
$this->assertEquals('127.0.0.3', $results[2]['value']);
|
||||
$this->assertEquals('ip-dst', $results[2]['default_type']);
|
||||
}
|
||||
|
||||
public function testCheckFreeTextIpv4(): void
|
||||
{
|
||||
$complexTypeTool = new ComplexTypeTool();
|
||||
|
|
Loading…
Reference in New Issue