# Patrones y palabras claves en el código

## Búsqueda de patrones y palabras claves <a href="#busqueda-de-patrones-y-palabras-claves" id="busqueda-de-patrones-y-palabras-claves"></a>

### grep <a href="#grep" id="grep"></a>

```sh
# Expresiones regulares
grep -Eorin "<regex>" ./app-decompiled

# Búsqueda de archivos por palabras claves en su interior
grep -Erinl "<word-1>|<word-2>|<word-3>" ./app-decompiled
grep -Erin -f <wordlist.txt> ./app-decompiled

# Búsqueda de palabras claves en código fuente obtenido desde el proceso de decompilación
grep -Eir "<word-1>|<word-2>|<word-3>" ./app-decompiled/sources/<path>

# Búsqueda de palabras claves en registros de logs desde código fuente obtenido desde el proceso de decompilación
grep -Eir "<word-1>|<word-2>|<word-3>" ./app-decompiled/sources/<path> | grep -i log
```

* -E = expresión regular extendida (patrones).
* -o = muestra sólo las partes condicientes.
* -r = recursivo (revisa todos los archivos en cada directorio).
* -i = ignora las distinciones entre mayúsculas y minúsculas (not case sensitive).
* -n = número de línea dentro del archivo.
* -l = muestra sólo los nombres de archivos.
* \<regex> = patrón de expresión regular.

### Expresiones regulares <a href="#expresiones-regulares" id="expresiones-regulares"></a>

```sh
# Correo electrónico
"\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b"

# UUID (Universally Unique IDentifier)
"[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}"
```

### Palabras claves <a href="#palabras-claves" id="palabras-claves"></a>

* <https://github.com/MrW0l05zyn/pentesting/blob/master/wordlists/sensitive-keywords.txt>

```sh
grep -Erin -f <wordlist.txt> ./app-decompiled
```

## Herramientas

### APKLeaks

```sh
apkleaks -f <application.apk>
```

### APKscan

```sh
apkscan <application.apk>
```

### TruffleHog

```sh
# APK
trufflehog filesystem <application.apk>

# Files
apktool d <application.apk> -o app-decompiled
trufflehog filesystem app-decompiled
```
