Updated nmap parsing, store notes for last boot and os matches
git-svn-id: file:///home/svn/framework3/trunk@8494 4d416f70-5f16-0410-b530-b9f4589650daunstable
parent
2460037fdd
commit
2539a6fc09
|
@ -1123,7 +1123,7 @@ class DBManager
|
|||
data[:state] = (h["status"] == "up") ? Msf::HostState::Alive : Msf::HostState::Dead
|
||||
|
||||
# XXX: There can be multiple matches, but we only see the *last* right now
|
||||
if (h["os_accuracy"] and h["os_accuracy"].to_i > 75)
|
||||
if (h["os_accuracy"] and h["os_accuracy"].to_i > 95)
|
||||
data[:os_name] = h["os_vendor"]
|
||||
data[:os_sp] = h["os_version"]
|
||||
end
|
||||
|
@ -1151,6 +1151,35 @@ class DBManager
|
|||
|
||||
report_host(data)
|
||||
|
||||
if( data[:os_name] )
|
||||
note = {
|
||||
:host => addr,
|
||||
:type => 'host.os.nmap_fingerprint',
|
||||
:data => {
|
||||
:os_vendor => h["os_vendor"],
|
||||
:os_family => h["os_family"],
|
||||
:os_version => h["os_version"],
|
||||
:os_accuracy => h["os_accuracy"]
|
||||
}
|
||||
}
|
||||
|
||||
if(h["os_match"])
|
||||
note[:data][:os_match] = h['os_match']
|
||||
end
|
||||
|
||||
report_note(note)
|
||||
end
|
||||
|
||||
if (h["last_boot"])
|
||||
report_note(
|
||||
:host => addr,
|
||||
:type => 'host.last_boot',
|
||||
:data => {
|
||||
:time => h["last_boot"]
|
||||
}
|
||||
)
|
||||
end
|
||||
|
||||
# Put all the ports, regardless of state, into the db.
|
||||
h["ports"].each { |p|
|
||||
extra = ""
|
||||
|
|
|
@ -64,6 +64,10 @@ class NmapXMLStreamParser
|
|||
@host["os_family"] = attributes["osfamily"]
|
||||
@host["os_version"] = attributes["osgen"]
|
||||
@host["os_accuracy"] = attributes["accuracy"]
|
||||
when "osmatch"
|
||||
if(attributes["accuracy"].to_i == 100)
|
||||
@host["os_match"] = attributes["name"]
|
||||
end
|
||||
when "uptime"
|
||||
@host["last_boot"] = attributes["lastboot"]
|
||||
when "hostname"
|
||||
|
|
Loading…
Reference in New Issue