diff --git a/src/warden-server/contrib/wardenweb/graph_HostnameServiceTypeActivityScale.php b/src/warden-server/contrib/wardenweb/graph_HostnameServiceTypeActivityScale.php new file mode 100644 index 0000000000000000000000000000000000000000..b89d6e2badd02e25473f091762fe126a271300f5 --- /dev/null +++ b/src/warden-server/contrib/wardenweb/graph_HostnameServiceTypeActivityScale.php @@ -0,0 +1,70 @@ +<? +include("db.php"); + + +if(!isset($_GET['per'])){$_GET['per']="hour";} +switch( $_GET['per']) { + case "hour": + $agg = 1; + break; + case "day": + $agg = 24; + break; + case "month": + $agg = 24*30; // -30.5 ? + break; +} + +#sqli todo +#selector +if(!IsSet($_GET['where'])) { + $where="detected>from_unixtime(0)"; +} else { + $where = base64_decode($_GET['where']); +} + +$query_cols = "hostname,service,type"; + + + + + +#seznam sloupcu ve vysledku, todo dyn +$cols=array(); +$q = "SELECT concat_ws('-',$query_cols) as col FROM events WHERE $where GROUP BY $query_cols"; +#var_dump($q); +$res = mysql_query($q, $db); +for($i=0; $i<mysql_num_rows($res); $i++) { + $tmp = mysql_fetch_assoc($res); +# var_dump($tmp); + $cols[ $tmp["col"] ]=$i; +} +#var_dump($cols); +#print array_keys($cols); +$count_cols=count($cols); + + + + + +#select data +$data=array(); +#casova posloupnost +# premapuju podle staticky alokovanych sloupcu, posilam to rovnou do grafu +$q = "SELECT unix_timestamp(detected)-(unix_timestamp(detected)%(3600*$agg)) as t, concat_ws('-',$query_cols) as col, sum(attack_scale) as totalScale FROM events WHERE $where GROUP BY $query_cols, t;"; +#var_dump($q); +$res = mysql_query($q, $db); +while ($tmp = mysql_fetch_assoc($res)) { + #var_dump($tmp); + $d=array_fill(0, $count_cols, 0); + $d[ $cols[ $tmp["col"] ] ] = (int)$tmp["totalScale"]; + array_unshift($d, (int)$tmp["t"]); + array_push($data, $d); +} + + +#print json_encode($d); +print json_encode(array("cols"=>array_keys($cols), "data"=>$data)); + +?> + diff --git a/src/warden-server/contrib/wardenweb/graph_HostnameServiceTypeActivityScale_html.php b/src/warden-server/contrib/wardenweb/graph_HostnameServiceTypeActivityScale_html.php new file mode 100644 index 0000000000000000000000000000000000000000..ed4c6864e54f24379c40bdcf3ea1e791ec44743d --- /dev/null +++ b/src/warden-server/contrib/wardenweb/graph_HostnameServiceTypeActivityScale_html.php @@ -0,0 +1,57 @@ +<? if(!isset($_GET['per'])){$_GET['per']="day";} ?> +<html> + <head> + <script type="text/javascript" language="javascript" src="datatables/media/js/jquery.js"></script> + <script type="text/javascript" src="https://www.google.com/jsapi"></script> + <script type="text/javascript"> + google.load("visualization", "1", {packages:["corechart"]}); + google.setOnLoadCallback(fetchData); + + function fetchData() { + <? #TODO: fuj + if(!isSet($_GET['where'])) { ?> + $.getJSON('graph_HostnameServiceTypeActivity.php?per=<? print $_GET['per'];?>', drawChart); + <? } else { ?> + $.getJSON('graph_HostnameServiceTypeActivity.php?per=<? print $_GET['per'];?>&where=<?print $_GET['where'];?>', drawChart); + <? } ?> + } + + function drawChart(sdata) { + //console.log(sdata); + var data = new google.visualization.DataTable(); + data.addColumn('datetime', 'Date'); + //console.log(sdata.cols); + for (var i = 0; i < sdata.cols.length; i++) { + data.addColumn('number', sdata.cols[i]); + } + + sdatalen=sdata.data.length; + if(sdatalen > 1000) { + alert("Too many rows:"+sdatalen); + sdatalen=1000; + } + + for (var i = 0; i < sdatalen; i++) { + //for (var i = 0; i < 10; i++) { + sdata.data[i][0] = new Date(sdata.data[i][0]*1000); + //console.log(sdata.data[i]); + data.addRow(sdata.data[i]); + } + var options = { + vAxis: { logScale: true, title: "totalScale" }, + interpolateNulls: true, + ___colors:['#008000','#ff0000','#FFA500','#FA8072','#AFEEEE','#00A5C6','#DEBDDE','#000000'], + chartArea: {'width': '80%', 'height': '90%'}, + pointSize: 5 + }; + + var chart = new google.visualization.LineChart(document.getElementById('chart_div')); + chart.draw(data, options); + } + </script> + </head> + <body> + <div id="chart_div" style="width: 100%; height: 95%;"></div> + </body> +</html> + diff --git a/src/warden-server/contrib/wardenweb/graph_HostnameServiceTypeActivity_html.php b/src/warden-server/contrib/wardenweb/graph_HostnameServiceTypeActivity_html.php index a16d0e2db416d53b8696340b37bba4528966dbf0..ef24b8da29adb31391461d03d081869f5fa2994d 100644 --- a/src/warden-server/contrib/wardenweb/graph_HostnameServiceTypeActivity_html.php +++ b/src/warden-server/contrib/wardenweb/graph_HostnameServiceTypeActivity_html.php @@ -38,7 +38,7 @@ data.addRow(sdata.data[i]); } var options = { - vAxis: { logScale: true }, + vAxis: { logScale: true, title: "events" }, interpolateNulls: true, ___colors:['#008000','#ff0000','#FFA500','#FA8072','#AFEEEE','#00A5C6','#DEBDDE','#000000'], chartArea: {'width': '80%', 'height': '90%'}, diff --git a/src/warden-server/contrib/wardenweb/graph_TopTargetports.php b/src/warden-server/contrib/wardenweb/graph_TopTargetports.php index 9833ba84b5c3f082d5e890179d0611285d3ea286..dd46337947084a8a095276901c8f4739c79d6b01 100644 --- a/src/warden-server/contrib/wardenweb/graph_TopTargetports.php +++ b/src/warden-server/contrib/wardenweb/graph_TopTargetports.php @@ -9,19 +9,20 @@ include("db.php"); $cols=array(); $i=0; $cols["target_port"]=$i++; -$cols["count"]=$i++; +$cols["totalScale"]=$i++; $count_cols=count($cols); #select data $data=array(); -$q = "select target_port, count(*) as count from events where detected > from_unixtime(unix_timestamp(now())-3600*24*30) group by target_port order by count desc limit 300;"; +#$q = "select target_port, count(*) as count from events where detected > from_unixtime(unix_timestamp(now())-3600*24*30) group by target_port order by count desc limit 300;"; +$q = "select target_port, sum(attack_scale) as totalScale from events where detected > from_unixtime(unix_timestamp(now())-3600*24*30) group by target_port order by totalScale desc limit 300;"; #var_dump($q); $res = mysql_query($q, $db); while ($tmp = mysql_fetch_assoc($res)) { #var_dump($tmp); - array_push($data, array((int)$tmp['target_port'],(int)$tmp['count'])); + array_push($data, array((int)$tmp['target_port'],(int)$tmp['totalScale'])); } diff --git a/src/warden-server/contrib/wardenweb/graph_TypeActivityScale.php b/src/warden-server/contrib/wardenweb/graph_TypeActivityScale.php new file mode 100644 index 0000000000000000000000000000000000000000..c189c0f1c9c2701941a839cfe346ce6c080943fa --- /dev/null +++ b/src/warden-server/contrib/wardenweb/graph_TypeActivityScale.php @@ -0,0 +1,65 @@ +<? +include("db.php"); + + +if(!isset($_GET['per'])){$_GET['per']="hour";} +switch( $_GET['per']) { + case "hour": + $agg = 1; + break; + case "day": + $agg = 24; + break; + case "month": + $agg = 24*30; // -30.5 ? + break; +} + +#sqli todo +#selector +$where="detected>from_unixtime(0)"; +$query_cols = "type"; + + + + + +#seznam sloupcu ve vysledku, todo dyn +$cols=array(); +$q = "SELECT concat_ws('-',$query_cols) as col FROM events WHERE $where GROUP BY $query_cols"; +#var_dump($q); +$res = mysql_query($q, $db); +for($i=0; $i<mysql_num_rows($res); $i++) { + $tmp = mysql_fetch_assoc($res); +# var_dump($tmp); + $cols[ $tmp["col"] ]=$i; +} +#var_dump($cols); +#print array_keys($cols); +$count_cols=count($cols); + + + + + +#select data +$data=array(); +#casova posloupnost +# premapuju podle staticky alokovanych sloupcu, posilam to rovnou do grafu +$q = "SELECT unix_timestamp(detected)-(unix_timestamp(detected)%(3600*$agg)) as t, concat_ws('-',$query_cols) as col, sum(attack_scale) as totalScale FROM events WHERE $where GROUP BY $query_cols, t;"; +#var_dump($q); +$res = mysql_query($q, $db); +while ($tmp = mysql_fetch_assoc($res)) { + #var_dump($tmp); + $d=array_fill(0, $count_cols, 0); + $d[ $cols[ $tmp["col"] ] ] = (int)$tmp["totalScale"]; + array_unshift($d, (int)$tmp["t"]); + array_push($data, $d); +} + + +#print json_encode($d); +print json_encode(array("cols"=>array_keys($cols), "data"=>$data)); + +?> + diff --git a/src/warden-server/contrib/wardenweb/graph_TypeActivityScale_html.php b/src/warden-server/contrib/wardenweb/graph_TypeActivityScale_html.php new file mode 100644 index 0000000000000000000000000000000000000000..7b32c0f72e313cdfe56f90e7fad6421df7f9f105 --- /dev/null +++ b/src/warden-server/contrib/wardenweb/graph_TypeActivityScale_html.php @@ -0,0 +1,53 @@ +<? if(!isset($_GET['per'])){$_GET['per']="day";} ?> +<html> + <head> + <script type="text/javascript" language="javascript" src="datatables/media/js/jquery.js"></script> + <script type="text/javascript" src="https://www.google.com/jsapi"></script> + <script type="text/javascript"> + google.load("visualization", "1", {packages:["corechart"]}); + google.setOnLoadCallback(fetchData); + + function fetchData() { + $.getJSON('graph_TypeActivityScale.php?per=<? print $_GET['per'];?>', drawChart); + } + + function drawChart(sdata) { + console.log(sdata); + var data = new google.visualization.DataTable(); + data.addColumn('datetime', 'Date'); + console.log(sdata.cols); + for (var i = 0; i < sdata.cols.length; i++) { + data.addColumn('number', sdata.cols[i]); + } + + sdatalen=sdata.data.length; + if(sdatalen > 1000) { + alert("Too many rows:"+sdatalen); + sdatalen=1000; + } + + for (var i = 0; i < sdatalen; i++) { + //for (var i = 0; i < 10; i++) { + sdata.data[i][0] = new Date(sdata.data[i][0]*1000); + console.log(sdata.data[i]); + data.addRow(sdata.data[i]); + } + var options = { + vAxis: { logScale: true, title: "totalScale" }, + interpolateNulls: true, + ___colors:['#008000','#ff0000','#FFA500','#FA8072','#AFEEEE','#00A5C6','#DEBDDE','#000000'], + chartArea: {'width': '85%', 'height': '85%'}, + legend: {'position': 'top'}, + pointSize: 5 + }; + + var chart = new google.visualization.LineChart(document.getElementById('chart_div')); + chart.draw(data, options); + } + </script> + </head> + <body> + <div id="chart_div" style="width: 100%; height: 100%;"></div> + </body> +</html> + diff --git a/src/warden-server/contrib/wardenweb/graph_TypeActivity_html.php b/src/warden-server/contrib/wardenweb/graph_TypeActivity_html.php index b2461a1adffde42a2b756974175681ec5dec0268..018fe97e92b70b4b3b6bf6b5b8718d471e789c25 100644 --- a/src/warden-server/contrib/wardenweb/graph_TypeActivity_html.php +++ b/src/warden-server/contrib/wardenweb/graph_TypeActivity_html.php @@ -33,7 +33,7 @@ data.addRow(sdata.data[i]); } var options = { - vAxis: { logScale: true }, + vAxis: { logScale: true, title: "events" }, interpolateNulls: true, ___colors:['#008000','#ff0000','#FFA500','#FA8072','#AFEEEE','#00A5C6','#DEBDDE','#000000'], chartArea: {'width': '85%', 'height': '85%'}, diff --git a/src/warden-server/contrib/wardenweb/show_HostnameServiceTypeActivity.php b/src/warden-server/contrib/wardenweb/show_HostnameServiceTypeActivity.php index 21055807a29103057c8b71fb923dc0220200d9c1..18c12cb5a341f98865c6f00963f9839ea3104581 100644 --- a/src/warden-server/contrib/wardenweb/show_HostnameServiceTypeActivity.php +++ b/src/warden-server/contrib/wardenweb/show_HostnameServiceTypeActivity.php @@ -123,7 +123,7 @@ if( IsSet($_POST["btnSubmit"])) { <? if( IsSet($_POST["btnSubmit"]) and !empty($where)) { - print("<iframe src=\"graph_HostnameServiceTypeActivity_html.php?per=hour&where=".base64_encode($where)."\" style=\"width:100%; height:500\"></iframe>"); + print("<iframe src=\"graph_HostnameServiceTypeActivity_html.php?per=day&where=".base64_encode($where)."\" style=\"width:100%; height:500\"></iframe>"); } ?> diff --git a/src/warden-server/contrib/wardenweb/stats.php b/src/warden-server/contrib/wardenweb/stats.php index 58e27df2aa32ce30152f7e5cc4c08b045d2c8af9..210f9bf34f4912acf3da68a3feadf4458d26cbd0 100644 --- a/src/warden-server/contrib/wardenweb/stats.php +++ b/src/warden-server/contrib/wardenweb/stats.php @@ -44,6 +44,17 @@ if(isset($_GET['c'])) </tr> <tr> +<td width="50%"> +<iframe src="graph_TypeActivityScale_html.php" style="width:100%; height:400"></iframe> +</td> + +<td> +<iframe src="graph_HostnameServiceTypeActivityScale_html.php" style="width:100%; height:400"></iframe> +</td> + +</tr> +<tr> + <td colspan=2> <iframe src="table_HostnameServiceType.html" style="width:100%; height:600"></iframe> </td> diff --git a/src/warden-server/contrib/wardenweb/table_HostnameServiceType.html b/src/warden-server/contrib/wardenweb/table_HostnameServiceType.html index 6e2e1f5da64b9799222eb5293331227a8d17756e..046876f0c8161b9ea8f2035e91dd102975407f79 100644 --- a/src/warden-server/contrib/wardenweb/table_HostnameServiceType.html +++ b/src/warden-server/contrib/wardenweb/table_HostnameServiceType.html @@ -16,7 +16,8 @@ $(document).ready(function() { { "mDataProp": "hostname" }, { "mDataProp": "service" }, { "mDataProp": "type" }, - { "mDataProp": "count" }, + { "mDataProp": "events" }, + { "mDataProp": "totalScale" }, { "mDataProp": "lastdetected" }, { "mDataProp": "lastreceived" } ] @@ -32,7 +33,8 @@ $(document).ready(function() { <th>hostname</th> <th>service</th> <th>type</th> - <th>count</th> + <th>events</th> + <th>totalScale</th> <th>lastdetected</th> <th>lastreceived</th> </thead> diff --git a/src/warden-server/contrib/wardenweb/table_HostnameServiceType.php b/src/warden-server/contrib/wardenweb/table_HostnameServiceType.php index 3df0cb028dafd4dcaae588629f04168911de5391..c8174471afe9811c1d42466fce34a0c3a3f919b8 100644 --- a/src/warden-server/contrib/wardenweb/table_HostnameServiceType.php +++ b/src/warden-server/contrib/wardenweb/table_HostnameServiceType.php @@ -2,7 +2,7 @@ include("db.php"); -$q = "SELECT hostname,service,type,count(*) as count, max(detected) as lastdetected,max(received) as lastreceived FROM `events` group by hostname,service,type;"; +$q = "SELECT hostname,service,type,count(*) as events, sum(attack_scale) as totalScale, max(detected) as lastdetected,max(received) as lastreceived FROM `events` group by hostname,service,type;"; $res = mysql_query($q, $db); if (mysql_num_rows($res) == 0) { die("nodata");} diff --git a/src/warden-server/contrib/wardenweb/table_TopSources.html b/src/warden-server/contrib/wardenweb/table_TopSources.html index 4c65de2520e87c64312283baa2dff5e426dd9462..019764a1b271b2b3620e9c000c0d2b227d4cb0a1 100644 --- a/src/warden-server/contrib/wardenweb/table_TopSources.html +++ b/src/warden-server/contrib/wardenweb/table_TopSources.html @@ -14,7 +14,8 @@ $(document).ready(function() { "sAjaxSource": "table_TopSources.php", "aoColumns": [ { "mDataProp": "source" }, - { "mDataProp": "count" } + { "mDataProp": "events" }, + { "mDataProp": "totalScale" } ] } ); } ); @@ -26,7 +27,8 @@ $(document).ready(function() { <table cellpadding="0" cellspacing="0" border="0" class="display" id="example" width="100%"> <thead> <th>source</th> - <th>count</th> + <th>events</th> + <th>totalScale</th> </thead> </table> </body> diff --git a/src/warden-server/contrib/wardenweb/table_TopSources.php b/src/warden-server/contrib/wardenweb/table_TopSources.php index 6aa702e4c3ef998f6b8131202b9acf03d9f5fb5b..ddf89db81d30164c76810135d1df5c4f05519d0a 100644 --- a/src/warden-server/contrib/wardenweb/table_TopSources.php +++ b/src/warden-server/contrib/wardenweb/table_TopSources.php @@ -2,7 +2,7 @@ include("db.php"); -$q = "select source, count(*) as count from events where detected > from_unixtime(unix_timestamp(now())-3600*24*30) group by source order by count desc limit 100;"; +$q = "select source, count(*) as events, sum(attack_scale) as totalScale from events where detected > from_unixtime(unix_timestamp(now())-3600*24*30) group by source order by totalScale desc limit 100;"; $res = mysql_query($q, $db); if (mysql_num_rows($res) == 0) { die("nodata");} diff --git a/src/warden-server/contrib/wardenweb/table_TopTargetports.html b/src/warden-server/contrib/wardenweb/table_TopTargetports.html index c8c47c4efcb8c78327ccb201ab894c6e613b5084..932241a453855c8355acf0bf261a877ffbc5ed62 100644 --- a/src/warden-server/contrib/wardenweb/table_TopTargetports.html +++ b/src/warden-server/contrib/wardenweb/table_TopTargetports.html @@ -14,7 +14,8 @@ $(document).ready(function() { "sAjaxSource": "table_TopTargetports.php", "aoColumns": [ { "mDataProp": "target_port" }, - { "mDataProp": "count" } + { "mDataProp": "events" }, + { "mDataProp": "totalScale" } ] } ); } ); @@ -26,7 +27,8 @@ $(document).ready(function() { <table cellpadding="0" cellspacing="0" border="0" class="display" id="example" width="100%"> <thead> <th>target_port</th> - <th>count</th> + <th>events</th> + <th>totalScale</th> </thead> </table> </body> diff --git a/src/warden-server/contrib/wardenweb/table_TopTargetports.php b/src/warden-server/contrib/wardenweb/table_TopTargetports.php index ce7d6941f6f3d48974cbe8a3d4983a7f8ecf961a..4de3b745183b56047408415e46bdb45a9b40cd93 100644 --- a/src/warden-server/contrib/wardenweb/table_TopTargetports.php +++ b/src/warden-server/contrib/wardenweb/table_TopTargetports.php @@ -2,7 +2,7 @@ include("db.php"); -$q = "select target_port, count(*) as count from events where detected > from_unixtime(unix_timestamp(now())-3600*24*30) group by target_port order by count desc limit 300;"; +$q = "select target_port, count(*) as events, sum(attack_scale) as totalScale from events where detected > from_unixtime(unix_timestamp(now())-3600*24*30) group by target_port order by totalScale desc limit 300;"; $res = mysql_query($q, $db); if (mysql_num_rows($res) == 0) { die("nodata");}