欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

数据分析与可视化:谁是安全圈的吃鸡第一人

来源:本站整理 作者:佚名 时间:2019-04-15 TAG: 我要投稿

放假和小伙伴们打了几把PUBG,大半年没碰,居然也意外地躺着吃了次鸡。吃鸡这个游戏果然得4个认识的人打(dai)战(dai)术(wo)才更有趣。
由于身边搞安全的人比较多,之前也会和一些安全圈的大佬一起玩,经常会有些认识或不认识的黑阔大佬开着高科技带着躺鸡。当然笔者也曾羞耻地开过挂带妹(纪念号被封的第193天)。
那么这些黑阔大佬们,在不开挂的情况下,谁会是他们之中技术最好的呢?带着这样的疑问,试着从数据分析的角度来看看谁会是安全圈的吃鸡第一人。
注:全文所指的“安全圈”是一个非常狭义的概念,在本文中仅覆盖到小部分安全从业者玩家,所以标题有些夸大。如有其他错误也欢迎指出。
0×01 数据收集
怎么才能知道哪些安全从业者在玩这个游戏,他们的ID又是什么呢?
在一些APP里可以查到玩家的战绩,其中比较有价值的是,还能看到每位玩家的好友列表。
那么可以有这么个思路,也就是一个广度优先遍历:
1.确定一个初始的ID链表,并保证初始链表内都是安全圈内人士。
2.遍历初始链表内每一位玩家的所有好友。
3.当链表内H的好友J,同时也是链表内另外两位黑客的共同好友,那么认为J也是安全圈内人士,加入到链表尾处。
4.向后迭代重复2、3。
动手实现
发现走的是https,挂上证书以MITM的方式来监听https流量:

可以发现数据是以json格式传递的,写个python脚本来自动完成获取数据,单线程+限速(一方面不至于给别人家的api爬挂了另一方面也不至于触发IDS、anti-CC等机制)。
脚本主要代码是:
def r_get(nickname,offset):
#发送给api的request
...
    return json#返回一个json格式
def get_friends(nickname):
    offset  = 0
    res_js = r_get(nickname,str(offset))
    temp_friends = res_js['result']['board']
    if res_js['status'] == "ok":
        while len(res_js['result']['board']) == 30:
            offset = offset + 30
            res_js = r_get(nickname,str(offset))
            temp_friends = temp_friends + res_js['result']['board']
        print("   {0}   的好友人数    {1}".format(res_js['result']['user_rank']['nickname'], len(temp_friends) -1 ))
        friends = []
        Wxname  = ""
        Wxsex = ""
        Wxavatar  = ""
        sql = ""
        for playerinfo in temp_friends:
            if playerinfo['nickname'] != res_js['result']['user_rank']['nickname']:
                friends.append(playerinfo['nickname'])
            elif playerinfo.has_key('heybox_info') == True:
                Wxname = playerinfo['heybox_info']['username']
                Wxsex = playerinfo['heybox_info']['sex']
                Wxavatar = playerinfo['heybox_info']['avartar']
        friends_s = ','.join(friends)
        sql = "INSERT INTO player (nickname,avatar,steamID,friends,Wxname,Wxsex,Wxavatar) \
              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)
        return friends,sql     
    else:
        print("获取{0}的好友人数失败, 返回{1}".format(res_js['result']['user_rank']['nickname'],res_js['msg']))
        return 1
def record_rds(sql):
    #db操作
def main():
   ...
笔者先确定一份初始安全圈列表,包括“Rickyhao”、“RicterZ”、“r3dr41n”、“PwnDog”等。这些人或是在bat、360等公司从事安全相关工作,或是笔者信安专业的同学,或ID明显带有安全的特征(PwnDog),总之都是比较确信的安全圈人士。
以这些人为初始列表,很快就有几位玩家被划定为安全圈人士。

[1] [2] [3] [4] [5]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载