CDPO is a tool to validate, de-duplicate, combine, query, and encrypt track data recovered from a breach.
CDPO is not claiming to be 100% accurate and no one, including the developer(s) are responsible for any innacuracies, although we will try to help troubleshoot and fix issues.
Created 2017-06 by David Pany (@DavidPany)
To run CDPO and use the default database name "CDPO.sqlite":
CDPO.py
To run CDPO with a specific database name to create or load:
CDPO.py coolpathofdb.sqlite
If you are using a database that already exists, CDPO will ask if you'd like to
- delete the existing DB and make a new one with that name
- load the existing DB
- keep the existing DB and make a new one with a timestmap in the name
import ..\path\to\files\*
combine NEWhugeCOLLECTIONname
You will be prompted for the names of loaded collections to combine into NEWhugeCOLLECTIONname. Answer with "ALL" to join it all
query ExistingCollection
You will be asked for filter parameters for
- expiration date
- brand
- track data format
show
stat SuperAwesomeCollection
csvstats
file needThisCollectoin
quit
or
exit
- Find Track Data output files from breach
- Decode Track Data output files to clear text if encoded
- Load into CDPO using the import command described above
- CDPO uses a track format regex to identify track formats 1 and 2.
- If a line in the input file doesn't match the regex, it is dropped.
- CDPO performs Luhn validation on PANs.
- If the PAN doesn't validate Luhn, CDPO will test a substring of the PAN in case the malware accidentally scraped a random number before the PAN. This could be a bad idea since some card brands apparently don't require Luhn, but let's test this together :)
- If a PAN or it's substrings don't match Luhn, the data is dropped.
- CDPO checks to see if the expiration month is between 1 and 12. If not, CDPO drops the record.
- CDPO does some simple brand matching against data from https://en.wikipedia.org/wiki/Payment_card_number.
- This is not a perfect process. Please confirm with card brands or banks.
- Your input files must not be encrypted.
- CDPO will load the data into a SQLITE database where the individual PAN (Primary Account Number) records are RC4 encrypted with a password you provide when starting CDPO.
Feel free to make a merge request or open an issue with Github. If you need immediate assistance, please contact @DavidPany on Twitter.