IT/OS|Network|Script

RegEx 관련 생성기, 도우미, 검증기

박모 2024. 3. 1. 21:15
728x90

RegEx 관련 생성기와 검증기를 좀 찾아 본 결과를 그냥 적음

 

오픈소스나 웹 기반으로 된 것들을 몇가지 찾아 봤는데, 괜찮아 보이는 부분 정도 기술

 

1. RegEx 생성기 ( regexgen )

https://github.com/devongovett/regexgen

 

GitHub - devongovett/regexgen: Generate regular expressions that match a set of strings

Generate regular expressions that match a set of strings - devongovett/regexgen

github.com

설명: 문자열 리스트를 입력 받아서 그 안에서 pcre 형태의 문법을 만들어 준다.

장점: 특정 문자열 입력을 하면 공통 패턴 위주로 pcre를 생성 해 준다.

단점: 무조건 다 맞는 것을 생성하려고 하기 때문에 강제로 "|" 되어 모든게 겹치는게 들어가거나 한다.

 

예제1

# node ./node_modules/regexgen/bin/cli.js 'aaa' 'aaabbb'
/aaa(?:bbb)?/

 

예제2:  or 처리 되버리는 부분

# node ./node_modules/regexgen/bin/cli.js 'aaa' 'bbb'
/bbb|aaa/

 

예제3:  여러개를 합치는 건 가능

# node ./node_modules/regexgen/bin/cli.js 'aaafg' 'aaefg' 'aadfg'
/aa[ade]fg/

 

예제4: 반복문까진 안해 주는 듯 함

# node ./node_modules/regexgen/bin/cli.js 'aaafg' 'aaafgaaafg' 'aaafgaaafgaaafg'
/aaafg(?:aaafg(?:aaafg)?)?/

 

2. Snort Rule Generation

소스: https://github.com/Aksh97/Snort_rule.git

 

GitHub - Aksh97/Snort_rule

Contribute to Aksh97/Snort_rule development by creating an account on GitHub.

github.com

설명: pcap을 바로 읽어서 공통 content 를 추출 한다.

장점: 공통 content 를 추출한 snort 정책을 생성 해 준다.

단점: content만 추출 해 주고, 기본적으로 고정크기 (8 byte)만 해 준다. (코드를 수정하면 고정된 8 byte를 다른 크기로 변경은 가능하나 코드 변경 필요). 전체 공통 패턴을 추출하는 부분은 부족함.

 

구동화면

구동화면
결과화면

wireshark 검증용 코드

import sys

def main():
    # 인자 받기
    arg = sys.argv[1]

    # 2바이트씩 문자열 분할
    chunks = [arg[i:i+2] for i in range(0, len(arg), 2)]

    # : 추가하여 출력
    print("frame contains " + ":".join(chunks))


if __name__ == "__main__":
    main()

 

다음과 같은 문구로 wireshark 에서 검증해서 보면 pcap에서 추출은 된 것으로 보임

# python ext.py 132d325a951e15b9
frame contains 13:2d:32:5a:95:1e:15:b9

 

3. snort 정책 생성 도우미 사이트

http://snorpy.cyb3rs3c.net

 

Snorpy 2.0 - Web Based Snort Rule Creator

-> ( ) Created by Christopher Davis   Github Test

snorpy.cyb3rs3c.net

 

4. RegEx 다이어그램 처리

1) debuggex

https://www.debuggex.com/

 

Debuggex: Online visual regex tester. JavaScript, Python, and PCRE.

View Cheatsheet Visual ModeText Mode {{nfaModel.error.msg}}   Result: Matches Does not match starting at the black triangle slider

www.debuggex.com

예제사용 RegEx : [a-z]{1,3}[abcdefgABCDEFG]{0,4}ccccc[1234]{1,3}

결과화면

 

2) regexper

샘플사이트:

https://regexper.com/

 

Regexper

 

regexper.com

소스 (MIT): https://gitlab.com/javallone/regexper-static

 

Jeff Avallone / regexper-static · GitLab

Regular Expression Visualization Site (static site version)

gitlab.com

예제사용 RegEx : [a-z]{1,3}[abcdefgABCDEFG]{0,4}ccccc[1234]{1,3}

 

결과화면

728x90