【问题标题】:Using jq search value using regex使用正则表达式使用 jq 搜索值
【发布时间】:2020-03-10 09:45:39
【问题描述】:

我有这个 json 对象,我正在尝试找到一种在 jq 中使用正则表达式来搜索 issuer_dn 中超过 8 个字符的值的方法。像[A-Z]{8} 这样的正则表达式应该可以工作,但我无法得到结果。我还在学习jq,如果有其他可以使用的工具,请分享。

{
  "ip": "127.0.0.1",
  "data": {
    "tls": {
      "status": "success",
      "protocol": "tls",
      "result": {
        "handshake_log": {
          "server_hello": {
            "version": {
              "name": "TLSv1.2",
              "value": 771
            },
            "random": "hhdshfhhdhfhshdh",
            "session_id": "hjdsfyyueujhfjaskdfjjl",
            "cipher_suite": {
              "hex": "0xC014",
              "name": "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA",
              "value": 49172
            },
            "compression_method": 0,
            "ocsp_stapling": false,
            "ticket": false,
            "secure_renegotiation": true,
            "heartbeat": false,
            "extended_master_secret": false
          },
          "server_certificates": {
            "certificate": {
              "raw": "dGVzdCBkYXRhIGFuZCBnYXJiYWdldGVzdC==",
              "parsed": {
                "version": 3,
                "serial_number": "1234567890",
                "signature_algorithm": {
                  "name": "SHA256-RSA",
                  "oid": "1.2.840.113549.1.1.11"
                },
                "issuer": {
                  "common_name": [
                    "ABC"
                  ],
                  "country": [
                    "ABC"
                  ],
                  "locality": [
                    "ABC"
                  ],
                  "province": [
                    "ABC"
                  ],
                  "organization": [
                    "ABC"
                  ],
                  "organizational_unit": [
                    "ABC"
                  ]
                },
                "issuer_dn": "C=ABCD, ST=ABCD, L=ABCD, O=ABCD, OU=ABCD, CN=ABCD",
                "validity": {
                  "start": "2020-02-01T01:09:22Z",
                  "end": "2021-02-01T03:09:22Z",
                  "length": 7883663
                },
                "subject": {
                  "common_name": [
                    "ABC"
                  ],
                  "country": [
                    "ABC"
                  ],
                  "locality": [
                    "ABC"
                  ],
                  "province": [
                    "ABC"
                  ],
                  "organization": [
                    "ABC"
                  ],
                  "organizational_unit": [
                    "ABC"
                  ]
                },
                "subject_dn": "C=ABCD, ST=ABCD, L=ABCD, O=ABCD, OU=ABCD, CN=ABCD",
                "subject_key_info": {
                  "key_algorithm": {
                    "name": "RSA"
                  },
                  "rsa_public_key": {
                    "exponent": 65537,
                    "modulus": "dGVzdCBkYXRhIGFuZCBnYXJiYWdldGVzdC",
                    "length": 2048
                  },
                  "fingerprint_sha256": "73hh3g39920jfjj38723bb3993hh3774994002"
                },
                "extensions": {
                  "basic_constraints": {
                    "is_ca": true
                  },
                  "authority_key_id": "73hh3g39920jfjj38723bb3993hh3774994002",
                  "subject_key_id": "73hh3g39920jfjj38723bb3993hh3774994002"
                },
                "signature": {
                  "signature_algorithm": {
                    "name": "SHA256-RSA",
                    "oid": "1.2.840.113549.1.1.11"
                  },
                  "value": "dGVzdCBkYXRhIGFuZCBnYXJiYWdldGVzdC",
                  "valid": true,
                  "self_signed": true
                },
                "fingerprint_md5": "73hh3g39920jfjj38723bb3993hh3774994002",
                "fingerprint_sha1": "73hh3g39920jfjj38723bb3993hh3774994002",
                "fingerprint_sha256": "73hh3g39920jfjj38723bb3993hh3774994002",
                "tbs_noct_fingerprint": "73hh3g39920jfjj38723bb3993hh3774994002",
                "spki_subject_fingerprint": "73hh3g39920jfjj38723bb3993hh3774994002",
                "tbs_fingerprint": "73hh3g39920jfjj38723bb3993hh3774994002",
                "validation_level": "73hh3g39920jfjj38723bb3993hh3774994002",
                "redacted": false
              }
            },
            "validation": {
              "browser_trusted": false,
              "browser_error": "x509: failed to load system roots and no roots provided"
            }
          },
          "server_key_exchange": {
            "ecdh_params": {
              "curve_id": {
                "name": "secp256r1",
                "id": 23
              },
              "server_public": {
                "x": {
                  "value": "73hh3g39920jfjj38723bb3993hh3774994002",
                  "length": 256
                },
                "y": {
                  "value": "73hh3g39920jfjj38723bb3993hh3774994002",
                  "length": 256
                }
              }
            },
            "digest": "dGVzdCBkYXRhIGFuZCBnYXJiYWdldGVzdC",
            "signature": {
              "raw": "dGVzdCBkYXRhIGFuZCBnYXJiYWdldGVzdC",
              "type": "rsa",
              "valid": true,
              "signature_and_hash_type": {
                "signature_algorithm": "rsa",
                "hash_algorithm": "sha256"
              },
              "tls_version": {
                "name": "TLSv1.2",
                "value": 771
              }
            }
          },
          "client_key_exchange": {
            "ecdh_params": {
              "curve_id": {
                "name": "secp256r1",
                "id": 23
              },
              "client_public": {
                "x": {
                  "value": "dGVzdCBkYXRhIGFuZCBnYXJiYWdldGVzdC=",
                  "length": 256
                },
                "y": {
                  "value": "dGVzdCBkYXRhIGFuZCBnYXJiYWdldGVzdC=",
                  "length": 256
                }
              },
              "client_private": {
                "value": "dGVzdCBkYXRhIGFuZCBnYXJiYWdldGVzdC=",
                "length": 32
              }
            }
          },
          "client_finished": {
            "verify_data": "dGVzdCBkY"
          },
          "server_finished": {
            "verify_data": "dGVzdCBkY"
          },
          "key_material": {
            "master_secret": {
              "value": "dGVzdCBkY",
              "length": 48
            },
            "pre_master_secret": {
              "value": "dGVzdCBkY",
              "length": 32
            }
          }
        }
      },
      "timestamp": "2020-02-9T07:14:47Z"
    }
  }
}

【问题讨论】:

  • 请遵循minimal reproducible example 准则。你到底试过什么?还请尝试设计一个小而有说服力的示例 JSON,
  • 谢谢。当然,我会记住这一点。

标签: json regex jq


【解决方案1】:

我会使用以下内容:

.data.tls.result.handshake_log.server_certificates.certificate.parsed.issuer_dn \
 | select(length > 8)

你可以try it here

【讨论】:

    【解决方案2】:

    你可以使用:

    test("[A-Z]{8}")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-20
      • 2011-09-02
      • 1970-01-01
      • 2013-11-02
      相关资源
      最近更新 更多