Já vi muitas perguntas semelhantes, mas nenhuma resposta.
Basicamente, estou tentando usar grep em chaves privadas codificadas em milhares de arquivos para encontrar os maliciosos e pular os legítimos, que definem essa string como variável. Então, quero corresponder a todos os arquivos que têm "BEGIN PRIVATE KEY-----" e 1x ou 0x CR e fim de linha. Então, tentei todos os tipos de greps, mas nada realmente funciona. Eu esperava que isso funcionasse.
# grep -iIREn "BEGIN PRIVATE KEY-----\r" /tmp/hck-bck/
grep: warning: stray \ before r
# grep -iIREn "BEGIN PRIVATE KEY-----" /tmp/hck-bck/
/tmp/hck-bck/style.php:123:$privateKey = '-----BEGIN PRIVATE KEY-----
# grep -iIREn "BEGIN PRIVATE KEY-----(\r)" /tmp/hck-bck/
grep: warning: stray \ before r
# grep -iIREn "BEGIN PRIVATE KEY-----[[:cntrl:]]" /tmp/hck-bck/
# grep -iIREn "BEGIN PRIVATE KEY-----[[:cntrl:]]?$" /tmp/hck-bck/
# grep -iIREn "BEGIN PRIVATE KEY-----.$" /tmp/hck-bck/
# grep -iIREn "BEGIN PRIVATE KEY-----$" /tmp/hck-bck/
# grep -iIREn 'BEGIN PRIVATE KEY-----[\r]' /tmp/hck-bck/
# grep -iIREn 'BEGIN PRIVATE KEY-----[[:cntrl:]]?$' /tmp/hck-bck/
# grep -iIREn "BEGIN PRIVATE KEY-----\\r" /tmp/hck-bck/
grep: warning: stray \ before r
#
Então, se eu não colocar nada depois do último hífen (-), terei muitos falsos positivos.
Usar [: cntrl:] realmente corresponde, mas não gera nada, então não consigo dizer no log qual arquivo era. Usar '\r' que supostamente funciona para CR gera aviso e nenhuma correspondência. Tentei aspas simples e duplas. Se eu usar -P em vez de -E também não há diferença. Usar '\r' realmente corresponderia ao literal \r como parte da string definida em alguns arquivos php.
#cat -A style.php
....
}^M$
$privateKey = '-----BEGIN PRIVATE KEY-----^M$
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC30w49ItOfldQ6^M$
dB+0gEbeeW6BEClcx+NZzmpX2YcRHFV80BurCWBavPFehV8Sy9yL2u/y3mv3QJJ+^M$
x2kKvly8zKx4GbXPbsWJk6Ho0Rxq49oXkBarQBOqROZeaFF3Mzpd/PdLSsxEvG1M^M$
tQd2wOx5r6XD86jyfN7LAJUUVvbJvn1CHo03nFH12k1KYwLnQfzQI5nX7yQLa0jt^M$
fG5TA34Fm0EMbFdHWjAN/VdEjoJI6it4PCQP5wk4ga2BvVquQkuPbsbr8364d3I6^M$
GuGAKDR0wfkT20n0E6kAmDI3ol2bfa0rQncqUS3OU3INpxOZS8eKCIgC3bM81mdi^M$
MQ6TsAQ9AgMBAAECggEAJLGSlA2RpLdpx8lKUuOQQfSHZGfveb/E2DZl7+dSGM5J^M$
.............
Então o arquivo tem um CR e fim de linha. Por que usar [:cntrl:] não mostra nenhuma saída correspondente? E como especificar corretamente o CR após o último traço para obter a correspondência?
adicionando saída para algumas sugestões
# grep -ERn $'BEGIN PRIVATE KEY-----\r?$' /tmp/hck-bck/
# grep -ERn $'BEGIN PRIVATE KEY-----.$' /tmp/hck-bck/
# grep -ERn $'BEGIN PRIVATE KEY-----' /tmp/hck-bck/
/tmp/hck-bck/style.php:123:$privateKey = '-----BEGIN PRIVATE KEY-----
#