Bonsoir
J'essaie de filtrer le fichier XML ci-dessous afin d'afficher uniquement les adresses ip des machines up et dont les ports sont ouvert
Code :
- <?xml version="1.0" ?>
- <?xml-stylesheet href="file:///usr/share/nmap/nmap.xsl" type="text/xsl"?>
- <!-- Nmap 5.21 scan initiated Sun Nov 20 23:44:08 2011 as: /usr/bin/nmap -oX nmap_output.xml --open -sU -p 161-162 192.168.10.0/24 -->
- <nmaprun scanner="nmap" args="/usr/bin/nmap -oX nmap_output.xml --open -sU -p 161-162 192.168.10.0/24" start="1321829048" startstr="Sun Nov 20 23:44:08 2011" version="5.21" xmloutputversion="1.03">
- <scaninfo type="udp" protocol="udp" numservices="2" services="161-162" />
- <verbose level="0" />
- <debugging level="0" />
- <host starttime="1321829048" endtime="1321829050"><status state="up" reason="arp-response"/>
- <address addr="192.168.10.1" addrtype="ipv4" />
- <address addr="E0:91:F5:FF:FF:FF" addrtype="mac" />
- <hostnames>
- <hostname name="VM0" type="PTR"/>
- </hostnames>
- <ports><extraports state="closed" count="1">
- <extrareasons reason="port-unreach" count="1"/>
- </extraports>
- <port protocol="udp" portid="161"><state state="open" reason="udp-response" reason_ttl="64"/><service name="snmp" method="table" conf="3" /></port>
- </ports>
- <times srtt="651" rttvar="3042" to="100000" />
- </host>
- <host starttime="1321829048" endtime="1321829050"><status state="up" reason="arp-response"/>
- <address addr="192.168.10.3" addrtype="ipv4" />
- <address addr="52:54:00:FF:FF:FF" addrtype="mac" vendor="QEMU Virtual NIC" />
- <hostnames>
- <hostname name="VM1" type="PTR"/>
- </hostnames>
- <ports><extraports state="closed" count="2">
- <extrareasons reason="port-unreaches" count="2"/>
- </extraports>
- </ports>
- <times srtt="1494" rttvar="3043" to="100000" />
- </host>
- <host starttime="1321829048" endtime="1321829051"><status state="up" reason="arp-response"/>
- <address addr="192.168.10.6" addrtype="ipv4" />
- <address addr="52:54:00:FF:FF:FF" addrtype="mac" vendor="QEMU Virtual NIC" />
- <hostnames>
- <hostname name="VM2" type="PTR"/>
- </hostnames>
- <ports><port protocol="udp" portid="161"><state state="open|filtered" reason="no-response" reason_ttl="0"/><service name="snmp" method="table" conf="3" /></port>
- <port protocol="udp" portid="162"><state state="open|filtered" reason="no-response" reason_ttl="0"/><service name="snmptrap" method="table" conf="3" /></port>
- </ports>
- <times srtt="964" rttvar="5000" to="100000" />
- </host>
- <runstats><finished time="1321829054" timestr="Sun Nov 20 23:44:14 2011" elapsed="6.04"/><hosts up="8" down="248" total="256" />
- <!-- Nmap done at Sun Nov 20 23:44:14 2011; 256 IP addresses (8 hosts up) scanned in 6.04 seconds -->
- </runstats></nmaprun>
|
J'ai réussi a filtrer le fichier pour avoir les machines up mais pour afficher uniquement les ip dont les port sont ouvert je galère
Code :
- <?php
- $domDocument = new domDocument();
- $domDocument->load('nmap_output.xml');
- $nodesStatus = $domDocument->getElementsByTagName('host');
- foreach($nodesStatus as $status)
- {
- $stas = $status->getElementsByTagName('status');
- foreach($stas as $sta)
- {
- if ($sta->getAttribute('state') == 'up')
- {
- $addrs = $status->getElementsByTagName('address');
- foreach ($addrs as $addr)
- {
- if ($addr->getAttribute('addrtype') == 'ipv4')
- {
- $tabIp[] = $addr->getAttribute('addr');
- }
- }
- }
- }
- }
- foreach($tabIp as $element)
- {
- echo $element . '<br />';
- }
- ?>
|
Si quelqu'un peut m'aider
Merci 
Message édité par bobl'eponge le 21-11-2011 à 02:04:56