Tråd bedømmelse:
  • 1 Stemmer - 5 Gennemsnit
  • 1
  • 2
  • 3
  • 4
  • 5
Nmap Lua NSE script - eksempel
11-03-2015, 23:08 (Denne besked var sidst ændret: 12-03-2015, 02:48 af iTick.)
#1
Nmap Lua NSE script - eksempel
Jeg har lavet et lille Lua script som læser response headers fra en web server.
Det er ikke specielt komplekst, og tænkte at jeg ville dele det med jer andre.
Nmap har allerede et script der gør det samme, men det er mit først script til Nmap, og jeg er ikke specielt god til Lua.

Fil: http-header-get.nse
-- Nmap libraries
local nmap = require "nmap"
local stdnse = require "stdnse"
local table = require "table"
local http = require "http"
local shortport = require "shortport"

-- Faste NSE variabler: description, author, license og categories
description = [[Lua Nmap Header grapper. Dette er et funktionelt eksempel på et NSE service script.]]
author = "iTick"
license = "Same as Nmap--See http://nmap.org/book/man-legal.html"
categories = {"discovery", "safe"}

-- Kør dette script på port 80, 443 eller enhver anden port som Nmap identificerer som http eller https, der har en åben tcp port
portrule = shortport.port_or_service({80, 443}, {"http", "https"}, {"tcp", "open"})

--[[ Nedenstående er hvad der bliver kørt af NSE, når der findes en port der svarer til ovenstående portrule.
Host og port kommer fra Nmap Scripting Engine ]]--
action = function(host, port)
-- Initialiser lokale variabler
local response = {} -- Variabel til scriptets get request
local k, v = nil, nil -- Variabler til at loope gennem header[] key/value par
local output = {} -- Variabel til output

response = http.get(host, port, "/") -- Udfør get og gem svaret i response variablen

if response.status -- Hvis response.status ikke er nil (Lua NULL)
and response.status ~=404 -- Og ikke en kode 404
then -- så
for k, v in pairs(response.header) do -- Loop gennem headers i response variablen
table.insert(output, k:upper() .. ": " .. response.header[k] .. ": " .. v) -- Put hver header key/value par i output variablen. Key bliver sat til store bogstaver
end
table.sort(output) -- Sortér output
return stdnse.format_output(true, output) -- Returnér output til NSE
else
return response["status-line"] -- Hvis noget går galt, send en fejlbesked til NSE
end
end

Der er desværre ikke nogen highlighting til Lua, så jeg har valgt, hvad jeg lige synes passer.

Jeg håber i kan bruge det, og måske selv komme i gang med Nmap scripts.
Lua er ofte brugt sammen med sproget c, og er en del mere brugt, end jeg selv først troede.
Det bliver brugt i WOW, Crysis, Nmap, Wireshark osv.

EDIT: Scriptet køres med "nmap -p http,https --script http-header-get eb.dk", eller "nmap -p http,https --script http-header-get eb.dk -d" med debugging. Det er praktisk, når man skal debugge sit script.

Links:
nmap.org
lua.org
---
Writing a shellcode decoder stub in assembly is like talking gibberish in such a way that it is still perfectly intelligible. - iTick
Besøg denne brugers hjemmeside Find alle beskeder fra denne bruger
Citer denne besked i et svar
12-03-2015, 09:41
#2
RE: Nmap Lua NSE script - eksempel
På mange måder bryder jeg mig ikke om Lua. Når man kommer ud i at bruge tables og metatables (Som føles som et mislykket forsøg på OOP) bliver det hurtigt lidt forvirrende. Det er dog et meget godt scripting sprog, da det passer til næsten alting. Der er virkeligt mange game engines der bruger Lua, fordi det er en del nemmere end at scripte i C og det er let at tilføje sine egne libraries og hooks til.
Mangler du hjælp?
Regler |  E-mail (PGP)
Besøg denne brugers hjemmeside Find alle beskeder fra denne bruger
Citer denne besked i et svar
12-03-2015, 14:39
#3
RE: Nmap Lua NSE script - eksempel
Jeg er godt nok heller kke fan af Lua. Personligt synes jeg det mangler struktur.
Men det skal jo prøves, nu Nmap bruger det. :)
---
Writing a shellcode decoder stub in assembly is like talking gibberish in such a way that it is still perfectly intelligible. - iTick
Besøg denne brugers hjemmeside Find alle beskeder fra denne bruger
Citer denne besked i et svar
« Ældre | Nyere »




User(s) browsing this thread: 1 Gæst(er)