今天小编就为大家分享一篇关于分析攻击IP来源地并画出饼图的文章,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

分布式拒绝服务(DDoS)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。通常,攻击者使用一个偷窃帐号将DDoS主控程序安装在一个计算机上,在一个设定的时间主控程序将与大量代理程序通讯,代理程序已经被安装在网络上的许多计算机上。代理程序收到指令时就发动攻击。利用客户/服务器技术,主控程序能在几秒钟内激活成百上千次代理程序的运行。

此文中的API将列为国家,非本人立场,属于中国,岛生活的人不一定!
上码:

#!/usr/bin/python
#coding=utf-8
'''
http://ip-api.com/json/ip
'''import plotly 
import plotly.plotly 
import plotly.graph_objs as abcc 
import plotly.plotly 

class Piecharts: 
  def __init__(self): 
    print "饼图生成中" 

  def makePiecharts(self,labels,values,filename): 
    trace = abcc.Pie(labels = labels,values= values) 
    plotly.offline.plot([trace],filename=filename) 

import requests
import sys

try:
  iplist = sys.argv[1]
except:
  print "IP list not given or some other error!"
countrylist = {}
regionlist = {}
citylist = {}

with open(iplist) as f:
  for ip in f.readlines():
    if ip.strip() != '':
      url = 'http://ip-api.com/json/' + ip.strip()
      try:
        result = requests.get(url)
        jsontext = result.json()
      except:
        print "Error: Data not retrieved!"
        continue
      status = jsontext['status']
      if status == 'fail':
        print "%s failed!" % ip.strip()
        continue
      mline = jsontext['as']
      city = jsontext['city']
      country = jsontext['country']
      countryCode = jsontext['countryCode']
      isp = jsontext['isp']
      lat = jsontext['lat']
      lon = jsontext['lon']
      org = jsontext['org']
      query = jsontext['query']
      region = jsontext['region']
      regionName = jsontext['regionName']
      timezone = jsontext['timezone']
      zipcode = jsontext['zip']

      if not country in countrylist:
        countrylist[country] = 0
      else:
        countrylist[country] += 1

      if not regionName in regionlist:
        regionlist[regionName] = 0
      else:
        regionlist[regionName] += 1

      if not city in citylist:
        citylist[city] = 0
      else:
        citylist[city] += 1
      try:
        print ip.strip() + '--' + country + '--' + regionName
      except:
        print "Special character!"
  print countrylist

  #country
  labels = [i for i in countrylist] 
  value = [countrylist[i] for i in countrylist] 
  drive = Piecharts() 
  drive.makePiecharts(labels,value,"country.html") 

  #region
  labels = [i for i in regionlist] 
  value = [regionlist[i] for i in regionlist] 
  drive = Piecharts() 
  drive.makePiecharts(labels,value,"region.html") 

  #city
  labels = [i for i in citylist] 
  value = [citylist[i] for i in citylist] 
  drive = Piecharts() 
  drive.makePiecharts(labels,value,"city.html") 

gevent协程并发版

#!/usr/bin/python
# coding=utf-8
'''
http://ip-api.com/json/ip
'''
import plotly
import plotly.graph_objs as abcc
import plotly.plotly

class Piecharts:
  def __init__(self):
    print u'饼图生成中'

  def makePiecharts(self, labels, values, filename):
    trace = abcc.Pie(labels=labels, values=values)
    plotly.offline.plot([trace], filename=filename)

import requests
import sys

try:
  iplist = sys.argv[1]
except:
  print "IP list not given or some other error!"
countrylist = {}
regionlist = {}
citylist = {}

def locater(url):
  try:
    result = requests.get(url)
    jsontext = result.json()
  except:
    print "Error: Data not retrieved!"
    return
  status = jsontext['status']
  if status == 'fail':
    print "%s failed!" % ip.strip()
    return
  mline = jsontext['as']
  city = jsontext['city']
  country = jsontext['country']
  countryCode = jsontext['countryCode']
  isp = jsontext['isp']
  lat = jsontext['lat']
  lon = jsontext['lon']
  org = jsontext['org']
  query = jsontext['query']
  region = jsontext['region']
  regionName = jsontext['regionName']
  timezone = jsontext['timezone']
  zipcode = jsontext['zip']

  if not country in countrylist:
    countrylist[country] = 0
  else:
    countrylist[country] += 1

  if not regionName in regionlist:
    regionlist[regionName] = 0
  else:
    regionlist[regionName] += 1

  if not city in citylist:
    citylist[city] = 0
  else:
    citylist[city] += 1
  try:
    print ip.strip() + '--' + country + '--' + regionName
  except:
    print "Special character!"

from gevent import monkey
monkey.patch_socket()
from gevent import pool
import gevent

pool = pool.Pool(40)
glist = []
with open(iplist) as f:
  for ip in f.readlines():
    if ip.strip() != '':
      url = 'http://ip-api.com/json/' + ip.strip()
      glist.append(pool.spawn(locater, url))
  gevent.joinall(glist)

  # country
  labels = [i for i in countrylist]
  value = [countrylist[i] for i in countrylist]
  drive = Piecharts()
  drive.makePiecharts(labels, value, "country.html")

  # region
  labels = [i for i in regionlist]
  value = [regionlist[i] for i in regionlist]
  drive = Piecharts()
  drive.makePiecharts(labels, value, "region.html")

  # city
  labels = [i for i in citylist]
  value = [citylist[i] for i in citylist]
  drive = Piecharts()
  drive.makePiecharts(labels, value, "city.html")

饼图效果:

在对网络攻击进行上述分析与识别的基础上,我们应当认真制定有针对性的策略。明确安全对象,设置强的安全保障体系。有的放矢,在网络中层层设防,发挥网络的每层作用,使每一层都成为一道关卡,从而让攻击者无隙可钻、无计可使。还必须做到未雨稠缪,预防为主 ,将重要的数据备份并时刻注意系统运行状况。以下是针对众多令人担心的网络安全问题,提出的几点建议:

1、提高安全意识

(1)不要随意打开来历不明的电子邮件及文件,不要随便运行不太了解的人给你的程序,比如“特洛伊”类黑客程序就需要骗你运行。
  (2)尽量避免从Internet下载不知名的软件、游戏程序。即使从知名的网站下载的软件也要及时用最新的病毒和木马查杀软件对软件和系统进行扫描。
  (3)密码设置尽可能使用字母数字混排,单纯的英文或者数字很容易穷举。将常用的密码设置不同,防止被人查出一个,连带到重要密码。重要密码最好经常更换。
  (4)及时下载安装系统补丁程序。
  (5)不随便运行黑客程序,不少这类程序运行时会发出你的个人信息。
  (6)在支持HTML的BBS上,如发现提告,先看源代码,很可能是骗取密码的陷阱。

2、使用防毒、防黑等防火墙软件。

防火墙是一个用以阻止网络中的黑客访问某个机构网络的屏障,也可称之为控制进/出两个方向通信的门槛。在网络边界上通过建立起来的相应网络通信监控系统来隔离内部和外部网络,以阻档外部网络的侵入。

3、设置代理服务器,隐藏自已的IP地址。

保护自己的IP地址是很重要的。事实上,即便你的机器上被安装了木马程序,若没有你的IP地址,攻击者也是没有办法的,而保护IP地址的最好方法就是设置代理服务器。代理服务器能起到外部网络申请访问内部网络的中间转接作用,其功能类似于一个数据转发器,它主要控制哪些用户能访问哪些服务类型。当外部网络向内部网络申请某种网络服务时,代理服务器接受申请,然后它根据其服务类型、服务内容、被服务的对象、服务者申请的时间、申请者的域名范围等来决定是否接受此项服务,如果接受,它就向内部网络转发这项请求。

4、将防毒、防黑当成日常例性工作,定时更新防毒组件,将防毒软件保持在常驻状态,以彻底防毒。

5、由于黑客经常会针对特定的日期发动攻击,计算机用户在此期间应特别提高警戒。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对爱安网的支持。如果你想了解更多相关内容请查看下面相关链接

最新资讯
探访FF美国:贾跃亭没忘记乐视债务 也不愿放弃造车梦

探访FF美国:贾跃亭没

经历2018年与恒大的分分合合之后,贾跃亭的FF再一次站到
直击|咪蒙公众号自主注销 此前微博已永久关停

直击|咪蒙公众号自主

新浪科技发现“咪蒙”公众号已经注销,显示“该账号已自
Netflix购买《流浪地球》版权:播出时间未定

Netflix购买《流浪地

美国流媒体视频巨头Netflix刚刚购买了号称中国首部主
直击|小米发布触屏智能音箱 搭载地平线语音方案

直击|小米发布触屏智

小米小爱触屏音箱是小米的首款带屏智能音箱,在发布会On
新游戏许审批继续收紧:申请仍可提交 但获批唯有等待

新游戏许审批继续收紧

消息称主管部门在本周下发通知,将暂停新游戏许可申请,材
Twitter开放对话界面改版测试:新界面更专注于交流

Twitter开放对话界面

很多用户都认为该公司的推文交流方式太难以跟踪,显得杂
最新文章
分析攻击IP来源地与防御IP攻击的应对策略

分析攻击IP来源地与防

今天小编就为大家分享一篇关于分析攻击IP来源地并画出
文本数据的机器学习自动分类方法(下)

文本数据的机器学习自

本文为第二部分,着重介绍特征向量权重的影响因素以及样
文本数据的机器学习自动分类方法(上)

文本数据的机器学习自

本文为第一部分,着重介绍文本预处理以及特征抽取的方
Chrome插件简单制作步骤 有一定的html和js知识即可上手

Chrome插件简单制作步

本篇文章介绍了如何从零开始制作一个Chrome浏览器的插
java asp分析各种搜索引擎的关键字,自动识别url 中关键字的编码

java asp分析各种搜索

网上也有一些代码,大部分都是通过输入的关键字来识别编
获取键盘键的值 集合 方便监控键盘事件

获取键盘键的值 集合

整理的比较全的键盘值的集合,以后大家在开发过程中,可以