From 2474eb323abd97aa29ec391baa79439d1ff44d38 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Thu, 27 Jul 2023 22:07:35 +0100 Subject: [PATCH] Adds card for showing additional resources for further research --- src/components/misc/AdditionalResources.tsx | 226 ++++++++++++++++++++ 1 file changed, 226 insertions(+) create mode 100644 src/components/misc/AdditionalResources.tsx diff --git a/src/components/misc/AdditionalResources.tsx b/src/components/misc/AdditionalResources.tsx new file mode 100644 index 0000000..663fc8f --- /dev/null +++ b/src/components/misc/AdditionalResources.tsx @@ -0,0 +1,226 @@ +import styled from 'styled-components'; +import colors from 'styles/colors'; +import { Card } from 'components/Form/Card'; + +const ResourceListOuter = styled.ul` +list-style: none; +margin: 0; +padding: 1rem; +display: grid; +gap: 0.5rem; +grid-template-columns: repeat(auto-fit, minmax(20rem, 1fr)); +li a.resource-wrap { + display: flex; + align-items: start; + gap: 0.25rem; + padding: 0.25rem; + background: ${colors.background}; + border-radius: 8px; + text-decoration: none; + color: ${colors.textColor}; + height: 100%; + + transition: all 0.2s ease-in-out; + cursor: pointer; + border: none; + border-radius: 0.25rem; + font-family: PTMono; + box-sizing: border-box; + width: -moz-available; + box-shadow: 3px 3px 0px ${colors.backgroundDarker}; + &:hover { + box-shadow: 5px 5px 0px ${colors.backgroundDarker}; + a { opacity: 1; } + } + &:active { + box-shadow: -3px -3px 0px ${colors.fgShadowColor}; + } +} +img { + width: 4rem; + border-radius: 4px; + margin: 0.25rem 0.1rem 0.1rem 0.1rem; +} +.resource-details { + max-width: 20rem; + display: flex; + flex-direction: column; + gap: 0.1rem; + p, a { + margin: 0; + } + a.resource-link { + color: ${colors.primary}; + opacity: 0.75; + font-size: 0.9rem; + transition: all 0.2s ease-in-out; + } + .resource-title { + font-weight: bold; + } + .resource-description { + color: ${colors.textColorSecondary}; + font-size: 0.9rem; + } +} +`; + +const Note = styled.small` + margin-top: 1rem; + opacity: 0.5; + display: block; + a { color: ${colors.primary}; } +`; + +const CardStyles = ` + margin: 0 auto 1rem auto; + width: 95vw; + position: relative; + transition: all 0.2s ease-in-out; +`; + +const resources = [ + { + title: 'SSL Labs Test', + link: 'https://ssllabs.com/ssltest/analyze.html', + icon: 'https://i.ibb.co/6bVL8JK/Qualys-ssl-labs.png', + description: 'Analyzes the SSL configuration of a server and grades it.', + }, + { + title: 'Virus Total', + link: 'https://virustotal.com', + icon: 'https://i.ibb.co/dWFz0RC/Virustotal.png', + description: 'Checks a URL against multiple antivirus engines.', + searchLink: 'https://www.virustotal.com/gui/domain/{URL}', + }, + { + title: 'Shodan', + link: 'https://shodan.io/', + icon: 'https://i.ibb.co/SBZ8WG4/shodan.png', + description: 'Search engine for Internet-connected devices.', + searchLink: 'https://www.shodan.io/search/report?query={URL}', + }, + { + title: 'Archive', + link: 'https://archive.org/', + icon: 'https://i.ibb.co/nfKMvCm/Archive-org.png', + description: 'View previous versions of a site via the Internet Archive.', + searchLink: 'https://web.archive.org/web/*/{URL}', + }, + { + title: 'URLScan', + link: 'https://urlscan.io/', + icon: 'https://i.ibb.co/cYXt8SH/Url-scan.png', + description: 'Scans a URL and provides information about the page.', + }, + { + title: 'Sucuri SiteCheck', + link: 'https://sitecheck.sucuri.net/', + icon: 'https://i.ibb.co/K5pTP1K/Sucuri-site-check.png', + description: 'Checks a URL against blacklists and known threats.', + searchLink: 'https://www.ssllabs.com/ssltest/analyze.html?d={URL}', + }, + { + title: 'Domain Tools', + link: 'https://whois.domaintools.com/', + icon: 'https://i.ibb.co/zJfCKjM/Domain-tools.png', + description: 'Run a WhoIs lookup on a domain.', + searchLink: 'https://whois.domaintools.com/{URL}', + }, + { + title: 'NS Lookup', + link: 'https://nslookup.io/', + icon: 'https://i.ibb.co/BLSWvBv/Ns-lookup.png', + description: 'View DNS records for a domain.', + searchLink: 'https://www.nslookup.io/domains/{URL}/dns-records/', + }, + { + title: 'DNS Checker', + link: 'https://dnschecker.org/', + icon: 'https://i.ibb.co/gyKtgZ1/Dns-checker.webp', + description: 'Check global DNS propagation across multiple servers.', + searchLink: 'https://dnschecker.org/#A/{URL}', + }, + { + title: 'Censys', + link: 'https://search.censys.io/', + icon: 'https://i.ibb.co/j3ZtXzM/censys.png', + description: 'Lookup hosts associated with a domain.', + searchLink: 'https://search.censys.io/search?resource=hosts&q={URL}', + }, + { + title: 'Page Speed Insights', + link: 'https://developers.google.com/speed/pagespeed/insights/', + icon: 'https://i.ibb.co/k68t9bb/Page-speed-insights.png', + description: 'Checks the performance, accessibility and SEO of a page on mobile + desktop.', + searchLink: 'https://developers.google.com/speed/pagespeed/insights/?url={URL}', + }, + { + title: 'DNS Dumpster', + link: 'https://dnsdumpster.com/', + icon: 'https://i.ibb.co/DtQ2QXP/Trash-can-regular.png', + description: 'DNS recon tool, to map out a domain from it\'s DNS records', + searchLink: '', + }, + { + title: 'BGP Tools', + link: 'https://bgp.tools/', + icon: 'https://i.ibb.co/zhcSnmh/Bgp-tools.png', + description: 'View realtime BGP data for any ASN, Prefix or DNS', + }, + { + title: 'Similar Web', + link: 'https://similarweb.com/', + icon: 'https://i.ibb.co/9YX8x3c/Similar-web.png', + description: 'View approx traffic and engagement stats for a website', + searchLink: 'https://similarweb.com/website/{URL}', + }, + { + title: 'Blacklist Checker', + link: 'https://blacklistchecker.com/', + icon: 'https://i.ibb.co/7ygCyz3/black-list-checker.png', + description: 'Check if a domain, IP or email is present on the top blacklists', + searchLink: 'https://blacklistchecker.com/check?input={URL}', + }, + { + title: 'Cloudflare Radar', + link: 'https://radar.cloudflare.com/', + icon: 'https://i.ibb.co/DGZXRgh/Cloudflare.png', + description: 'View traffic source locations for a domain through Cloudflare', + searchLink: 'https://radar.cloudflare.com/domains/domain/{URL}', + }, +]; + +const makeLink = (resource: any, scanUrl: string | undefined): string => { + return (scanUrl && resource.searchLink) ? resource.searchLink.replaceAll('{URL}', scanUrl.replace('https://', '')) : '#'; +}; + +const AdditionalResources = (props: { url?: string }): JSX.Element => { + return ( + + { + resources.map((resource, index) => { + return ( +
  • + + +
    +

    {resource.title}

    +
    {new URL(resource.link).hostname} +

    {resource.description}

    +
    + +
  • + ); + }) + } +
    + + These tools are not affiliated with Web-Check. Please use them at your own risk.
    + At the time of listing, all of the above were available and free to use + - if this changes, please report it via GitHub (lissy93/web-check). +
    +
    ); +} + +export default AdditionalResources;