Используйте awk для нахождения всех Портов для каждого IP, которые имеют открытый https

У меня была та же проблема с обновлением от стабильного до тестирования, и я думаю, что хороший путь состоит в том, чтобы переустановить тестирование от чистого. Поскольку, когда Вы обновляете, можно получить много поврежденных зависимостей и установленного программного обеспечения, которое работало со старыми библиотеками, может сделать проблемы. Кроме того, при установке закрытых драйверов fglrx это создали для предыдущей версии ядра и можно порвать новое. Кроме того, pae-ядра могут быть проблемой также. Так, я рекомендую Вам сделать чистую установку, если Вы не хотите бороться с поврежденными зависимостями и драйверами.

1
27.03.2014, 00:57
4 ответа

Если бы я получил “более или менее открытые порты ниже 443” случаев правильно, то это должно быть универсальным решением, обрабатывающим их правильно:

awk '/\/https\// {for(i=5;i<=NF;i++)if($i~"/open/.+/https/"){sub("/.*","",$i); print $2" "$i}}' nmap-synscan.gnmap
3
27.01.2020, 23:28
  • 1
    , если "существуют более или менее открытые порты ниже 443", Ваше решение будет отказавший. –  cuonglm 20.01.2014, 14:56
  • 2
    Да. Я намеревался попросить у разъяснения того случая. Никакая идея, как ввод и вывод посмотрел бы в этом случае. –  manatwork 20.01.2014, 15:00
  • 3
    Вопрос был плохо сформулирован, он повторно сформулирован. Мой плохой –  user857990 20.01.2014, 18:18
  • 4
    Если “только https” Вы имеете в виду строго просто “https”, исключая “https?”, затем это редактирование делает это. Однако в этом случае ни один из них “не работает на порте 443” в Вашем примере. –  manatwork 20.01.2014, 19:33
  • 5
    Ответ был принят, но я не вижу правил найти open порты. Таким образом, команда должна быть обновлена к (если часть): if($i~"/https/"&&$i~"/open/") –  BMW 22.01.2014, 03:55

Это лучше подходит для парсинга регулярными выражениями, чем полями. Почему бы не использовать Perl?

$ perl -lne '/Host:\s*([\d\.]+)/; $h=$1; 
            print "$h $_" for (/(\d+)\/open[^\s]+https/g);
           ' file 
123.123.123.123 443
123.123.123.123 10443
123.123.123.123 443
123.123.123.123 8443
123.123.123.123 443
123.123.123.123 443

Первая строка просто получает IP хоста и сохраняет его как $h. Вторая строка, соответствует всем числам, которые сопровождаются /open затем один или несколько непробельных символов и затем https. Это должно соответствовать, все открываются https порты. print оператор распечатает имя хоста ($h) и каждый из подобранных портов (сохраненный как специальная переменная $_).

0
27.01.2020, 23:28
  • 1
    Излишне сложная месть –  MariusMatutiae 20.01.2014, 19:38
  • 2
    @MariusMatutiae, голосующая ха :)? По крайней мере, это возвращает то, что OP, который попросили относительно и, самый короткий ответ на странице, таким образом, я не вижу, как это сложно. –  terdon♦ 20.01.2014, 19:41
  • 3
    Нет, не голосование мести: OP просит awk решение, Ваш падения ясно вне достаточно ярмарки OP –  MariusMatutiae 20.01.2014, 20:08
  • 4
    @MariusMatutiae. В целом, хотя, ответы, обеспечивающие разные подходы, поощряются здесь (не выяснение у Вас, ti изменяют Ваш голос, не действительно побеспокоенный, именно так Вы знаете для другого Как). –  terdon♦ 20.01.2014, 20:11

awk split функция может использоваться для извлечения полей из вывода gnmap.

split("443/open/tcp//https?///, a, "/"); print a[1] дает Вам 443.

Используйте это для печати IP и порта для строк, которые показывают по крайней мере один открытый https порт:

awk '{ for (f=5; f <= NF; f++) {
         split($f,a,"/");
         if (a[2] != "open") continue;
         if (a[5] ~ /https.*/) {
           print $2, a[1];
         }
       }
      }' nmap-synscan.gnmap

Используйте это для печати IP и порта для строк, которые показывают открытый https порт и по крайней мере один открытый порт ниже https:

awk '{ lowopen = 0;
       for (f=5; f <= NF; f++) {
         split($f,a,"/");
         if (a[2] != "open") continue;
         if (a[1] < 443) lowopen++;
         if (lowopen && a[5] ~ /https.*/) {
           print $2, a[1];
         }
       }
      }' nmap-synscan.gnmap

Править: для ответа на второй вопрос используйте это для печати IP и порта для строк, где точно второй открытый порт является https:

awk '{ split($6,a,"/");
       if (a[5] ~ /https.*/) {
         print $2, a[1];
       }
      }' nmap-synscan.gnmap
0
27.01.2020, 23:28
[112420] Можно дать [112887]nmap(1)[112888] набор портов для прямой проверки, т.е. в данном случае просто добавить [112889]-PS80,443[112890].[112421].
0
27.01.2020, 23:28

Теги

Похожие вопросы