Подскажите как правильно извлекать определенные данные из вывода nmap, к примеру просканил список ip,нужны ip у которых rdp без nla, как сделать так что бы из списка извлечь только эти адреса?
покури доки NSE и попроси нейронку написать под свои нужды. Ладно, уговорил, вместо тебя спрошу:Подскажите как правильно извлекать определенные данные из вывода nmap, к примеру просканил список ip,нужны ip у которых rdp без nla, как сделать так что бы из списка извлечь только эти адреса?
local nmap = require "nmap"
local shortport = require "shortport"
local stdnse = require "stdnse"
local string = require "string"
description = [[
Определяет, включена ли Network Level Authentication (NLA) на RDP (порт 3389).
Скрипт отправляет запрос RDP Negotiation Request и проверяет, требует ли сервер CredSSP (NLA).
]]
---
-- @usage
-- nmap -p 3389 --script rdp-non-nla <target>
--
-- @output
-- 3389/tcp open ms-wbt-server
-- |_rdp-non-nla: RDP без NLA обнаружен!
--
author = "Ваше имя"
license = "Same as Nmap--See https://nmap.org/book/man-legal.html"
categories = {"safe", "discovery"}
portrule = shortport.port_or_service(3389, "ms-wbt-server")
local function check_rdp_nla(host, port)
local socket = nmap.new_socket()
socket:set_timeout(3000)
local status, err = socket:connect(host, port)
if not status then
stdnse.debug1("Не удалось подключиться к %s:%d - %s", host.targetname or host.ip, port.number, err)
return nil
end
-- RDP Negotiation Request
local rdp_request = "\x03\x00\x00\x13\x0e\xe0\x00\x00\x00\x00\x00\x00\x01\x00\x08\x00\x03\x00\x00\x00"
status, err = socket:send(rdp_request)
if not status then
stdnse.debug1("Ошибка отправки пакета: %s", err)
socket:close()
return nil
end
local response, err = socket:receive()
socket:close()
if not response then
stdnse.debug1("Ошибка получения ответа: %s", err)
return nil
end
-- Проверяем, есть ли флаг NLA (требует CredSSP)
if string.find(response, "\x03\x00\x00\x0b\x06\xd0\x00\x00\x12\x34\x00") then
return "RDP требует NLA (NLA включен)"
else
return "RDP без NLA обнаружен!"
end
end
action = function(host, port)
local result = check_rdp_nla(host, port)
if result then
return result
end
end
nmap -p 3389 --script ./rdp-non-nla.nse <target>
3389/tcp open ms-wbt-server
|_rdp-non-nla: RDP без NLA обнаружен!