Estoy tratando de agregar contraseñas de texto plano a las filas correspondientes en una tabla de usuarios exportados. Tengo dos archivos:
utilizable
barry hash1
fred hash2
mary hash3
rich hash2
crackpasstable
ptpass1 hash1
ptpass2 hash2
Quiero que la salida se vea como:
mesa combinada
barry hash1 ptpass1
fred hash2 ptpass2
mary hash3
rich hash2 ptpass2
He probado el siguiente código basado en otra entrada que encontré, pero esto solo imprime las filas que tienen coincidencias, no todas:
$ awk "NR==FNR{a[$2]=$0; next} a[$2]>0{print a[$2],$1}" usertable crackpasstable > combinedtable
Quiero intentar imprimir todas las filas en la tabla de usuario (con suerte en el orden original) y simplemente agregar las contraseñas coincidentes en una nueva columna si fui capaz de descifrarlas.
Gracias
Respuestas
0 para la respuesta № 1pr.awk:
# Usage:
# awk -f pr.awk crackpasstable usertable > combintedtable
BEGIN {
ct = ARGV[1]
ARGV[1] = "" # read ARGV[1] file implicitly, ARGV[2] file
# explicitly
while (getline < ct > 0) {
p = $1
h = $2
phash[h] = p
}
}
{
h = $2
if (h in phash)
print $0 " " phash[h]
else
print
}
0 para la respuesta № 2
casi tienes razón leer en crackpasstable
, luego escanear usertable
y añadir pase desde el archivo cargado
# read in the first file
FNR == NR {
hashes [$2] = $1 # hopefully, there are no repeating hash values
next
}
# scan all other files
$2 in hashes {
$0 = $0 "t" hashes[$2]
}
1 # or {print} if you prefer to be explicit
USO:
> ThisScript crackpasstable usertable
0 para la respuesta № 3
o
awk "NR==FNR {a[$2]=$1;next} {print ($2 in a) ? $0"t"a[$2] : $0}" crackpasstable usertable