Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
bit4woo committed Dec 25, 2023
1 parent c229bde commit 8130708
Show file tree
Hide file tree
Showing 4 changed files with 150 additions and 130 deletions.
3 changes: 0 additions & 3 deletions src/Tools/TextAreaMenu.java
Original file line number Diff line number Diff line change
Expand Up @@ -88,9 +88,6 @@ public void actionPerformed(ActionEvent actionEvent) {
JMenuItem addToCustomAsset = new JMenuItem(new AbstractAction("Add To Custom Asset") {
@Override
public void actionPerformed(ActionEvent actionEvent) {
if (selectedItems.size() >=50) {
return;
}
DomainManager domainResult = guiMain.getDomainPanel().getDomainResult();
for (String item:selectedItems) {
try {
Expand Down
47 changes: 30 additions & 17 deletions src/utils/DomainNameUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,16 +27,39 @@

public class DomainNameUtils {


//可能有xxx.services,xxx.international这样的域名,适当提高长度
public static final String VAILD_DOMAIN_NAME_PATTERN = "^((?!-)[A-Za-z0-9-]{1,63}(?<!-)\\.)+[A-Za-z]{2,11}(?::\\d{1,5})?$";
//final String DOMAIN_NAME_PATTERN = "([A-Za-z0-9-]{1,63}(?<!-)\\.)+[A-Za-z]{2,6}";//-this.state.scroll 这种也会被认为是合法的。

public static final String GREP_DOMAIN_NAME_PATTERN = "((?!-)[A-Za-z0-9-]{1,63}(?<!-)\\.)+[A-Za-z]{2,11}";

public static final String GREP_DOMAIN_NAME_AND_PORT_PATTERN = "((?!-)[A-Za-z0-9-*]{1,63}(?<!-)\\.)+[A-Za-z]{2,11}(?::\\d{1,5})?";
//加上(?::\\d{1,5})?部分,支持端口模式
//加*号是为了匹配 类似 *.baidu.com的这种域名记录。

/**
* 和VAILD_DOMAIN_NAME_PATTERN的正则进行比较:
* 前面的部分可以是((?!-)[A-Za-z0-9-]{1,63}(?<!-)\.)即不以-开头的字符串,长度1到63;也可以是(\*\.),即*.
* 后缀部分即可以是[A-Za-z]{2,6},也可以是*
*
* a86ba224e43010880724df4a4be78c11
* administratoradministrator
* 虽然按照RFC的规定,域名的单个字符的模块长度可以是63。但是实际使用情况中,基本不可能有这样的域名。
*/
public static final String VAILD_WILDCARD_DOMAIN_NAME_PATTERN = "^((?!-)[A-Za-z0-9\\*-]{1,32}(?<!-)\\.)+([A-Za-z*]{1,11})$";
//final String DOMAIN_NAME_PATTERN = "([A-Za-z0-9-]{1,63}(?<!-)\\.)+[A-Za-z]{2,6}";//-this.state.scroll 这种也会被认为是合法的。



//域名校验和域名提取还是要区分对待
//domain.DomainProducer.grepDomain(String)是提取域名的,正则中包含了*号
public static boolean isValidDomain(String domain) {
if (null == domain) {
return false;
}

final String DOMAIN_NAME_PATTERN = "^((?!-)[A-Za-z0-9-]{1,63}(?<!-)\\.)+[A-Za-z]{2,6}(?::\\d{1,5})?$";
//final String DOMAIN_NAME_PATTERN = "([A-Za-z0-9-]{1,63}(?<!-)\\.)+[A-Za-z]{2,6}";//-this.state.scroll 这种也会被认为是合法的。
Pattern pDomainNameOnly = Pattern.compile(DOMAIN_NAME_PATTERN);
Pattern pDomainNameOnly = Pattern.compile(VAILD_DOMAIN_NAME_PATTERN);
Matcher matcher = pDomainNameOnly.matcher(domain);
boolean formateOk = matcher.matches();
if (formateOk){
Expand Down Expand Up @@ -78,18 +101,7 @@ public static boolean isValidWildCardDomain(String domain) {
return false;
}

/**
* 和isValidDomain()中的正则进行比较:
* 前面的部分可以是((?!-)[A-Za-z0-9-]{1,63}(?<!-)\.)即不以-开头的字符串,长度1到63;也可以是(\*\.),即*.
* 后缀部分即可以是[A-Za-z]{2,6},也可以是*
*
* a86ba224e43010880724df4a4be78c11
* administratoradministrator
* 虽然按照RFC的规定,域名的单个字符的模块长度可以是63。但是实际使用情况中,基本不可能有这样的域名。
*/
final String DOMAIN_NAME_PATTERN = "^((?!-)[A-Za-z0-9\\*-]{1,32}(?<!-)\\.)+([A-Za-z*]{1,6})$";
//final String DOMAIN_NAME_PATTERN = "([A-Za-z0-9-]{1,63}(?<!-)\\.)+[A-Za-z]{2,6}";//-this.state.scroll 这种也会被认为是合法的。
Pattern pDomainNameOnly = Pattern.compile(DOMAIN_NAME_PATTERN);
Pattern pDomainNameOnly = Pattern.compile(VAILD_WILDCARD_DOMAIN_NAME_PATTERN);
Matcher matcher = pDomainNameOnly.matcher(domain);
boolean formateOk = matcher.matches();
return formateOk && domain.contains("*");
Expand All @@ -102,6 +114,7 @@ public static boolean isValidWildCardDomain(String domain) {
* @return 判断StrDomain是否符合wildCardDomain的规则
* 注意:"seller.xx.example.com"不能匹配"*.seller.*.example.*"和日常的思路想法有点不同
*/
@Deprecated
public static boolean isMatchWildCardDomainOld(String wildCardDomain,String StrDomain){
String domainRegex = wildCardDomain;
//"seller.xx.example.com"应当匹配"*.seller.*.example.*"
Expand Down Expand Up @@ -442,10 +455,10 @@ public static void testWild(){

public static void main(String[] args) {
//System.out.println(isWhiteListTDL("test.example.co.th","example.com"));
//System.out.println(isValidDomain("www1.baidu.com"));
System.out.println(isValidDomain("test-api.xxx.services"));
//testWild();

//System.out.println(isValidWildCardDomain("aaaaaaaaa-aaaaaaaaaaaaaaa-aaaaaaaaaaaaaa.www1.baidu.com"));
System.out.println(dnsquery("www.google1.com",null));
//System.out.println(dnsquery("www.google1.com",null));
}
}
10 changes: 2 additions & 8 deletions src/utils/GrepUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -108,16 +108,12 @@ public static Set<String> grepDomain(String httpResponse) {
httpResponse = httpResponse.toLowerCase();
//httpResponse = cleanResponse(httpResponse);
Set<String> domains = new HashSet<>();
//"^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$"
final String DOMAIN_NAME_PATTERN = "((?!-)[A-Za-z0-9-*]{1,63}(?<!-)\\.)+[A-Za-z]{2,6}(?::\\d{1,5})?";
//加上(?::\\d{1,5})?部分,支持端口模式
//加*号是为了匹配 类似 *.baidu.com的这种域名记录。

List<String> lines = Commons.textToLines(httpResponse);

for (String line:lines) {//分行进行提取,似乎可以提高成功率?
line = decodeAll(line);
Pattern pDomainNameOnly = Pattern.compile(DOMAIN_NAME_PATTERN);
Pattern pDomainNameOnly = Pattern.compile(DomainNameUtils.GREP_DOMAIN_NAME_AND_PORT_PATTERN);
Matcher matcher = pDomainNameOnly.matcher(line);
while (matcher.find()) {//多次查找
String tmpDomain = matcher.group();
Expand Down Expand Up @@ -145,14 +141,12 @@ public static Set<String> grepDomainNoPort(String httpResponse) {
httpResponse = httpResponse.toLowerCase();
//httpResponse = cleanResponse(httpResponse);
Set<String> domains = new HashSet<>();
//"^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$"
final String DOMAIN_NAME_PATTERN = "((?!-)[A-Za-z0-9-]{1,63}(?<!-)\\.)+[A-Za-z]{2,6}";

List<String> lines = Commons.textToLines(httpResponse);

for (String line:lines) {//分行进行提取,似乎可以提高成功率?
line = decodeAll(line);
Pattern pDomainNameOnly = Pattern.compile(DOMAIN_NAME_PATTERN);
Pattern pDomainNameOnly = Pattern.compile(DomainNameUtils.GREP_DOMAIN_NAME_PATTERN);
Matcher matcher = pDomainNameOnly.matcher(line);
while (matcher.find()) {//多次查找
String tmpDomain = matcher.group();
Expand Down
Loading

0 comments on commit 8130708

Please sign in to comment.