initial commit
This commit is contained in:
		
							
								
								
									
										35
									
								
								nmail.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										35
									
								
								nmail.sh
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,35 @@
 | 
			
		||||
#! /bin/sh
 | 
			
		||||
 | 
			
		||||
###
 | 
			
		||||
#
 | 
			
		||||
# nmail v0.1
 | 
			
		||||
# Author : adrien@malingrey.fr
 | 
			
		||||
#
 | 
			
		||||
# Scan targets with nmap,
 | 
			
		||||
# compare with previous scan
 | 
			
		||||
# and send result by mail
 | 
			
		||||
#
 | 
			
		||||
# Depends : nmap (with ndiff) and xsltproc
 | 
			
		||||
#
 | 
			
		||||
###
 | 
			
		||||
 | 
			
		||||
targets="192.168.0.0/24"
 | 
			
		||||
options=""
 | 
			
		||||
path=.
 | 
			
		||||
mailto=mail@address.com
 | 
			
		||||
message="Send by nmail.sh"
 | 
			
		||||
 | 
			
		||||
if [ -f "$path/new_scan.xml" ]
 | 
			
		||||
then
 | 
			
		||||
    mv -f "$path/new_scan.xml" "$path/prev_scan.xml"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
nmap $options $targets -oX "$path/new_scan.xml"
 | 
			
		||||
 | 
			
		||||
if [ -f "$path/prev_scan.xml" ]
 | 
			
		||||
then
 | 
			
		||||
    ndiff --xml "$path/prev_scan.xml" "$path/new_scan.xml" | xsltproc nmail.xsl - | while read -r line
 | 
			
		||||
    do
 | 
			
		||||
        echo $message | mail $mailto -s "$line"   
 | 
			
		||||
    done
 | 
			
		||||
fi
 | 
			
		||||
							
								
								
									
										87
									
								
								nmail.xsl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								nmail.xsl
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,87 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf8"?>
 | 
			
		||||
 | 
			
		||||
<!--
 | 
			
		||||
 ! nmail v0.1
 | 
			
		||||
 ! Author : adrien@malingrey.fr
 | 
			
		||||
 !
 | 
			
		||||
 ! Scan targets with nmap,
 | 
			
		||||
 ! compare with previous scan
 | 
			
		||||
 ! and send result by mail
 | 
			
		||||
 ! 
 | 
			
		||||
 ! Depends : nmap (with ndiff) and xsltproc
 | 
			
		||||
 !-->
 | 
			
		||||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 | 
			
		||||
<xsl:output method="text" encoding="utf8" indent="no" />
 | 
			
		||||
<xsl:strip-space elements="*" />
 | 
			
		||||
 | 
			
		||||
<xsl:template match="*/nmaprun">
 | 
			
		||||
    <xsl:message>
 | 
			
		||||
        <xsl:text>Scan with </xsl:text>
 | 
			
		||||
        <xsl:value-of select="@scanner" />
 | 
			
		||||
        <xsl:text> v</xsl:text>
 | 
			
		||||
        <xsl:value-of select="@version" />
 | 
			
		||||
        <xsl:text> on </xsl:text>
 | 
			
		||||
        <xsl:value-of select="@startstr" />
 | 
			
		||||
        <xsl:text>
 | 
			
		||||
Command: </xsl:text>
 | 
			
		||||
        <xsl:value-of select="@args" />
 | 
			
		||||
    </xsl:message>
 | 
			
		||||
</xsl:template>
 | 
			
		||||
 | 
			
		||||
<xsl:template match="hostdiff/a/host[status/@state = 'up']">
 | 
			
		||||
    <xsl:text>⚠️ Host </xsl:text>
 | 
			
		||||
    <xsl:choose>
 | 
			
		||||
        <xsl:when test="hostnames/hostname">
 | 
			
		||||
            <xsl:value-of select="hostnames/hostname/@name" />
 | 
			
		||||
            <xsl:text> (</xsl:text>
 | 
			
		||||
            <xsl:value-of select="address/@addr" />
 | 
			
		||||
            <xsl:text>)</xsl:text>
 | 
			
		||||
        </xsl:when>
 | 
			
		||||
        <xsl:otherwise>
 | 
			
		||||
            <xsl:value-of select="address/@addr" />
 | 
			
		||||
        </xsl:otherwise>
 | 
			
		||||
    </xsl:choose>
 | 
			
		||||
    <xsl:text> is down! ⚠️
 | 
			
		||||
</xsl:text>
 | 
			
		||||
</xsl:template>
 | 
			
		||||
 | 
			
		||||
<xsl:template match="hostdiff/b/host[status/@state = 'up']">
 | 
			
		||||
    <xsl:text>New host detected : </xsl:text>
 | 
			
		||||
    <xsl:choose>
 | 
			
		||||
        <xsl:when test="hostnames/hostname">
 | 
			
		||||
            <xsl:value-of select="hostnames/hostname/@name" />
 | 
			
		||||
            <xsl:text> (</xsl:text>
 | 
			
		||||
            <xsl:value-of select="address/@addr" />
 | 
			
		||||
            <xsl:text>)</xsl:text>
 | 
			
		||||
        </xsl:when>
 | 
			
		||||
        <xsl:otherwise>
 | 
			
		||||
            <xsl:value-of select="address/@addr" />
 | 
			
		||||
        </xsl:otherwise>
 | 
			
		||||
    </xsl:choose>
 | 
			
		||||
    <xsl:text>
 | 
			
		||||
</xsl:text>
 | 
			
		||||
</xsl:template>
 | 
			
		||||
 | 
			
		||||
<xsl:template match="hostdiff/host/ports/portdiff/a/port[state/@state = 'open']">
 | 
			
		||||
    <xsl:text>⚠️ Service </xsl:text>
 | 
			
		||||
    <xsl:value-of select="service/@name" />
 | 
			
		||||
    <xsl:text> on </xsl:text>
 | 
			
		||||
    <xsl:value-of select="../../../../address/@addr" />
 | 
			
		||||
    <xsl:text>:</xsl:text>
 | 
			
		||||
    <xsl:value-of select="@portid" />
 | 
			
		||||
    <xsl:text> is down! ⚠️
 | 
			
		||||
</xsl:text>
 | 
			
		||||
</xsl:template>
 | 
			
		||||
 | 
			
		||||
<xsl:template match="hostdiff/host/ports/portdiff/b/port[state/@state = 'open']">
 | 
			
		||||
    <xsl:text>New service detected: </xsl:text>
 | 
			
		||||
    <xsl:value-of select="service/@name" />
 | 
			
		||||
    <xsl:text> on </xsl:text>
 | 
			
		||||
    <xsl:value-of select="../../../../address/@addr" />
 | 
			
		||||
    <xsl:text>:</xsl:text>
 | 
			
		||||
    <xsl:value-of select="@portid" />
 | 
			
		||||
    <xsl:text>
 | 
			
		||||
</xsl:text>
 | 
			
		||||
</xsl:template>
 | 
			
		||||
 | 
			
		||||
</xsl:stylesheet>
 | 
			
		||||
		Reference in New Issue
	
	Block a user