Войти

Показать полную графическую версию : grep для PowerShell?


ts1000win
30-06-2023, 02:29
В linux записываю результат выполнения nmap в файл списком ip:
nmap -p 3389 --proxy --open -sV 171.98.128.0/17 | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' | sort | uniq > /home/kali/Inetcom2.txt
Windows версия grep в таком случае демонстрирует ошибку. Как написать для PowerShell?

DJ Mogarych
30-06-2023, 08:30
(nmap -p 3389 --proxy --open -sV 171.98.128.0/17) -match '([0-9]{1,3}\.){3}[0-9]{1,3}' |sort -Unique > /home/kali/Inetcom2.txt

Sham
30-06-2023, 09:18
А они установлены вообще grep, uniq и sort (.exe)? Если например установлен git или msys, то там есть эти утилиты, и надо папку с ними добавить в PATH. Тут подлянка от PS - куча алиасов замены, например sort, поэтому сразу лучше указывать .exe.

DJ Mogarych
30-06-2023, 14:51
В современном виндоузе есть как алиас для Invoke-WebRequest (вызывается командой curl), так и сам curl (вызывается командой curl.exe).

ts1000win
01-07-2023, 01:03
-match »
Такой параметр отсутствует, windows10.

Serguei Kouzmine
01-07-2023, 06:36
у вас повершелл более старый

попробуйте

write-output '127.0.0.1' | select-string -pattern '([0-9]{1,3}\.){3}[0-9]{1,3}'

127.0.0.1

ну и
get-help select-string

там придется оперировать выражениями типа

$result.Matches.Groups[2].Captures.Value

YuS_2
01-07-2023, 12:01
Такой параметр отсутствует, windows10. »
А можно скриншот увидеть этого чуда? :)
Так чтобы в консоли было видно целиком команду и вывод.

у вас повершелл более старый »
Это же насколько он старым должен быть? :)
оператор "-match" в powershell живет от рождения...

Serguei Kouzmine
01-07-2023, 18:52
живет от рождения... »
действительно причина не в возрасте повершелла
предположу наверное у @ts1000win возникли проблемы с редактированием сложных команд - пайп помогает с этим

ts1000win
02-07-2023, 23:07
https://i.ibb.co/x5jNs5Y/sc.png

Serguei Kouzmine
03-07-2023, 01:33
вам же уже объясняли в другом топике ts1000win, что

надо агрументы передавать правильно например

start-process -filepath "c:\Program Files\Git\bin\git.exe" -argumentlist "--version","2>&1" -RedirectStandardOutput a.txt -WindowStyle hidden


dir a.txt


Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 7/2/2023 6:32 PM 29 a.txt

get-content a.txt
git version 2.30.0.windows.2

YuS_2
03-07-2023, 09:30
ts1000win, да, понятно, спасибо.
Это просто неверное использование оператора, т.е. Вы использовали оператор в качестве параметра командлета Start-Process, на что вполне резонно, выдано соответствующее сообщение.

ts1000win
04-07-2023, 21:22
Но использовать -match все равно не получается:
start-process -filepath 'C:\Program Files (x86)\Nmap\nmap' -argumentlist '-p 3389 --open -sV 77.40.0.0/17' -match '([0-9]{1,3}\.){3}[0-9]{1,3}','2>&1' -RedirectStandardOutput 'C:\Users\Administrator\Documents\p2.txt' -WindowStyle 'hidden'
https://i.ibb.co/BrtPQrn/sc.png
Так тоже нет:
start-process -filepath 'C:\Program Files (x86)\Nmap\nmap' -argumentlist '-p 3389 --open -sV 77.40.0.0/17' | start-process -filepath 'C:\Program Files (x86)\GnuWin32\bin\grep' -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}','2>&1' -RedirectStandardOutput 'C:\Users\Administrator\Documents\p2.txt' -WindowStyle 'hidden'
https://i.ibb.co/Y0W4hzc/sc.png

Serguei Kouzmine
05-07-2023, 00:07
потому что надо читать документацию и узнать что match
это не флаг start-process а оператор типа string (вероятно реализован через методы расширения)
а argumenlist нoоaборт это флаг
кстати лоджен предупредить отстримить инпут в start-process наверное не выйдет никак
скажите плохо наверное тому живется кого в гугле забанили ?

YuS_2
05-07-2023, 12:24
ts1000win, Вы бы озвучили свою задачу, а то решаете её в режиме "XY" ... просто напишите, что в итоге желаете получить.
1. Почему Вы пытаетесь выполнить nmap в отдельном процессе? Так у Вас ничего не выйдет, если желаете создать выборку строк из текстового выхлопа команды.
2. Чем Вас не устроил первый ответ? Вы его вообще проверяли?
3. Пробуйте так:
nmap -sn scanme.nmap.org 2>&1|?{$_ -match '([0-9]{1,3}\.){3}[0-9]{1,3}'}|sort -uni
а дальше, по конвейеру - хоть вывод в консоль, хоть вывод в файл... в зависимости от того, что требуется...

ts1000win
05-07-2023, 23:23
Использовать nmap скрывая значек powershell с панели задач.
Результат записать в файл списком ip.
Так тоже не получилось:
Start-Process -filepath 'C:\Program Files (x86)\Nmap\nmap' '-p 3389 --open -sV 77.40.0.0/17' 2>&1|?{$_ -match '([0-9]{1,3}\.){3}[0-9]{1,3}'}|sort -uni > 'C:\Users\Administrator\Documents\test.txt' -WindowStyle 'hidden'
Пишет:
cannot be found that matches parameter name 'WindowStyle'

YuS_2
06-07-2023, 09:05
Так тоже не получилось »
Вам бы поизучать powershell подробнее... что такое командлет, конвейер и их использование... а так у Вас вообще непонятно, что записано в строке...
Все параметры командлета пишутся ДО конвейера, а у Вас параметр "-WindowStyle 'hidden'" командлета Start-Process, указан в конце строки, после перенаправления потока вывода в файл... естественно, будет вызвано исключение.

Использовать nmap скрывая значек powershell с панели задач. »
насколько я помню, всё равно, консольное окно будет мелькать, даже при скрытом запуске... для полного скрытия можно воспользоваться, например, скриптом VBS...
Ну, а так, чтобы выполнить команды в скрытом виде, для Вашей задачи, надо запускать так:
powershell -window Hidden -f ".\script.ps1"
а в самом файле-скрипте (файл лучше записывать в кодировке UTF8 с BOM), уже указывать то, что требуется:
script.ps1:
nmap -p 3389 --open -sV 77.40.0.0/17 2>&1|?{$_ -match '([0-9]{1,3}\.){3}[0-9]{1,3}'}|
sort -uni|out-file 'C:\Users\Administrator\Documents\test.txt' -enc 'utf8'

Pavel Nagaev
06-07-2023, 09:24
А вообще вызывать внешние модули, потом парсить вывод PowerShell вообще идея не очень, может посмотрите модуль nmap под PowerShell?

https://github.com/JustinGrote/PoshNmap

Да и вот ещё неплохая статья Windows PowerShell built-in port scanner use (https://www.programmersought.com/article/52257222373/)

ts1000win
07-07-2023, 02:06
Да, так получилось сохранить результат
powershell -window Hidden -f ".\script.ps1" »
nmap -p 3389 --open -sV 77.40.0.0/17 2>&1|?{$_ -match '([0-9]{1,3}\.){3}[0-9]{1,3}'}|
sort -uni|out-file 'C:\Users\Administrator\Documents\test.txt' -enc 'utf8' »
Но в формате:
Nmap scan report for 112.59.pppoe.mari-el.ru (77.40.59.112)
Nmap scan report for 125.86.pppoe.mari-el.ru (77.40.86.125)
В линукс:
nmap -p 3389 --proxy --open -sV 171.98.128.0/17 | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' | sort | uniq > /home/kali/Inetcom2.txt
Сохранял список ip:
77.40.59.112
77.40.86.125

YuS_2
07-07-2023, 09:11
Сохранял список ip: »
(nmap -p 3389 --open -sV 77.40.0.0/17 2>&1|sls -patt '([0-9]{1,3}\.){3}[0-9]{1,3}').matches.value|
sort -uni|out-file 'C:\Users\Administrator\Documents\test.txt' -enc 'utf8'




© OSzone.net 2001-2012