分析攻擊IP來源地並畫出餅圖
此文中的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")
餅圖效果:
相關文章
- Linux“IP偽裝”法來抵住駭客攻擊Linux
- 學習心得 TCP/IP攻擊原理分析總結TCP
- 刨根挖底:TCP/IP攻擊原理分析總結(轉)TCP
- pandas讀取csv檔案資料並使用matplotlib畫折線圖和餅圖
- 加密你的資料並使其免受攻擊者的攻擊加密
- TCP/IP協議的SYN攻擊TCP協議
- 衝擊IPO,羅胖畫了一張終身教育大餅
- DDoS攻擊工具HOIC分析
- 來了解並防範一下CSRF攻擊提高網站安全網站
- Linux netstat +awk 看攻擊IPLinux
- CSRF 攻擊深入淺出
- 隱秘的攻擊形式:無檔案攻擊型別分析型別
- 網路攻擊中常見掩蓋真實IP的攻擊方式及虛假IP地址追蹤溯源方法
- Hundred Finance 攻擊事件分析NaN事件
- TARA攻擊樹分析方法論
- Web攻擊日誌分析的過去現在與未來Web
- SQL隱碼攻擊導圖SQL
- Android 折線圖之hellocharts (餅狀圖)餅圖Android
- 用kotlin來實現一個餅圖Kotlin
- WMI 的攻擊,防禦與取證分析技術之攻擊篇
- 【漏洞分析】ReflectionToken BEVO代幣攻擊事件分析事件
- 住宅代理IP在網路攻擊中的作用
- PHP獲取IP地址的方法,防止偽造IP地址注入攻擊PHP
- Aseprite+Cocos:打包畫素畫圖,匯入到cocos裡並動起來
- SQL隱碼攻擊關聯分析SQL
- DarkHotel定向攻擊樣本分析
- Hacking Team攻擊程式碼分析
- APT34攻擊全本分析APT
- 基於TCP反射DDoS攻擊分析TCP反射
- 黑色產業鏈分析丨DDOS攻擊產業
- Akamai:65.1%的Web應用程式攻擊來自SQL隱碼攻擊AIWebSQL
- 殺手洗車房:黑客能困住並攻擊汽車黑客
- Nmap並不是只能用於攻擊伺服器伺服器
- 怎麼用matplotlib畫出漂亮的分析圖表
- 怎麼識別IP偽裝的網路攻擊
- 駭客技術介紹之利用ip序列攻擊(轉)
- 三星Android OS加密漏洞分析:IV重用攻擊與降級攻擊Android加密
- DHCP:IP 並非與生俱來