Ejemplos de uso
Buscar en un solo archivo
En este caso vamos a realizar la búsqueda en un archivo en particular. Vamos a usar el archivo testfile.txt que contiene unas cuantas lineas con posibles números de tarjetas. Este archivo contiene el siguiente texto:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus quam nibh, tempus ac pulvinar at, finibus eu lacus. Vestibulum vel nibh vitae lorem scelerisque consequat. Fusce cursus dui auctor lorem volutpat fermentum ut ac lacus. Sed vitae leo orci. Sed consequat scelerisque dolor, quis dictum urna porta sit amet. Donec non felis non tellus consectetur sagittis. Curabitur venenatis, magna ac gravida mollis, sem ligula eleifend augue, ac laoreet nisl nulla vel diam. Nullam euismod turpis arcu, id interdum turpis porttitor vitae. Ut sit amet est nulla. Nulla metus orci, sagittis vel mollis a, porta eu leo. Nulla vel mauris vitae lectus pellentesque aliquet. Quisque a risus risus. Curabitur vitae finibus leo. Nullam molestie lobortis dui ac rutrum. Sed ac justo nibh.
Duis ac maximus diam. Morbi laoreet scelerisque elit, a porta tellus laoreet vitae. Integer tincidunt rutrum ex, nec gravida felis euismod in. Fusce sed orci felis. Proin arcu justo, commodo vel dolor ut, ultricies porta enim. Sed blandit, justo hendrerit tincidunt luctus, turpis dui congue ligula, in placerat neque magna non nulla. Nulla volutpat aliquet metus, imperdiet auctor augue ullamcorper sed. Donec dui magna, efficitur id magna a, iaculis porta tortor. Morbi purus urna, consequat eu volutpat non, malesuada sit amet urna. Ut imperdiet neque massa, quis tincidunt odio rhoncus et. Morbi id viverra mauris. Proin dictum, nulla vel eleifend ultrices, sem lorem accumsan nisl, nec accumsan nulla metus et justo. Nunc feugiat nec nibh in mollis. Fusce volutpat ultrices pretium.
Donec bibendum blandit vehicula. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec in quam at urna faucibus semper. Fusce lobortis, dolor ut porttitor eleifend, mi velit aliquet urna, et euismod risus est ornare lorem. Morbi sapien neque, dictum in sapien ac, suscipit egestas diam. Phasellus aliquam pellentesque feugiat. Donec varius turpis a feugiat eleifend. Maecenas tristique cursus elit, et aliquet lacus scelerisque at.
Interdum et malesuada fames ac ante ipsum primis in faucibus. Vivamus efficitur mattis leo, nec fringilla diam finibus finibus. Quisque vestibulum feugiat elit, et lobortis ipsum porttitor a. Morbi placerat convallis orci, at venenatis elit viverra consectetur. Sed efficitur mi vitae hendrerit porta. Nam at dolor vitae augue varius ultrices eget sit amet enim. Praesent eros sem, rhoncus in tempus aliquam, porta id erat. Pellentesque nisl nulla, lacinia ac sem convallis, maximus vehicula nulla. Phasellus viverra nisi a euismod ornare. Pellentesque finibus, dolor non mattis hendrerit, orci orci egestas arcu, vitae lacinia felis nunc id nisi. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Integer convallis justo vitae libero iaculis, non pulvinar ante sodales. Phasellus maximus aliquet risus id sollicitudin. Nullam tincidunt aliquet finibus. Cras aliquet justo non dapibus elementum. Proin iaculis urna at ex convallis tempus.
Nullam semper, dui at faucibus placerat, lorem sem lobortis est, et dapibus velit risus quis felis. Nunc in tellus sed quam consectetur laoreet. Curabitur enim elit, venenatis ut ipsum ut, ultrices sagittis sapien. Nulla at imperdiet metus. Quisque id rhoncus est. Sed urna ipsum, consequat eu congue ut, ornare et odio. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
This contains a possible PAN of length 16: 5460124879850115 and only one (Invalid Luhn)
This contains a possible PAN of length 19: 4231654897895460124 and only one (Valid Luhn but no BIN in file)
This contains more than one possible PANS: 012343567890654659987770694500211348442223369879858420 with different lengths
This contains a possible PAN of length 16: 546012 4264986520A12467803 5460124879850115 55555555A55555555 in the middle of incomplete values
This contains more than one possible PANS: 01234356789065432108777965450021134823369879858420 with different lengths
This contains a possible PAN of length 16: 546012 4264986520A12467803 4303070479835141 55555555A55555555 in the middle of incomplete values
Pellentesque mattis quis eros vitae tristique. Ut feugiat eros ut ultrices vulputate. Nam ex nunc, bibendum sit amet erat id, accumsan rhoncus mi. Curabitur a eros in est eleifend volutpat ac sed mi. Mauris fringilla augue vel tellus condimentum vestibulum. Vivamus sit amet magna sapien. Phasellus in tristique magna. Vestibulum a ipsum id risus lobortis rutrum vitae id leo. Sed vel sem ultrices, mattis tortor eget, tempor metus. Praesent rhoncus faucibus ex a pretium.
Nulla facilisi. Pellentesque sapien magna, elementum vel ultrices sed, luctus ac lectus. Interdum et malesuada fames ac ante ipsum primis in faucibus. Nulla laoreet ex enim, ut suscipit massa volutpat vel. Duis metus quam, mollis nec augue vel, facilisis elementum libero. Cras bibendum tellus a lorem ultrices, in vehicula arcu euismod. Nullam quis commodo mi, vitae tempus massa.
Duis tristique quam eu erat mollis, nec convallis dui dictum. Integer et pharetra nulla. Morbi eget leo id arcu volutpat volutpat. Fusce ipsum justo, consectetur sed nisl eu, molestie tristique metus. Nunc luctus egestas sapien eu eleifend. In facilisis pharetra nisi, vitae consequat velit venenatis viverra. Donec sit amet laoreet dolor. Vivamus suscipit aliquam velit id sollicitudin. Aenean augue lectus, vestibulum et ultricies ac, aliquet ut magna. Cras interdum varius ante ac semper. Aliquam id ante id diam placerat facilisis eget sit amet lorem. Vivamus elit felis, auctor eget dolor a, rhoncus mollis est. Sed eget eleifend neque, ac convallis tortor. Donec scelerisque magna tellus, condimentum commodo eros faucibus ut. Vestibulum tincidunt feugiat lorem, eget euismod dui ornare sed. Fusce et nisl rutrum, ultricies nunc porttitor, vestibulum ligula.
Ut vitae molestie lectus. Nam faucibus molestie tortor, nec porta purus pellentesque eget. Aenean eleifend lacinia tincidunt. Pellentesque pulvinar venenatis tortor sed dapibus. Sed libero orci, scelerisque sed blandit in, viverra sit amet nisi. In ex lacus, malesuada et sollicitudin ac, suscipit vitae dui. Nulla at vulputate sem. Interdum et malesuada fames ac ante ipsum primis in faucibus. Aliquam suscipit rutrum rhoncus. Suspendisse turpis elit, tincidunt id rutrum non, interdum in mi. Aenean sollicitudin ultrices quam id elementum. Proin pretium sagittis nisl, eu blandit magna maximus ac. Donec vitae elit vitae ligula pellentesque ultrices. Sed tincidunt erat vitae nisi tempor, nec eleifend sapien tristique. Nulla facilisi.
Curabitur lobortis nisi sit amet sem lobortis, ut dapibus est tempus. Integer sit amet tellus justo. Proin vestibulum, ligula nec vehicula hendrerit, purus orci elementum nibh, nec sagittis augue est vitae nibh. Sed pretium vel neque in lobortis. In euismod varius facilisis. Mauris pellentesque, arcu a ullamcorper vehicula, erat ligula vehicula dui, eu finibus ante mi non nunc. Maecenas at scelerisque augue. Maecenas egestas rutrum hendrerit. Quisque molestie tellus a lobortis interdum.
Dummy: 40134478940 561232 4018541234659 782 Garbage: 4444555566661111
MASTER TEST CARD: 5430776478902145 5437004645780143 Garbage: 5555666677778888
UNKNOWN: 7213457890456129 (No valid BIN for Master or VISA)
A couple with valid BIN of length 4: 5122562048946520 and 5122562048946529878
A couple with valid BIN of length 5: 5163964487998501 and 5163967787994987927
A couple with valid BIN of length 6: 4006106887790013 and 4006108687720469822
A couple with valid BIN of length 7: 4329386798280458 and 4329386798280798804
A couple with valid BIN of length 8: 4238370190788458 and 4238370190788779828
A PAN of length 16: 4006106887790013
A PAN of length 19: 4006108687720469822
A card number with great confidence: 5473478799804682 and 5473478799728340989
A number located in field 35: 5473477774982067 and 5473477774983330117
Real PANs discarded if --delimited is applied: 54734777749820673 and 54734777749833301175
Para buscar en este archivo simplemente le indicamos el nombre de archivo al comando y el resultado es el siguiente:

Vemos que se encontraron 14 valores posibles de números de tarjeta, 8 de los cuales tienen nivel de confianza 2 y 6 con nivel 3
Si quisiéramos ver el detalle de los valores encontrados, podemos agregar el flag --print de esta forma:

Búsqueda en múltiples archivos
Podemos realizar una búsqueda en múltiples archivos a la vez, por ejemplo si tenemos unos cuantos archivos de log, podemos buscar en todos a la vez.

O mostrando el detalle:

Nivel paranoico
Si usamos el flag --paranoid vamos a eliminar la mayoria de los filtros. Usaremos el mismo archivo del principio para comparar los resultados obtenidos
Mostrando el detalle:

Búsqueda en Excel
Vamos a ver como buscar en archivos de Excel. Para ello debemos agregar el flag --excel
Y mostrando el detalle:

Performance
Vamos a procesar unos cuantos archivos de texto y de Excel, que demoran cierto tiempo. Primero los vamos a procesar normalmente, en forma secuencial:
Vemos que procesamos 52 archivos de los cuales 27 contienen potenciales valores de PAN en claro. El tiempo total insumido es de casi 20 segundos.
Ahora realizaremos exactamente la misma búsqueda pero paralelizaremos el proceso:
Vemos que ahora el tiempo se ha reducido a poco mas de 12 segundos. Posiblemente la reducción no ha sido mayor debido a que la mayor parte del tiempo lo ha consumido el procesamiento de un archivo grande de Excel, pero el tiempo total ha bajado casi al tiempo que ha consumido ese archivo ya que el resto ha sido procesado en paralelo.
Ahora veremos como funciona el flag --massive en cuanto a performance y como difiere la salida al usar ese flag.
Notemos que no es necesario indicar --parallel ya que eso queda implícito.

Se observa que ahora se procesan primero todos los archivos de texto plano y a continuacion los archivos de Excel. Ademas vemo que se van mostrando los resultados a medida que los archivos van siendo procesados, y para cada uno se muestra el tamaño, el tiempo que ha tomado procesarlo, la cantidad de números encontrados, el estado (DIRTY o CLEAN para indicar si el archivo contiene o no números de tarjeta) y el nombre. También podemos observar que hay un archivo de Excel que ha sido saltado por tener un tamaño mayor al límite (ocupa 24 Mb cuando el límite son 10 Mb)