index.astro (2809B)
1 --- 2 import Base from '../../layouts/Base.astro'; 3 import SectionBanner from '../../components/SectionBanner.astro'; 4 import RecordRow from '../../components/RecordRow.astro'; 5 import Icon from '../../components/Icon.astro'; 6 import { payloadsByTopic } from '../../lib/payloads'; 7 import { url } from '../../lib/url'; 8 9 const groups = await payloadsByTopic(); 10 const totalPages = groups.reduce((n, g) => n + g.count, 0); 11 const sha = groups[0]?.readme?.data.sha ?? groups[0]?.items[0]?.data.sha ?? ''; 12 /* Rotated so the index reads varied down its kind column rather than as 13 sixty-six identical rows. */ 14 const ACCENTS = ['iris', 'foam', 'gold', 'love', 'rose', 'pine']; 15 --- 16 <Base 17 title="Payloads — PayloadsAllTheThings mirror — DÆMON//SEC" 18 description="A full, searchable mirror of PayloadsAllTheThings — 66 topics of web & infra exploitation payloads. Credit: swisskyrepo, MIT." 19 > 20 <SectionBanner 21 n="02" 22 label="Full mirror · MIT" 23 title="PayloadsAllTheThings" 24 blurb="A complete on-site mirror of swisskyrepo's payload and bypass reference — searchable offline, every page linked back to source." 25 accent="iris" 26 stats={[ 27 { label: 'Topics', value: String(groups.length).padStart(2, '0'), accent: true }, 28 { label: 'Pages', value: totalPages }, 29 { label: 'License', value: 'MIT' }, 30 ]} 31 /> 32 33 <div class="wrap"> 34 <nav class="breadcrumb" style="margin-top:1.6rem;"> 35 <a href={url('')}>~</a><span class="sep">/</span><span class="muted">payloads</span> 36 </nav> 37 38 <aside class="patt-credit corners" style="margin-top:1.4rem;"> 39 <span class="patt-badge">mirror</span> 40 <span class="patt-credit__text"> 41 Mirrored verbatim from the upstream repo. Images and raw payload files load from GitHub; see each page's <em>source</em> link. 42 <span class="patt-lic">MIT · <a href={url('credits')}>full credits & license</a>{sha && <> · <code>{sha.slice(0,7)}</code></>}</span> 43 </span> 44 <a class="patt-src" href="https://github.com/swisskyrepo/PayloadsAllTheThings" target="_blank" rel="noopener"> 45 <Icon name="github" /> upstream 46 </a> 47 </aside> 48 49 <div class="index" style="margin-bottom:3rem;"> 50 {groups.map((g, i) => ( 51 <RecordRow 52 href={url(`payloads/${g.slug}`)} 53 n={String(i + 1).padStart(2, '0')} 54 title={g.title} 55 kind="payload" 56 kindIcon="layers" 57 accent={ACCENTS[i % ACCENTS.length]} 58 meta={`${g.count} ${g.count === 1 ? 'page' : 'pages'}`} 59 /> 60 ))} 61 </div> 62 </div> 63 </Base> 64 65 <style> 66 /* The attribution strip is keyed to iris; its corner brackets take the 67 same hue rather than the default love. */ 68 .patt-credit { --bracket: var(--iris); } 69 .patt-src svg { width: 14px; height: 14px; } 70 </style>