【强悍】d3.js让ssh暴破次数可视化

安全 数据安全 移动开发
可能大家看的黑客电影比较多,对于数据的显示感觉特别炫酷。但是,看久了你也许就不会那么新鲜了,那么现在我们就来看看如何让数据可视化吧,本文作者通过d3.js来实现。

本博文出自51CTO博客老徐_kevin博主,有任何问题请进入博主页面互动讨论!

博文地址:http://laoxu.blog.51cto.com/4120547/1618400


一台做手机app应用的服务器在某云上,很好奇如果没有修改ssh端口的情况下,每天会被暴力破解多少次呢?带着这个疑问,查看一下/var/log/messages的日志,grep一下里面多少含有"Failed"的日志记录。。。

由于messages日志会有logrotate,所以:

  1. grep "^Mar  1"  /var/log/messages* | grep "Failed" | wc -l 

分别得到从本月1号到7号的暴力破解次数,分别是:

  1. 2015-03-07,4126   
  2. 2015-03-06,33499   
  3. 2015-03-05,80096   
  4. 2015-03-04,70208   
  5. 2015-03-03,79273   
  6. 2015-03-02,40995   
  7. 2015-03-01,11845 

除了7号比较安静点,平均每天5、6万次,看来黑客每天都很忙碌。。。

虽然数据比较少,但是看起来比较枯燥,看不出趋势,让数据可视化,那就用d3.js吧,上代码。。。

wKioL1T8LNrx9-bJAACnSpOrbWs179.jpg

d3的库文件直接从github上获得即可。

index.html

  1. <!DOCTYPE html>   
  2. <html lang="en">   
  3.     <head>   
  4.         <meta charset="utf-8">   
  5.         <link rel="stylesheet" href="css/style.css" media="screen" type="text/css" />   
  6.         <title>SSH爆破次数</title>   
  7.     </head>   
  8.     <body>   
  9.         <center><div id="container"></div></center>   
  10.         <script type="text/javascript" src="js/d3.v3.js"></script>   
  11.         <script type="text/javascript" src="js/index.js"></script>   
  12.     </body>   
  13. </html> 

style.css 

  1. #container {   
  2. background:#eee;    //容器的背景色   
  3. width:600px;   
  4. height:270px;   
  5. }   
  6.     
  7. body { font12px Arial;}   
  8.     
  9. path {   
  10.     stroke: mediumturquoise;  //曲线的颜色,可以在chrome的控制台里使用stroke TAB后调试   
  11.     stroke-width2;   
  12.     fill: none;   
  13. }   
  14.     
  15. .axis path,   
  16. .axis line {   
  17.     fill: none;   
  18.     stroke: gray;   
  19.     stroke-width1;   
  20.     shape-rendering: crispEdges;   

data.csv 

  1. date,close   
  2. 2015-03-07,4126   
  3. 2015-03-06,33499   
  4. 2015-03-05,80096   
  5. 2015-03-04,70208   
  6. 2015-03-03,79273   
  7. 2015-03-02,40995   
  8. 2015-03-01,11845 

index.js

  1. var margin = {top: 30, right: 30, bottom: 50, left: 80},   
  2.     width = 600 - margin.left - margin.right,   
  3.     height = 270 - margin.top - margin.bottom;   
  4.     
  5. var parseDate = d3.time.format("%Y-%m-%d").parse;   
  6.     
  7. var x = d3.time.scale().range([0, width]);   
  8.     
  9. var y = d3.scale.linear().range([height, 0]);   
  10.     
  11. var xAxis = d3.svg.axis().scale(x)   
  12.     .orient("bottom").ticks(7)            
  13.     .tickFormat(d3.time.format("%b/%d"));   
  14.     
  15. var yAxis = d3.svg.axis().scale(y)   
  16.     .orient("left").ticks(10);   
  17.     
  18. var valueline = d3.svg.line()   
  19.     .x(function(d) { return x(d.date); })   
  20.     .y(function(d) { return y(d.close); })   
  21.     .interpolate("basis");   
  22.     
  23.     
  24. var svg = d3.select("#container")   
  25. .append("svg")   
  26. .attr("width", width + margin.left + margin.right)   
  27. .attr("height", height + margin.top + margin.bottom)   
  28. .append("g")   
  29. .attr("transform","translate(" + margin.left +"," + margin.top + ")");   
  30.     
  31.     
  32. // Get the data   
  33. d3.csv("data/data.csv"function(error, data) {   
  34.      data.forEach(function(d) {   
  35.      d.date = parseDate(d.date);   
  36.      d.close = +d.close;   
  37.                         });   
  38. // Scale the range of the data   
  39. x.domain(d3.extent(data, function(d) { return d.date; }));   
  40. y.domain([0, d3.max(data, function(d) { return d.close; })]);   
  41. svg.append("path")       // Add the valueline path.   
  42.    .attr("class""line")   
  43.    .attr("d", valueline(data));   
  44.     
  45. svg.append("g")          // Add the X Axis   
  46.    .attr("class""x axis")   
  47.    .attr("transform""translate(0," + height + ")")   
  48.    .call(xAxis);   
  49.     
  50. svg.append("text")                // text label for the x axis   
  51.    .attr("x", 265 )   
  52.    .attr("y", 238 )   
  53.    .style("text-anchor""middle")   
  54.    .text("日期");   
  55.     
  56. svg.append("g")          // Add the Y Axis   
  57.    .attr("class""y axis")   
  58.    .call(yAxis);   
  59.     
  60. svg.append("text")   
  61.    .attr("transform""rotate(-90)")   
  62.    .attr("y",0 - margin.left)   
  63.    .attr("x",0 - (height / 2))   
  64.    .attr("dy""1em")   
  65.    .style("text-anchor""middle")   
  66.    .text("SSH爆破次数");   
  67.                          }); 

以上就是一个页面的代码。访问页面看看d3.js的数据可视化效果吧。。。

wKiom1T8MnWQ1wzxAAEhIKdYZAs344.jpg

效果如何?d3还是不错的吧?还有很多更cool的效果。。。Keep trying。。

责任编辑:林师授 来源: 51CTO
相关推荐

2012-11-13 10:52:15

大数据3D可视化

2021-11-27 10:42:01

Three.js3D可视化AudioContex

2015-08-13 13:48:50

数据中心

2015-11-11 11:10:40

数据可视化开源工具

2014-06-30 09:24:48

数据可视化

2020-03-11 14:39:26

数据可视化地图可视化地理信息

2013-05-09 14:53:44

AdTime大数据企业

2021-03-08 09:25:48

神经网络数据图形

2017-03-03 09:10:09

2022-08-26 09:15:58

Python可视化plotly

2009-04-21 14:26:41

可视化监控IT管理摩卡

2017-10-14 13:54:26

数据可视化数据信息可视化

2023-08-18 06:59:58

2013-12-11 16:55:23

3DDCIM解决方案

2015-11-17 10:54:43

大数据快递可视化

2015-08-20 10:06:36

可视化

2021-06-21 09:37:05

代码开源可视化

2021-04-21 12:04:47

JS引擎流程

2015-07-13 11:33:05

Qlik数据可视化

2024-01-11 18:55:37

3D可视化AI
点赞
收藏

51CTO技术栈公众号