成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

數據分析與可視化:誰是安全圈的吃雞第一人

安全 應用安全 數據分析
安全圈的黑闊大佬們,在不開掛的情況下,誰會是他們之中技術最好的呢?帶著這樣的疑問,作者試著從數據分析的角度來看看誰會是安全圈的吃雞第一人。

放假和小伙伴們打了幾把PUBG,大半年沒碰,居然也意外地躺著吃了次雞。吃雞這個游戲果然得4個認識的人打(dai)戰(dai)術(wo)才更有趣。

由于身邊搞安全的人比較多,之前也會和一些安全圈的大佬一起玩,經常會有些認識或不認識的黑闊大佬開著高科技帶著躺雞。當然筆者也曾羞恥地開過掛帶妹(紀念號被封的第193天)。

那么這些黑闊大佬們,在不開掛的情況下,誰會是他們之中技術NO.1呢?帶著這樣的疑問,試著從數據分析的角度來看看誰會是安全圈的吃雞人。

注:全文所指的“安全圈”是一個非常狹義的概念,在本文中僅覆蓋到小部分安全從業者玩家,所以標題有些夸大。如有其他錯誤也歡迎指出。

[[262493]]

一、數據收集

怎么才能知道哪些安全從業者在玩這個游戲,他們的ID又是什么呢?

在一些APP里可以查到玩家的戰績,其中比較有價值的是,還能看到每位玩家的好友列表。

那么可以有這么個思路,也就是一個廣度優先遍歷:

  • 確定一個初始的ID鏈表,并保證初始鏈表內都是安全圈內人士。
  • 遍歷初始鏈表內每一位玩家的所有好友。
  • 當鏈表內H的好友J,同時也是鏈表內另外兩位黑客的共同好友,那么認為J也是安全圈內人士,加入到鏈表尾處。
  • 向后迭代重復2、3。

1. 動手實現

發現走的是https,掛上證書以MITM的方式來監聽https流量:

Image

可以發現數據是以json格式傳遞的,寫個python腳本來自動完成獲取數據,單線程+限速(一方面不至于給別人家的api爬掛了另一方面也不至于觸發IDS、anti-CC等機制)。

腳本主要代碼是:

  1. def r_get(nickname,offset): 
  2.  
  3. #發送給api的request 
  4. ... 
  5.  
  6.     return json#返回一個json格式 
  7.  
  8. def get_friends(nickname): 
  9.  
  10.     offset  = 0  
  11.     res_js = r_get(nickname,str(offset)) 
  12.     temp_friends = res_js['result']['board'] 
  13.     if res_js['status'] == "ok": 
  14.         while len(res_js['result']['board']) == 30: 
  15.             offsetoffset = offset + 30 
  16.             res_js = r_get(nickname,str(offset)) 
  17.             temp_friendstemp_friends = temp_friends + res_js['result']['board'] 
  18.         print("   {0}   的好友人數    {1}".format(res_js['result']['user_rank']['nickname'], len(temp_friends) -1 )) 
  19.         friends = [] 
  20.         Wxname  = "" 
  21.         Wxsex = "" 
  22.         Wxavatar  = "" 
  23.         sql = "" 
  24.         for playerinfo in temp_friends: 
  25.             if playerinfo['nickname'] != res_js['result']['user_rank']['nickname']: 
  26.                 friends.append(playerinfo['nickname']) 
  27.             elif playerinfo.has_key('heybox_info') == True: 
  28.                 Wxname = playerinfo['heybox_info']['username'] 
  29.                 Wxsex = playerinfo['heybox_info']['sex'] 
  30.                 Wxavatar = playerinfo['heybox_info']['avartar'] 
  31.         friends_s = ','.join(friends)  
  32.  
  33.         sql = "INSERT INTO player (nickname,avatar,steamID,friends,Wxname,Wxsex,Wxavatar) \ 
  34.               VALUES ('{0}','{1}','{2}','{3}','{4}','{5}','{6}')".format(res_js['result']['user_rank']['nickname'],res_js['result']['user_rank']['avatar'], res_js['result']['user_rank']['steam_id'],friends_s,Wxname,Wxsex,Wxavatar) 
  35.         return friends,sql       
  36.     else: 
  37.         print("獲取{0}的好友人數失敗, 返回{1}".format(res_js['result']['user_rank']['nickname'],res_js['msg'])) 
  38.         return 1  
  39.  
  40. def record_rds(sql): 
  41.     #db操作 
  42.  
  43. def main(): 
  44.    ... 

筆者先確定一份初始安全圈列表,包括“Rickyhao”、“RicterZ”、“r3dr41n”、“PwnDog”等。這些人或是在bat、360等公司從事安全相關工作,或是筆者信安專業的同學,或ID明顯帶有安全的特征(PwnDog),總之都是比較確信的安全圈人士。

以這些人為初始列表,很快就有幾位玩家被劃定為安全圈人士。

Image

在遍歷到大約第50來位的時候也看到了自己的游戲昵稱:Omego555(正是剛才提到開掛帶妹被封的賬號)

Image

遍歷到“wilson233”時發現直接跳過了,并沒有被納入到安全圈列表中,但筆者讀過wilson寫下的很多優質文章,他也是某甲方公司的安全從業者。

Image

(該ID在后來的某次遍歷中也被納入了列表中,程序表現出一定的健壯性。 )

在數據量達到1000多的時候筆者手動終止了程序。原因是列表增長的速度越來越快,在單線程+限速的限制下程序遲遲看不到收斂的希望。另一方面筆者只是想做個小測試,并不需要太大規模的數據集。

2. 觀察數據集

初步觀察數據集,發現很多有意思的事情:比如在遍歷到第300多位玩家的時候,發現了一個ID帶得有“pkav”字樣的玩家”PKAV-xiaoL“(pkav是原來在烏云很有名氣的安全組織,其中一名成員“gainover”正是原烏云知識庫《安全圈有多大》一文的作者,筆者也是受到這篇文章的啟發才打算做這個小項目)。

隨著PKAV-xiaoL被確定到安全圈列表中,由于社交關系,更多的pkav成員也被添加進列表中。

Image

除了pkav-xxx,還看到了一些很眼熟的ID:比如【SparkZheng】—正是多個ios越獄的作者蒸米大大

Image

比如【ma7h1as】,筆者大學時的隊友,現玄武實驗室大佬,多個Google/MS CVE獲得者,超級大黑客

Image

再來看這位,從游戲昵稱看不出是誰,但微信昵稱告訴我們這個賬號的主人應該是安全盒子的創始人王松。

Image

當然還有一些活躍在安全論壇,或者筆者有讀過的一些高質量技術文章的作者的ID,眼熟的如”lightless233″、”LoRexxar”、”susu43″、”CurseRed”等,這里不再一一列舉。

除此之外還有一些玩家,比如這位:

Image

筆者既不認識他,也從未在安全論壇見過他的ID,只是猜想用“sudo”作為ID的人是安全從業者的可能性比較大吧。那么他真的會是安全圈人士嗎?

試著搜索一下:

Image

找到了他的GitHub,并在其中發現了很多你懂的東西,很有趣對吧?

二、社群發現與社區關系

我們發現了很多安全圈的吃雞玩家,但是除了這些眼熟和有跡可循的ID,列表里躺著的絕大多數都是筆者沒見過,陌生的ID。為了弄清楚他們之間的社區關系。我們使用一些算法和可視化工具來幫助進行數據分析。

先用環形關系圖看看:

圓上的每個紅點代表一位玩家,無數條灰邊則將各位玩家串聯起來。在這份數據集中一共有1270個節點,他們互相組成了共計14216次好友關系,形成了7128條灰邊。稱得上是復雜的社交網絡了。

我們使用無向圖來構建力引導關系,雖然在安全領域的風控、反欺詐方向中使用有向圖更為廣泛一些,但好友關系是雙向的,因此這里用無向圖。代碼如下:

  1. # -*- coding: UTF-8-*-   
  2. from pyecharts import Graph  
  3. import json  
  4. import sys   
  5. import sqlite3  
  6. conn = sqlite3.connect('db2.db')  
  7. c = conn.cursor()  
  8. print "Opened database successfully";  
  9. ccursor = c.execute("SELECT nickname,friends FROM player")  
  10. nodes = []  
  11. links = []  
  12. temps = []  
  13. for row in cursor:  
  14.     temps.append({"name":row[0],"friends":row[1].split(",")})    
  15.     nodes.append({"name":row[0],"symbolSize":5})  
  16. for temp in temps:  
  17.     for friend in temp["friends"]:  
  18.         if {"name":friend,"symbolSize":5} in nodes:  
  19.             links.append({"source":temp["name"],"target":friend})  
  20. graph = Graph("力導圖",width=1400,height=1600 
  21. graph.add(  
  22.     "",  
  23.     nodes,  
  24.     links,  
  25.     graph_layout = "force" 
  26.     label_pos="right" 
  27.     graph_repulsion=10 
  28.     line_curve=0.2,  
  29.  
  30. graph.render() 

得到:

俗話說“物以類聚人以群分”,在我們的數據集中也同樣適用。可以觀察到這份社交網絡其實是由多個小社區群落組成的,比如在最左下角的這個部分,這個小社區處于安全圈的邊緣地帶,很有可能不是安全從業者,我們放大來看:

這個“五邊形”是一個完全子圖。在這個小社區中,五個人都互為好友,也被稱作“派系(Clique)”,這五個人很有可能經常一起開黑。

同時我們可以看到頂點這位玩家:

如果我們把上面的部分看做是安全圈的話,這位叫Feng_Bao的玩家卡在了安全圈與這個5人小社區“道路咽喉”的位置,這樣的節點具有較高的“中介中心性(Betweenness Centrality)”,往往具有不可替代的作用。在現實中類似房屋中介一樣,買房者與賣房者之間的聯系都得靠他。

除了中介中心性,在圖論中節點還有另外兩個重要性質:度中心性(Degree Centrality)以及緊密中心性(Closeness Centrality)。

一個節點與之相連的邊越多,這個節點的度中心性就越高,也就是好友越多,度中心性越高,很可能是具有較高名望的人,比如微博的大V,KOL。

緊密中心性則是衡量一個節點到其他所有節點的最短距離之和的指標,一個節點的緊密中心性越高那么他傳播信息的時候也就越不需要依賴其他人。

分別計算一下數據集中三個中心性排名靠前的玩家。

有沒有看到眼熟的ID呢:

Image

確實看到一些眼熟的ID,但由于我們前面尋找安全圈的算法并不準確,在收集數據的過程中很可能誤入到某些特定的圈子中。比如某些安全圈玩家同時又是二次元愛好者,那么很可能會把這份數據集帶入到”二次元圈“。為了盡量避免這種情況,我們使用一些社區發現算法來完成社區的尋找與分割。

社區發現算法用來發現網絡中的社區結構,多數是聚類類型的算法。使用社區發現算法可以幫助我們發現聯系相對緊密的社區,從而幫助我們把安全圈和其他圈子的人分割開來。

常見的社區發現算法有:Girvan-Newman、Louvai、K-Clique、Label propagation等。

在Python下可以使用NetworkX來完成各類社區發現算法的調試,但NetworkX本身只是算法工具,并不具備可視化功能,而筆者聯調plt畫出來的圖實在奇丑無比。因此這里使用算法單一但可視化功能強悍的gephi來實現。

fast-unfolding是基于Modularity的算法,也是復雜網絡當中進行社團劃分簡單高效、應用最廣泛的算法。

用force atlas圖布局:

forceatlas (1).gif

fast-unfolding:

Image

除此之外Gephi還支持GN算法,但內存要求較高,有興趣的同學可以嘗試下其他算法。

經過30000余次迭代,最終得到了19個社區,用圖像來表示是這樣的:

res.png

在社區發現算法中社區的數目和大小通常是不可知的,一般是用模塊度Modularity來檢查社區分類的合理性。由于本文采集的數據較少且這里的好友關系是雙向的,不像微博的關注/粉絲的機制能較準確地找出圖的連通性,所以這里的社區發現效果并不理想。

筆者在使用NetworkX嘗試了多種算法和不同的參數后,最終選擇了一個樣本數量為1125的社區,覆蓋了原數據集樣本總數的88.58%。在簡單觀察了這個社區的合理性后,決定使用這份數據集來做后續的戰績分析。

三、戰績爬取和分析

1. 誰是安全圈的吃雞第一人

拿到了要進行戰績數據采集的玩家名單后,我們需要先確定幾個指標來衡量一個玩家的吃雞技術水平,才能有指向性的進行數據采集。筆者最終選取了數個指標,分別是:

  • 歷史最高Rank,即最高段位
  • 最近20場游戲的平均排名
  • 最近20場的吃雞數和前10數
  • 最近20場游戲的擊殺總數
  • 最近20場游戲造成的總傷害

筆者還決定采集一些有趣的指標,能反映玩家的游戲習慣:

  • 最近20場的武器使用情況
  • 最近20場的死亡地點
  • 最近20場的游戲總時長

爬蟲寫完后數據很快就抓取完畢。

先來看看安全圈玩家們最近20場游戲的情況

在最近的20場比賽中茍到排名前十次數最多的是【RickyHao】和【NeglectLee】兩位,達到驚人的17次,85%的前10率。

這一指標在安全圈的平均值是6.33。

吃雞數與前十數.png

單獨看看吃雞情況:

image.png

在最近20場比賽中吃雞次數最多的是這位叫【qingfenggod】的玩家,達到了可怕的10次,近20場次中有一半的比賽都笑到了最后。前十次數第一的【RickyHao】則在吃雞數上排到了第二位,達到了8次。

而這一數值的平均值僅才0.71,兩位玩家都達到了10數倍。

【RickyHao】之所以在這一指標上如此突出是因為最近20場次里包含了很多活動模式,而【qingfenggod】則大部分是在排位中獲得的,可以說是非常驚人的勝率了。

在KDA和傷害方面:

可以看到大部分玩家都集中在左下半部分,可以認為正常玩家都在這一點簇群內, 即KDA<2,傷害<400的部分。

而KDA達到4傷害超過550的玩家僅有4位。KDA超過5傷害超過600的僅僅只有一位了。

但有一位玩家達到了令人窒息的:

  • KD:8.4
  • 傷害:1099.57

是第二名的近兩倍,是平均值的近10倍!!!!直接來到了散點圖的云端之上,這可是擊殺與死亡比啊,如果不是高科技的話這位玩家可能是職業級的水準了。

這位玩家也正是剛才提到吃雞榜第一的【qingfenggod】。

同樣在吃雞榜中排第二的【RickyHao】,這一數據僅為:

  • KD:3.7
  • 傷害:461.18

排位第8位。

思考:其實這里已經可以很直觀地分類出正常玩家、高級玩家、外掛玩家三大類別。如果是反外掛/風控等場景,對于這種密度相差很大的簇群,可以嘗試使用kmeans這類基于距離的聚類算法來將樣本分為3~5類,并借助移動速度、平均移動距離等指標來輔助判斷是否為外掛玩家。這里不作深入探究。

筆者更感興趣的是吃雞和槍法的關系,一個人的槍法越好,越容易吃雞嗎?吃雞對于筆者這樣熱衷伏地茍活的玩家會更友好嗎?

對于槍法這一表征,直接使用KD和damage來代替,再加上移動距離來分析這三類指標與吃雞率的相關性

做個簡單的線性相關分析,計算Pearson系數:

pearson.png

光從相關系數看,槍法和吃雞雖然是正相關,但并不是呈現出非常強的相關性,頂多達到了中等程度相關。

而整場游戲的移動距離則和吃雞完全呈弱相關了,可能是吃雞這個游戲真的很看運氣吧。

而如果一位玩家只是想進入游戲前十,則和個人槍法沒什么太大關系了,反而和移動距離關系較大。

換句話說,如果只是想沖進前十,乖乖茍毒跑圈就可以了。

這也基本印證我們對游戲的理解。

如果說以上對最近二十場次游戲的分析還無法回答“誰是安全圈吃雞第一人”這個問題的話,那么歷史最高排位情況應該能給出一個答案了。

那么誰的rank分值會是安全圈中最高的呢,我們同樣遍歷了1125位玩家的這一指標:

20.png

(注:官方API的提示中寫到,由于官方服務器問題,一些玩家的這一數據可能丟失或者有誤)

取四人TPP的排位情況,前三位分別是:

  • Salmonnnnn:4094.7144
  • syzhou:3906.409
  • ph4nt0mer:3609.1436

通過觀察好友關系,筆者相信他們與安全圈關系密切(大家也可以搜索一下這些ID)。

寫到這里,“誰是安全圈的吃雞第一人?”這一問題已經差不多給出了答案。

2. 玩家畫像

風控、反APT等場景中經常會用一些手段對黑客或者用戶進行畫像。在這里筆者也做了一些研究玩家游戲習慣的工作,基于玩家的擊殺行為來畫像。

挑選一位玩家游戲記錄較多的玩家,以【sanmao2054】為例。

通過分析他550場次比賽中的的891次擊殺,來推測一下該玩家的游戲習慣,刻畫出這位玩家的游戲風格。

從武器使用情況來看:

weaponcount.png

sanmao2054最鐘愛步槍,最常使用的是M416和AK47這兩把萬精油老款自動步槍,兩把槍的擊殺人數加起來超過了250次。

筆者最喜歡用的ScarL步槍在他的手里排在了優先級非常靠后的位置。

在狙擊槍方面:

sanmao2054偏愛SKS這種連發狙擊步槍,擊殺次數達到了22次。而對于m24和kar98這種單發拉栓步槍就不太熱衷使用,兩把槍使用次數加起來也不過29次。

總體來看,這位玩家在狙擊槍的使用頻率上遠不如步槍。所有狙擊槍的擊殺次數加起來都不及AK或者M4的一半。

在沖鋒槍方面:

最愛的當屬UMP,而vector緊隨其后,達到44次擊殺。要知道熱愛vector的玩家并不多,所以這可以算是這位玩家較明顯的特點。

其他:

空投槍的使用次數并不多,看來這位玩家對追夢沒什么興趣。

雖然是近身型玩家,但使用噴子的次數并不多。更偏向于自動武器。

而使用爆破手雷擊殺了高達31次,這是個非常亮眼的數據。

從擊殺距離來看:

all.png

平均擊殺距離排在第一位的自然是狙中之王,精準度最強勁的AWM,達到了120多米。

排在第二的則是這位玩家最愛的SKS,達到111米了。

對于這位玩家最喜愛的m4和ak兩類步槍,平均擊殺距離僅只有19到24米。

從這里可以看出這位玩家偏好近距離作戰,熱愛剛槍,對于殺傷力較大的自動步槍情有獨鐘。

sanmao2054的最遠擊殺距離達到了285米,使用的卻是SKS這一款連狙步槍,也從側面印證此人剛槍的風格。

從平均擊殺時間點來看:

平均擊殺時間.png

sanmao2054在前期擊殺使用的基本都是手槍/沖鋒槍,DP28等武器,在中期會使用AK等自動步槍。后期則以空投槍為主。

有趣的一點是,這位玩家使用爆破手雷完成擊殺的時間點也比較靠后。

可以合理地推測出,他比較傾向于在最后使用手雷來打掃戰場,快速結束戰斗。這也是比較聰明的做法。

根據以上信息基本可以腦補一下這位玩家的打法是:

先跳傘到人多的區域,隨意撿起一兩把武器(甚至是手槍)就開始干架,成功擊殺對手后就尋找ak/m4等自動步槍過渡到中期,會留雷到后期來結束戰斗,在少數情況下后期也會去考慮空投槍。

用一些關鍵詞來描述sanmao2054可能會是:【剛槍小王子】、【步槍之王】、【不擅長狙擊】、【爆破手】、【使用vector的大手子】之類的。

最后用兩張安全圈所有玩家的死亡熱力圖來結束全文:

heatmap.png

heatmap1.png

四、最后

本文僅是一個For fun的周末項目,涉及的數據有限。在真正的網絡攻防實踐中,數據挖掘和分析能為安全工程師帶來更多的便利,特別是在流量分析/異常檢測/溯源取證/風控畫像等方面。

 

責任編輯:趙寧寧 來源: Freebuf
相關推薦

2018-07-26 16:32:31

數據吃雞游戲

2010-05-06 21:09:18

2019-09-02 15:40:25

可視化數據分析

2021-06-02 16:19:14

技術研發指標

2017-01-12 17:28:59

數據分析數據可視化可視化

2017-04-18 11:01:14

數據分析數據可視化

2014-06-12 11:08:28

游戲開發游戲引擎

2023-05-18 15:28:20

人工智能計算機科學

2017-03-09 09:54:13

分析數據可視化

2018-12-03 16:50:23

數據可視化數據分析薪水

2010-05-06 21:43:23

2021-10-15 06:24:38

AIAR眼鏡人工智能

2020-05-14 10:19:23

Python可視化分析

2017-09-15 10:23:06

可視化Bug數據分析

2020-10-09 09:35:17

數據分析可視化

2015-06-30 10:36:33

浪潮

2011-12-09 09:56:49

數據中心IBM張家港第一人民商場

2023-11-24 14:02:00

Python數據分析

2017-02-07 15:54:14

數據可視化數據分析

2016-11-14 10:09:49

數據分析產品經理Growth
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美中文字幕一区二区三区亚洲 | 波多野结衣精品在线 | 午夜爽爽男女免费观看hd | 免费精品| 欧美11一13sex性hd | 成人免费三级电影 | 99精品国自产在线观看 | 天天摸天天看 | 美女国产精品 | 91麻豆精品国产91久久久久久久久 | 国产农村妇女毛片精品久久麻豆 | 午夜一级黄色片 | 欧美视频网 | 欧美日韩在线一区 | 伊人久麻豆社区 | 久久久久国产视频 | 91精品国产91久久久久久最新 | 色香蕉在线 | 精品国产青草久久久久福利 | 国产欧美久久精品 | 亚洲国产成人精品女人久久久 | 精品国模一区二区三区欧美 | 一区二区三区精品视频 | 午夜私人影院 | 不卡一区二区在线观看 | 丝袜美腿一区二区三区动态图 | 狠狠躁18三区二区一区 | 成人在线亚洲 | 精品三级在线观看 | 国产极品粉嫩美女呻吟在线看人 | 欧美精品久久 | 九九视频网 | caoporn国产精品免费公开 | 亚洲国产精品一区二区久久 | 91精品国产91久久综合桃花 | 自拍偷拍3p | 久久久蜜桃一区二区人 | 亚洲女人天堂成人av在线 | 久久精品91久久久久久再现 | 午夜二区 | 日韩精品欧美精品 |