[RU]

[EN]
Alphazine - Only Successful People.
ГАРАНТ ПОПОЛНИТЬ ДЕПОЗИТ

Вернуться   Alphazine - Only Successful People. > Общий > Вопросы. > Статьи.

Важная информация

[Определение часового пояса]
[ Регистрация ]
Имя:
Отделение людей от роботов


 
Опции темы
Как я собирал базу мыл из логов
Старый   #1
Admin
Админ
 
Регистрация: 01.01.2020
Сообщений: 3,789
Спасибо: 172 раз(а)
Репутация:    
Депозит: 1.021 ?
Business Level: 25 ?
Отправить личное сообщение для Admin
Как я собирал базу мыл из логов

Эта статья рассчитана на новичков, те же кто не первый день использует логи, наверняка имеют автоматизированные решения и мало что для себя почерпнут.

Вкратце скажу, что я использовал 3 программы: 1. Notepad++, 2. PHP, 3. AMS.

Возможно, первую можно заменить на более продвинутый скрипт PHP, чем сейчас, но поскольку объем работы был небольшой, я решил не заморачиваться.

Сначала запускаю Notepad++ и захожу Поиск -> Найти в Файлах. В появившемся окне в Найти вбиваю "([a-Z][email protected][a-Z]+.[\.a-Z]+)" - регулярка того, что я ищу (в данном случае это все то, что похоже на мыла), Режим поиска выбираю Регулярные выражения., выбираю папку с логами, жму "Найти все". Жду пока Notepad распарсит все логи у меня было около 10ГБ логов, поэтому процесс был не быстрый (лучше пойти погулять в это время или поспать, как в моем случае).





Далее копирую вывод из Notepad++ в файл logsemails.txt. Заливаю его на сервер с php, и запускаю там скрипт:

Код:
<?php

// загружаем вывод Notepad++
$content = file_get_contents("logsemails.txt");
// ищем все вхождения емейлов
preg_match_all("([a-zA-Z][email protected]([a-zA-Z]+\.[\.a-zA-Z]+))", $content, $matches);

$emails = [];
foreach($matches[1] as $key => $domain) {
        $contains = FALSE;
        //домены которые нужно исключить
        foreach(["hotmail","gmail","yahoo"] as $bigdomain) {
                if(str_contains(strtolower($domain), $bigdomain))
                        $contains = TRUE;

        }
        // убираем биги
        if(!$contains)
                $emails[] = strtolower($matches[0][$key]);

}
//убираем неуникальные
$emails = array_unique($emails);

foreach($emails as $email) {        
        echo $email."\n";
}

?>
Сохраним его как testmail.php

Далее

php testmail.php > mails_corp.txt

Готово! Теперь файл mails_corp.txt содержит все корпоративные мыла из кучи логов, которые вы собрали.

Если вам нужны биги, то просто поменяйте строчку



if(!$contains) на if($contains)



Далее, запускаем АМС, создаем новую рассылку, выбираем "Валидация базы (поиск мертвых адресов)", на список адресов - добавляем их из файла mails_corp.txt, профиль отправки - только встроенный smtp, рассылка через Socks Proxy - тут важно, чтобы соксы были хорошие и их было достаточно, чтобы smtp вас не добавляли в черный список (это скажется на качестве валида и на том, сколько хороших мыл вы пропустите). У меня на большом кол-ве соксов получился результат 22% валида из 100к, делитесь сокс-провайдерами, если у вас результат получился лучше. Посмотреть какие соксы у вас "проседают" можно в "Статусе потоков", Столбец - эффективность.



На этом все! Удачного поиска! Надеюсь кому-то пригодится.

PS:По запросу могу улучшить скрипт, чтобы Notepad++ был не нужен.
PPS: Сделал. В функцию listFolderFiles передаем путь к каталогу с логами.

Код:
<?php

function listFolderFiles($dir) {

    $ffs = scandir($dir);

    //убираем из списка текущий каталог
    unset($ffs[array_search('.', $ffs, true)]);

    //убираем из списка каталог выше
    unset($ffs[array_search('..', $ffs, true)]);

    foreach ($ffs as $ff) {

        if(is_dir($dir.'/'.$ff)) {
           listFolderFiles($dir.'/'.$ff);

        }
        else {
			parseFile($dir.'/'.$ff);

    	}
    }
}

function parseFile($ff) {

	$content = file_get_contents($ff);

	preg_match_all("([a-zA-Z][email protected]([a-zA-Z]+\.[\.a-zA-Z]+))", $content, $matches);

	$emails = [];

	foreach($matches[1] as $key => $domain) {

    	$contains = FALSE;
    	foreach(["hotmail","gmail","yahoo"] as $bigdomain) {
        	if(str_contains(strtolower($domain), $bigdomain))
            	$contains = TRUE;

    	}

    	if($contains)
        	$emails[] = strtolower($matches[0][$key]);
	}
	$emails = array_unique($emails);

	foreach($emails as $email) {
    	echo $email."\n";
	}
}

listFolderFiles('logs');

?>

ppps:

Цитата:
еще вариант выбираешь функцию Емайл парсер, далее папку и...
все майлы в 1 файле
anonfiles.com/Edq9139fy3/EmailUtility_zip



Из под винды 10-ки можно коммандой wsl --install подставить подсистему linux (ubuntu) и оттуда выполнить

Код:
sudo apt-get install php
Командой

Код:
 df -h
Выведем все mountpoints (да, да, в подсистеме linux все ваши виндовые разделы уже будут смонтированы)

У меня установилась старая версия php, поэтому в код нужно добавить еще вот этот блок:

Код:
if (!function_exists('str_contains')) {
    function str_contains(string $haystack, string $needle): bool
    {
        return '' === $needle || false !== strpos($haystack, $needle);
    }
}
ps:

Теперь логпарсер умеет создавать мейл:пасс для брута


github.com/dev007new/logs_parser

Автор: dev007
  Ответить с цитированием
Опции темы
Опции просмотра