今天小编就为大家分享一篇关于分析攻击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、由于黑客经常会针对特定的日期发动攻击,计算机用户在此期间应特别提高警戒。

总结

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

最新资讯
美团点评股价重回发行价:临近上市1周年 市值超4000亿港元

美团点评股价重回发行

在美团点评将迎来上市一周年,及明日要公布半年报之际,美
消息称大众汽车CEO对收购特斯拉股份感兴趣

消息称大众汽车CEO对

路透社今日援引德国《经理人》杂志的报道称,大众汽车CE
蔚来9月底前裁员1200人 造车新势力如何过冬?

蔚来9月底前裁员1200

8月22日,蔚来汽车创始人李斌对全体员工下发内部信,称9月
任正非批系统部没做好不放权 称四个代表处请示太多

任正非批系统部没做好

近日,华为创始人任正非在运营商BG组织变革研讨会上表示
中兴:“130亿定增募资方案”过审 将强化5G芯片研发

中兴:“130亿定增募资

今晚,中兴通讯发布公告,关于非公开发行A股股票申请获得
vivo首款5G手机发布 称已申请超2000项5G专利

vivo首款5G手机发布

vivo今日发布了其首款5G手机IQOO Pro,售价3798元起。IQ
最新文章
HTML5 WebSocket技术使用详解

HTML5 WebSocket技术

本文为大家详细介绍了WebSocket技术使用方法,WebSocke
详解XSS 和 CSRF简述及预防措施

详解XSS 和 CSRF简述

这篇文章主要介绍了XSS 和 CSRF简述及预防措施,小编觉
详解WEB攻击之CSRF攻击与防护

详解WEB攻击之CSRF攻

这篇文章主要介绍了详解WEB攻击之CSRF攻击与防护,小编
分析攻击IP来源地与防御IP攻击的应对策略

分析攻击IP来源地与防

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

文本数据的机器学习自

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

文本数据的机器学习自

本文为第一部分,着重介绍文本预处理以及特征抽取的方