<head>
<body>
<hr>
<form name="Reward">
<p>
<h3>Vz̍ől (Reward Maximum Limit)</h3>
$
<select name="RewardLimit" onchange="RewardSet()">
<option value="1000">1,000</option>
<option value="2500">2,500</option>
<option value="5000">5,000</option>
<option value="10000">10,000</option>
</select>
<br>
</p>
<p>
<h3>Vz̍Œۏؒl (Reward Minimum Limit)</h3>
$
<select name="RewardMin" onchange="RewardSetMin()">
<option value="0">0</option>
<option value="100">100</option>
<option value="200">200</option>
<option value="300">300</option>
<option value="400">400</option>
<option value="500">500</option>
</select>
<br>
</p>
</form>
<hr>
<form name="BaseMetrics">
<p>
<h3>{] (Base Metrics)</h3>
Y (Productivity)
<select name="Productivity" onchange="NPSet()">
<option value="0.0">*] (Undefined)</option>
<option value="0.5">VKn[hEFA</option>
<option value="0.9">n[hEFA̍ėp</option>
<option value="1.0">\tgEFA</option>
<option value="1.0">nbJ[gU</option>
</select>
<br>
萫 (Availability)
<select name="Availability" onchange="NASet()">
<option value="0.0">*] (Undefined)</option>
<option value="0.5"></option>
<option value="1.0">_E[h</option>
<option value="1.0">nbJ[gU</option>
</select>
<br>
@ (Legality)
<select name="Legality" onchange="NLSet()">
<option value="0.0">*] (Undefined)</option>
<option value="0.6">@</option>
<option value="0.9">O[</option>
<option value="1.0">@</option>
<option value="1.0">nbJ[gU</option>
</select>
</p>
<p>
<br>
U敪 (Access Vector)
<select name="AccessVector" onchange="AVSet()">
<option value="0.0">*] (Undefined)</option>
<option value="0.395">[Jł̂ݍU\ (Local)</option>
<option value="0.646">אڃlbg[NU\</option>
<option value="1.0">lbg[NU\</option>
<option value="1.0">[U[gU</option>
</select>
<br>
U̕G (Access Complexity)
<select name="AccessComplexity" onchange="ACSet()">
<option value="0.0">*] (Undefined)</option>
<option value="0.35">ȏԂɑ΂čU\</option>
<option value="0.61">̏Ԃɑ΂čU\</option>
<option value="0.71">ɑŜɍU\</option>
</select>
<br>
UO̔Fؗv (Authentication)
<select name="Authentication" onchange="AuSet()">
<option value="0.0">*] (Undefined)</option>
<option value="0.45">Fؑ삪Kv</option>
<option value="0.56">PFؑ삪Kv</option>
<option value="0.704">Fؑ삪sv</option>
<option value="0.704">[U[gU</option>
</select>
<br>
Kp̕G (Using Complexity)
<select name="UsingComplexity" onchange="UCSet()">
<option value="0.0">*] (Undefined)</option>
<option value="0.6">mod`bv̎Ȃǃn[hEFAZpKv</option>
<option value="1.0">ȋZp͕sv</option>
</select>
</p>
<p>@ւ̉e (Confidentiality Impact)
<select name="ConfidentialityImpact" onchange="CSet()">
<option value="0.0">*Ȃ</option>
<option value="0.275">I</option>
<option value="0.660">SʓI</option>
</select>
<br>
Sւ̉e (Integrity Impact)
<select name="IntegrityImpact" onchange="ISet()">
<option value="0.0">*Ȃ</option>
<option value="0.275">I</option>
<option value="0.660">SʓI</option>
</select>
<br>
pւ̉e (Availability Impact)
<select name="AvailabilityImpact" onchange="ASet()">
<option value="0.0">*Ȃ</option>
<option value="0.275">I</option>
<option value="0.660">SʓI</option>
</select>
</p>
<p>NVSS {l (Base Score)
<input type="text" name="Score" value = 0>
</p>
<p>NVSS {l ɊÂVz($)
<input type="text" name="Reward" value = 0>
</p>
</form>
<hr>
<form name="TemporalMetrics">
<h3>] (Temporal Metrics)</h3>
<p>U\ (Exploitability)
<select name="Exploitability" onchange="ESet()">
<option value="0.85">*</option>
<option value="0.4">|eV݂̂ŒP̂ł͍Us\</option>
<option value="0.90">؉\</option>
<option value="0.95">U\</option>
<option value="1.00">eՂɍU\</option>
<option value="1.00">]</option>
</select>
<br>
p\ȑ΍̃x (Remediation Level)
<select name="RemediationLevel" onchange="RLSet()">
<option value="0.87"></option>
<option value="0.90">b</option>
<option value="0.95"></option>
<option value="1.00">Ȃ</option>
<option value="1.00">*]</option>
</select>
<br>
Ǝ㐫̐M (Report Confidence)
<select name="ReportConfidence" onchange="RCSet()">
<option value="0.90">*mF</option>
<option value="0.95">m</option>
<option value="1.00">mF</option>
<option value="1.00">]</option>
</select>
</p>
<p>NVSS l (Temporal Score)
<input type="text" name="Score" value = 0>
</p>
<p>NVSS l ɊÂVz($)
<input type="text" name="Reward" value = 0>
</p>
</form>
<hr>
<form name="EnvironmentalMetrics">
<h3>] (Environmental Metrics)</h3>
<p>񎟔Q̉\ (Collateral Damage Potential)
<select name="CollateralDamagePotential" onchange="CDSet()">
<option value="0.0">*Ȃ</option>
<option value="0.1">y</option>
<option value="0.3">x</option>
<option value="0.4">d</option>
<option value="0.5">jœI</option>
<option value="0.0">]</option>
</select>
<br>
e󂯂ΏۃVXe͈̔ (Target Distribution)
<select name="TargetDistribution" onchange="TDSet()">
<option value="0.00">*Ȃ</option>
<option value="0.25">K</option>
<option value="0.75">K</option>
<option value="1.00">K</option>
<option value="1.00">]</option>
</select>
</p>
<p>@̗vx (Confidentiality Requirement)
<select name="ConfidentialityRequirement" onchange="CRSet()">
<option value="0.5">*</option>
<option value="1.0"></option>
<option value="1.51"></option>
<option value="1.0">]</option>
</select>
<br>
S̗vx (Integrity Requirement)
<select name="IntegrityRequirement" onchange="IRSet()">
<option value="0.5">*</option>
<option value="1.0"></option>
<option value="1.51"></option>
<option value="1.0">]</option>
</select>
<br>
p̗vx (Availability Requirement)
<select name="AvailabilityRequirement" onchange="ARSet()">
<option value="0.5">*</option>
<option value="1.0"></option>
<option value="1.51"></option>
<option value="1.0">]</option>
</select>
</p>
<p>NVSS l (Environmental Score)
<input type="text" name="Score" value = 0>
</p>
<p>NVSS l ɊÂVz($)
<input type="text" name="Reward" value = 0>
</p>
</form>

<hr>
<form name="Examples">
<p>
<h3>̗ (Examples)</h3>
TvP[X
<select name="Vulns" onchange="VulnSet()">
<option value="Web TCg̉{ ARM9 CWFNV܂œB">1</option>
<option value="yA^Rg[c[">2</option>
<option value="Gateway3DS">3</option>
<option value="MSET Ǝ㐫iAv ROP j">4</option>
<option value="svn Ǝ㐫iAv̌ij">5</option>
<option value="ARM9 Ǝ㐫iARM9 փCWFNVj">6</option>
</select>
<br>
</p>
</form>

<script>
var RewardLimit=1000;
var RewardMin=0;
var NP;
var NA;
var NL;
var AV;
var AC;
var Au;
var UC;
var C;
var I;
var A;
var AttackEasiry;
var Effective;
var BaseScore;
//
function RewardSetMin()
{
RewardMin = parseFloat(document.Reward.RewardMin.value);
RewardSet();
}
function RewardSet()
{
RewardLimit = parseFloat(document.Reward.RewardLimit.value);
document.BaseMetrics.Reward.value = (document.BaseMetrics.Score.value)*(document.BaseMetrics.Score.value)*(RewardLimit/100);
document.TemporalMetrics.Reward.value = (document.TemporalMetrics.Score.value)*(document.TemporalMetrics.Score.value)*(RewardLimit/100);
document.EnvironmentalMetrics.Reward.value = (document.EnvironmentalMetrics.Score.value)*(document.EnvironmentalMetrics.Score.value)*(RewardLimit/100);
if((document.BaseMetrics.Reward.value!=0)&&(document.BaseMetrics.Reward.value<RewardMin))
{
  document.BaseMetrics.Reward.value = RewardMin;
}
if((document.TemporalMetrics.Reward.value!=0)&&(document.TemporalMetrics.Reward.value<RewardMin))
{
  document.TemporalMetrics.Reward.value = RewardMin;
}
if((document.EnvironmentalMetrics.Reward.value!=0)&&(document.EnvironmentalMetrics.Reward.value<RewardMin))
{
  document.EnvironmentalMetrics.Reward.value = RewardMin;
}
}
//
function CalcrateBaseScoreCore( effective)
{
AttackEasiry = 20 * NP * NA * NL * AV * AC * Au * UC;
if( effective)
{
return ((0.6 * effective) + (0.4 * AttackEasiry) - 1.5) * 1.176;
}
else
{
return 0;
}
}
function CalcrateBaseScore()
{
Effective = 10.41 * (1-(1-C)*(1-I)*(1-A));
BaseScore = CalcrateBaseScoreCore(Effective);
document.BaseMetrics.Score.value = Math.round(BaseScore * 10) / 10;
document.BaseMetrics.Reward.value = (document.BaseMetrics.Score.value)*(document.BaseMetrics.Score.value)*(RewardLimit/100);
if((document.BaseMetrics.Reward.value!=0)&&(document.BaseMetrics.Reward.value<RewardMin))
{
  document.BaseMetrics.Reward.value = RewardMin;
}
}
// 
function NPSet(){
NP = parseFloat(document.BaseMetrics.Productivity.value);
CalcrateBaseScore();
}
// 
function NASet(){
NA = parseFloat(document.BaseMetrics.Availability.value);
CalcrateBaseScore();
}
// 
function NLSet(){
NL = parseFloat(document.BaseMetrics.Legality.value);
CalcrateBaseScore();
}
// 
function AVSet(){
AV = parseFloat(document.BaseMetrics.AccessVector.value);
CalcrateBaseScore();
}
// 
function ACSet(){
AC = parseFloat(document.BaseMetrics.AccessComplexity.value);
CalcrateBaseScore();
}
// 
function AuSet(){
Au = parseFloat(document.BaseMetrics.Authentication.value);
CalcrateBaseScore();
}
//
function UCSet(){
UC = parseFloat(document.BaseMetrics.UsingComplexity.value);
CalcrateBaseScore();
}
// 
function CSet(){
C = parseFloat(document.BaseMetrics.ConfidentialityImpact.value);
CalcrateBaseScore();
}
// 
function ISet(){
I = parseFloat(document.BaseMetrics.IntegrityImpact.value);
CalcrateBaseScore();
}
// 
function ASet(){
A = parseFloat(document.BaseMetrics.AvailabilityImpact.value);
CalcrateBaseScore();
}
var E;
var RL;
var RC;
var TemporalScore;
function CalcrateTemporalScoreCore( baseScore)
{
return baseScore * E * RL * RC;
}
function CalcrateTemporalScore()
{
CalcrateBaseScore();
document.TemporalMetrics.Score.value = Math.round(CalcrateTemporalScoreCore(BaseScore) * 10) / 10;
document.TemporalMetrics.Reward.value = (document.TemporalMetrics.Score.value)*(document.TemporalMetrics.Score.value)*(RewardLimit/100);
if((document.TemporalMetrics.Reward.value!=0)&&(document.TemporalMetrics.Reward.value<RewardMin))
{
  document.TemporalMetrics.Reward.value = RewardMin;
}
}
function ESet() {
E = parseFloat(document.TemporalMetrics.Exploitability.value);
CalcrateTemporalScore();
}
function RLSet() {
RL = parseFloat(document.TemporalMetrics.RemediationLevel.value);
CalcrateTemporalScore();
}
function RCSet() {
RC = parseFloat(document.TemporalMetrics.ReportConfidence.value);
CalcrateTemporalScore();
}
var CD;
var TD;
var CR;
var IR;
var AR;
var EnvironmentalScore;
var AfterBaseScore;
var AfterTemporalScore;
function CalcrateEnvironmentalScore()
{
afterI = 10.41 * (1-(1-C*CR)*(1-I*IR)*(1-A*AR));
if (afterI > 10.0)
{
afterI = 10.0;
}
AfterBaseScore = CalcrateBaseScoreCore( afterI);
AfterTemporalScore = CalcrateTemporalScoreCore( AfterBaseScore);
EnvironmentalScore = (AfterTemporalScore + (10 - AfterTemporalScore)*CD)*TD;
document.EnvironmentalMetrics.Score.value = Math.round(EnvironmentalScore * 10) / 10;
document.EnvironmentalMetrics.Reward.value = (document.EnvironmentalMetrics.Score.value)*(document.EnvironmentalMetrics.Score.value)*(RewardLimit/100);
if((document.EnvironmentalMetrics.Reward.value!=0)&&(document.EnvironmentalMetrics.Reward.value<RewardMin))
{
  document.EnvironmentalMetrics.Reward.value = RewardMin;
}
}
function CDSet() {
CD = parseFloat(document.EnvironmentalMetrics.CollateralDamagePotential.value);
CalcrateEnvironmentalScore();
}
function TDSet() {
TD = parseFloat(document.EnvironmentalMetrics.TargetDistribution.value);
CalcrateEnvironmentalScore();
}
function CRSet() {
CR = parseFloat(document.EnvironmentalMetrics.ConfidentialityRequirement.value);
CalcrateEnvironmentalScore();
}
function IRSet() {
IR = parseFloat(document.EnvironmentalMetrics.IntegrityRequirement.value);
CalcrateEnvironmentalScore();
}
function ARSet() {
AR = parseFloat(document.EnvironmentalMetrics.AvailabilityRequirement.value);
CalcrateEnvironmentalScore();
}
function VulnSet() {
if( document.Examples.Vulns.value == 1) {
document.BaseMetrics.Productivity.value = 1.0;
NPSet();
}
}
</script>
</body>
