Open-AudIT https://www.open-audit.org/phpBB3/ |
|
My modified audit.vbs... https://www.open-audit.org/phpBB3/viewtopic.php?f=5&t=2170 |
Page 1 of 1 |
Author: | qc_metal [ Thu Feb 22, 2007 3:35 am ] |
Post subject: | My modified audit.vbs... |
Ok - I've been emailing Mike a few times, and I have an audit.vbs I'd like for some of the high-end users (and moderators) to take a look at. I needed to modify this because I felt that I shouldn't have to have multiple audit.vbs files for different configurations. For example, I use the same audit.vbs to run against a dynamic OU that is being populated with computers daily and then again at a different time during the day where it will query a static list of servers. I'm not totally done with it, as I'm not sure how far to go with the command-line switches...let me know - should I just mimic all the audit.conf settings? Am I crazy, should I have even done this? Basically, I added some command-line switches: computer: (computername) user: (domain\username) password: (password) config: (name of .conf file to use) list: (path of computer list to run against) I added a section that had some default configuration parameters, which get superseded by the command-line switches (i.e. if you downloaded and ran the file without having access to the config files). I also added a path entry that prefixes against the configuration file statement: [code] strScriptPath = replace(wscript.scriptfullname,wscript.scriptname,"") ExecuteGlobal CreateObject("Scripting.FileSystemObject").OpenTextFile(strScriptPath & "\audit.config").ReadAll [/code] This code executes if no command-line switches are given. If the 'config' switch is specified, it will supersede the static entries in the script itself. Those are there as more of a failsafe than anything else. I also modified the location for the user customizable software config gets loaded. Also, if you do not specify a path with backslashes, it will default to the script location to look for the config file. I will add the code to take paths with spaces in it into consideration (i.e. you will have to enclose your paths with quotes when specifying them in the command-line switch). Just want to hear what you think about it... Rob [code] ''''''''''''''''''''''''''''''''''' ' Open Audit ' ' Software and Hardware Inventory ' ' Outputs into MySQL ' ' (c) Mark Unwin 2003 ' ''''''''''''''''''''''''''''''''''' Dim verbose Public online Dim strComputer Dim mysql Dim input_file Dim email_to Dim email_from Dim email_failed Dim email_server Dim audit_local_domain Dim local_domain Dim sql Dim comment Dim net_mac_uuid Dim blnCScript Set objArgs = WScript.Arguments If InStr(ucase(WScript.FullName),"CSCRIPT.EXE") Then blnCScript = TRUE Else blnCScript = FALSE End If strScriptPath = replace(wscript.scriptfullname,wscript.scriptname,"") form_total = "" 'Get command-line arguments If objargs.count < 1 Then ' Below calls the file audit_include.vbs to setup the variables. ExecuteGlobal CreateObject("Scripting.FileSystemObject").OpenTextFile(strScriptPath & "\audit.config").ReadAll Else 'Default variables audit_location = "l" verbose = "y" online = "yesxml" strComputer = "." ie_visible = "n" ie_auto_submit = "y" ie_submit_verbose = "y" ie_form_page = "http://yourserver/admin_pc_add_1.php" non_ie_page = "http://yourserver/admin_pc_add_2.php" input_file = "" email_to = "you@yourdomain.com" email_from = "openaudit@yourdomain.com" email_server = "" audit_local_domain = "n" local_domain = "LDAP://yourdomain" hfnet = "n" Count = 0 number_of_audits = 20 script_name = "audit.vbs" monitor_detect = "y" printer_detect = "y" software_audit = "y" uuid_type = "mac" For I = 0 to objArgs.Count - 1 If InStr(1,LCase(objargs(I)),"computer:") Then arrComputer = split(lcase(objargs(I)),"computer:") strComputer = arrComputer(1) ElseIf InStr(1,LCase(objargs(I)),"user:") Then arrUser = split(lcase(objargs(I)),"user:") strUser = arrUser(1) ElseIf InStr(1,LCase(objargs(I)),"password:") Then arrPassword = split(lcase(objargs(I)),"password:") strPass = arrPassword(1) ElseIf InStr(1,LCase(objargs(I)),"config:") Then arrConfig = split(lcase(objargs(I)),"config:") strConfig = arrConfig(1) If Not instr(objargs(I),"\") then strConfig = strScriptPath & "\" & strConfig End If ' Below calls the file audit_include.vbs to setup the variables. ExecuteGlobal CreateObject("Scripting.FileSystemObject").OpenTextFile(strConfig).ReadAll ElseIf InStr(1,LCase(objargs(I)),"list:") Then arrlist = split(lcase(objargs(I)),"list:") input_file = arrList(1) 'If Not instr(objargs(I),chr(34)) then 'End If Else End If Next End If ' If any command line args given - use the first one as strComputer 'If Wscript.Arguments.Count > 0 Then 'strComputer = wscript.arguments(0) 'end if 'If Wscript.Arguments.Count > 1 Then 'strUser = wscript.arguments(1) 'end if 'If Wscript.Arguments.Count > 2 Then 'strPass = wscript.arguments(2) 'end if if online = "p" then Dim oIE Dim bWaitforChoice Dim ItemChosen Set oIE = CreateObject("InternetExplorer.Application") oIE.Visible = True oIE.Fullscreen = False oIE.Toolbar = True oIE.Statusbar = False oIE.Navigate("about:blank") oIE.document.ParentWindow.resizeto 800,600 oIE.document.WriteLn "<html>" oIE.document.WriteLn "<head>" oIE.document.WriteLn "<title>Open Audit - Audit Result</title>" oIE.document.WriteLn "<style type=""text/css"">" oIE.document.WriteLn "body {" oIE.document.WriteLn " font-family: verdana;" oIE.document.WriteLn " font-size: 9pt;" oIE.document.WriteLn "}" oIE.document.WriteLn "h1,h2 {" oIE.document.WriteLn " font-family: Trebuchet MS;" oIE.document.WriteLn "}" oIE.document.WriteLn ".content {" oIE.document.WriteLn " position: relative;" oIE.document.WriteLn " width: 600px;" oIE.document.WriteLn " min-width: 700px;" oIE.document.WriteLn " margin: 0 0px 10px 0px;" oIE.document.WriteLn " border: 1px solid black;" oIE.document.WriteLn " background-color: white;" oIE.document.WriteLn " padding: 10px;" oIE.document.WriteLn " z-index: 3;" oIE.document.WriteLn " font-family: verdana;" oIE.document.WriteLn " font-size: 9pt;" oIE.document.WriteLn "}" oIE.document.WriteLn "</style>" oIE.document.WriteLn "</head>" oIE.document.WriteLn "<body>" end if '''''''''''''''''''''''''''''''''''' ' Uncomment the 3 lines below to ' ' have the script ask for a PC ' ' to audit (name or IP) ' '''''''''''''''''''''''''''''''''''' 'strAnswer = InputBox("PC to run audit on:", "Audit Script") 'If blnCScript Then wscript.echo "Input PC Name: " & strAnswer 'strComputer = strAnswer '''''''''''''''''''''''''''''''''''' ' Check that softwarefiles.xml ' ' is correct ' ' ' '''''''''''''''''''''''''''''''''''' if (software_audit = "y" and software_file_audit = "y") then set xmlDoc=CreateObject("Microsoft.XMLDOM") xmlDoc.async="false" xmlDoc.validateOnParse="true" xmlDoc.load("softwarefiles.xml") if (xmlDoc.parseError.errorCode <> 0) then If blnCScript Then wscript.echo("Error Code: " & xmlDoc.parseError.errorCode) If blnCScript Then wscript.echo("Error Reason: " & xmlDoc.parseError.reason) If blnCScript Then wscript.echo("Error Line: " & xmlDoc.parseError.srcText) If blnCScript Then wscript.echo("Error Line Number: " & xmlDoc.parseError.line) If blnCScript Then wscript.echo("") WScript.quit end if end if '''''''''''''''''''''''''''''''''''''''' ' Don't change the settings below here ' '''''''''''''''''''''''''''''''''''''''' Const HKEY_CLASSES_ROOT = &H80000000 Const HKEY_CURRENT_USER = &H80000001 Const HKEY_LOCAL_MACHINE = &H80000002 Const HKEY_USERS = &H80000003 Const ForAppending = 8 ''''''''''''''''''''''''''''' ' Clear Failed Audits File ' ''''''''''''''''''''''''''''' ' Check if failed_audits.txt exists, and create it if need be. ' If file exists - remove contents Set objFSO = CreateObject("Scripting.FileSystemObject") If objFSO.FileExists("failed_audits.txt") Then Set objFile = objFSO.OpenTextFile("failed_audits.txt", 2) objFile.WriteLine objFile.Close Else Set objFile = objFSO.CreateTextFile("failed_audits.txt", 2) objFile.WriteLine objFile.Close End If ''''''''''''''''''''''''''''' ' Process the manual input ' ''''''''''''''''''''''''''''' if strComputer <> "" then if (IsConnectible(strComputer, "", "") OR (strComputer = ".")) Then if strUser <> "" and strPass <> "" then ' Username & Password provided - assume not a domain local PC. if verbose = "y" then If blnCScript Then wscript.echo "Username and password provided - therefore assuming NOT a local domain PC." end if Set wmiLocator = CreateObject("WbemScripting.SWbemLocator") Set wmiNameSpace = wmiLocator.ConnectServer( strComputer, "root\default", strUser, strPass) Set oReg = wmiNameSpace.Get("StdRegProv") Set objWMIService = wmiLocator.ConnectServer(strComputer, "root\cimv2",strUser,strPass) objWMIService.Security_.ImpersonationLevel = 3 end if if strUser = "" and strPass = "" then ' No Username & Password provided - assume a domain local PC if verbose = "y" then If blnCScript Then wscript.echo "No username and password provided - therefore assuming local domain PC." end if Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv") Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") end if Audit (strComputer) else if verbose = "y" then If blnCScript Then wscript.echo strComputer & " not available." end if Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.OpenTextFile("failed_audits.txt", 8) objFile.WriteLine strComputer objFile.Close end if wscript.quit end if '''''''''''''''''''''''''''''''''''''''' ' Audit the local domain, if requested ' '''''''''''''''''''''''''''''''''''''''' if audit_local_domain = "y" then Const ADS_SCOPE_SUBTREE = 2 Set objConnection = CreateObject("ADODB.Connection") Set objCommand = CreateObject("ADODB.Command") objConnection.Provider = "ADsDSOObject" objConnection.Open "Active Directory Provider" Set objCOmmand.ActiveConnection = objConnection objCommand.CommandText = "Select Name, Location from '" & local_domain & "' Where objectClass='computer'" objCommand.Properties("Page Size") = 1000 objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE objCommand.Properties("Sort On") = "name" Set objRecordSet = objCommand.Execute objRecordSet.MoveFirst totcomp = objRecordset.recordcount -1 Redim comparray(totcomp) ' set array to computer count Do Until objRecordSet.EOF On Error Resume Next strComputer = objRecordSet.Fields("Name").Value comparray(count) = strComputer ' Feed computers into array count = count + 1 if verbose = "y" then If blnCScript Then wscript.echo "Computer Name from ldap: " & strComputer end if objRecordSet.MoveNext Loop num_running = HowMany if verbose = "y" then If blnCScript Then wscript.echo "Number of systems retrieved from ldap: " & Ubound(comparray) If blnCScript Then wscript.echo "--------------" end if For i = 0 To Ubound(comparray) ' For i = 118 To 128 while num_running > number_of_audits if verbose = "y" then If blnCScript Then wscript.echo "Processes running (" & num_running & ") greater than number wanted (" & number_of_audits & ")" If blnCScript Then wscript.echo "Therefore - sleeping for 4 seconds." end if wscript.Sleep 4000 num_running = HowMany wend if comparray(i) <> "" then if verbose = "y" then If blnCScript Then wscript.echo i & " of " & Ubound(comparray) If blnCScript Then wscript.echo "Processes running: " & num_running If blnCScript Then wscript.echo "Next System: " & comparray(i) If blnCScript Then wscript.echo "--------------" end if command1 = "cscript " & script_name & " computer:" & comparray(i) set sh1=WScript.CreateObject("WScript.Shell") sh1.Run command1, 6, False set sh1 = nothing num_running = HowMany end if Next end if ''''''''''''''''''''''''''''''''''' ' Read the text file if requested ' ' and audit PCs within - line ' ' by line ' ''''''''''''''''''''''''''''''''''' On Error Resume Next if input_file <> "" then Set objFSO = CreateObject("Scripting.FileSystemObject") Set objTextFileReading = objFSO.OpenTextFile(input_file, 1) objTextFileReading.ReadAll dimarray = objTextFileReading.Line - 1 Redim comparray(dimarray) Redim userarray(dimarray) Redim passarray(dimarray) objTextFileReading.close Set objTextFileReading = objFSO.OpenTextFile(input_file, 1) Do Until objTextFileReading.AtEndOfStream strString = objTextFileReading.ReadLine strSplit = split(strString, ",") comparray(count) = strSplit(0) userarray(count) = strSplit(1) passarray(count) = strSplit(2) count = count + 1 Loop num_running = HowMany if verbose = "y" then If blnCScript Then wscript.echo "File " & input_file & " read into array." If blnCScript Then wscript.echo "Number of systems retrieved from file: " & Ubound(comparray) If blnCScript Then wscript.echo "--------------" end if For i = 0 To Ubound(comparray) while num_running > number_of_audits if verbose = "y" then If blnCScript Then wscript.echo "Processes running (" & num_running & ") greater than number wanted (" & number_of_audits & ")" If blnCScript Then wscript.echo "Therefore - sleeping for 4 seconds." end if wscript.Sleep 4000 num_running = HowMany wend if comparray(i) <> "" then if verbose = "y" then If blnCScript Then wscript.echo i & " of " & Ubound(comparray) If blnCScript Then wscript.echo "Processes running: " & num_running If blnCScript Then wscript.echo "Next System: " & comparray(i) If blnCScript Then wscript.echo "--------------" end if command1 = "cscript " & script_name & " computer:" & comparray(i) & " user:" & userarray(i) & " password:" & passarray(i) set sh1=WScript.CreateObject("WScript.Shell") sh1.Run command1, 6, False set sh1 = nothing num_running = HowMany end if Next end if ' Give the spawned scripts time to fail before emailing wscript.Sleep 6000 ' Open the file failed_audits.txt, read the contents and store in failed_audits variable Set objFile = objFSO.OpenTextFile("failed_audits.txt", 1) email_failed = objFile.ReadAll objFile.Close '''''''''''''''''''''''''''''''''' ' Send an email of failed audits ' ' if there are any ' '''''''''''''''''''''''''''''''''' if email_failed <> "" then Set objEmail = CreateObject("CDO.Message") objEmail.From = email_from objEmail.To = email_to objEmail.Subject = "Failed Open Audits." objEmail.Textbody = "The following systems failed to audit: " & vbCRLF & email_failed objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = email_server objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 objEmail.Configuration.Fields.Update objEmail.Send end if ' Exit the script wscript.quit function Audit(strComputer) start_time = Timer dim dt : dt = Now() timestamp = Year(dt) & Right("0" & Month(dt),2) & Right("0" & Day(dt),2) & Right("0" & Hour(dt),2) & Right("0" & Minute(dt),2) & Right("0" & Second(dt),2) ''''''''''''''''''''''''''' ' Who are we auditing ' ''''''''''''''''''''''''''' On Error Resume Next Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem",,48) For Each objItem in colItems system_name = objItem.Name domain = objItem.Domain Next Set colItems = objWMIService.ExecQuery("Select IPAddress from Win32_networkadapterconfiguration WHERE IPEnabled='TRUE'",,48) For Each objItem in colItems system_ip = objItem.IPAddress(0) Next Set wshNetwork = WScript.CreateObject( "WScript.Network" ) user_name = wshNetwork.userName Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystemProduct",,48) For Each objItem in colItems system_id_number = clean(objItem.IdentifyingNumber) system_vendor = clean(objItem.Vendor) system_uuid = objItem.UUID Next if verbose = "y" then If blnCScript Then wscript.echo "PC name supplied: " & strComputer If blnCScript Then wscript.echo "PC name from WMI: " & system_name full_system_name = LCase(system_name) & "." & LCase(domain) If blnCScript Then wscript.echo "User executing this script: " & user_name If blnCScript Then wscript.echo "System UUID: " & system_uuid end if ns_ip = NSlookup(system_name) if verbose = "y" then If blnCScript Then wscript.echo "IP: " & ns_ip end if if online = "p" then oIE.document.WriteLn "<h1>Open Audit</h1><br />" end if '''''''''''''''''''''''''''''''' ' Double check WMI is working ' '''''''''''''''''''''''''''''''' if ((UCase(strComputer) <> system_name) AND (strComputer <> ".") AND (strComputer <> full_system_name) AND (strComputer <> ns_ip) AND (strComputer <> system_ip)) then email_failed = email_failed & strComputer & ", " & VBcrlf ie = nothing exit function end if ''''''''''''''''''''''''''''''''''''''' ' Setup for Offline file creation ' ''''''''''''''''''''''''''''''''''''''' if online = "n" then Set objFSO = CreateObject("Scripting.FileSystemObject") Set objTextFile = objFSO.OpenTextFile (system_name & ".txt", ForAppending, True) end if ''''''''''''''''''''''''''' ' Network Information ' ''''''''''''''''''''''''''' comment = "Network Info" if verbose = "y" then If blnCScript Then wscript.echo comment end if On Error Resume Next Set colItems = objWMIService.ExecQuery("select * from win32_networkadapterconfiguration WHERE IPEnabled='TRUE' " _ & "AND ServiceName<>'AsyncMac' AND ServiceName<>'VMnetx' " _ & "AND ServiceName<>'VMnetadapter' AND ServiceName<>'Rasl2tp' " _ & "AND ServiceName<>'msloop' " _ & "AND ServiceName<>'PptpMiniport' AND ServiceName<>'Raspti' " _ & "AND ServiceName<>'NDISWan' AND ServiceName<>'NdisWan4' AND ServiceName<>'RasPppoe' " _ & "AND ServiceName<>'NdisIP' AND ServiceName<>'' AND Description<>'PPP Adapter.'",,48) For Each objItem in colItems net_ip = objItem.IPAddress(0) net_mac = objItem.MACAddress net_description = objItem.Description net_dhcp_enabled = objItem.DHCPEnabled net_dhcp_server = objItem.DHCPServer net_dns_host_name = objItem.DNSHostName if isarray(objItem.DNSServerSearchOrder) then net_dns_server = objItem.DNSServerSearchOrder(0) net_dns_server_2 = objItem.DNSServerSearchOrder(1) end if net_ip_subnet = objItem.IPSubnet(0) net_wins_primary = objItem.WINSPrimaryServer net_wins_secondary = objItem.WINSSecondaryServer Set colItems2 = objWMIService.ExecQuery("Select * from Win32_NetworkAdapter WHERE MACAddress='" & objItem.MACAddress & "'",,48) For Each objItem2 in colItems2 net_adapter_type = objItem2.AdapterType net_manufacturer = objItem2.Manufacturer Next ' Below is to account for a NULL in various items if net_ip = "" then net_ip = "0.0.0.0" if isnull(net_dns_server_2) then net_dns_server_2 = "none" if isnull(net_dhcp_server) then net_dhcp_server = "none" if net_dhcp_server = "" then net_dhcp_server = "none" if isnull(net_dns_server) then net_dns_server = "none" if isnull(net_ip_subnet) then net_ip_subnet = "none" net_description = clean(net_description) ' IP Address padded with zeros so it sorts properly MyIP = Split(net_ip, ".", -1, 1) if MyIP(0) <> "169" AND MyIP(1) <> "254" then MyIP(0) = right("000" & MyIP(0),3) MyIP(1) = right("000" & MyIP(1),3) MyIP(2) = right("000" & MyIP(2),3) MyIP(3) = right("000" & MyIP(3),3) net_ip = MyIP(0) & "." & MyIP(1) & "." & MyIP(2) & "." & MyIP(3) if net_ip <> "000.000.000.000" then net_ip_address = net_ip end if end if if net_dhcp_server <> "255.255.255.255" then form_input = "network^^^" & net_mac & "^^^" & net_description & "^^^" & net_dhcp_enabled _ & "^^^" & net_dhcp_server & "^^^" & net_dns_host_name & "^^^" & net_dns_server _ & "^^^" & net_ip & "^^^" & net_ip_subnet & "^^^" & net_wins_primary _ & "^^^" & net_wins_secondary & "^^^" & net_adapter_type & "^^^" & net_manufacturer & "^^^" entry form_input,comment,objTextFile,oAdd,oComment form_input = "" if net_mac_uuid = "" then net_mac_uuid = net_mac end if end if Next On Error Resume Next Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem",,48) For Each objItem in colItems net_domain = objItem.Domain net_user_name = objItem.UserName Next On Error Resume Next Set colItems = objWMIService.ExecQuery("Select * from Win32_NTDomain",,48) For Each objItem in colItems net_client_site_name = objItem.ClientSiteName net_domain_controller_address = objItem.DomainControllerAddress net_domain_controller_name = objItem.DomainControllerName Next if isnull(net_ip_address) then net_ip_address = "" end if if isnull(net_domain) then oReg.GetStringValue HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "DefaultDomainName", net_domain if isnull(net_domain) then net_domain = "" end if end if if isnull(net_user_name) then oReg.GetStringValue HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "DefaultUserName", net_user_name if isnull(net_user_name) then net_user_name = "" end if end if if isnull(net_client_site_name) then net_client_site_name = "" end if if isnull(net_domain_controller_address) then net_domain_controller_address = "" end if if isnull(net_domain_controller_name) then net_domain_controller_name = "" end if form_input = "system01^^^" & clean(net_ip_address) & "^^^" & clean(net_domain) _ & "^^^" & clean(net_user_name) & "^^^" & clean(net_client_site_name) _ & "^^^" & clean(Replace(net_domain_controller_address, "\\", "")) & "^^^" & clean(Replace(net_domain_controller_name, "\\", "")) & "^^^" entry form_input,comment,objTextFile,oAdd,oComment form_input = "" ''''''''''''''''' ' Make the UUID ' ''''''''''''''''' if uuid_type = "uuid" then ' Do nothing - system_uuid is the uuid already end if if uuid_type = "mac" then if net_mac_uuid <> "" then system_uuid = net_mac_uuid end if end if if uuid_type = "name" then if (system_name + "." + net_domain) <> "." then system_uuid = system_name + "." + net_domain end if end if ' Defaults below here account for oddities if ((isnull(system_uuid) OR system_uuid = "") AND (system_model <> "") AND (system_id_number <> "")) then system_uuid = system_model + "." + system_id_number end if if (isnull(system_uuid) OR system_uuid = "" OR system_uuid = ".") then system_uuid = system_name + "." + net_domain end if if system_uuid = "00000000-0000-0000-0000-000000000000" then system_uuid = system_name + "." + domain end if if system_uuid = "FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF" then system_uuid = system_name + "." + domain end if form_input = "" form_input = "audit^^^" & system_name & "^^^" & timestamp & "^^^" & system_uuid & "^^^" & user_name & "^^^" & ie_submit_verbose & "^^^" & software_audit & "^^^" entry form_input,comment,objTextFile,oAdd,oComment ''''''''''''''''''''''''''''''''''''' ' System Information & Timezone ' ''''''''''''''''''''''''''''''''''''' comment = "System Info" if verbose = "y" then If blnCScript Then wscript.echo comment end if On Error Resume Next Set colItems = objWMIService.ExecQuery("Select * from Win32_LogicalMemoryConfiguration",,48) mem_count = 0 For Each objItem in colItems mem_count = mem_count + objItem.Capacity Next if mem_count > 0 then mem_size = int(mem_count /1024 /1024) else Set colItems = objWMIService.ExecQuery("Select * from Win32_LogicalMemoryConfiguration",,48) For Each objItem in colItems mem_size = objItem.TotalPhysicalMemory Next mem_size = int(mem_size /1024) end if Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem",,48) For Each objItem in colItems system_model = clean(objItem.Model) system_name = clean(objItem.Name) system_num_processors = clean(objItem.NumberOfProcessors) system_part_of_domain = clean(objItem.PartOfDomain) system_primary_owner_name = clean(objItem.PrimaryOwnerName) domain_role = clean(objItem.DomainRole) Next if domain_role = "0" then domain_role_text = "Standalone Workstation" end if if domain_role = "1" then domain_role_text = "Workstation" end if if domain_role = "2" then domain_role_text = "Standalone Server" end if if domain_role = "3" then domain_role_text = "Member Server" end if if domain_role = "4" then domain_role_text = "Backup Domain Controller" end if if domain_role = "5" then domain_role_text = "Primary Domain Controller" end if Set colItems = objWMIService.ExecQuery("Select * from Win32_SystemEnclosure",,48) For Each objItem in colItems system_system_type = Join(objItem.ChassisTypes, ",") Next Set colItems = objWMIService.ExecQuery("Select * from Win32_TimeZone",,48) For Each objItem in colItems tm_zone = clean(objItem.Caption) tm_daylight = clean(objItem.DaylightName) Next if system_system_type = "1" then system_system_type = "Other" end if if system_system_type = "2" then system_system_type = "Unknown" end if if system_system_type = "3" then system_system_type = "Desktop" end if if system_system_type = "4" then system_system_type = "Low Profile Desktop" end if if system_system_type = "5" then system_system_type = "Pizza Box" end if if system_system_type = "6" then system_system_type = "Mini Tower" end if if system_system_type = "7" then system_system_type = "Tower" end if if system_system_type = "8" then system_system_type = "Portable" end if if system_system_type = "9" then system_system_type = "Laptop" end if if system_system_type = "10" then system_system_type = "Notebook" end if if system_system_type = "11" then system_system_type = "Hand Held" end if if system_system_type = "12" then system_system_type = "Docking Station" end if if system_system_type = "13" then system_system_type = "All in One" end if if system_system_type = "14" then system_system_type = "Sub Notebook" end if if system_system_type = "15" then system_system_type = "Space-Saving" end if if system_system_type = "16" then system_system_type = "Lunch Box" end if if system_system_type = "17" then system_system_type = "Main System Chassis" end if if system_system_type = "18" then system_system_type = "Expansion Chassis" end if if system_system_type = "19" then system_system_type = "SubChassis" end if if system_system_type = "20" then system_system_type = "Bus Expansion Chassis" end if if system_system_type = "21" then system_system_type = "Peripheral Chassis" end if if system_system_type = "22" then system_system_type = "Storage Chassis" end if if system_system_type = "23" then system_system_type = "Rack Mount Chassis" end if if system_system_type = "24" then system_system_type = "Sealed-Case PC" end if form_input = "system02^^^" & trim(system_model) & "^^^" & system_name _ & "^^^" & system_num_processors & "^^^" & system_part_of_domain _ & "^^^" & system_primary_owner_name & "^^^" & system_system_type _ & "^^^" & mem_size & "^^^" & system_id_number _ & "^^^" & trim(system_vendor) & "^^^" & domain_role_text _ & "^^^" & tm_zone & "^^^" & tm_daylight & "^^^" entry form_input,comment,objTextFile,oAdd,oComment form_input = "" ''''''''''''''''''''''''''' ' Windows Information ' ''''''''''''''''''''''''''' comment = "Windows Info" if verbose = "y" then If blnCScript Then wscript.echo comment end if On Error Resume Next Set colItems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem",,48) For Each objItem in colItems OSName = objItem.Caption if objItem.OSType = "16" then OSName = "Microsoft Windows 95" end if if objItem.OSType = "17" then OSName = "Microsoft Windows 98" if Instr(objItem.Name, "|") then OSName = Left(objItem.Name, Instr(objItem.Name, "|") - 1) else OSName = objItem.Name end if end if OSInstall = objItem.InstallDate OSInstall = Left(OSInstall, 8) OSInstallYear = Left(OSInstall, 4) OSInstallMonth = Mid(OSInstall, 5, 2) OSInstallDay = Right(OSInstall, 2) OSInstall = OSInstallYear & "/" & OSInstallMonth & "/" & OSInstallDay OSType = objItem.OSType ServicePack = objItem.ServicePackMajorVersion OSLang = objItem.OSLanguage SystemBuildNumber = objItem.BuildNumber sys_version = objItem.Version system_description = clean(objItem.Description) OSCaption = objItem.Caption RegUser = clean(objItem.RegisteredUser) WinDir = clean(objItem.WindowsDirectory) RegOrg = clean(objItem.Organization) Country = objItem.CountryCode SerNum = objItem.SerialNumber OSSerPack = objItem.ServicePackMajorVersion & "." & objItem.ServicePackMinorVersion boot_device = clean(objItem.BootDevice) build_number = clean(objItem.BuildNumber) Version = objItem.Version Next form_input = "system03^^^" & boot_device & "^^^" & build_number _ & "^^^" & OSType _ & "^^^" & OSName & "^^^" & Country _ & "^^^" & system_description & "^^^" & OSInstall _ & "^^^" & RegOrg & "^^^" & OSLang _ & "^^^" & RegUser & "^^^" & SerNum _ & "^^^" & OSSerPack & "^^^" & Version & "^^^" & WinDir & "^^^" entry form_input,comment,objTextFile,oAdd,oComment form_input = "" if online = "p" then oIE.document.WriteLn "<div id=""content"">" oIE.document.WriteLn "<table border=""0"" cellpadding=""2"" cellspacing=""0"" class=""content"">" oIE.document.WriteLn "<tr><td colspan=""2""><b>Network Information</b></td></tr>" oIE.document.WriteLn "<tr><td width=""250"">System Name: </td><td>" & system_name & "</td></tr>" oIE.document.WriteLn "<tr bgcolor=""#F1F1F1""><td>Description: </td><td>" & system_description & "</td></tr>" oIE.document.WriteLn "<tr><td>MAC Address: </td><td>" & net_mac & "</td></tr>" oIE.document.WriteLn "<tr bgcolor=""#F1F1F1""><td>IP Address: </td><td> " & net_ip_address & "</td></tr>" oIE.document.WriteLn "<tr><td>Subnet: </td><td>" & net_ip_subnet & "</td></tr>" oIE.document.WriteLn "<tr bgcolor=""#F1F1F1""><td>DHCP Enabled: </td><td>" & net_dhcp_enabled & "</td></tr>" oIE.document.WriteLn "<tr><td>DHCP Server: </td><td>" & net_dhcp_server & "</td></tr>" oIE.document.WriteLn "<tr bgcolor=""#F1F1F1""><td>WINS Server: </td><td>" & net_wins_primary & "</td></tr>" oIE.document.WriteLn "<tr><td>DNS Server: </td><td>" & net_dns_server & "</td></tr>" oIE.document.WriteLn "<tr bgcolor=""#F1F1F1""><td>NIC Manufacturer: </td><td>" & net_manufacturer & "</td></tr>" oIE.document.WriteLn "<tr><td>Description: </td><td>" & net_description & "</td></tr>" oIE.document.WriteLn "<tr bgcolor=""#F1F1F1""><td>Part of Domain: </td><td>" & system_part_of_domain & "</td></tr>" oIE.document.WriteLn "<tr><td>Domain Role: </td><td>" & domain_role_text & "</td></tr>" oIE.document.WriteLn "<tr bgcolor=""#F1F1F1""><td>Domain: </td><td>" & net_domain & "</td></tr>" oIE.document.WriteLn "<tr><td>Domain Site Name: </td><td>" & net_client_site_name & "</td></tr>" oIE.document.WriteLn "<tr bgcolor=""#F1F1F1""><td>Domain Controller Address: </td><td>" & Replace(net_domain_controller_address, "\\", "") & "</td></tr>" oIE.document.WriteLn "<tr><td>Domain Controller Name: </td><td>" & Replace(net_domain_controller_name, "\\", "") & "</td></tr>" oIE.document.WriteLn "</table>" oIE.document.WriteLn "</div>" oIE.document.WriteLn "<br />" oIE.document.WriteLn "<div id=""content"">" oIE.document.WriteLn "<table border=""0"" cellpadding=""2"" cellspacing=""0"" class=""content"">" oIE.document.WriteLn "<tr><td colspan=""2""><b>System Information</b></td></tr>" oIE.document.WriteLn "<tr bgcolor=""#F1F1F1""><td>User Name: </td><td>" & Replace(net_user_name, "\\", "\") & "</td></tr>" oIE.document.WriteLn "<tr><td>Date Audited: </td><td>" & date & "</td></tr>" oIE.document.WriteLn "<tr bgcolor=""#F1F1F1""><td>Time Zone: </td><td>" & tm_zone & "</td></tr>" oIE.document.WriteLn "<tr><td width=""250"">Registered Owner: </td><td>" & system_primary_owner_name & "</td></tr>" oIE.document.WriteLn "<tr bgcolor=""#F1F1F1""><td>UUID: </td><td>" & system_uuid & "</td></tr>" oIE.document.WriteLn "<tr><td>Model: </td><td>" & system_model & "</td></tr>" oIE.document.WriteLn "<tr bgcolor=""#F1F1F1""><td>Serial: </td><td>" & system_id_number & "</td></tr>" oIE.document.WriteLn "<tr><td>Manufacturer: </td><td>" & trim(system_vendor) & "</td></tr>" oIE.document.WriteLn "<tr bgcolor=""#F1F1F1""><td>Chassis: </td><td>" & system_system_type & "</td></tr>" oIE.document.WriteLn "</table></div>" oIE.document.WriteLn "<br />" oIE.document.WriteLn "<div id=""content"">" oIE.document.WriteLn "<table border=""0"" cellpadding=""2"" cellspacing=""0"" class=""content"">" oIE.document.WriteLn "<tr><td colspan=""2""><b>Windows Information</b></td></tr>" oIE.document.WriteLn "<tr><td>OS Name: </td><td>" & OSName & "</td></tr>" oIE.document.WriteLn "<tr bgcolor=""#F1F1F1""><td>OS Install Date: </td><td>" & OSInstall & "</td></tr>" oIE.document.WriteLn "<tr><td>Registered User: </td><td>" & RegUser & "</td></tr>" oIE.document.WriteLn "<tr bgcolor=""#F1F1F1""><td>Registered Organisation: </td><td>" & RegOrg & "</td></tr>" oIE.document.WriteLn "<tr><td>Country: </td><td>" & Country & "</td></tr>" oIE.document.WriteLn "<tr bgcolor=""#F1F1F1""><td>Language: </td><td>" & OSLang & "</td></tr>" oIE.document.WriteLn "<tr><td>Serial Number: </td><td>" & SerNum & "</td></tr>" oIE.document.WriteLn "<tr bgcolor=""#F1F1F1""><td>Service Pack: </td><td>" & OSSerPack & "</td></tr>" oIE.document.WriteLn "<tr><td>Windows Directory: </td><td>" & Country & "</td></tr>" oIE.document.WriteLn "</table></div>" oIE.document.WriteLn "<br style=""page-break-before:always;"" />" oIE.document.WriteLn "<div id=""content"">" oIE.document.WriteLn "<table border=""0"" cellpadding=""2"" cellspacing=""0"" class=""content"">" oIE.document.WriteLn "<tr><td colspan=""2""><b>Hardware</b></td></tr>" end if ''''''''''''''''''''''''''' ' Bios Information ' ''''''''''''''''''''''''''' comment = "Bios Info" if verbose = "y" then If blnCScript Then wscript.echo comment end if On Error Resume Next Set colSMBIOS = objWMIService.ExecQuery ("Select * from Win32_SystemEnclosure",,48) For Each objSMBIOS in colSMBIOS bios_asset = objSMBIOS.SMBIOSAssetTag Next Set colItems = objWMIService.ExecQuery("Select * from Win32_BIOS",,48) For Each objItem in colItems form_input = "bios^^^" & clean(objItem.Description) _ & "^^^" & clean(objItem.Manufacturer) _ & "^^^" & clean(objItem.SerialNumber) _ & "^^^" & clean(objItem.SMBIOSBIOSVersion) _ & "^^^" & clean(objItem.Version) _ & "^^^" & clean(bios_asset) & "^^^" entry form_input,comment,objTextFile,oAdd,oComment form_input = "" if online = "p" then oIE.document.WriteLn "<tr><td>BIOS Manufacturer: </td><td>" & clean(objItem.Manufacturer) & "</td></tr>" oIE.document.WriteLn "<tr bgcolor=""#F1F1F1""><td>BIOS Version: </td><td>" & clean(objItem.Version) & "</td></tr>" end if Next ''''''''''''''''''''''''''' ' Processor Information ' ''''''''''''''''''''''''''' comment = "Processor Info" if verbose = "y" then If blnCScript Then wscript.echo comment end if On Error Resume Next Set colItems = objWMIService.ExecQuery("Select * from Win32_Processor",,48) count = 0 For Each objItem in colItems count = count + 1 if count > int(system_num_processors) then Exit For end if form_input = "processor^^^" & clean(objItem.Caption) & "^^^" & clean(objItem.CurrentClockSpeed) & "^^^" _ & clean(objItem.CurrentVoltage) & "^^^" & clean(objItem.DeviceID) & "^^^" _ & clean(objItem.ExtClock) & "^^^" & clean(objItem.Manufacturer) & "^^^" _ & clean(objItem.MaxClockSpeed) & "^^^" & LTrim(clean(objItem.Name)) & "^^^" _ & clean(objItem.PowerManagementSupported) & "^^^" & clean(objItem.SocketDesignation) & "^^^" entry form_input,comment,objTextFile,oAdd,oComment form_input = "" if online = "p" then oIE.document.WriteLn "<tr><td width=""250"">Processor: </td><td>" & clean(objItem.Caption) & "</td></tr>" oIE.document.WriteLn "<tr bgcolor=""#F1F1F1""><td>Processor Speed: </td><td>" & clean(objItem.MaxClockSpeed) & "</td></tr>" end if Next ''''''''''''''''''''''''''' ' Memory Information ''''''''''''''''''''''''''' comment = "Memory Info" if verbose = "y" then If blnCScript Then wscript.echo comment end if Set colItems = objWMIService.ExecQuery("Select MemoryDevices FROM Win32_PhysicalMemoryArray WHERE Use = '3'",,48) For Each objItem in colItems system_memory_banks = objItem.MemoryDevices Next On Error Resume Next Set colItems = objWMIService.ExecQuery("Select Capacity,DeviceLocator,FormFactor,MemoryType,TypeDetail,Speed FROM Win32_PhysicalMemory",,48) mem_count = 0 mem_size = 0 For Each objItem in colItems mem_count = mem_count + 1 If mem_count > int(system_memory_banks) then if verbose = "y" then If blnCScript Then wscript.echo "mem_count: " & mem_count & " - system_memory_banks: " & int(system_memory_banks) End If Exit For End If If objItem.FormFactor = "7" then mem_formfactor = "SIMM" ElseIf objItem.FormFactor = "8" then mem_formfactor = "DIMM" ElseIf objItem.FormFactor = "11" then mem_formfactor = "RIMM" ElseIf objItem.FormFactor = "12" then mem_formfactor = "SODIMM" ElseIf objItem.FormFactor = "13" then mem_formfactor = "SRIMM" Else mem_formfactor = "Unknown" End If If objItem.MemoryType = "0" then mem_detail = "Unknown" ElseIf objItem.MemoryType = "1" then mem_detail = "Other" ElseIf objItem.MemoryType = "2" then mem_detail = "DRAM" ElseIf objItem.MemoryType = "3" then mem_detail = "Synchronous DRAM" ElseIf objItem.MemoryType = "4" then mem_detail = "Cache DRAM" ElseIf objItem.MemoryType = "5" then mem_detail = "EDO" ElseIf objItem.MemoryType = "6" then mem_detail = "EDRAM" ElseIf objItem.MemoryType = "7" then mem_detail = "VRAM" ElseIf objItem.MemoryType = "8" then mem_detail = "SRAM" ElseIf objItem.MemoryType = "9" then mem_detail = "RAM" ElseIf objItem.MemoryType = "10" then mem_detail = "ROM" ElseIf objItem.MemoryType = "11" then mem_detail = "Flash" ElseIf objItem.MemoryType = "12" then mem_detail = "EEPROM" ElseIf objItem.MemoryType = "13" then mem_detail = "FEPROM" ElseIf objItem.MemoryType = "14" then mem_detail = "EPROM" ElseIf objItem.MemoryType = "15" then mem_detail = "CDRAM" ElseIf objItem.MemoryType = "16" then mem_detail = "3DRAM" ElseIf objItem.MemoryType = "17" then mem_detail = "SDRAM" ElseIf objItem.MemoryType = "18" then mem_detail = "SGRAM" ElseIf objItem.MemoryType = "19" then mem_detail = "RDRAM" ElseIf objItem.MemoryType = "20" then mem_detail = "DDR" End If If objItem.TypeDetail = "1" then mem_typedetail = "Reserved" ElseIf objItem.TypeDetail = "2" then mem_typedetail = "Other" ElseIf objItem.TypeDetail = "4" then mem_typedetail = "Unknown" ElseIf objItem.TypeDetail = "8" then mem_typedetail = "Fast-paged" ElseIf objItem.TypeDetail = "16" then mem_typedetail = "Static column" ElseIf objItem.TypeDetail = "32" then mem_typedetail = "Pseudo-static" ElseIf objItem.TypeDetail = "64" then mem_typedetail = "RAMBUS" ElseIf objItem.TypeDetail = "128" then mem_typedetail = "Synchronous" ElseIf objItem.TypeDetail = "256" then mem_typedetail = "CMOS" ElseIf objItem.TypeDetail = "512" then mem_typedetail = "EDO" ElseIf objItem.TypeDetail = "1024" then mem_typedetail = "Window DRAM" ElseIf objItem.TypeDetail = "2048" then mem_typedetail = "Cache DRAM" ElseIf objItem.TypeDetail = "4096" then mem_typedetail = "Non-volatile" Else mem_typedetail = "Unknown" End If mem_bank = objItem.DeviceLocator mem_size = int(objItem.Capacity /1024 /1024) form_input = "memory^^^" & mem_bank & "^^^" & mem_formfactor & "^^^" & mem_detail & "^^^" _ & mem_typedetail & "^^^" & mem_size & "^^^" & clean(objItem.Speed) & "^^^" entry form_input,comment,objTextFile,oAdd,oComment form_input = "" if online = "p" then oIE.document.WriteLn "<tr><td>Memory Slot / Type: </td><td>" & mem_bank & " / " & mem_detail & "</td></tr>" oIE.document.WriteLn "<tr bgcolor=""#F1F1F1""><td>Memory Size: </td><td>" & mem_size & "</td></tr>" end if Next If mem_size = 0 Then Set colItems = objWMIService.ExecQuery("Select * from Win32_LogicalMemoryConfiguration",,48) For Each objItem in colItems mem_size = objItem.TotalPhysicalMemory Next mem_size = int(mem_size /1024) form_input = "memory^^^" & "Unknown" & "^^^" & "Unknown" & "^^^" & "Unknown" & "^^^" _ & "Unknown" & "^^^" & mem_size & "^^^" & "0" & "^^^" entry form_input,comment,objTextFile,oAdd,oComment form_input = "" if online = "p" then oIE.document.WriteLn "<tr><td>Memory Slot / Type: </td><td>" & mem_bank & " / " & mem_detail & "</td></tr>" oIE.document.WriteLn "<tr bgcolor=""#F1F1F1""><td>Memory Size: </td><td>" & mem_size & "</td></tr>" end if End If ''''''''''''''''''''''''''' ' Video Information ' ''''''''''''''''''''''''''' comment = "Video Info" if verbose = "y" then If blnCScript Then wscript.echo comment end if On Error Resume Next Set colItems = objWMIService.ExecQuery("Select * from Win32_VideoController",,48) For Each objItem in colItems If (Instr(objItem.Caption, "vnc") = 0 AND Instr(objItem.Caption, "Innobec SideWindow") = 0) then LeftString = Left(objItem.DriverDate, 8) form_input = "video^^^" & int(objItem.AdapterRAM / 1024 / 1024) & "^^^" _ & clean(objItem.Caption) & "^^^" & clean(objItem.CurrentHorizontalResolution) & "^^^" _ & clean(objItem.CurrentNumberOfColors) & "^^^" & clean(objItem.CurrentRefreshRate) & "^^^" _ & clean(objItem.CurrentVerticalResolution) & "^^^" & clean(objItem.Description) & "^^^" _ & Left(LeftString, 4) & "/" & Mid(LeftString, 5, 2) & "/" & Right(LeftString, 2) & "^^^" _ & clean(objItem.DriverVersion) & "^^^" & clean(objItem.MaxRefreshRate) & "^^^" _ & clean(objItem.MinRefreshRate) & "^^^" & clean(objItem.DeviceID) & "^^^" entry form_input,comment,objTextFile,oAdd,oComment form_input = "" if online = "p" then oIE.document.WriteLn "<tr bgcolor=""#F1F1F1""><td>Video Card: </td><td>" & clean(objItem.Caption) & " mb</td></tr>" oIE.document.WriteLn "<tr><td>Video Memory: </td><td>" & int(objItem.AdapterRAM / 1024 / 1024) & "</td></tr>" oIE.document.WriteLn "<tr bgcolor=""#F1F1F1""><td>Video Driver Date: </td><td>" & Left(LeftString, 4) & "/" & Mid(LeftString, 5, 2) & "/" & Right(LeftString, 2) & "</td></tr>" oIE.document.WriteLn "<tr><td>Video Driver Version: </td><td>" & clean(objItem.DriverVersion) & "</td></tr>" end if end if Next ''''''''''''''''''''''' ' Monitor Information ' ''''''''''''''''''''''' comment = "Monitor Info" if verbose = "y" then If blnCScript Then wscript.echo comment end if Dim strarrRawEDID() intMonitorCount=0 Const HKLM = &H80000002 sBaseKey = "SYSTEM\CurrentControlSet\Enum\DISPLAY\" iRC = oReg.EnumKey(HKLM, sBaseKey, arSubKeys) For Each sKey In arSubKeys sBaseKey2 = sBaseKey & sKey & "\" iRC2 = oReg.EnumKey(HKLM, sBaseKey2, arSubKeys2) For Each sKey2 In arSubKeys2 oReg.GetMultiStringValue HKLM, sBaseKey2 & sKey2 & "\", "HardwareID", sValue for tmpctr=0 to ubound(svalue) if lcase(left(svalue(tmpctr),8))="monitor\" then sBaseKey3 = sBaseKey2 & sKey2 & "\" iRC3 = oReg.EnumKey(HKLM, sBaseKey3, arSubKeys3) For Each sKey3 In arSubKeys3 if skey3="Control" then oReg.GetStringValue HKLM, sbasekey3, "DeviceDesc", temp_model oReg.GetStringValue HKLM, sbasekey3, "Mfg", temp_manuf oReg.GetBinaryValue HKLM, sbasekey3 & "Device Parameters\", "EDID", arrintEDID if VarType(arrintedid) <> 8204 then strRawEDID="EDID Not Available" Else for each bytevalue in arrintedid strRawEDID=strRawEDID & chr(bytevalue) Next end If redim Preserve strarrRawEDID(intMonitorCount) strarrRawEDID(intMonitorCount)=strRawEDID intMonitorCount=intMonitorCount+1 end If Next end If Next Next Next dim arrMonitorInfo() redim arrMonitorInfo(intMonitorCount-1,5) dim location(3) 'for tmpctr=0 to intMonitorCount-1 tmpctr=0 if strarrRawEDID(tmpctr) <> "EDID Not Available" then location(0)=mid(strarrRawEDID(tmpctr),&H36+1,18) location(1)=mid(strarrRawEDID(tmpctr),&H48+1,18) location(2)=mid(strarrRawEDID(tmpctr),&H5a+1,18) location(3)=mid(strarrRawEDID(tmpctr),&H6c+1,18) strSerFind=chr(&H00) & chr(&H00) & chr(&H00) & chr(&Hff) strMdlFind=chr(&H00) & chr(&H00) & chr(&H00) & chr(&Hfc) intSerFoundAt=-1 intMdlFoundAt=-1 for findit = 0 to 3 if instr(location(findit),strSerFind)>0 then intSerFoundAt=findit end If if instr(location(findit),strMdlFind)>0 then intMdlFoundAt=findit end If Next if intSerFoundAt<>-1 Then tmp=right(location(intSerFoundAt),14) if instr(tmp,chr(&H0a))>0 Then tmpser=trim(left(tmp,InStr(tmp,chr(&H0a))-1)) Else tmpser=trim(tmp) end If if left(tmpser,1)=chr(0) Then tmpser=right(tmpser,len(tmpser)-1) Else tmpser="Serial Number Not Found in EDID data" end If if intMdlFoundAt<>-1 Then tmp=right(location(intMdlFoundAt),14) if instr(tmp,chr(&H0a))>0 Then tmpmdl=trim(left(tmp,InStr(tmp,chr(&H0a))-1)) Else tmpmdl=trim(tmp) end If if left(tmpmdl,1)=chr(0) Then tmpmdl=right(tmpmdl,len(tmpmdl)-1) Else tmpmdl="Model Descriptor Not Found in EDID data" end If tmpmfgweek=asc(mid(strarrRawEDID(tmpctr),&H10+1,1)) tmpmfgyear=(asc(mid(strarrRawEDID(tmpctr),&H11+1,1)))+1990 tmpmdt=month(dateadd("ww",tmpmfgweek,datevalue("1/1/" & tmpmfgyear))) & "/" & tmpmfgyear tmpEDIDMajorVer=asc(mid(strarrRawEDID(tmpctr),&H12+1,1)) tmpEDIDRev=asc(mid(strarrRawEDID(tmpctr),&H13+1,1)) tmpver=chr(48+tmpEDIDMajorVer) & "." & chr(48+tmpEDIDRev) tmpEDIDMfg=mid(strarrRawEDID(tmpctr),&H08+1,2) Char1=0 : Char2=0 : Char3=0 Byte1=asc(left(tmpEDIDMfg,1)) Byte2=asc(right(tmpEDIDMfg,1)) if (Byte1 and 64) > 0 then Char1=Char1+16 if (Byte1 and 32) > 0 then Char1=Char1+8 if (Byte1 and 16) > 0 then Char1=Char1+4 if (Byte1 and 8) > 0 then Char1=Char1+2 if (Byte1 and 4) > 0 then Char1=Char1+1 if (Byte1 and 2) > 0 then Char2=Char2+16 if (Byte1 and 1) > 0 then Char2=Char2+8 if (Byte2 and 128) > 0 then Char2=Char2+4 if (Byte2 and 64) &g |
Page 1 of 1 | All times are UTC + 10 hours |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |