This commit is contained in:
Mikail Gedik 2026-01-11 19:51:25 +01:00 committed by GitHub
commit 53f930f764
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 275 additions and 381 deletions

View file

@ -1,14 +1,14 @@
<!DOCTYPE html>
<!-- https://github.com/drduh/YubiKey-Guide/blob/master/templates/passphrase.html <!-- https://github.com/drduh/YubiKey-Guide/blob/master/templates/passphrase.html
https://raw.githubusercontent.com/drduh/YubiKey-Guide/master/templates/passphrase.html https://raw.githubusercontent.com/drduh/YubiKey-Guide/master/templates/passphrase.html
Save the raw file ^ then open in a browser to render and print --> Save the raw file ^ then open in a browser to render and print -->
<!DOCTYPE html> <html lang="en-US">
<html>
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="github.com/drduh/YubiKey-Guide"> <meta name="description" content="github.com/drduh/YubiKey-Guide">
<title>credentials</title> <title>credentials</title>
<style type="text/css"> <style>
:root { :root {
--color-dark: #000000; --color-dark: #000000;
--color-gray: #dedede; --color-gray: #dedede;
@ -23,15 +23,17 @@
td { td {
border: 0.05rem solid var(--color-dark); border: 0.05rem solid var(--color-dark);
height: 1rem; height: 1rem;
min-width: 1rem;
} }
td.alt, tr.alt { td.alt, tr.alt {
background: var(--color-gray); background: var(--color-gray);
} }
</style> </style>
</head> </head>
<body> <body>
<table> <table>
<colgroup span="38" width="20"></colgroup> <colgroup span="38"></colgroup>
<tr> <tr>
<td></td> <td></td>
<td class="alt" colspan="10">date (yyyy-mm-dd)</td> <td class="alt" colspan="10">date (yyyy-mm-dd)</td>
@ -45,316 +47,18 @@
<td class="alt" colspan="10">user pin</td> <td class="alt" colspan="10">user pin</td>
<td></td> <td></td>
</tr> </tr>
<tr> <tr><td></td><td>2</td><td>0</td><td>2</td><td>_</td><td>-</td><td>_</td><td>_</td><td>-</td><td>_</td><td>_</td><td></td><td></td><td></td> <td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td><td></td><td></td><td></td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td><td></td></tr>
<td></td> <tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td> <td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td><td></td><td></td><td></td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td><td></td></tr>
<td>2</td> <tr><td></td><td class="alt" colspan="10">key id</td><td></td><td></td><td></td> <td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td><td></td><td></td><td></td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td><td></td></tr>
<td>0</td> <tr><td></td><td class="alt" colspan="2" rowspan="2">0x</td> <td>_</td><td>_</td><td>_</td><td>_</td><td>_</td><td>_</td><td>_</td><td>_</td><td></td><td></td><td></td> <td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td><td></td><td></td><td></td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td><td></td></tr>
<td>2</td> <tr><td></td><td>_</td><td>_</td><td>_</td><td>_</td><td>_</td><td>_</td><td>_</td><td>_</td><td></td><td></td><td></td> <td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td><td></td><td></td><td></td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td><td></td></tr>
<td>5</td> <tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td> <td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td><td></td><td></td><td></td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td><td></td></tr>
<td>-</td> <tr><td></td><td class="alt" colspan="10">serial number</td><td></td><td></td><td></td> <td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td><td></td><td></td><td></td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td><td></td></tr>
<td>_</td> <tr><td></td><td>_</td><td>_</td><td>_</td><td>_</td><td>_</td><td>_</td><td>_</td><td>_</td><td>_</td><td>_</td><td></td><td></td><td></td> <td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td><td></td><td></td><td></td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td><td></td></tr>
<td>_</td> <tr class="alt">
<td>-</td> <td colspan="38">for each char in passphrase, mark corresponding column on sequential row, then fold inward and tamper seal</td>
<td>_</td>
<td>_</td>
<td></td>
<td></td>
<td></td>
<td>0</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td></td>
<td></td>
<td></td>
<td>0</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td></td>
</tr> </tr>
<tr> <tr> <td>-</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td>0</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td></td>
<td></td>
<td></td>
<td>0</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td></td>
</tr>
<tr>
<td></td>
<td class="alt" colspan="10">key id</td>
<td></td>
<td></td>
<td></td>
<td>0</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td></td>
<td></td>
<td></td>
<td>0</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td></td>
</tr>
<tr>
<td></td>
<td class="alt" colspan="2" rowspan="2">0x</td>
<td>_</td>
<td>_</td>
<td>_</td>
<td>_</td>
<td>_</td>
<td>_</td>
<td>_</td>
<td>_</td>
<td></td>
<td></td>
<td></td>
<td>0</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td></td>
<td></td>
<td></td>
<td>0</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td></td>
</tr>
<tr>
<td></td>
<td>_</td>
<td>_</td>
<td>_</td>
<td>_</td>
<td>_</td>
<td>_</td>
<td>_</td>
<td>_</td>
<td></td>
<td></td>
<td></td>
<td>0</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td></td>
<td></td>
<td></td>
<td>0</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td>0</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td></td>
<td></td>
<td></td>
<td>0</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td></td>
</tr>
<tr>
<td></td>
<td class="alt" colspan="10">serial number</td>
<td></td>
<td></td>
<td></td>
<td>0</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td></td>
<td></td>
<td></td>
<td>0</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td></td>
</tr>
<!-- serial number row -->
<tr>
<td></td>
<td>_</td>
<td>_</td>
<td>_</td>
<td>_</td>
<td>_</td>
<td>_</td>
<td>_</td>
<td>_</td>
<td>_</td>
<td>_</td>
<td></td>
<td></td>
<td></td>
<td>0</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td></td>
<td></td>
<td></td>
<td>0</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td></td>
</tr>
<!-- blank space row -->
<tr class="alt">
<td colspan="40">for each char in passphrase, mark corresponding column on sequential row, then fold inward and tamper seal</td>
</tr>
<!-- passphrase rows -->
<tr>
<td>-</td>
<td>A</td> <td>A</td>
<td>B</td> <td>B</td>
<td>C</td> <td>C</td>
@ -393,8 +97,7 @@
<td>9</td> <td>9</td>
<td></td> <td></td>
</tr> </tr>
<tr class="alt"> <tr class="alt"> <td>-</td>
<td>-</td>
<td>A</td> <td>A</td>
<td>B</td> <td>B</td>
<td>C</td> <td>C</td>
@ -433,8 +136,7 @@
<td>9</td> <td>9</td>
<td></td> <td></td>
</tr> </tr>
<tr> <tr> <td>-</td>
<td>-</td>
<td>A</td> <td>A</td>
<td>B</td> <td>B</td>
<td>C</td> <td>C</td>
@ -473,8 +175,7 @@
<td>9</td> <td>9</td>
<td></td> <td></td>
</tr> </tr>
<tr class="alt"> <tr class="alt"> <td>-</td>
<td>-</td>
<td>A</td> <td>A</td>
<td>B</td> <td>B</td>
<td>C</td> <td>C</td>
@ -513,8 +214,7 @@
<td>9</td> <td>9</td>
<td></td> <td></td>
</tr> </tr>
<tr> <tr> <td>-</td>
<td>-</td>
<td>A</td> <td>A</td>
<td>B</td> <td>B</td>
<td>C</td> <td>C</td>
@ -553,8 +253,7 @@
<td>9</td> <td>9</td>
<td></td> <td></td>
</tr> </tr>
<tr class="alt"> <tr class="alt"> <td>-</td>
<td>-</td>
<td>A</td> <td>A</td>
<td>B</td> <td>B</td>
<td>C</td> <td>C</td>
@ -593,8 +292,7 @@
<td>9</td> <td>9</td>
<td></td> <td></td>
</tr> </tr>
<tr> <tr> <td>-</td>
<td>-</td>
<td>A</td> <td>A</td>
<td>B</td> <td>B</td>
<td>C</td> <td>C</td>
@ -633,8 +331,7 @@
<td>9</td> <td>9</td>
<td></td> <td></td>
</tr> </tr>
<tr class="alt"> <tr class="alt"> <td>-</td>
<td>-</td>
<td>A</td> <td>A</td>
<td>B</td> <td>B</td>
<td>C</td> <td>C</td>
@ -673,8 +370,7 @@
<td>9</td> <td>9</td>
<td></td> <td></td>
</tr> </tr>
<tr> <tr> <td>-</td>
<td>-</td>
<td>A</td> <td>A</td>
<td>B</td> <td>B</td>
<td>C</td> <td>C</td>
@ -713,8 +409,7 @@
<td>9</td> <td>9</td>
<td></td> <td></td>
</tr> </tr>
<tr class="alt"> <tr class="alt"> <td>-</td>
<td>-</td>
<td>A</td> <td>A</td>
<td>B</td> <td>B</td>
<td>C</td> <td>C</td>
@ -753,8 +448,7 @@
<td>9</td> <td>9</td>
<td></td> <td></td>
</tr> </tr>
<tr> <tr> <td>-</td>
<td>-</td>
<td>A</td> <td>A</td>
<td>B</td> <td>B</td>
<td>C</td> <td>C</td>
@ -793,8 +487,7 @@
<td>9</td> <td>9</td>
<td></td> <td></td>
</tr> </tr>
<tr class="alt"> <tr class="alt"> <td>-</td>
<td>-</td>
<td>A</td> <td>A</td>
<td>B</td> <td>B</td>
<td>C</td> <td>C</td>
@ -833,8 +526,7 @@
<td>9</td> <td>9</td>
<td></td> <td></td>
</tr> </tr>
<tr> <tr> <td>-</td>
<td>-</td>
<td>A</td> <td>A</td>
<td>B</td> <td>B</td>
<td>C</td> <td>C</td>
@ -873,8 +565,7 @@
<td>9</td> <td>9</td>
<td></td> <td></td>
</tr> </tr>
<tr class="alt"> <tr class="alt"> <td>-</td>
<td>-</td>
<td>A</td> <td>A</td>
<td>B</td> <td>B</td>
<td>C</td> <td>C</td>
@ -913,8 +604,7 @@
<td>9</td> <td>9</td>
<td></td> <td></td>
</tr> </tr>
<tr> <tr> <td>-</td>
<td>-</td>
<td>A</td> <td>A</td>
<td>B</td> <td>B</td>
<td>C</td> <td>C</td>
@ -953,8 +643,7 @@
<td>9</td> <td>9</td>
<td></td> <td></td>
</tr> </tr>
<tr class="alt"> <tr class="alt"> <td>-</td>
<td>-</td>
<td>A</td> <td>A</td>
<td>B</td> <td>B</td>
<td>C</td> <td>C</td>
@ -993,8 +682,7 @@
<td>9</td> <td>9</td>
<td></td> <td></td>
</tr> </tr>
<tr> <tr> <td>-</td>
<td>-</td>
<td>A</td> <td>A</td>
<td>B</td> <td>B</td>
<td>C</td> <td>C</td>
@ -1033,8 +721,7 @@
<td>9</td> <td>9</td>
<td></td> <td></td>
</tr> </tr>
<tr class="alt"> <tr class="alt"> <td>-</td>
<td>-</td>
<td>A</td> <td>A</td>
<td>B</td> <td>B</td>
<td>C</td> <td>C</td>
@ -1073,8 +760,7 @@
<td>9</td> <td>9</td>
<td></td> <td></td>
</tr> </tr>
<tr> <tr> <td>-</td>
<td>-</td>
<td>A</td> <td>A</td>
<td>B</td> <td>B</td>
<td>C</td> <td>C</td>
@ -1113,8 +799,7 @@
<td>9</td> <td>9</td>
<td></td> <td></td>
</tr> </tr>
<tr class="alt"> <tr class="alt"> <td>-</td>
<td>-</td>
<td>A</td> <td>A</td>
<td>B</td> <td>B</td>
<td>C</td> <td>C</td>
@ -1153,8 +838,7 @@
<td>9</td> <td>9</td>
<td></td> <td></td>
</tr> </tr>
<tr> <tr> <td>-</td>
<td>-</td>
<td>A</td> <td>A</td>
<td>B</td> <td>B</td>
<td>C</td> <td>C</td>
@ -1193,8 +877,7 @@
<td>9</td> <td>9</td>
<td></td> <td></td>
</tr> </tr>
<tr class="alt"> <tr class="alt"> <td>-</td>
<td>-</td>
<td>A</td> <td>A</td>
<td>B</td> <td>B</td>
<td>C</td> <td>C</td>
@ -1233,8 +916,7 @@
<td>9</td> <td>9</td>
<td></td> <td></td>
</tr> </tr>
<tr> <tr> <td>-</td>
<td>-</td>
<td>A</td> <td>A</td>
<td>B</td> <td>B</td>
<td>C</td> <td>C</td>
@ -1273,8 +955,7 @@
<td>9</td> <td>9</td>
<td></td> <td></td>
</tr> </tr>
<tr class="alt"> <tr class="alt"> <td>-</td>
<td>-</td>
<td>A</td> <td>A</td>
<td>B</td> <td>B</td>
<td>C</td> <td>C</td>
@ -1313,8 +994,7 @@
<td>9</td> <td>9</td>
<td></td> <td></td>
</tr> </tr>
<tr> <tr> <td>-</td>
<td>-</td>
<td>A</td> <td>A</td>
<td>B</td> <td>B</td>
<td>C</td> <td>C</td>
@ -1353,8 +1033,7 @@
<td>9</td> <td>9</td>
<td></td> <td></td>
</tr> </tr>
<tr class="alt"> <tr class="alt"> <td>-</td>
<td>-</td>
<td>A</td> <td>A</td>
<td>B</td> <td>B</td>
<td>C</td> <td>C</td>
@ -1393,8 +1072,7 @@
<td>9</td> <td>9</td>
<td></td> <td></td>
</tr> </tr>
<tr> <tr> <td>-</td>
<td>-</td>
<td>A</td> <td>A</td>
<td>B</td> <td>B</td>
<td>C</td> <td>C</td>
@ -1433,8 +1111,7 @@
<td>9</td> <td>9</td>
<td></td> <td></td>
</tr> </tr>
<tr class="alt"> <tr class="alt"> <td>-</td>
<td>-</td>
<td>A</td> <td>A</td>
<td>B</td> <td>B</td>
<td>C</td> <td>C</td>
@ -1473,8 +1150,7 @@
<td>9</td> <td>9</td>
<td></td> <td></td>
</tr> </tr>
<tr> <tr> <td>-</td>
<td>-</td>
<td>A</td> <td>A</td>
<td>B</td> <td>B</td>
<td>C</td> <td>C</td>
@ -1513,8 +1189,7 @@
<td>9</td> <td>9</td>
<td></td> <td></td>
</tr> </tr>
<tr class="alt"> <tr class="alt"> <td>-</td>
<td>-</td>
<td>A</td> <td>A</td>
<td>B</td> <td>B</td>
<td>C</td> <td>C</td>

164
templates/passphrase.html.sh Executable file
View file

@ -0,0 +1,164 @@
#!/usr/bin/env bash
# USAGE: passphrase.html.sh [ PIN_LENGTH [ PASSPHRASE_LENGTH ]]
# PIN_LENGTH and PASSPHRASE_LENGTH can be omitted. A HTML file will be written to stdout
set -e
set -u
set -o pipefail
# Script arguments, or use defaults
PIN_LENGTH="${1:-8}"
PASSPHRASE_LENGTH="${2:-30}"
cat <<EOF
<!DOCTYPE html>
<!-- https://github.com/drduh/YubiKey-Guide/blob/master/templates/passphrase.html
https://raw.githubusercontent.com/drduh/YubiKey-Guide/master/templates/passphrase.html
Save the raw file ^ then open in a browser to render and print -->
<html lang="en-US">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="github.com/drduh/YubiKey-Guide">
<title>credentials</title>
<style>
:root {
--color-dark: #000000;
--color-gray: #dedede;
}
body {
color: var(--color-dark);
font-family: monospace;
font-size: 0.8rem;
font-variant: small-caps;
text-align: center;
}
td {
border: 0.05rem solid var(--color-dark);
height: 1rem;
min-width: 1rem;
}
td.alt, tr.alt {
background: var(--color-gray);
}
</style>
</head>
<body>
<table>
<colgroup span="38"></colgroup>
<tr>
<td></td>
<td class="alt" colspan="10">date (yyyy-mm-dd)</td>
<td></td>
<td></td>
<td></td>
<td class="alt" colspan="10">admin pin</td>
<td></td>
<td></td>
<td></td>
<td class="alt" colspan="10">user pin</td>
<td></td>
</tr>
EOF
DATE_HEADER=$(cat <<EOF
<tr><td></td><td>2</td><td>0</td><td>2</td><td>_</td><td>-</td><td>_</td><td>_</td><td>-</td><td>_</td><td>_</td><td></td><td></td><td></td>
<tr>$(for((i=0;i<14;i++)); do printf "<td></td>"; done)
<tr><td></td><td class="alt" colspan="10">key id</td><td></td><td></td><td></td>
<tr><td></td><td class="alt" colspan="2" rowspan="2">0x</td> $(for((i=0;i<8;i++)); do printf "<td>_</td>"; done)<td></td><td></td><td></td>
<tr><td></td>$(for((i=0;i<8;i++)); do printf "<td>_</td>"; done)<td></td><td></td><td></td>
<tr>$(for((i=0;i<14;i++)); do printf "<td></td>"; done)
<tr><td></td><td class="alt" colspan="10">serial number</td><td></td><td></td><td></td>
<tr><td></td>$(for((i=0;i<10;i++)); do printf "<td>_</td>"; done)<td></td><td></td><td></td>
EOF
)
KEYS=$(cat <<EOF
$(for ((i=1; i<=PIN_LENGTH; i++)); do
for j in {1..10}; do
printf "<td>$j</td>";
done &&
printf "<td></td><td></td><td></td>"
for j in {1..10}; do
printf "<td>$j</td>";
done &&
printf "<td></td></tr>\n"
done)
EOF
)
#Make KEYS have as many lines as DATE_HEADER, and vice versa. Needed to close/open html tags properly
# Note that the row is simply closed without filling it up...
KEYS="$KEYS $(for ((i=PIN_LENGTH; i<8; i++)); do printf '\n' && for _ in {0..23}; do printf '<td></td>'; done && printf '</tr>'; done)"
DATE_HEADER="$DATE_HEADER $(for ((i=8; i<PIN_LENGTH; i++)); do printf '\n<tr>' && for _ in {0..13}; do printf '<td></td>'; done ; done)"
paste -d " " <(echo "$DATE_HEADER") <(echo "$KEYS")
cat <<EOF
<tr class="alt">
<td colspan="38">for each char in passphrase, mark corresponding column on sequential row, then fold inward and tamper seal</td>
</tr>
EOF
for ((i=1; i<=PASSPHRASE_LENGTH; i++)); do
if [ $((i%2)) -eq 0 ]; then
printf '<tr class="alt">';
else
printf '<tr>';
fi
cat <<EOF
<td>-</td>
<td>A</td>
<td>B</td>
<td>C</td>
<td>D</td>
<td>E</td>
<td>F</td>
<td>G</td>
<td>H</td>
<td>I</td>
<td>J</td>
<td>K</td>
<td>L</td>
<td>M</td>
<td>N</td>
<td>O</td>
<td>P</td>
<td>Q</td>
<td>R</td>
<td>S</td>
<td>T</td>
<td>U</td>
<td>V</td>
<td>W</td>
<td>X</td>
<td>Y</td>
<td>Z</td>
<td>0</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td></td>
</tr>
EOF
done
cat <<EOF
</table>
</body>
</html>
EOF

View file

@ -2,7 +2,7 @@
DATE (YYYY-MM-DD) ADMIN PIN USER PIN DATE (YYYY-MM-DD) ADMIN PIN USER PIN
2025-__-__ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 202_-__-__ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
KEY ID 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 KEY ID 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
0x________________ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0x________________ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9

55
templates/passphrase.txt.sh Executable file
View file

@ -0,0 +1,55 @@
#!/usr/bin/env bash
# USAGE: passphrase.txt.sh [ PIN_LENGTH [ PASSPHRASE_LENGTH ]]
# PIN_LENGTH and PASSPHRASE_LENGTH can be omitted. A txt file will be written to stdout
set -e
set -u
set -o pipefail
# Script arguments, or use defaults
PIN_LENGTH="${1:-8}"
PASSPHRASE_LENGTH="${2:-30}"
DATE_HEADER=$(cat <<EOF
DATE (YYYY-MM-DD)
202_-__-__
KEY ID
0x________________
SERIAL NUMBER
________
EOF
)
DATE_HEADER="$DATE_HEADER$(for ((i=8; i<=PIN_LENGTH; i++)); do printf '\n '; done)"
KEYS=$(cat <<EOF
ADMIN PIN USER PIN
$(for ((i=1; i<=PIN_LENGTH; i++)); do
echo "0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9"
done)
EOF
)
echo "# https://github.com/drduh/YubiKey-Guide/blob/master/templates/passphrase.txt"
echo ""
paste -d " " <(echo "$DATE_HEADER") <(echo "$KEYS")
cat <<EOF
FOR EACH CHAR IN PASSPHRASE,
MARK CORRESPONDING COLUMN ON SEQUENTIAL ROW,
THEN FOLD INWARD AND TAMPER SEAL
EOF
for ((i=1; i<=PASSPHRASE_LENGTH; i++)); do
echo "- A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9"
done
echo ""