站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

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

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

        背景

        在分析日志的時候發(fā)現(xiàn)有些日志中參數(shù)中包含其他的URL,例如:

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

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

        提取URL

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

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

        常見的URL分類

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

        觀察可以見得:IP形式的URL結(jié)構(gòu)最為簡單:4個小于255的數(shù)字被.分割;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形式的特征,但是發(fā)現(xiàn)代碼會報異常,所以需要IP處理代碼段添加判斷:判斷后綴是否是頂級域名:

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

        結(jié)果測試

        測試數(shù)據(jù):

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

        運行結(jié)果:

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

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

        結(jié)束語

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

        代碼傳送門:

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

        相關(guān)文章教程推薦:web服務器安全

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
        主站蜘蛛池模板: 国产高清国内精品福利99久久 | 亚洲精品欧美日韩| 亚欧乱色国产精品免费视频| 午夜精品成年片色多多| 青青青国产精品一区二区| 久久久无码精品午夜| 国产AⅤ精品一区二区三区久久| 久久久久久久久无码精品亚洲日韩 | 日韩欧美一区二区三区中文精品| 久久国产亚洲精品麻豆| 欧洲精品99毛片免费高清观看| 日本精品自产拍在线观看中文| 国产精品手机在线观看你懂的| 久久99热国产这有精品| 国产亚洲精品自在久久| 欧美久久精品一级c片片| 最新国产精品无码| 麻豆精品国产自产在线观看一区| 911亚洲精品不卡| 欧美精品免费观看二区| 99久久这里只有精品| 精品无码国产自产拍在线观看| 中国精品18videosex性中国| 欧美日韩精品久久久免费观看| 国产亚洲精品不卡在线| 国产网红主播无码精品| 国产成人无码精品一区在线观看 | 日韩精品无码一区二区三区不卡| 亚洲精品无码激情AV| 国产欧美日韩精品a在线观看| 中文国产成人精品久久不卡| 一本久久a久久精品综合香蕉| 四虎成人精品| 无翼乌无遮挡全彩老师挤奶爱爱帝国综合社区精品 | 亚洲欧美精品伊人久久| 久久久91精品国产一区二区三区| 国产精品久久久久jk制服| 国产精品无码成人午夜电影 | 亚洲中文字幕久久精品无码喷水| 中文字幕日本精品一区二区三区| 亚洲国产美女精品久久久久∴|