From c9b16f494a71532bbd78e391d82e9945f84a69a9 Mon Sep 17 00:00:00 2001 From: root <root@orion.zcu.cz> Date: Mon, 9 Jul 2012 16:19:24 +0200 Subject: [PATCH] pridelani totalScale a tak ruzne --- ...graph_HostnameServiceTypeActivityScale.php | 70 +++++++++++++++++++ ..._HostnameServiceTypeActivityScale_html.php | 57 +++++++++++++++ ...graph_HostnameServiceTypeActivity_html.php | 2 +- .../wardenweb/graph_TopTargetports.php | 7 +- .../wardenweb/graph_TypeActivityScale.php | 65 +++++++++++++++++ .../graph_TypeActivityScale_html.php | 53 ++++++++++++++ .../wardenweb/graph_TypeActivity_html.php | 2 +- .../show_HostnameServiceTypeActivity.php | 2 +- src/warden-server/contrib/wardenweb/stats.php | 11 +++ .../wardenweb/table_HostnameServiceType.html | 6 +- .../wardenweb/table_HostnameServiceType.php | 2 +- .../contrib/wardenweb/table_TopSources.html | 6 +- .../contrib/wardenweb/table_TopSources.php | 2 +- .../wardenweb/table_TopTargetports.html | 6 +- .../wardenweb/table_TopTargetports.php | 2 +- 15 files changed, 278 insertions(+), 15 deletions(-) create mode 100644 src/warden-server/contrib/wardenweb/graph_HostnameServiceTypeActivityScale.php create mode 100644 src/warden-server/contrib/wardenweb/graph_HostnameServiceTypeActivityScale_html.php create mode 100644 src/warden-server/contrib/wardenweb/graph_TypeActivityScale.php create mode 100644 src/warden-server/contrib/wardenweb/graph_TypeActivityScale_html.php 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 0000000..b89d6e2 --- /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 0000000..ed4c686 --- /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 a16d0e2..ef24b8d 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 9833ba8..dd46337 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 0000000..c189c0f --- /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 0000000..7b32c0f --- /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 b2461a1..018fe97 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 2105580..18c12cb 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 58e27df..210f9bf 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 6e2e1f5..046876f 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 3df0cb0..c817447 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 4c65de2..019764a 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 6aa702e..ddf89db 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 c8c47c4..932241a 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 ce7d694..4de3b74 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");} -- GitLab