CSV2PSKC(1)

πŸ“¦
version 1.4 Β· 4 versions
, in ubuntu resolute, ubuntu stonking

πŸ’– csv2pskc β€” the "turn your spreadsheet into a PSKC file" page πŸ’–

okay bestie, listen up, because this one is genuinely a little bop. it's csv2pskc, from the python-pskc crew, living in section 1 of your manual. she takes a CSV and hands you back a PSKC. that's the whole vibe. let's go πŸ’…


✨ NAME ✨

csv2pskc β€” Convert a CSV file to PSKC 🌸


πŸ¦‹ SYNOPSIS πŸ¦‹

csv2pskc [options] [<FILE>]

that's it. that's the whole summoning ritual. <FILE> is optional, and if you don't give her one she'll read from stdin, main character behaviour honestly ✨


πŸ‘‘ DESCRIPTION πŸ‘‘

csv2pskc reads a CSV file where the first line contains column labels, and the following lines contain key information, one key per line. so like… header row up top, one key per row below. simple. iconic. no cap πŸ’–


πŸŽ€ OPTIONS πŸŽ€

  • -h, --help β€” Display usage summary. the "help meee" flag, she's got you 🫢
  • -V, --version β€” Display version information. for when you need to know exactly which queen you're talking to πŸ‘‘
  • -o FILE, --output FILE β€” By default csv2pskc writes a PSKC file to stdout. This option can be used to save to a file instead. so if you don't wanna see her thoughts on your terminal, give her a file to write into πŸ’Ύ
  • -c COL,COL,.., --columns COL,COL,.. β€” Specify the meaning of the columns in the CSV file. By default the first row of the CSV file is expected to list the names of the columns. lowkey the most powerful flag here, ngl.

Any property of Key <#pskc.key.Key> instances can be used as well as Policy <#pskc.policy.Policy> properties via policy. For example: serial, secret, counter, time_offset, time_interval, interval, time_drift, issuer, manufacturer, response_length, policy.pin_min_length. that list is giving "menu at a fancy restaurant" and i'm obsessed πŸ“

This option can either specify a list of columns or a COL:KEY mapping where COL refers to the value found in the first line of the CSV file and KEY refers to a property as described above.

It is possible to map a single column in the CSV file to multiple PSKC properties (e.g. use of id+serial sets both the ID and device serial number to the value found in that column). one column, two jobs, she's multitasking, we love a hustler πŸ’…

  • --skip-rows N β€” By default the first row is treated as a header which contains labels. This option can be used to either skip more row (the first row of the CSV file will still be treated as a header) or to indicate that there is no header row.

In the latter case the --columns option is required. ⚠️ so if you're like "there's no header here bestie", you MUST tell her what the columns mean. she's not a mind reader (she is many things, but not that).

  • -x COL=VALUE, --set COL=VALUE β€” Specify properties that are added to all keys in the generated PSKC file. Accepted labels are the same as for the --columns option.

This can be useful for setting the issuer, manufacturer or other common properties globally. one -x and every single key gets the same drip. matching outfits fr fr πŸ‘―

  • -p PASS/FILE, --password PASS/FILE, --passwd PASS/FILE β€” Encrypt the PSKC file with the specified password. If the argument refers to a file the password is read from the file instead. πŸ” three names, one queen. very "i go by several aliases" of her.
  • -s KEY/FILE, --secret KEY/FILE β€” A hex encoded encryption key or a file containing the binary key (raw data, not encoded). note that: raw data, not encoded. don't hand her a pretty base64 string and expect it to work, that's not the vibe 🚫✨
  • -e ENCODING, --secret-encoding ENCODING β€” Specify the encoding to use for reading key material from the CSV file. By default HEX encoding is used. Valid encodings are: base32, base64 or hex. that's the whole list, don't invent more, she said what she said πŸ’€

πŸ’œ Author πŸ’œ

Arthur de Jong


2014-2025 Arthur de Jong


okay and finally, the receipts: this is version 1.4, dated Dec 30, 2025, and it ships as part of python-pskc in section 1 of the manual. that's the whole page bestie, go convert some spreadsheets, you're gonna ate πŸ’–βœ¨πŸŽ€πŸ¦‹πŸŒΈπŸ’…πŸ«Ά

πŸ“¦ where this page comes from