getDefaultPrototypes function

List<Prototype> getDefaultPrototypes()

Returns the default set of hashing algorithms

Implementation

List<Prototype> getDefaultPrototypes() {
  return [
    Prototype(RegExp(r'^[a-f0-9]{4}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.CRC_16, hashcat: null, john: null, extended: false),
      const HashInfo(
          id: Hash.CRC_16_CCITT, hashcat: null, john: null, extended: false),
      const HashInfo(
          id: Hash.FCS_16, hashcat: null, john: null, extended: false),
    ]),
    Prototype(RegExp(r'^[a-f0-9]{8}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.Adler_32, hashcat: null, john: null, extended: false),
      const HashInfo(
          id: Hash.CRC_32B, hashcat: null, john: null, extended: false),
      const HashInfo(
          id: Hash.FCS_32, hashcat: null, john: null, extended: false),
      const HashInfo(
          id: Hash.GHash_32_3, hashcat: null, john: null, extended: false),
      const HashInfo(
          id: Hash.GHash_32_5, hashcat: null, john: null, extended: false),
      const HashInfo(
          id: Hash.FNV_132, hashcat: null, john: null, extended: false),
      const HashInfo(
          id: Hash.Fletcher_32, hashcat: null, john: null, extended: false),
      const HashInfo(
          id: Hash.Joaat, hashcat: null, john: null, extended: false),
      const HashInfo(
          id: Hash.ELF_32, hashcat: null, john: null, extended: false),
      const HashInfo(
          id: Hash.XOR_32, hashcat: null, john: null, extended: false),
    ]),
    Prototype(RegExp(r'^[a-f0-9]{6}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.CRC_24, hashcat: null, john: null, extended: false),
    ]),
    Prototype(
        RegExp(r'^(\$crc32\$[a-f0-9]{8}.)?[a-f0-9]{8}$', caseSensitive: false),
        [
          const HashInfo(
              id: Hash.CRC_32, hashcat: null, john: 'crc32', extended: false),
        ]),
    Prototype(RegExp(r'^\+[a-z0-9\/.]{12}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.Eggdrop_IRC_Bot,
          hashcat: null,
          john: 'bfegg',
          extended: false),
    ]),
    Prototype(RegExp(r'^[a-z0-9\/.]{13}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.DES_Unix,
          hashcat: '1500',
          john: 'descrypt',
          extended: false),
      const HashInfo(
          id: Hash.Traditional_DES,
          hashcat: '1500',
          john: 'descrypt',
          extended: false),
      const HashInfo(
          id: Hash.DEScrypt,
          hashcat: '1500',
          john: 'descrypt',
          extended: false),
    ]),
    Prototype(RegExp(r'^[a-f0-9]{16}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.MySQL323, hashcat: '200', john: 'mysql', extended: false),
      const HashInfo(
          id: Hash.DES_Oracle, hashcat: '3100', john: null, extended: false),
      const HashInfo(
          id: Hash.Half_MD5, hashcat: '5100', john: null, extended: false),
      const HashInfo(
          id: Hash.Oracle_7_10g, hashcat: '3100', john: null, extended: false),
      const HashInfo(
          id: Hash.FNV_164, hashcat: null, john: null, extended: false),
      const HashInfo(
          id: Hash.CRC_64, hashcat: null, john: null, extended: false),
    ]),
    Prototype(RegExp(r'^[a-z0-9\/.]{16}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.Cisco_PIX_MD5,
          hashcat: '2400',
          john: 'pix-md5',
          extended: false),
    ]),
    Prototype(RegExp(r'^\([a-z0-9\/+]{20}\)$', caseSensitive: false), [
      const HashInfo(
          id: Hash.Lotus_Notes_Domino_6,
          hashcat: '8700',
          john: 'dominosec',
          extended: false),
    ]),
    Prototype(RegExp(r'^_[a-z0-9\/.]{19}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.BSDi_Crypt,
          hashcat: null,
          john: 'bsdicrypt',
          extended: false),
    ]),
    Prototype(RegExp(r'^[a-f0-9]{24}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.CRC_96_ZIP, hashcat: null, john: null, extended: false),
    ]),
    Prototype(RegExp(r'^[a-z0-9\/.]{24}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.Crypt16, hashcat: null, john: null, extended: false),
    ]),
    Prototype(RegExp(r'^(\$md2\$)?[a-f0-9]{32}$', caseSensitive: false), [
      const HashInfo(id: Hash.MD2, hashcat: null, john: 'md2', extended: false),
    ]),
    Prototype(RegExp(r'^[a-f0-9]{32}(:.+)?$', caseSensitive: false), [
      const HashInfo(
          id: Hash.MD5, hashcat: '0', john: 'raw-md5', extended: false),
      const HashInfo(
          id: Hash.MD4, hashcat: '900', john: 'raw-md4', extended: false),
      const HashInfo(
          id: Hash.Double_MD5, hashcat: '2600', john: null, extended: false),
      const HashInfo(id: Hash.LM, hashcat: '3000', john: 'lm', extended: false),
      const HashInfo(
          id: Hash.RIPEMD_128,
          hashcat: null,
          john: 'ripemd-128',
          extended: false),
      const HashInfo(
          id: Hash.Haval_128,
          hashcat: null,
          john: 'haval-128-4',
          extended: false),
      const HashInfo(
          id: Hash.Tiger_128, hashcat: null, john: null, extended: false),
      const HashInfo(
          id: Hash.Skein_256_128, hashcat: null, john: null, extended: false),
      const HashInfo(
          id: Hash.Skein_512_128, hashcat: null, john: null, extended: false),
      const HashInfo(
          id: Hash.Lotus_Notes_Domino_5,
          hashcat: '8600',
          john: 'lotus5',
          extended: false),
      const HashInfo(
          id: Hash.Skype, hashcat: '23', john: null, extended: false),
      const HashInfo(
          id: Hash.ZipMonster, hashcat: null, john: null, extended: true),
      const HashInfo(
          id: Hash.PrestaShop, hashcat: '11000', john: null, extended: true),
      const HashInfo(
          id: Hash.Md5_md5_md5_pass,
          hashcat: '3500',
          john: null,
          extended: true),
      const HashInfo(
          id: Hash.Md5_strtoupper_md5_pass,
          hashcat: '4300',
          john: null,
          extended: true),
      const HashInfo(
          id: Hash.Md5_sha1_pass, hashcat: '4400', john: null, extended: true),
      const HashInfo(
          id: Hash.Md5_pass_salt, hashcat: '10', john: null, extended: true),
      const HashInfo(
          id: Hash.Md5_salt_pass, hashcat: '20', john: null, extended: true),
      const HashInfo(
          id: Hash.Md5_unicode_pass_salt,
          hashcat: '30',
          john: null,
          extended: true),
      const HashInfo(
          id: Hash.Md5_salt_unicode_pass,
          hashcat: '40',
          john: null,
          extended: true),
      const HashInfo(
          id: Hash.HMAC_MD5_key_pass,
          hashcat: '50',
          john: 'hmac-md5',
          extended: true),
      const HashInfo(
          id: Hash.HMAC_MD5_key_salt,
          hashcat: '60',
          john: 'hmac-md5',
          extended: true),
      const HashInfo(
          id: Hash.Md5_md5_salt_pass,
          hashcat: '3610',
          john: null,
          extended: true),
      const HashInfo(
          id: Hash.Md5_salt_md5_pass,
          hashcat: '3710',
          john: null,
          extended: true),
      const HashInfo(
          id: Hash.Md5_pass_md5_salt,
          hashcat: '3720',
          john: null,
          extended: true),
      const HashInfo(
          id: Hash.Md5_salt_pass_salt,
          hashcat: '3810',
          john: null,
          extended: true),
      const HashInfo(
          id: Hash.Md5_md5_pass_md5_salt,
          hashcat: '3910',
          john: null,
          extended: true),
      const HashInfo(
          id: Hash.Md5_salt_md5_salt_pass,
          hashcat: '4010',
          john: null,
          extended: true),
      const HashInfo(
          id: Hash.Md5_salt_md5_pass_salt,
          hashcat: '4110',
          john: null,
          extended: true),
      const HashInfo(
          id: Hash.Md5_username_0_pass,
          hashcat: '4210',
          john: null,
          extended: true),
    ]),
    Prototype(RegExp(r'^(\$snefru\$)?[a-f0-9]{32}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.Snefru_128,
          hashcat: null,
          john: 'snefru-128',
          extended: false),
    ]),
    Prototype(RegExp(r'^(\$NT\$)?[a-f0-9]{32}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.NTLM, hashcat: '1000', john: 'nt', extended: false),
    ]),
    Prototype(
        RegExp(
            r'^([^\\\/:*?"<>|]{1,20}:)?[a-f0-9]{32}(:[^\\\/:*?"<>|]{1,20})?$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.Domain_Cached_Credentials,
              hashcat: '1100',
              john: 'mscach',
              extended: false),
        ]),
    Prototype(
        RegExp(
            r'^([^\\\/:*?"<>|]{1,20}:)?(\$DCC2\$10240#[^\\\/:*?"<>|]{1,20}#)?[a-f0-9]{32}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.Domain_Cached_Credentials_2,
              hashcat: '2100',
              john: 'mscach2',
              extended: false),
        ]),
    Prototype(RegExp(r'^{SHA}[a-z0-9\/+]{27}=$', caseSensitive: false), [
      const HashInfo(
          id: Hash.SHA_1_Base64,
          hashcat: '101',
          john: 'nsldap',
          extended: false),
      const HashInfo(
          id: Hash.Netscape_LDAP_SHA,
          hashcat: '101',
          john: 'nsldap',
          extended: false),
    ]),
    Prototype(
        RegExp(r'^\$1\$[a-z0-9\/.]{0,8}\$[a-z0-9\/.]{22}(:.*)?$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.MD5_Crypt,
              hashcat: '500',
              john: 'md5crypt',
              extended: false),
          const HashInfo(
              id: Hash.Cisco_IOS_MD5,
              hashcat: '500',
              john: 'md5crypt',
              extended: false),
          const HashInfo(
              id: Hash.FreeBSD_MD5,
              hashcat: '500',
              john: 'md5crypt',
              extended: false),
        ]),
    Prototype(RegExp(r'^0x[a-f0-9]{32}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.Lineage_II_C4, hashcat: null, john: null, extended: false),
    ]),
    Prototype(RegExp(r'^\$H\$[a-z0-9\/.]{31}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.PhpBB_v3_x, hashcat: '400', john: 'phpass', extended: false),
      const HashInfo(
          id: Hash.Wordpress_v2_6_0_2_6_1,
          hashcat: '400',
          john: 'phpass',
          extended: false),
      const HashInfo(
          id: Hash.PHPass_Portable_Hash,
          hashcat: '400',
          john: 'phpass',
          extended: false),
    ]),
    Prototype(RegExp(r'^\$P\$[a-z0-9\/.]{31}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.Wordpress_v2_6_2,
          hashcat: '400',
          john: 'phpass',
          extended: false),
      const HashInfo(
          id: Hash.Joomla_v2_5_18,
          hashcat: '400',
          john: 'phpass',
          extended: false),
      const HashInfo(
          id: Hash.PHPass_Portable_Hash,
          hashcat: '400',
          john: 'phpass',
          extended: false),
    ]),
    Prototype(RegExp(r'^[a-f0-9]{32}:[a-z0-9]{2}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.OsCommerce, hashcat: '21', john: null, extended: false),
      const HashInfo(
          id: Hash.Xt_Commerce, hashcat: '21', john: null, extended: false),
    ]),
    Prototype(
        RegExp(r'^\$apr1\$[a-z0-9\/.]{0,8}\$[a-z0-9\/.]{22}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.MD5_APR, hashcat: '1600', john: null, extended: false),
          const HashInfo(
              id: Hash.Apache_MD5,
              hashcat: '1600',
              john: null,
              extended: false),
          const HashInfo(
              id: Hash.Md5apr1, hashcat: '1600', john: null, extended: true),
        ]),
    Prototype(RegExp(r'^{smd5}[a-z0-9$\/.]{31}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.AIX_smd5,
          hashcat: '6300',
          john: 'aix-smd5',
          extended: false),
    ]),
    Prototype(RegExp(r'^[a-f0-9]{32}:[a-f0-9]{32}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.WebEdition_CMS,
          hashcat: '3721',
          john: null,
          extended: false),
    ]),
    Prototype(RegExp(r'^[a-f0-9]{32}:.{5}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.IP_Board_v2, hashcat: '2811', john: null, extended: false),
    ]),
    Prototype(RegExp(r'^[a-f0-9]{32}:.{8}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.MyBB_v1_2, hashcat: '2811', john: null, extended: false),
    ]),
    Prototype(RegExp(r'^[a-z0-9]{34}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.CryptoCurrency_Adress,
          hashcat: null,
          john: null,
          extended: false),
    ]),
    Prototype(RegExp(r'^[a-f0-9]{40}(:.+)?$', caseSensitive: false), [
      const HashInfo(
          id: Hash.SHA_1, hashcat: '100', john: 'raw-sha1', extended: false),
      const HashInfo(
          id: Hash.Double_SHA_1, hashcat: '4500', john: null, extended: false),
      const HashInfo(
          id: Hash.RIPEMD_160,
          hashcat: '6000',
          john: 'ripemd-160',
          extended: false),
      const HashInfo(
          id: Hash.Haval_160, hashcat: null, john: null, extended: false),
      const HashInfo(
          id: Hash.Tiger_160, hashcat: null, john: null, extended: false),
      const HashInfo(
          id: Hash.HAS_160, hashcat: null, john: null, extended: false),
      const HashInfo(
          id: Hash.LinkedIn,
          hashcat: '190',
          john: 'raw-sha1-linkedin',
          extended: false),
      const HashInfo(
          id: Hash.Skein_256_160, hashcat: null, john: null, extended: false),
      const HashInfo(
          id: Hash.Skein_512_160, hashcat: null, john: null, extended: false),
      const HashInfo(
          id: Hash.MangosWeb_Enhanced_CMS,
          hashcat: null,
          john: null,
          extended: true),
      const HashInfo(
          id: Hash.Sha1_sha1_sha1_pass,
          hashcat: '4600',
          john: null,
          extended: true),
      const HashInfo(
          id: Hash.Sha1_md5_pass, hashcat: '4700', john: null, extended: true),
      const HashInfo(
          id: Hash.Sha1_pass_salt, hashcat: '110', john: null, extended: true),
      const HashInfo(
          id: Hash.Sha1_salt_pass, hashcat: '120', john: null, extended: true),
      const HashInfo(
          id: Hash.Sha1_unicode_pass_salt,
          hashcat: '130',
          john: null,
          extended: true),
      const HashInfo(
          id: Hash.Sha1_salt_unicode_pass,
          hashcat: '140',
          john: null,
          extended: true),
      const HashInfo(
          id: Hash.HMAC_SHA1_key_pass,
          hashcat: '150',
          john: 'hmac-sha1',
          extended: true),
      const HashInfo(
          id: Hash.HMAC_SHA1_key_salt,
          hashcat: '160',
          john: 'hmac-sha1',
          extended: true),
      const HashInfo(
          id: Hash.Sha1_salt_pass_salt,
          hashcat: '4710',
          john: null,
          extended: true),
    ]),
    Prototype(RegExp(r'^\*[a-f0-9]{40}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.MySQL5_x,
          hashcat: '300',
          john: 'mysql-sha1',
          extended: false),
      const HashInfo(
          id: Hash.MySQL4_1,
          hashcat: '300',
          john: 'mysql-sha1',
          extended: false),
    ]),
    Prototype(RegExp(r'^[a-z0-9]{43}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.Cisco_IOS_SHA_256,
          hashcat: '5700',
          john: null,
          extended: false),
    ]),
    Prototype(RegExp(r'^{SSHA}[a-z0-9\/+]{38}==$', caseSensitive: false), [
      const HashInfo(
          id: Hash.SSHA_1_Base64,
          hashcat: '111',
          john: 'nsldaps',
          extended: false),
      const HashInfo(
          id: Hash.Netscape_LDAP_SSHA,
          hashcat: '111',
          john: 'nsldaps',
          extended: false),
      const HashInfo(
          id: Hash.Nsldaps, hashcat: '111', john: 'nsldaps', extended: true),
    ]),
    Prototype(RegExp(r'^[a-z0-9=]{47}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.Fortigate_FortiOS,
          hashcat: '7000',
          john: 'fortigate',
          extended: false),
    ]),
    Prototype(RegExp(r'^[a-f0-9]{48}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.Haval_192, hashcat: null, john: null, extended: false),
      const HashInfo(
          id: Hash.Tiger_192, hashcat: null, john: 'tiger', extended: false),
      const HashInfo(
          id: Hash.SHA_1_Oracle, hashcat: null, john: null, extended: false),
      const HashInfo(
          id: Hash.OSX_v10_4, hashcat: '122', john: 'xsha', extended: false),
      const HashInfo(
          id: Hash.OSX_v10_5, hashcat: '122', john: 'xsha', extended: false),
      const HashInfo(
          id: Hash.OSX_v10_6, hashcat: '122', john: 'xsha', extended: false),
    ]),
    Prototype(RegExp(r'^[a-f0-9]{51}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.Palshop_CMS, hashcat: null, john: null, extended: false),
    ]),
    Prototype(RegExp(r'^[a-z0-9]{51}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.CryptoCurrency_PrivateKey,
          hashcat: null,
          john: null,
          extended: false),
    ]),
    Prototype(
        RegExp(r'^{ssha1}[0-9]{2}\$[a-z0-9$\/.]{44}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.AIX_ssha1,
          hashcat: '6700',
          john: 'aix-ssha1',
          extended: false),
    ]),
    Prototype(RegExp(r'^0x0100[a-f0-9]{48}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.MSSQL_2005,
          hashcat: '132',
          john: 'mssql05',
          extended: false),
      const HashInfo(
          id: Hash.MSSQL_2008,
          hashcat: '132',
          john: 'mssql05',
          extended: false),
    ]),
    Prototype(
        RegExp(
            r'^(\$md5,rounds=[0-9]+\$|\$md5\$rounds=[0-9]+\$|\$md5\$)[a-z0-9\/.]{0,16}(\$|\$\$)[a-z0-9\/.]{22}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.Sun_MD5_Crypt,
              hashcat: '3300',
              john: 'sunmd5',
              extended: false),
        ]),
    Prototype(RegExp(r'^[a-f0-9]{56}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.SHA_224, hashcat: null, john: 'raw-sha224', extended: false),
      const HashInfo(
          id: Hash.Haval_224, hashcat: null, john: null, extended: false),
      const HashInfo(
          id: Hash.SHA3_224, hashcat: null, john: null, extended: false),
      const HashInfo(
          id: Hash.Skein_256_224, hashcat: null, john: null, extended: false),
      const HashInfo(
          id: Hash.Skein_512_224, hashcat: null, john: null, extended: false),
    ]),
    Prototype(
        RegExp(r'^(\$2[axy]|\$2)\$[0-9]{2}\$[a-z0-9\/.]{53}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.Blowfish_OpenBSD,
              hashcat: '3200',
              john: 'bcrypt',
              extended: false),
          const HashInfo(
              id: Hash.Woltlab_Burning_Board_4_x,
              hashcat: null,
              john: null,
              extended: false),
          const HashInfo(
              id: Hash.Bcrypt,
              hashcat: '3200',
              john: 'bcrypt',
              extended: false),
        ]),
    Prototype(RegExp(r'^[a-f0-9]{40}:[a-f0-9]{16}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.Android_PIN, hashcat: '5800', john: null, extended: false),
    ]),
    Prototype(
        RegExp(r'^(S:)?[a-f0-9]{40}(:)?[a-f0-9]{20}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.Oracle_11g_12c,
          hashcat: '112',
          john: 'oracle11',
          extended: false),
    ]),
    Prototype(
        RegExp(
            r'^\$bcrypt-sha256\$(2[axy]|2)\,[0-9]+\$[a-z0-9\/.]{22}\$[a-z0-9\/.]{31}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.Bcrypt_SHA_256,
              hashcat: null,
              john: null,
              extended: false),
        ]),
    Prototype(RegExp(r'^[a-f0-9]{32}:.{3}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.VBulletin_v3_8_5,
          hashcat: '2611',
          john: null,
          extended: false),
    ]),
    Prototype(RegExp(r'^[a-f0-9]{32}:.{30}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.VBulletin_v3_8_5,
          hashcat: '2711',
          john: null,
          extended: false),
    ]),
    Prototype(RegExp(r'^(\$snefru\$)?[a-f0-9]{64}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.Snefru_256,
          hashcat: null,
          john: 'snefru-256',
          extended: false),
    ]),
    Prototype(RegExp(r'^[a-f0-9]{64}(:.+)?$', caseSensitive: false), [
      const HashInfo(
          id: Hash.SHA_256,
          hashcat: '1400',
          john: 'raw-sha256',
          extended: false),
      const HashInfo(
          id: Hash.RIPEMD_256, hashcat: null, john: null, extended: false),
      const HashInfo(
          id: Hash.Haval_256,
          hashcat: null,
          john: 'haval-256-3',
          extended: false),
      const HashInfo(
          id: Hash.GOST_R_34_11_94,
          hashcat: '6900',
          john: 'gost',
          extended: false),
      const HashInfo(
          id: Hash.GOST_CryptoPro_S_Box,
          hashcat: null,
          john: null,
          extended: false),
      const HashInfo(
          id: Hash.SHA3_256,
          hashcat: '5000',
          john: 'raw-keccak-256',
          extended: false),
      const HashInfo(
          id: Hash.Skein_256,
          hashcat: null,
          john: 'skein-256',
          extended: false),
      const HashInfo(
          id: Hash.Skein_512_256, hashcat: null, john: null, extended: false),
      const HashInfo(
          id: Hash.Ventrilo, hashcat: null, john: null, extended: true),
      const HashInfo(
          id: Hash.Sha256_pass_salt,
          hashcat: '1410',
          john: null,
          extended: true),
      const HashInfo(
          id: Hash.Sha256_salt_pass,
          hashcat: '1420',
          john: null,
          extended: true),
      const HashInfo(
          id: Hash.Sha256_unicode_pass_salt,
          hashcat: '1430',
          john: null,
          extended: true),
      const HashInfo(
          id: Hash.Sha256_salt_unicode_pass,
          hashcat: '1440',
          john: null,
          extended: true),
      const HashInfo(
          id: Hash.HMAC_SHA256_key_pass,
          hashcat: '1450',
          john: 'hmac-sha256',
          extended: true),
      const HashInfo(
          id: Hash.HMAC_SHA256_key_salt,
          hashcat: '1460',
          john: 'hmac-sha256',
          extended: true),
    ]),
    Prototype(RegExp(r'^[a-f0-9]{32}:[a-z0-9]{32}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.Joomla_v2_5_18, hashcat: '11', john: null, extended: false),
    ]),
    Prototype(RegExp(r'^[a-f-0-9]{32}:[a-f-0-9]{32}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.SAM_LM_Hash_NT_Hash,
          hashcat: null,
          john: null,
          extended: false),
    ]),
    Prototype(
        RegExp(r'^(\$chap\$0\*)?[a-f0-9]{32}[\*:][a-f0-9]{32}(:[0-9]{2})?$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.MD5_Chap,
              hashcat: '4800',
              john: 'chap',
              extended: false),
          const HashInfo(
              id: Hash.ISCSI_CHAP_Authentication,
              hashcat: '4800',
              john: 'chap',
              extended: false),
        ]),
    Prototype(
        RegExp(r'^\$episerver\$\*0\*[a-z0-9\/=+]+\*[a-z0-9\/=+]{27,28}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.EPiServer_6_x_v4,
              hashcat: '141',
              john: 'episerver',
              extended: false),
        ]),
    Prototype(
        RegExp(r'^{ssha256}[0-9]{2}\$[a-z0-9$\/.]{60}$', caseSensitive: false),
        [
          const HashInfo(
              id: Hash.AIX_ssha256,
              hashcat: '6400',
              john: 'aix-ssha256',
              extended: false),
        ]),
    Prototype(RegExp(r'^[a-f0-9]{80}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.RIPEMD_320, hashcat: null, john: null, extended: false),
    ]),
    Prototype(
        RegExp(r'^\$episerver\$\*1\*[a-z0-9\/=+]+\*[a-z0-9\/=+]{42,43}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.EPiServer_6_x_v4,
              hashcat: '1441',
              john: 'episerver',
              extended: false),
        ]),
    Prototype(RegExp(r'^0x0100[a-f0-9]{88}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.MSSQL_2000, hashcat: '131', john: 'mssql', extended: false),
    ]),
    Prototype(RegExp(r'^[a-f0-9]{96}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.SHA_384,
          hashcat: '10800',
          john: 'raw-sha384',
          extended: false),
      const HashInfo(
          id: Hash.SHA3_384, hashcat: null, john: null, extended: false),
      const HashInfo(
          id: Hash.Skein_512_384, hashcat: null, john: null, extended: false),
      const HashInfo(
          id: Hash.Skein_1024_384, hashcat: null, john: null, extended: false),
    ]),
    Prototype(RegExp(r'^{SSHA512}[a-z0-9\/+]{96}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.SSHA_512_Base64,
          hashcat: '1711',
          john: 'ssha512',
          extended: false),
      const HashInfo(
          id: Hash.LDAP_SSHA_512,
          hashcat: '1711',
          john: 'ssha512',
          extended: false),
    ]),
    Prototype(
        RegExp(r'^{ssha512}[0-9]{2}\$[a-z0-9\/.]{16,48}\$[a-z0-9\/.]{86}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.AIX_ssha512,
              hashcat: '6500',
              john: 'aix-ssha512',
              extended: false),
        ]),
    Prototype(RegExp(r'^[a-f0-9]{128}(:.+)?$', caseSensitive: false), [
      const HashInfo(
          id: Hash.SHA_512,
          hashcat: '1700',
          john: 'raw-sha512',
          extended: false),
      const HashInfo(
          id: Hash.Whirlpool,
          hashcat: '6100',
          john: 'whirlpool',
          extended: false),
      const HashInfo(
          id: Hash.Salsa10, hashcat: null, john: null, extended: false),
      const HashInfo(
          id: Hash.Salsa20, hashcat: null, john: null, extended: false),
      const HashInfo(
          id: Hash.SHA3_512,
          hashcat: null,
          john: 'raw-keccak',
          extended: false),
      const HashInfo(
          id: Hash.Skein_512,
          hashcat: null,
          john: 'skein-512',
          extended: false),
      const HashInfo(
          id: Hash.Skein_1024_512, hashcat: null, john: null, extended: false),
      const HashInfo(
          id: Hash.Sha512_pass_salt,
          hashcat: '1710',
          john: null,
          extended: true),
      const HashInfo(
          id: Hash.Sha512_salt_pass,
          hashcat: '1720',
          john: null,
          extended: true),
      const HashInfo(
          id: Hash.Sha512_unicode_pass_salt,
          hashcat: '1730',
          john: null,
          extended: true),
      const HashInfo(
          id: Hash.Sha512_salt_unicode_pass,
          hashcat: '1740',
          john: null,
          extended: true),
      const HashInfo(
          id: Hash.HMAC_SHA512_key_pass,
          hashcat: '1750',
          john: 'hmac-sha512',
          extended: true),
      const HashInfo(
          id: Hash.HMAC_SHA512_key_salt,
          hashcat: '1760',
          john: 'hmac-sha512',
          extended: true),
    ]),
    Prototype(RegExp(r'^[a-f0-9]{136}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.OSX_v10_7,
          hashcat: '1722',
          john: 'xsha512',
          extended: false),
    ]),
    Prototype(RegExp(r'^0x0200[a-f0-9]{136}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.MSSQL_2012,
          hashcat: '1731',
          john: 'msql12',
          extended: false),
      const HashInfo(
          id: Hash.MSSQL_2014,
          hashcat: '1731',
          john: 'msql12',
          extended: false),
    ]),
    Prototype(
        RegExp(r'^\$ml\$[0-9]+\$[a-f0-9]{64}\$[a-f0-9]{128}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.OSX_v10_8,
              hashcat: '7100',
              john: 'pbkdf2-hmac-sha512',
              extended: false),
          const HashInfo(
              id: Hash.OSX_v10_9,
              hashcat: '7100',
              john: 'pbkdf2-hmac-sha512',
              extended: false),
        ]),
    Prototype(RegExp(r'^[a-f0-9]{256}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.Skein_1024, hashcat: null, john: null, extended: false),
    ]),
    Prototype(
        RegExp(
            r'^grub\.pbkdf2\.sha512\.[0-9]+\.([a-f0-9]{128,2048}\.|[0-9]+\.)?[a-f0-9]{128}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.GRUB_2, hashcat: '7200', john: null, extended: false),
        ]),
    Prototype(
        RegExp(r'^sha1\$[a-z0-9]+\$[a-f0-9]{40}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.Django_SHA_1, hashcat: '124', john: null, extended: false),
    ]),
    Prototype(RegExp(r'^[a-f0-9]{49}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.Citrix_Netscaler,
          hashcat: '8100',
          john: 'citrix_ns10',
          extended: false),
    ]),
    Prototype(RegExp(r'^\$S\$[a-z0-9\/.]{52}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.Drupal_v7_x,
          hashcat: '7900',
          john: 'drupal7',
          extended: false),
    ]),
    Prototype(
        RegExp(r'^\$5\$(rounds=[0-9]+\$)?[a-z0-9\/.]{0,16}\$[a-z0-9\/.]{43}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.SHA_256_Crypt,
              hashcat: '7400',
              john: 'sha256crypt',
              extended: false),
        ]),
    Prototype(
        RegExp(r'^0x[a-f0-9]{4}[a-f0-9]{16}[a-f0-9]{64}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.Sybase_ASE,
              hashcat: '8000',
              john: 'sybasease',
              extended: false),
        ]),
    Prototype(
        RegExp(r'^\$6\$(rounds=[0-9]+\$)?[a-z0-9\/.]{0,16}\$[a-z0-9\/.]{86}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.SHA_512_Crypt,
              hashcat: '1800',
              john: 'sha512crypt',
              extended: false),
        ]),
    Prototype(
        RegExp(
            r'^\$sha\$[a-z0-9]{1,16}\$([a-f0-9]{32}|[a-f0-9]{40}|[a-f0-9]{64}|[a-f0-9]{128}|[a-f0-9]{140})$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.Minecraft_AuthMe_Reloaded,
              hashcat: null,
              john: null,
              extended: false),
        ]),
    Prototype(
        RegExp(r'^sha256\$[a-z0-9]+\$[a-f0-9]{64}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.Django_SHA_256, hashcat: null, john: null, extended: false),
    ]),
    Prototype(
        RegExp(r'^sha384\$[a-z0-9]+\$[a-f0-9]{96}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.Django_SHA_384, hashcat: null, john: null, extended: false),
    ]),
    Prototype(
        RegExp(r'^crypt1:[a-z0-9+=]{12}:[a-z0-9+=]{12}$', caseSensitive: false),
        [
          const HashInfo(
              id: Hash.Clavister_Secure_Gateway,
              hashcat: null,
              john: null,
              extended: false),
        ]),
    Prototype(RegExp(r'^[a-f0-9]{112}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.Cisco_VPN_Client_PCF_File,
          hashcat: null,
          john: null,
          extended: false),
    ]),
    Prototype(RegExp(r'^[a-f0-9]{1329}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.Microsoft_MSTSC_RDP_File,
          hashcat: null,
          john: null,
          extended: false),
    ]),
    Prototype(
        RegExp(
            r'^[^\\\/:*?"<>|]{1,20}[:]{2,3}([^\\\/:*?"<>|]{1,20})?:[a-f0-9]{48}:[a-f0-9]{48}:[a-f0-9]{16}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.NetNTLMv1_VANILLA_NetNTLMv1_ESS,
              hashcat: '5500',
              john: 'netntlm',
              extended: false),
        ]),
    Prototype(
        RegExp(
            r'^([^\\\/:*?"<>|]{1,20}\\)?[^\\\/:*?"<>|]{1,20}[:]{2,3}([^\\\/:*?"<>|]{1,20}:)?[^\\\/:*?"<>|]{1,20}:[a-f0-9]{32}:[a-f0-9]+$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.NetNTLMv2,
              hashcat: '5600',
              john: 'netntlmv2',
              extended: false),
        ]),
    Prototype(
        RegExp(r'^\$(krb5pa|mskrb5)\$([0-9]{2})?\$.+\$[a-f0-9]{1,}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.Kerberos_5_AS_REQ_Pre_Auth,
              hashcat: '7500',
              john: 'krb5pa-md5',
              extended: false),
        ]),
    Prototype(
        RegExp(
            r'^\$scram\$[0-9]+\$[a-z0-9\/.]{16}\$sha-1=[a-z0-9\/.]{27},sha-256=[a-z0-9\/.]{43},sha-512=[a-z0-9\/.]{86}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.SCRAM_Hash, hashcat: null, john: null, extended: false),
        ]),
    Prototype(RegExp(r'^[a-f0-9]{40}:[a-f0-9]{0,32}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.Redmine_Project_Management_Web_App,
          hashcat: '7600',
          john: null,
          extended: false),
    ]),
    Prototype(RegExp(r'^(.+)?\$[a-f0-9]{16}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.SAP_CODVN_B_BCODE,
          hashcat: '7700',
          john: 'sapb',
          extended: false),
    ]),
    Prototype(RegExp(r'^(.+)?\$[a-f0-9]{40}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.SAP_CODVN_F_G_PASSCODE,
          hashcat: '7800',
          john: 'sapg',
          extended: false),
    ]),
    Prototype(
        RegExp(r'^(.+\$)?[a-z0-9\/.+]{30}(:.+)?$', caseSensitive: false), [
      const HashInfo(
          id: Hash.Juniper_Netscreen_SSG_ScreenOS,
          hashcat: '22',
          john: 'md5ns',
          extended: false),
    ]),
    Prototype(
        RegExp(r'^0x[a-f0-9]{60}\s0x[a-f0-9]{40}$', caseSensitive: false), [
      const HashInfo(id: Hash.EPi, hashcat: '123', john: null, extended: false),
    ]),
    Prototype(RegExp(r'^[a-f0-9]{40}:[^*]{1,25}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.SMF_v1_1, hashcat: '121', john: null, extended: false),
    ]),
    Prototype(
        RegExp(r'^(\$wbb3\$\*1\*)?[a-f0-9]{40}[:*][a-f0-9]{40}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.Woltlab_Burning_Board_3_x,
              hashcat: '8400',
              john: 'wbb3',
              extended: false),
        ]),
    Prototype(
        RegExp(r'^[a-f0-9]{130}(:[a-f0-9]{40})?$', caseSensitive: false), [
      const HashInfo(
          id: Hash.IPMI2_RAKP_HMAC_SHA1,
          hashcat: '7300',
          john: null,
          extended: false),
    ]),
    Prototype(
        RegExp(r'^[a-f0-9]{32}:[0-9]+:[a-z0-9_.+-]+@[a-z0-9-]+\.[a-z0-9-.]+$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.Lastpass, hashcat: '6800', john: null, extended: false),
        ]),
    Prototype(RegExp(r'^[a-z0-9\/.]{16}([:$].{1,})?$', caseSensitive: false), [
      const HashInfo(
          id: Hash.Cisco_ASA_MD5,
          hashcat: '2410',
          john: 'asa-md5',
          extended: false),
    ]),
    Prototype(
        RegExp(r'^\$vnc\$\*[a-f0-9]{32}\*[a-f0-9]{32}$', caseSensitive: false),
        [
          const HashInfo(
              id: Hash.VNC, hashcat: null, john: 'vnc', extended: false),
        ]),
    Prototype(
        RegExp(
            r'^[a-z0-9]{32}(:([a-z0-9-]+\.)?[a-z0-9-.]+\.[a-z]{2,7}:.+:[0-9]+)?$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.DNSSEC_NSEC3,
              hashcat: '8300',
              john: null,
              extended: false),
        ]),
    Prototype(
        RegExp(r'^(user-.+:)?\$racf\$\*.+\*[a-f0-9]{16}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.RACF, hashcat: '8500', john: 'racf', extended: false),
        ]),
    Prototype(RegExp(r'^\$3\$\$[a-f0-9]{32}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.NTHash_FreeBSD_Variant,
          hashcat: null,
          john: null,
          extended: false),
    ]),
    Prototype(
        RegExp(r'^\$sha1\$[0-9]+\$[a-z0-9\/.]{0,64}\$[a-z0-9\/.]{28}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.SHA_1_Crypt,
              hashcat: null,
              john: 'sha1crypt',
              extended: false),
        ]),
    Prototype(RegExp(r'^[a-f0-9]{70}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.HMailServer,
          hashcat: '1421',
          john: 'hmailserver',
          extended: false),
    ]),
    Prototype(
        RegExp(r'^[:\$][AB][:\$]([a-f0-9]{1,8}[:\$])?[a-f0-9]{32}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.MediaWiki,
              hashcat: '3711',
              john: 'mediawiki',
              extended: false),
        ]),
    Prototype(RegExp(r'^[a-f0-9]{140}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.Minecraft_xAuth, hashcat: null, john: null, extended: false),
    ]),
    Prototype(
        RegExp(r'^\$pbkdf2(-sha1)?\$[0-9]+\$[a-z0-9\/.]+\$[a-z0-9\/.]{27}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.PBKDF2_SHA1_Generic,
              hashcat: null,
              john: null,
              extended: false),
        ]),
    Prototype(
        RegExp(r'^\$pbkdf2-sha256\$[0-9]+\$[a-z0-9\/.]+\$[a-z0-9\/.]{43}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.PBKDF2_SHA256_Generic,
              hashcat: null,
              john: 'pbkdf2-hmac-sha256',
              extended: false),
        ]),
    Prototype(
        RegExp(r'^\$pbkdf2-sha512\$[0-9]+\$[a-z0-9\/.]+\$[a-z0-9\/.]{86}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.PBKDF2_SHA512_Generic,
              hashcat: null,
              john: null,
              extended: false),
        ]),
    Prototype(
        RegExp(r'^\$p5k2\$[0-9]+\$[a-z0-9\/+=-]+\$[a-z0-9\/+-]{27}=$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.PBKDF2_Cryptacular,
              hashcat: null,
              john: null,
              extended: false),
        ]),
    Prototype(
        RegExp(r'^\$p5k2\$[0-9]+\$[a-z0-9\/.]+\$[a-z0-9\/.]{32}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.PBKDF2_Dwayne_Litzenberger,
              hashcat: null,
              john: null,
              extended: false),
        ]),
    Prototype(
        RegExp(r'^{FSHP[0123]\|[0-9]+\|[0-9]+}[a-z0-9\/+=]+$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.Fairly_Secure_Hashed_Password,
              hashcat: null,
              john: null,
              extended: false),
        ]),
    Prototype(RegExp(r'^\$PHPS\$.+\$[a-f0-9]{32}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.PHPS, hashcat: '2612', john: 'phps', extended: false),
    ]),
    Prototype(
        RegExp(r'^[0-9]{4}:[a-f0-9]{16}:[a-f0-9]{2080}$', caseSensitive: false),
        [
          const HashInfo(
              id: Hash.OnePassword_Agile_Keychain,
              hashcat: '6600',
              john: null,
              extended: false),
        ]),
    Prototype(
        RegExp(r'^[a-f0-9]{64}:[a-f0-9]{32}:[0-9]{5}:[a-f0-9]{608}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.OnePassword_Cloud_Keychain,
              hashcat: '8200',
              john: null,
              extended: false),
        ]),
    Prototype(
        RegExp(
            r'^[a-f0-9]{256}:[a-f0-9]{256}:[a-f0-9]{16}:[a-f0-9]{16}:[a-f0-9]{320}:[a-f0-9]{16}:[a-f0-9]{40}:[a-f0-9]{40}:[a-f0-9]{32}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.IKE_PSK_MD5,
              hashcat: '5300',
              john: null,
              extended: false),
        ]),
    Prototype(
        RegExp(
            r'^[a-f0-9]{256}:[a-f0-9]{256}:[a-f0-9]{16}:[a-f0-9]{16}:[a-f0-9]{320}:[a-f0-9]{16}:[a-f0-9]{40}:[a-f0-9]{40}:[a-f0-9]{40}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.IKE_PSK_SHA1,
              hashcat: '5400',
              john: null,
              extended: false),
        ]),
    Prototype(RegExp(r'^[a-z0-9\/+]{27}=$', caseSensitive: false), [
      const HashInfo(
          id: Hash.PeopleSoft, hashcat: '133', john: null, extended: false),
    ]),
    Prototype(
        RegExp(r'^crypt\$[a-f0-9]{5}\$[a-z0-9\/.]{13}$', caseSensitive: false),
        [
          const HashInfo(
              id: Hash.Django_DES_Crypt_Wrapper,
              hashcat: null,
              john: null,
              extended: false),
        ]),
    Prototype(
        RegExp(
            r'^(\$django\$\*1\*)?pbkdf2_sha256\$[0-9]+\$[a-z0-9]+\$[a-z0-9\/+=]{44}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.Django_PBKDF2_HMAC_SHA256,
              hashcat: '10000',
              john: 'django',
              extended: false),
        ]),
    Prototype(
        RegExp(r'^pbkdf2_sha1\$[0-9]+\$[a-z0-9]+\$[a-z0-9\/+=]{28}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.Django_PBKDF2_HMAC_SHA1,
              hashcat: null,
              john: null,
              extended: false),
        ]),
    Prototype(
        RegExp(r'^bcrypt(\$2[axy]|\$2)\$[0-9]{2}\$[a-z0-9\/.]{53}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.Django_bcrypt,
              hashcat: null,
              john: null,
              extended: false),
        ]),
    Prototype(RegExp(r'^md5\$[a-f0-9]+\$[a-f0-9]{32}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.Django_MD5, hashcat: null, john: null, extended: false),
    ]),
    Prototype(RegExp(r'^\{PKCS5S2\}[a-z0-9\/+]{64}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.PBKDF2_Atlassian,
          hashcat: null,
          john: null,
          extended: false),
    ]),
    Prototype(RegExp(r'^md5[a-f0-9]{32}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.PostgreSQL_MD5, hashcat: null, john: null, extended: false),
    ]),
    Prototype(RegExp(r'^\([a-z0-9\/+]{49}\)$', caseSensitive: false), [
      const HashInfo(
          id: Hash.Lotus_Notes_Domino_8,
          hashcat: '9100',
          john: null,
          extended: false),
    ]),
    Prototype(
        RegExp(r'^SCRYPT:[0-9]{1,}:[0-9]{1}:[0-9]{1}:[a-z0-9:\/+=]{1,}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.Scrypt, hashcat: '8900', john: null, extended: false),
        ]),
    Prototype(
        RegExp(r'^\$8\$[a-z0-9\/.]{14}\$[a-z0-9\/.]{43}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.Cisco_Type_8,
              hashcat: '9200',
              john: 'cisco8',
              extended: false),
        ]),
    Prototype(
        RegExp(r'^\$9\$[a-z0-9\/.]{14}\$[a-z0-9\/.]{43}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.Cisco_Type_9,
              hashcat: '9300',
              john: 'cisco9',
              extended: false),
        ]),
    Prototype(
        RegExp(
            r'^\$office\$\*2007\*[0-9]{2}\*[0-9]{3}\*[0-9]{2}\*[a-z0-9]{32}\*[a-z0-9]{32}\*[a-z0-9]{40}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.Microsoft_Office_2007,
              hashcat: '9400',
              john: 'office',
              extended: false),
        ]),
    Prototype(
        RegExp(
            r'^\$office\$\*2010\*[0-9]{6}\*[0-9]{3}\*[0-9]{2}\*[a-z0-9]{32}\*[a-z0-9]{32}\*[a-z0-9]{64}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.Microsoft_Office_2010,
              hashcat: '9500',
              john: null,
              extended: false),
        ]),
    Prototype(
        RegExp(
            r'^\$office\$\*2013\*[0-9]{6}\*[0-9]{3}\*[0-9]{2}\*[a-z0-9]{32}\*[a-z0-9]{32}\*[a-z0-9]{64}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.Microsoft_Office_2013,
              hashcat: '9600',
              john: null,
              extended: false),
        ]),
    Prototype(
        RegExp(
            r'^\$fde\$[0-9]{2}\$[a-f0-9]{32}\$[0-9]{2}\$[a-f0-9]{32}\$[a-f0-9]{3072}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.Android_FDE_4_3,
              hashcat: '8800',
              john: 'fde',
              extended: false),
        ]),
    Prototype(
        RegExp(r'^\$oldoffice\$[01]\*[a-f0-9]{32}\*[a-f0-9]{32}\*[a-f0-9]{32}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.Microsoft_Office_2003_MD5_RC4,
              hashcat: '9700',
              john: 'oldoffice',
              extended: false),
          const HashInfo(
              id: Hash.Microsoft_Office_2003_MD5_RC4_collider_mode_1,
              hashcat: '9710',
              john: 'oldoffice',
              extended: false),
          const HashInfo(
              id: Hash.Microsoft_Office_2003_MD5_RC4_collider_mode_2,
              hashcat: '9720',
              john: 'oldoffice',
              extended: false),
        ]),
    Prototype(
        RegExp(r'^\$oldoffice\$[34]\*[a-f0-9]{32}\*[a-f0-9]{32}\*[a-f0-9]{40}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.Microsoft_Office_2003_SHA1_RC4,
              hashcat: '9800',
              john: null,
              extended: false),
          const HashInfo(
              id: Hash.Microsoft_Office_2003_SHA1_RC4_collider_mode_1,
              hashcat: '9810',
              john: null,
              extended: false),
          const HashInfo(
              id: Hash.Microsoft_Office_2003_SHA1_RC4_collider_mode_2,
              hashcat: '9820',
              john: null,
              extended: false),
        ]),
    Prototype(RegExp(r'^(\$radmin2\$)?[a-f0-9]{32}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.RAdmin_v2_x,
          hashcat: '9900',
          john: 'radmin',
          extended: false),
    ]),
    Prototype(
        RegExp(r'^{x-issha,\s[0-9]{4}}[a-z0-9\/+=]+$', caseSensitive: false), [
      const HashInfo(
          id: Hash.SAP_CODVN_H_PWDSALTEDHASH_iSSHA_1,
          hashcat: '10300',
          john: 'saph',
          extended: false),
    ]),
    Prototype(
        RegExp(r'^\$cram_md5\$[a-z0-9\/+=-]+\$[a-z0-9\/+=-]{52}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.CRAM_MD5, hashcat: '10200', john: null, extended: false),
        ]),
    Prototype(
        RegExp(r'^[a-f0-9]{16}:2:4:[a-f0-9]{32}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.SipHash, hashcat: '10100', john: null, extended: false),
    ]),
    Prototype(RegExp(r'^[a-f0-9]{4,}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.Cisco_Type_7, hashcat: null, john: null, extended: true),
    ]),
    Prototype(RegExp(r'^[a-z0-9\/.]{13,}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.BigCrypt, hashcat: null, john: 'bigcrypt', extended: true),
    ]),
    Prototype(RegExp(r'^(\$cisco4\$)?[a-z0-9\/.]{43}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.Cisco_Type_4,
          hashcat: null,
          john: 'cisco4',
          extended: false),
    ]),
    Prototype(
        RegExp(r'^bcrypt_sha256\$\$(2[axy]|2)\$[0-9]+\$[a-z0-9\/.]{53}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.Django_bcrypt_SHA256,
              hashcat: null,
              john: null,
              extended: false),
        ]),
    Prototype(
        RegExp(r'^\$postgres\$.[^\*]+[*:][a-f0-9]{1,32}[*:][a-f0-9]{32}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.PostgreSQL_Challenge_Response_Authentication_MD5,
              hashcat: '11100',
              john: 'postgres',
              extended: false),
        ]),
    Prototype(
        RegExp(r'^\$siemens-s7\$\$[0-9]{1}\$[a-f0-9]{40}\$[a-f0-9]{40}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.Siemens_S7,
              hashcat: null,
              john: 'siemens-s7',
              extended: false),
        ]),
    Prototype(RegExp(r'^(\$pst\$)?[a-f0-9]{8}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.Microsoft_Outlook_PST,
          hashcat: null,
          john: null,
          extended: false),
    ]),
    Prototype(
        RegExp(r'^sha256[:$][0-9]+[:$][a-z0-9\/+]+[:$][a-z0-9\/+]{32,128}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.PBKDF2_HMAC_SHA256_PHP,
              hashcat: '10900',
              john: null,
              extended: false),
        ]),
    Prototype(RegExp(r'^(\$dahua\$)?[a-z0-9]{8}$', caseSensitive: false), [
      const HashInfo(
          id: Hash.Dahua, hashcat: null, john: 'dahua', extended: false),
    ]),
    Prototype(
        RegExp(r'^\$mysqlna\$[a-f0-9]{40}[:*][a-f0-9]{40}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.MySQL_Challenge_Response_Authentication_SHA1,
              hashcat: '11200',
              john: null,
              extended: false),
        ]),
    Prototype(
        RegExp(
            r'^\$pdf\$[24]\*[34]\*128\*[0-9-]{1,5}\*1\*(16|32)\*[a-f0-9]{32,64}\*32\*[a-f0-9]{64}\*(8|16|32)\*[a-f0-9]{16,64}$',
            caseSensitive: false),
        [
          const HashInfo(
              id: Hash.PDF_1_4_1_6_Acrobat_5_8,
              hashcat: '10500',
              john: 'pdf',
              extended: false),
        ]),
  ];
}