static class Parsing //парсинг результатов работы nmap
{
public static void ParsingReport(string path)
{
Int64 hostCount = 0;
XmlDocument xDoc = new XmlDocument();
xDoc.Load(path);
// получим корневой элемент
XmlElement xMain1 = xDoc.DocumentElement;
// обход всех узлов в корневом элементе
foreach (XmlNode xnode2 in xMain1)
{
if (xnode2.LocalName == "host")
{
foreach (XmlNode xnode3 in xnode2.ChildNodes)
{
XmlNode attr = xnode3.Attributes.GetNamedItem("addrtype");
if((attr != null)&& (attr.Value == "ipv4"))
{
XmlNode attr2 = xnode3.Attributes.GetNamedItem("addr");
if (attr2 != null)
MessageBox.Show("АЙПИ РАБОТАЕТ");
//сделать запись ip адреса
}
if ((attr != null) && (attr.Value == "mac"))
{
XmlNode attr2 = xnode3.Attributes.GetNamedItem("addr");
if (attr2 != null)
MessageBox.Show("Мак РАБОТАЕТ");
//сделать запись mac адреса
}
if (xnode3.LocalName == "ports")
{
foreach (XmlNode xnode4 in xnode3.ChildNodes)
{
if (xnode4.LocalName == "port")
{
XmlNode attr2 = xnode4.Attributes.GetNamedItem("portid");
if (attr2 != null)
MessageBox.Show("Получили номер порта");
//сделать запись номера порта
foreach (XmlNode xnode5 in xnode4.ChildNodes)
{
if (xnode5.LocalName == "state")
{
XmlNode attr1 = xnode5.Attributes.GetNamedItem("state");
if (attr1 != null)
MessageBox.Show("получили статус порта");
//сделать запись статуса порта
}
if (xnode5.LocalName == "service")
{
XmlNode attr1 = xnode5.Attributes.GetNamedItem("name");
if (attr1 != null)
MessageBox.Show("получили имя сервиса порта");
//сделать запись имени сервиса порта
}
}
}
}
}
}
hostCount++;
}
}
}
}