【问题标题】:regex sed sql database hash:salt extraction正则表达式 sed sql 数据库哈希:盐提取
【发布时间】:2018-12-09 04:50:59
【问题描述】:

我正在查看包含电子邮件、用户名、散列密码、盐和 IP 地址的原始 sql 数据库。我试图只提取哈希和盐。这是一个例子:

user@email.com:username:b30805e05c07782d3901bf8814c8cb9d:2WPe'KKYUti3ts2E>$np,:11.22.33.44
user2@email.com:username2:969b9be2f311ac32b7f5c475b115fae6:<t%a!>[4?:OqGHvYWYdZ0:44.33.22.11
user3@email.com:username3:550854338c55ef110fdc599806f087e6:;yzkeZ/FgCMqM:8&Z!S0r:12.34.56.78
user4@email.com:username4:a5477d971ff85fd4052cd745677e6751:&PmDLnlh{fW[&KULDpYz@:87.65.43.21

我曾考虑在冒号 (:) 处分隔每个部分,并删除最后一个冒号右侧的所有内容,但冒号是盐的一半。所以一行中冒号的数量并不一致。我完全被难住了。有人请帮忙。

【问题讨论】:

  • 所以你知道你的盐在最后一个:和第二个:之间,你的哈希值在第一个:和第二个:之间——基于这个你可以应用前瞻并向后构造一个将获取它的正则表达式。如果需要,regexpal.com 等许多工具都会派上用场。

标签: regex database bash sed command-line


【解决方案1】:

我提拔了@potong 的sed,这只是一个命令。
更复杂的是awkcut

awk -F: '{printf("%s %s", $3, $4); for (i=5;i<NF;i++) printf(":%s",$i); print ""}' file
cut -d: -f3- <(rev file|cut -d: -f2- |rev)

【讨论】:

    【解决方案2】:

    这可能对你有用(GNU sed):

    sed -r 's/^([^:]*:){2}([^:]*):(.*):.*$/\2 \3/' file
    

    您知道前三个字段和第五个字段尊重字段分隔符,但第四个不。删除前两个字段,保留第三个并使用贪婪来识别第四个,即(.*): 将返回以: 结尾的最大字符串。

    【讨论】:

      【解决方案3】:

      下面的正则表达式应该可以帮助你:

      ^(?:.*?):(?:.*?):(.*?):(.*):.*$
      

      ^(?:(?:.*?):){2}(.*?):(.*):.*$
      

      演示:https://regex101.com/r/03wuCu/1

      测试:

      user@email.com:username:b30805e05c07782d3901bf8814c8cb9d:2WPe'KKYUti3ts2E>$np,:11.22.33.44
      user2@email.com:username2:969b9be2f311ac32b7f5c475b115fae6:<t%a!>[4?:OqGHvYWYdZ0:44.33.22.11
      user3@email.com:username3:550854338c55ef110fdc599806f087e6:;yzkeZ/FgCMqM:8&Z!S0r:12.34.56.78
      user4@email.com:username4:a5477d971ff85fd4052cd745677e6751:&PmDLnlh{fW[&KULDpYz@:87.65.43.21
      

      输出:

      Match 1
      Group 1.    24-56   `b30805e05c07782d3901bf8814c8cb9d`
      Group 2.    57-78   `2WPe'KKYUti3ts2E>$np,`
      
      Match 2
      Group 1.    117-149 `969b9be2f311ac32b7f5c475b115fae6`
      Group 2.    150-171 `<t%a!>[4?:OqGHvYWYdZ0`
      
      Match 3
      Group 1.    210-242 `550854338c55ef110fdc599806f087e6`
      Group 2.    243-264 `;yzkeZ/FgCMqM:8&Z!S0r`
      
      Match 4
      Group 1.    303-335 `a5477d971ff85fd4052cd745677e6751`
      Group 2.    336-357 `&PmDLnlh{fW[&KULDpYz@`
      

      【讨论】:

        猜你喜欢
        • 2018-01-12
        • 2013-06-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-04
        • 1970-01-01
        相关资源
        最近更新 更多