NOTE:
1. Run as Local System User
PARAMETERS:
1.Provide the receiver email id in variable path "emailto"
2.Provide the sender email id in variable path "emailfrom"
3. Provide sender email id 16 digit app password in variable path "Password"
emailto=itsm.getParameter('EmailTo') ## Provide an To email address where the mail need to be sent.
emailfrom=itsm.getParameter('EmailFrom') ## Provide the From Email address
password=itsm.getParameter('Password') ##Provide the 16 digit app password for from email
import os
import subprocess
import ctypes
import socket
import os,re,sys
import _winreg,difflib,filecmp
import os
import smtplib
user_list = []
class disable_file_system_redirection:
_disable = ctypes.windll.kernel32.Wow64DisableWow64FsRedirection
_revert = ctypes.windll.kernel32.Wow64RevertWow64FsRedirection
def __enter__(self):
self.old_value = ctypes.c_long()
self.success = self._disable(ctypes.byref(self.old_value))
def __exit__(self, type, value, traceback):
if self.success:
self._revert(self.old_value)
with disable_file_system_redirection():
computer = ["COMPUTER NAME"]
ip = ["IP ADDRESS"]
def computername():
return os.environ['COMPUTERNAME']
def ipaddress():
return socket.gethostbyname(socket.gethostname())
#####################################user list###########################################
def users():
obj = subprocess.Popen(['powershell','Get-LocalUser | select name'], shell=True, stdout = subprocess.PIPE, stderr = subprocess.PIPE)
out, err = obj.communicate()
if err:
print(err)
else:
keyword = "----"
before_keyword, keyword, after_keyword = out.partition(keyword)
for i in after_keyword.strip().splitlines():
if i.strip() == 'Administrator' or i.strip() == 'DefaultAccount' or i.strip() == 'Guest' or i.strip() == 'WDAGUtilityAccount':
pass
else:
user_list.append(i.strip())
users()
####################################software list#######################################
li=[]
def collectprograms(rtkey,pK,kA):
import _winreg
import os
try:
oK=_winreg.OpenKey(rtkey,pK,0,kA)
i=0
while True:
try:
bkey=_winreg.EnumKey(oK,i)
vkey=os.path.join(pK,bkey)
oK1=_winreg.OpenKey(rtkey,vkey,0,kA)
try:
DN,bla=_winreg.QueryValueEx(oK1,'DisplayName')
DV,bla=_winreg.QueryValueEx(oK1,'DisplayVersion')
li.append([DN.strip(),DV.strip()])
except:
pass
i+=1
except:
break
except:
pass
_winreg.CloseKey(oK)
return li
def programsinstalled():
uninstallkey='SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall'
if 'PROGRAMFILES(X86)' in os.environ.keys():
rklist=[(_winreg.HKEY_LOCAL_MACHINE,uninstallkey,_winreg.KEY_WOW64_32KEY | _winreg.KEY_READ),
(_winreg.HKEY_LOCAL_MACHINE,uninstallkey,_winreg.KEY_WOW64_64KEY | _winreg.KEY_READ),
(_winreg.HKEY_CURRENT_USER,uninstallkey,_winreg.KEY_WOW64_32KEY | _winreg.KEY_READ),
(_winreg.HKEY_CURRENT_USER,uninstallkey,_winreg.KEY_WOW64_64KEY | _winreg.KEY_READ)]
else:
rklist=[(_winreg.HKEY_LOCAL_MACHINE,uninstallkey,_winreg.KEY_READ),
(_winreg.HKEY_CURRENT_USER,uninstallkey,_winreg.KEY_READ)]
for i in rklist:
col=collectprograms(i[0], i[1], i[2])
return col
k=programsinstalled()
######################################### Hardware Details ####################################
hardware = os.popen('wmic diskdrive get name,size,model,manufacturer,serialnumber').read()
with open('C:\\ProgramData\\System Details.txt','w') as f:
cp = 'COMPUTER NAME : '+computername()
f.write(cp+"\n")
ip = 'IPADDRESS : '+ipaddress()
f.write(ip+"\n\n")
if len(user_list)>0:
f.write("Users List :"+"\n")
for user in user_list:
f.write(user+'\n')
f.write("\n")
f.write("Installed Softwares List : "+'\n')
f.write("Name Version "+"\n")
for i in sorted(k):
f.write(' '.join(i).encode('utf-8')+"\n")
f.write('\n')
f.write("Hardware Details :"+"\n")
f.write(hardware)
f.close()
###Emailing
if os.path.exists('C:\\ProgramData\\System Details.txt'):
import os,sys,shutil,re,sys,socket,_winreg,random,getpass
from datetime import date, datetime
import socket
import smtplib
import mimetypes
from email.mime.multipart import MIMEMultipart
from email import encoders
from email.message import Message
from email.mime.audio import MIMEAudio
from email.mime.base import MIMEBase
from email.mime.image import MIMEImage
from email.mime.text import MIMEText
import ctypes
from subprocess import PIPE, Popen
fileToSend='C:\\ProgramData\\System Details.txt'
def Email(sender_email,password,receiver,file):
try:
fileToSend = file
msg = MIMEMultipart()
msg["From"] = sender_email
msg["To"] = receiver
msg["Subject"] = '%s %s System Details!!!!!'%(computername(), ipaddress())
ctype, encoding = mimetypes.guess_type(fileToSend)
if ctype is None or encoding is not None:
ctype = "application/octet-stream"
maintype, subtype = ctype.split("/", 1)
cp = open(fileToSend, "rb")
attachment = MIMEBase(maintype, subtype)
attachment.set_payload(cp.read())
cp.close()
encoders.encode_base64(attachment)
attachment.add_header("Content-Disposition", "attachment", filename=fileToSend)
msg.attach(attachment)
server = smtplib.SMTP("smtp.gmail.com:587")
server.starttls()
server.login(sender_email,password)
server.sendmail(sender_email, receiver, msg.as_string())
server.quit()
print "Email has been Sent Successfully to the following mail address :"+' "'+emailto+'"'
os.remove(file)
except Exception as e:
print e
print "Error sending email"
Email(emailfrom,password,emailto,fileToSend)
else:
print("something went wrong. The File cannot be found...")
Comments