function fred_report_info() {
var info={report_cat : "SYSTEM",
report_name : "System time info",
report_author : "Gillen Daniel",
report_desc : "Dump system time info",
fred_api : 2,
hive : "SYSTEM"
};
return info;
}
var table_style = "border-collapse:collapse; margin-left:20px; font-family:arial; font-size:12";
var cell_style = "border:1px solid #888888; padding:5; white-space:nowrap;";
function IsValid(val) {
return (typeof val!=='undefined');
}
function PrintTableHeaderCell(str) {
println("
",str," | ");
}
function PrintTableDataCell(alignment,str) {
var style=cell_style+" text-align:"+alignment+";";
println(" ",str," | ");
}
function ToUTC(num) {
var retnum=new Number(num);
if(retnum&0x80000000) {
retnum=((0xFFFFFFFF-retnum)+1)/60;
return "UTC+"+Number(retnum).toString(10);
} else {
retnum=retnum/60;
if(retnum!=0) return "UTC-"+Number(retnum).toString(10);
else return "UTC+"+Number(retnum).toString(10);
}
}
function ZeroPad(number,padlen) {
var ret=number.toString(10);
if(!padlen || ret.length>=padlen) return ret;
return Math.pow(10,padlen-ret.length).toString().slice(1)+ret;
}
function fred_report_html() {
var val;
println(" System time info
");
// Get current controlset
var cur_controlset=GetRegistryKeyValue("\\Select","Current");
if(IsValid(cur_controlset)) {
cur_controlset=RegistryKeyValueToString(cur_controlset.value,cur_controlset.type);
// Current holds a DWORD value, thus we get a string like 0x00000000, but
// control sets are referenced by its decimal representation.
cur_controlset="ControlSet"+ZeroPad(parseInt(String(cur_controlset).substr(2,8),16),3)
// Get W32Time service settings
var w32time_startup_method="n/a";
var w32time_time_servers="n/a";
val=GetRegistryKeyValue(cur_controlset+"\\Services\\W32Time","Start");
if(IsValid(val)) {
val=RegistryKeyValueToString(val.value,val.type);
switch(Number(val)) {
case 0:
w32time_startup_method="Boot";
break;
case 1:
w32time_startup_method="System";
break;
case 2:
w32time_startup_method="Automatic";
break;
case 3:
w32time_startup_method="Manual";
break;
case 4:
w32time_startup_method="Disabled";
break;
default:
w32time_startup_method="Unknown";
}
// If service is enabled, get ntp server
if(Number(val)<4) {
val=GetRegistryKeyValue(cur_controlset+"\\Services\\W32Time\\Parameters","NtpServer");
if(IsValid(val)) w32time_time_servers=RegistryKeyValueToString(val.value,val.type);
}
}
println(" ");
println("
");
println(" Active control set: | ",cur_controlset," |
");
println(" W32Time startup method: | ",w32time_startup_method," |
");
println(" W32Time NTP servers: | ",w32time_time_servers," |
");
println("
");
println("
");
println(" ");
println(" ");
PrintTableHeaderCell("Setting name");
PrintTableHeaderCell("Time zone");
println("
");
// Active time bias
val=GetRegistryKeyValue(cur_controlset+"\\Control\\TimeZoneInformation","ActiveTimeBias");
var active_bias=(IsValid(val)) ? ToUTC(RegistryKeyValueToString(val.value,val.type)) : "n/a"
// Std. tz name and bias
val=GetRegistryKeyValue(cur_controlset+"\\Control\\TimeZoneInformation","StandardName");
var std_name=(IsValid(val)) ? RegistryKeyValueToString(val.value,val.type) : "n/a";
val=GetRegistryKeyValue(cur_controlset+"\\Control\\TimeZoneInformation","StandardBias");
var std_bias=(IsValid(val)) ? ToUTC(RegistryKeyValueToString(val.value,val.type)) : "n/a";
// Daylight tz name and bias
val=GetRegistryKeyValue(cur_controlset+"\\Control\\TimeZoneInformation","DaylightName");
var daylight_name=(IsValid(val)) ? RegistryKeyValueToString(val.value,val.type) : "n/a";
val=GetRegistryKeyValue(cur_controlset+"\\Control\\TimeZoneInformation","DaylightBias");
var daylight_bias=(IsValid(val)) ? ToUTC(RegistryKeyValueToString(val.value,val.type)) : "n/a";
println(" ");
PrintTableDataCell("left","Active");
PrintTableDataCell("left",active_bias);
println("
");
println(" ");
PrintTableDataCell("left","Standard");
PrintTableDataCell("left",std_bias+" ("+std_name+")");
println("
");
println(" ");
PrintTableDataCell("left","Daylight");
PrintTableDataCell("left",daylight_bias+" ("+daylight_name+")");
println("
");
println("
");
println(" ");
} else {
println(" ");
println(" Unable to determine current control set!
");
println(" Are you sure you are running this report against the correct registry hive?");
println("
");
}
}