検索
ホームページ運用・保守安全性字句解析を使用してドメイン名と IP を抽出する

字句解析を使用してドメイン名と IP を抽出する

Dec 25, 2019 pm 01:08 PM
ipドメイン名抽出する字句解析

字句解析を使用してドメイン名と IP を抽出する

背景

ログを分析したところ、一部のログ パラメーターに他の URL が含まれていることがわかりました。例:

字句解析を使用してドメイン名と IP を抽出する

# #リクエストパラメータ内のURL(xss.ha.ckers.org)を抽出し、脅威インテリジェンスデータベースと比較し、ブラックリストにヒットした場合はブラックリストに登録されます。ブラックリストまたは会社のホワイトリストにない場合は、最初にマークを付けて、後で分析に集中できます。

URL の抽出

インターネット上には URL の抽出に関する記事が数多くありますが、そのほとんどは正規表現を使用しており、方法は単純ですがあまり正確ではありません。ここでは、字句解析を使用してドメイン名と IP を抽出する方法を提供します。このアイデアは次の記事から借用しています:

https://blog.csdn.net/breaksoftware/article/details/7009209. 興味がある場合は、ご覧ください。マスターに従うことが事実によって証明されました。本当に姿勢が良くなります。

元のテキストは C バージョンですが、参考までに Python で同様のものを書きました。

一般的な URL 分類

字句解析を使用してドメイン名と IP を抽出する

観察によると、URL 構造の IP 形式は最も単純です。255 未満の 4 つの数値が除算されます。; ドメイン形式の比較 複雑ですが、これらには共通点があります。それは、すべてのトップレベル ドメイン名が .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] == &#39;.&#39;:
                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] == &#39;.&#39;:
                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] == &#39;.&#39;:
                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] == &#39;:&#39;:
                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 など。

IP フォームの特性に準拠する 1234 の前半をスキャンしますが、コードが例外を報告することが判明したため、サフィックスが であるかどうかを判断するために IP 処理コード セグメントを追加する必要があります。トップレベル ドメイン名:

字句解析を使用してドメイン名と IP を抽出する

結果テスト

テスト データ:

字句解析を使用してドメイン名と IP を抽出する

実行結果:

字句解析を使用してドメイン名と IP を抽出する

これは暫定版です。バグがある場合は修正してください。

結論

以前は、頭を下げてコードを書くことだけに集中して、その後の考え方やまとめを無視していました。今はそれを変えようと仕事をしながら推敲してまとめていて、いいなと思ったものを見つけたらツールとして書いてオープンソースにしてみんなと共有するようにしています。

コード ポータル:

https://github.com/skskevin/UrlDetect/blob/master/tool/domainExtract/domainExtract.py
## 推奨関連記事チュートリアル:

Web サーバーのセキュリティ

以上が字句解析を使用してドメイン名と IP を抽出するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はFreeBuf.COMで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境