Background
로그를 분석한 결과 로그의 일부 매개변수에 다음과 같은 다른 URL이 포함되어 있음을 발견했습니다.
# 🎜🎜 #요청 매개변수에서 URL(xss.ha.ckers.org)을 추출한 후 위협 인텔리전스 데이터베이스와 비교하면 블랙리스트에 도달합니다. 블랙리스트에 오르다 블랙리스트나 회사의 화이트리스트에 없는 경우 먼저 표시하고 나중에 분석에 집중할 수 있습니다. URL 추출URL 추출에 대한 많은 기사가 인터넷에 있는데, 대부분 정규 표현식을 사용합니다. 방법은 간단하지만 그다지 정확하지는 않습니다. 여기서는 어휘 분석을 사용하여 도메인 이름과 IP를 추출하는 방법을 제공합니다. 아이디어는 다음 기사에서 빌려왔습니다:https://blog.csdn.net/breaksoftware/article/details/7009209. 관심이 있다면 다음 사실을 확인해보세요. 주인님이 자세를 정말 좋아지시네요.
원본 텍스트는 C++ 버전입니다. 여기서는 참고용으로 비슷한 내용을 Python으로 작성했습니다. 일반적인 URL 분류 관찰할 수 있습니다. URL 구조의 IP 형식이 가장 간단합니다. 255 .;으로 분할된 도메인 형식은 더 복잡하지만 공통점이 있습니다. 모두 최상위 도메인 이름이 .com입니다. 유효한 문자 정의: 최상위 도메인 목록:#🎜 🎜# 도메인 이름 추출:
등.www.baidu.com
IP 형식 추출: 예: 192.168.1.1.
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
결과 테스트
테스트 데이터:
# 🎜🎜#
실행 결과: #🎜 🎜#
이것은 단지 예비 버전입니다. 버그가 있으면 수정해 주세요. .결론
예전에는 머리 숙인 채 코드 작성에만 집중하고 이후의 생각과 요약은 무시했습니다. 이제는 바꾸려고 노력하고 있고, 작업하면서 다듬고 요약하고 있는데, 기분 좋은 일이 생기면 그걸 도구로 써서 모두와 공유하려고 해요.
코드 포털:
https://github.com/skskevin/UrlDetect/blob/master/tool/domainExtract/domainExtract.py#🎜🎜 # 추천 관련 기사 및 튜토리얼: webserversecurity
위 내용은 어휘 분석을 사용하여 도메인 이름 및 IP 추출의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!