用户
搜索
  • TA的每日心情
    奋斗
    2017-8-8 12:32
  • 签到天数: 162 天

    连续签到: 1 天

    [LV.7]常住居民III

    版主

    pypy

    Rank: 7Rank: 7Rank: 7

    24

    主题

    669

    帖子

    1470

    魔法币
    收听
    3
    粉丝
    21
    注册时间
    2015-11-12

    i春秋签约作者

    发表于 2017-8-2 11:17:43 62453

    前言

    又偷了一波懒。。哈哈,确实有点忙。最近在学一点数据分析,感觉对安全方向还是很有帮助的,比如对所有的攻击数据进行分析查找出攻击模式从而建立防御模型、再比如可以抓取xx网站的数据分析大家的观“片”喜好。。。。当然,这一切的前提是先有数据,这次我们来搜集一波之前SRC部落的同程SRC公开漏洞信息,并且做一个简单的词云来看看究竟什么漏洞频率最高。

    采集脚本

    url:

    https://sec.ly.com/bugs

    脚本放出来,有些中文编码的坑,已经解决了,主要是在爬取数据时进行入库(MySQL)操作,在爬取数据时需要对Rank和标题进行拆分,最后保存入库:

    '''
    @author: xiaoye
    '''
    #coding: utf-8
    import requests
    import re
    from bs4 import BeautifulSoup as bs
    import MySQLdb as ms
    import sys,os
    
    reload(sys)
    sys.setdefaultencoding('utf8')
    
    def get_bug_title(url, headers, timeout=9):
        r = requests.get(url, headers=headers, timeout=9)
        #print r.status_code
        if r.status_code == 200:
            bq = bs(r.content, "lxml", from_encoding="utf-8")
            bqs = bq.find_all(name="div", attrs={"class":"bugTitle"})
            for bq in bqs:
                data = bq.get_text()
                Rank_value = re.findall(r"Rank:(\d+)", "".join(data))[0]
                Bug_title = "".join(data).split()[0]
                #print Rank_value, Bug_title
                sql_insert = "insert into tcda(bug_title, rank) values('%s', %s)" % (Bug_title, int(Rank_value))
                cursor.execute("SET NAMES utf8")
                cursor.execute(sql_insert)
                conn.commit()
                print sql_insert + "  success !"
    
    if __name__ == "__main__":
        conn = ms.connect(host="localhost", port=3306, user="root", passwd="root", db="tongcheng")
        cursor = conn.cursor()
        conn.set_character_set('utf8')
        for i in range(1,8):
            url = "http://sec.ly.com/bugs?page=" + str(i)
            headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0'}
            get_bug_title(url, headers)
        cursor.close()
        conn.close()

    看效果:

    大家可以自己写写这个脚本,强烈不建议直接copy别人现成的代码,只有自己动手才能熟悉套路,更何况这个脚本真的并不难写。

    词云制作

    代码先放上

    # coding: utf-8
    import jieba
    from wordcloud import WordCloud
    import matplotlib.pyplot as plt
    
    data = open("d://tongcheng.txt").read()
    da = jieba.cut(data, cut_all=True)
    d = " ".join(da)
    
    my_da = WordCloud(font_path="‪C:\\Windows\\Fonts\\simfang.ttf").generate(d)
    
    plt.imshow(my_da)
    plt.axis("off")
    plt.show()

    我们修改一下原来的脚本,让爬取到的东西保存在一个txt文件里,利用jieba和wordcloud来制作词云

    看效果:

    一个简单的词云就完成了,并且从词云中可以看到,同程中出现较多的是信息泄露越权等等,当然这个词云很糙,不很准确

    总结

    先写这么多吧,之后会更一些数据分析的文章,后期会将数据分析应用到安全防御中去。




    评分

    参与人数 1魔法币 +5 收起 理由
    LinuxSelf + 5

    查看全部评分

    本帖被以下淘专辑推荐:

    http://blog.163.com/sy_butian/欢迎交流
    阿甫哥哥 管理员 i春秋最帅男神-阿甫大哥哥 楚 核心白帽 i春秋签约作者 白帽传说 春秋游侠 秦 燕 魏
    来自 7#
    发表于 昨天 22:26
    文章奖励介绍及评分标准:http://bbs.ichunqiu.com/thread-7869-1-1.html,如有疑问请加QQ:286894635!
    奖金
    点评
    50
    文章有点简单,下次可以详细分析一下,这样对新手更加友好。


    Time will give me the answer
    使用道具 举报 回复
    不错不错
    使用道具 举报 回复
    发表于 2017-8-2 20:26:56
    小叶师傅   学习了
    不可告人的秘密:ixuehua.blog.163.com


    -
    <script>alert(/xxx/)<script>
    使用道具 举报 回复
    发表于 2017-8-3 11:10:59
    又学习一波,感谢分享
    使用道具 举报 回复
    发表于 2017-8-3 11:38:11
    数据分析的学习一波儿
    使用道具 举报 回复
    发表于 2017-8-3 17:14:24
    厉害啊 我的哥
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册