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