站長資訊網
        最全最豐富的資訊網站

        采用詞法分析提取域名和IP

        采用詞法分析提取域名和IP

        背景

        在分析日志的時候發現有些日志中參數中包含其他的URL,例如:

        采用詞法分析提取域名和IP

        提取請求參數中的URL(xss.ha.ckers.org),再對比威脅情報數據庫,如果命中黑名單直接標黑。如果不在黑名單,也不在公司的白名單里可以先做個標記,后續著重分析。

        提取URL

        關于URL的提取網上有很多文章,大部分都是是使用正則表達式,方法簡單但是不太準確。我這里提供一種方法:采用詞法分析,提取域名和IP。思路借鑒了這篇文章:https://blog.csdn.net/breaksoftware/article/details/7009209,有興趣的可以去看看,事實證明跟著大神確實漲姿勢。

        原文是用C++版本,這里我用Python寫了一個類似的,供大家參考。

        常見的URL分類

        采用詞法分析提取域名和IP

        觀察可以見得:IP形式的URL結構最為簡單:4個小于255的數字被.分割;domain形式比較復雜,但是它們有共性:都具有頂級域名.com。

        定義合法字符:

        采用詞法分析提取域名和IP

        頂級域名列表:

        采用詞法分析提取域名和IP

        域名形式提取:如www.baidu.com

        采用詞法分析提取域名和IP

        采用詞法分析提取域名和IP

        IP形式提取:如192.168.1.1。

        采用詞法分析提取域名和IP

        while (i < len(z) and z[i].isdigit()):                 i = i + 1                 ip_v1 = True                 reti = i            if i < len(z) and z[i] == '.':                 i = i + 1                 reti = i            else:                 tokenType = TK_OTHER                 reti = 1while (i < len(z) and z[i].isdigit()):                 i = i + 1                 ip_v2 = True             if i < len(z) and z[i] == '.':                 i = i + 1             else:                if tokenType != TK_DOMAIN:                     tokenType = TK_OTHER                     reti = 1while (i < len(z) and z[i].isdigit()):                 i = i + 1                 ip_v3 = True             if i < len(z) and z[i] == '.':                 i = i + 1             else:                if tokenType != TK_DOMAIN:                     tokenType = TK_OTHER                     reti = 1while (i < len(z) and z[i].isdigit()):                 i = i + 1                 ip_v4 = True              if i < len(z) and z[i] == ':':                 i = i + 1             while (i < len(z) and z[i].isdigit()):                 i = i + 1              if ip_v1 and ip_v2 and ip_v3 and ip_v4:                                 self.urls.append(z[0:i])                                 return reti, tokenType                         else:                                 if tokenType != TK_DOMAIN:                     tokenType = TK_OTHER                     reti = 1

        混合形式提取:如1234.com。
        掃描前半部分1234,符合IP形式的特征,但是發現代碼會報異常,所以需要IP處理代碼段添加判斷:判斷后綴是否是頂級域名:

        采用詞法分析提取域名和IP

        結果測試

        測試數據:

        采用詞法分析提取域名和IP

        運行結果:

        采用詞法分析提取域名和IP

        這只是個初步的版本,如果有BUG歡迎大家指正。

        結束語

        以前只顧著悶著頭的寫代碼,忽略了事后的思考和總結。現在嘗試著改變一下,一邊工作,一邊提煉和總結,遇到感覺不錯的,嘗試寫成工具開源出來,與大家共勉。

        代碼傳送門:

        https://github.com/skskevin/UrlDetect/blob/master/tool/domainExtract/domainExtract.py

        相關文章教程推薦:web服務器安全

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 久久精品亚洲一区二区三区浴池 | 久久青青草原精品影院| 久草欧美精品在线观看| 国产精品电影在线观看| 亚洲精品成人a在线观看| 国产精品无码免费专区午夜| 国产亚洲婷婷香蕉久久精品| 久久久久人妻精品一区| 亚洲AV无码之日韩精品| 精品人妻少妇一区二区| 国产精品美女久久久免费| 香蕉国产精品频视| 国产99久久精品一区二区| 久久精品无码专区免费东京热| 久久久久国产精品嫩草影院| 国产精品久久久久一区二区三区 | 精品无码三级在线观看视频| 91精品国产91久久久久久蜜臀| 国产精品麻豆高清在线观看| 精品偷自拍另类在线观看| 亚洲AV永久无码精品成人| 精品人妻伦一二三区久久| 国产欧美日韩综合精品一区二区三区| 欧美777精品久久久久网| 国产精品高清一区二区人妖| 97精品一区二区视频在线观看| 久久这里只有精品18| 四虎成人精品无码| 久久精品亚洲日本波多野结衣 | 国产在线精品网址你懂的| 九九久久精品国产| 99国产精品国产免费观看| 亚洲国产精品久久久久久| 久久综合九色综合精品| 国内精品伊人久久久久| 国产精品亚洲欧美一区麻豆| 国产精品欧美一区二区三区不卡 | 亚洲AV永久纯肉无码精品动漫| 日韩精品真人荷官无码| 久久婷婷国产综合精品| 国产午夜精品一区二区三区漫画|