精华内容
下载资源
问答
  • 2017-02-20 13:39:01
    win7企业英文版:
    文件名
        en_windows_7_enterprise_x86_dvd_X15-70745.iso
    SHA1
        C6B905E48FDB6CB5BFCA967715A64461B812D40C
    文件大小:2.24GB
    发布时间:2009-08-06
    ed2k://|file|en_windows_7_enterprise_x86_dvd_X15-70745.iso|2400401408|4117C4CB9648A9ED79CC6CFB47A10696|/


    文件名
        en_windows_7_enterprise_with_sp1_x86_dvd_u_677710.iso
    SHA1
        4E0450AC73AB6F9F755EB422990CD9C7A1F3509C
    文件大小:2.27GB
    发布时间:2011-05-12
    ed2k://|file|en_windows_7_enterprise_with_sp1_x86_dvd_u_677710.iso|2434502656|9B710D7876B754D5F96F72B4A7C9B9A8|/

    ------------------------------------------------------------------------------------------------------------------------------------------------------------
    win7专业英文版:
    文件名
        en_windows_7_professional_x86_dvd_x15-65804.iso
    SHA1
        697FA06554502FB21D30275273B25747299C020D
    文件大小:2.33GB
    发布时间:2009-08-06
    ed2k://|file|en_windows_7_professional_x86_dvd_x15-65804.iso|2501894144|61D69F2250F114B95720CB81D3C1C5EE|/


    win7专业英文版64位:
    文件名
        en_windows_7_professional_x64_dvd_x15-65805.iso
    SHA1
        50127304441A793EE51B3F501289F6599A559E9F
    文件大小:3GB
    发布时间:2009-08-06
    ed2k://|file|en_windows_7_professional_x64_dvd_x15-65805.iso|3224686592|A71F26E478076FFC75F02CB6459E87B0|/


    win7专业批量版:
    文件名
        en_windows_7_professional_vl_build_x86_dvd_x15-71033.iso
    SHA1
        304817E859A5B27E828F46AAC54CB46A576A34CC
    文件大小:2.24GB
    发布时间:2009-11-12
    ed2k://|file|en_windows_7_professional_vl_build_x86_dvd_x15-71033.iso|2400239616|A9A9F338CE1040FCFB8D22DBD7269765|/
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------

    win7专业中文简体版
    文件名
        cn_windows_7_professional_with_sp1_vl_build_x86_dvd_u_677939.iso
    SHA1
        27AE9FBAF9EE076F50F153353E42A3BE74A61FAB
    文件大小:2.33GB
    发布时间:2011-05-12
    ed2k://|file|cn_windows_7_professional_with_sp1_vl_build_x86_dvd_u_677939.iso|2502909952|935E5B4B754527BE3C238FA6ABDD9B86|/

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    win10最新英文版本:
    文件名
        en_windows_10_multiple_editions_version_1607_updated_jan_2017_x64_dvd_9714399.iso
    SHA1
        44064680647EE4C877A6F54739AD82759147C828
    文件大小:4.49GB
    发布时间:2017-01-19
    ed2k://|file|en_windows_10_multiple_editions_version_1607_updated_jan_2017_x64_dvd_9714399.iso|4823797760|CD6DB15B96A23F95CD4594B7F5061AB3|/


    win10最新中文版本:
    文件名
        cn_windows_10_multiple_editions_version_1607_updated_jan_2017_x64_dvd_9714394.iso
    SHA1
        163DE39B1E40C02C1E774BBFF6448FB439F61AC0
    文件大小:4.42GB
    发布时间:2017-01-19
    ed2k://|file|cn_windows_10_multiple_editions_version_1607_updated_jan_2017_x64_dvd_9714394.iso|4747692032|27841B07666580185078EE62915191A1|/

    win10最新中文企业版:
    文件名
        cn_windows_10_enterprise_version_1607_updated_jan_2017_x64_dvd_9714414.iso
    SHA1
        570A5347A2318C533891967120CC21451BD8A6BA
    文件大小:4.17GB
    发布时间:2017-01-19
    ed2k://|file|cn_windows_10_enterprise_version_1607_updated_jan_2017_x64_dvd_9714414.iso|4474976256|21E442B2D57E3F1C15C13DBE9F4A09AD|/
    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    更多相关内容
  • 07.哈希和信息验证码

    2018-01-06 16:16:00
    7.1 Overview of Hashes and MACs ... 其次,构造第二个消息产生相同的哈希值应该是非常困难的。 第三,也很难找到任何两个产生相同散列值的消息。 Table 7-1. Message digests and the EVP ...
    7.1 Overview of Hashes and MACs
    首先,摘要值不应包含可用于确定原始输入的信息。 为了实现这一点,输入数据中的一位变化应该改变摘要值中的许多位(平均一半)。 其次,构造第二个消息产生相同的哈希值应该是非常困难的。 第三,也很难找到任何两个产生相同散列值的消息。
     
    Table 7-1. Message digests and the EVP interface
    Hash algorithm
    EVP call for getting EVP_MD
    String for lookup
    Digest length (in bits)
    MD2
    EVP_md2
    md2
    128
    MD4
    EVP_md4
    md4
    128
    MD5
    EVP_md5
    md5
    128
    MDC2
    EVP_mdc2
    mdc2
    128
    SHA1
    EVP_sha1
    EVP_dssl
    sha1
    dssl
    160
    RIPEMD-160
    EVP_ripemd160
    ripemd
    160
     
    函数
     
    void EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type);
    功能
    初始化ctx句柄
    参数
     
    ctx
     
    type
    listed Table 7-1
     
     
    函数
     
     
    void EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *buf, unsigned int len);
    功能
    用于在散列计算中包含数据
    参数
     
    ctx
     
    buf
    计算hash数据
     
    len
    buf长度
     
     
    函数
     
     
    void EVP_DigestFinal(EVP_MD_CTX *ctx, unsigned char *hash, unsigned int *len);
     
    功能
    一旦散列考虑的所有数据已经传递给EVP_DigestUpdate,
    结果散列值可以使用EVP_DigestFinal检索。
    参数
     
    ctx
     
    hash
    哈希值将放置在其中的缓冲区。 这个缓冲区应该至少是EVP_MAX_MD_SIZE字节的大小。
     
    len
    buf长度
     
     
    7.3 Using MACs
    函数
     
    unsigned char *HMAC(const EVP_MD *type, const void *key, int keylen,
    const unsigned char *data, int datalen,
    unsigned char *hash, unsigned int *hashlen);
    功能
    产生MAC值
    参数
     
    type
    要使用的消息摘要。
    key
    包含将使用的密钥的缓冲区。
     
    keylen
    密钥长度
    data
    包含将要计算HMAC的数据的缓冲区。
    datalen
    数据长度
    hash
    计算的消息摘要将被放置的缓冲区
    hashlen
    指向一个整数的指针,该整数将接收填充的散列缓冲区的字节数。
     
    函数
     
    void HMAC_Init(HMAC_CTX *ctx, const void *key, int keylen, const
    EVP_MD *type);
     
    功能
    初始化HMAC对象
    参数
     
    ctx
    ctx对象
    key
    包含将要使用的密钥的缓冲区。
     
    keylen
    密钥缓冲区中的字节数将被视为有效的密钥数据。
    type
    将使用的消息摘要对象。
     
     
    函数
     
    void HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, int len);
     
    功能
    正在用于计算MAC的HMAC上下文对象。
    参数
     
    ctx
    ctx对象
    data
    计算的数据
     
     
    len
     
    计算数据的长度
     
     
    函数
     
    void HMAC_Final(HMAC_CTX *ctx, unsigned char *hash, unsigned int *len);
     
     
    功能
    获取HMAC值
    参数
     
    ctx
    ctx对象
    hash
    将接收计算出的散列值的缓冲区。
     
     
    len
     
    hash长度
     
     
    7.3.1 Other MACs

    转载于:https://www.cnblogs.com/aixiaoxiaoyu/p/8214529.html

    展开全文
  • 使用哈希函数进行加密,用户信息更安全 6. 多用if等简单语句,小白也能看懂 二.本系统由四部分代码组成: 1. users.py(主代码,程序在此运行) 2. login.py(用户登录时调用) 3. register.py(用户注册时调用...
  • 哈希爆破Hashcat用法

    千次阅读 2019-10-05 22:49:46
    Hashcat ...还有一个单独新出的oclRausscrack。其区别为Hashcat只支持cpu破解;oclHashcat和oclGausscrack则支持gpu加速。oclHashcat则分为AMD版和NIVDA版。 HashCat主要分为三个版本:Hashcat、oclHashcat-plus...

    Hashcat

    Hashcat系列软件是比较牛逼的密码破解软件,系列软件包含Hashcat、oclHashcat;还有一个单独新出的oclRausscrack。其区别为Hashcat只支持cpu破解;oclHashcat和oclGausscrack则支持gpu加速。oclHashcat则分为AMD版和NIVDA版。

    HashCat主要分为三个版本:Hashcat、oclHashcat-plus、oclHashcat-lite。这三个版本的主要区别是:HashCat只支持CPU破解。oclHashcat-plus支持使用GPU破解多个HASH,并且支持的算法高达77种。oclHashcat-lite只支持使用GPU对单个HASH进行破解,支持的HASH种类仅有32种,但是对算法进行了优化,可以达到GPU破解的最高速度。如果只有单个密文进行破解的话,推荐使用oclHashCat-lite。
     

    hashcat使用命令简介

    1.指定HASH类型

    在HashCat中--hash-type ?参数可以指定要破解的HASH类型,运行hashcat主程序加上--help参数,在* Generic hash types:中可以看到各种HASH类型的代号,如图所示:  enter image description here

    不同版本的HashCat所支持的hash类型有所不同,如果没有指定--hash-type参数,那么程序默认为MD5类型。

    2.指定破解模式

    在HashCat中--attack-mode ?参数可以可以指定破解模式,软件一共支持5种破解模式,分别为

    0 Straight(字典破解)
    1 Combination(组合破解)
    3 Brute-force(掩码暴力破解)
    6 Hybrid dict + mask(混合字典+掩码)
    7 Hybrid mask + dict(混合掩码+字典)

    下面为大家介绍两个最常用的破解方式:字典破解和掩码暴力破解。

    使用字典破解MD5:

    oclHashcat-plus64.exe --hash-type 0 --attack-mode 0 {HASH文件} [字典1] [字典2] [字典3]…

    如:

    oclHashcat-plus64.exe --hash-type 0 --attack-mode 0 d:md5.txt d:dict1.txt d:dict2.txt

    字典破解由于受到磁盘和内存速度的影响,速度无法达到GPU的最大运算速度,基本上一个5GB的字典,对于MD5破解来说10分钟内可以跑完。

    使用掩码暴力破解SHA1:

    oclHashcat-plus64.exe --hash-type 100 --attack-mode 3 {HASH文件} [掩码]

    {掩码的设置}

    对于掩码,这边需要稍微做一个说明。Hashcat默认的掩码一共有9种,如图所示:

    enter image description here

    ?l表示a-z,?u表示A-Z,?d表示0-9,?a表示键盘上所有的特殊字符,?s表示键盘上所有的可见字符,?h表示8bit 0xc0-0xff的十六进制,?D表示8bit的德语字符,?F表示8bit的法语字符,?R表示8bit的俄语字符。

    那么有同学可能会问了,如果我要用掩码表示小写+数字怎么办呢?这就需要用到自定义字符集这个参数了。软件支持用户最多定义4组字符集,分别用

    --custom-charset1 [chars]
    --custom-charset2 [chars]
    --custom-charset3 [chars]
    --custom-charset4 [chars]

    来表示,在掩码中用?1、?2、?3、?4来表示。

    比如说我要设置自定义字符集1为小写+数字,那么就加上

    -- custom-charset1 ?l?d

    如果要设置自定义字符集2为abcd1234,那么就加上

    --custom-charset2 abcd1234

    如果要破解8位的小写+数字,那么需要设置自定义字符集1为

    --custom-charset1 ?l?d

    设置掩码为?1?1?1?1?1?1?1?1。 如果已知密码的第一位为数字,长度为8位,后几位为大写+小写,那么需要设置自定义字符集1为

    --custom-charset1 ?l?u

    设置掩码为?d?1?1?1?1?1?1?1。

    {掩码的长度}

    对于已知长度的密码,可以使用固定长度的掩码进行破解。比如要破解11位数字,就可以这样写掩码?d?d?d?d?d?d?d?d?d?d?d。

    对于想要破解一些未知长度的密码,希望软件在一定长度范围内进行尝试的,可以使用--increment参数,并且使用--increment-min ?定义最短长度,使用--increment-max ?定义最大长度。比如要尝试6-8位小写字母,可以这样写

    --increment --increment-min 6 --increment-max 8 ?l?l?l?l?l?l?l?l

    {举例}

    破解8-11位数字+小写

    oclHashcat-plus64.exe --hash-type 100 --attack-mode 3 --increment --increment-min 8 --increment-max 11 --custom-charset1 ?l?d d:sha1.txt ?1?1?1?1?1?1?1?1?1?1?1
    展开全文
  • Java破解验证码

    2019-02-21 13:42:41
    具体步骤: 1、访问验证码链接保存图片 2、去除干扰线 3、把图片分割,保存素材 3、图片匹配() 比较图片相似: 1、把图片转换成二进制码,进行...4、均值哈希实现图像比较(FingerPrint),素材越多,成功率越高。
  • 1、介绍 在爬虫中经常会遇到验证码识别的问题,现在的验证码大多分计算验证码、滑块验证码、识图验证码、...经常用的库有pytesseract(识别库)、OpenCV(高级图像处理库)、imagehash(图片哈希值库)、numpy(开源的、高
  • 一,环境部署 1.创建一个django测试项目 二,文档部署 1.下载安装python对应的SDK ...用户标识,若担心用户信息风险,可作预处理(如哈希处理)再提供 client_type 客户端类型,web(pc浏览器),h5
  • 我的目录是这样的 测试的源码 我知道的有两种种方式【相似图片-均值哈希】: 1.从网站拿到原图 - 进行每张旋转拿哈希值【主要麻烦是每张图片都要提前拿哈希值进行存储】 2.从网站拿到原图 - 每次判断角度时都要遍历...

    我的目录是这样的

    在这里插入图片描述

    测试的源码

    我知道的有两种种方式【相似图片-均值哈希】:

    1.从网站拿到原图 - 进行每张旋转拿哈希值【主要麻烦是每张图片都要提前拿哈希值进行存储】
    2.从网站拿到原图 - 每次判断角度时都要遍历原图拿到角度【主要是遍历图片的性能开销】
    裁剪圆图这里不建议返回img_new进行哈希运算,试了会发现不是圆图(保存的是圆图)

    %%time
    # https://blog.csdn.net/san1156/article/details/76691841
    import cv2
    import os
    import sys
    import pickledb
    import numpy as np
    from PIL import Image
    from functools import partial
    from matplotlib import pyplot as plt
    # 从文件反序列化,auto_dump 是每次写入操作都会写到文件,可以设置为False避免多次io
    db = pickledb.load('./images/cv.db', False)
    
    
    
    # 图像处理,获取图片最大内接圆,其他区域置为透明
    def circle(img_path,show=False):
        try:
            img = cv2.imread(img_path, cv2.IMREAD_UNCHANGED)
            rows, cols = img.shape[:2]
    
            # 创建一张4通道的新图片,包含透明通道,初始化是透明的
            img_new = np.zeros((rows,cols,4), np.uint8)
            img_new[:,:,0:3] = img[:,:,0:3]
    
            # 创建一张单通道的图片,设置最大内接圆为不透明,注意圆心的坐标设置,cols是x坐标,rows是y坐标
            img_circle = np.zeros((rows,cols,1),np.uint8)
            img_circle[:,:,:] = 0  # 设置为全透明
    
            # 设置最大内接圆为不透明
            x,y,radius = rows/2,cols/2,int(min(rows, cols)/2)
            img_circle = cv2.circle(
                img=img_circle, # 画圆的图像
                center=(int(x),int(y)), # 圆心
                radius=radius-2, # 圆的半径
                color=(255), # 圆圈颜色
                thickness=-1,#  圆形轮廓的粗细(如果为正)。负值(如FILLED)表示要绘制一个实心圆。
                lineType=cv2.LINE_AA,# 圆边界的类型
                shift=0,
            ) 
            # 图片融合
            img_new[:,:,3] = img_circle[:,:,0]
            
    
            # 显示图片,调用matplotlib.pyplot展示
            plt.subplot(121), plt.imshow(img_convert(img), cmap='gray'), plt.title('IMG')
            plt.subplot(122), plt.imshow(img_convert(img_new), cmap='gray'), plt.title('IMG_NEW')
            plt.show()
            if show:
                cv2.imwrite('./temp.png', img_new)
                return True
            else:
                cv2.imwrite(r'./images/1/1.png', img_new)
                return True
        except Exception as e:
            print(f"错误:{e}")
            return False
        
        
        
        
    # cv2与matplotlib的图像转换,cv2是bgr格式,matplotlib是rgb格式
    def img_convert(cv2_img):
        # 灰度图片直接返回
        if len(cv2_img.shape) == 2:
            return cv2_img
        # 3通道的BGR图片
        elif len(cv2_img.shape) == 3 and cv2_img.shape[2] == 3:
            b, g, r = cv2.split(cv2_img)
            return cv2.merge((r, g, b))
        # 4通道的BGR图片
        elif len(cv2_img.shape) == 3 and cv2_img.shape[2] == 4:
            b, g, r, a = cv2.split(cv2_img)
            return cv2.merge((r, g, b, a))
        # 未知图片格式
        else:
            return cv2_img
        
    
    
    
    def Get_hash(image_path='',im=None):
        if im is None:
            im = Image.open(image_path)
            # im.show(image_path)
        # 1.缩小尺寸。将图片缩小到8×8的尺寸,总共64个像素。这一步的作用是去除图片的细节,只保留结构、明暗等基本信息,摒弃不同尺寸、比例带来的图片差异。
        # 2.简化色彩。将缩小后的图片,转为64级灰度。也就是说,所有像素点总共只有64种颜色。
        im = im.resize((8, 8), Image.ANTIALIAS).convert('L')
        # 3.计算平均值。计算所有64个像素的灰度平均值。
        avg =  sum(list(im.getdata())) / 64.0
        # 4.比较像素的灰度。将每个像素的灰度,与平均值进行比较。大于或等于平均值,记为1;小于平均值,记为0。
        # 5.计算哈希值。将上一步的比较结果,组合在一起,就构成了一个64位的整数,这就是这张图片的指纹。组合的次序并不重要,只要保证所有图片都采用同样次序就行了。
        str1 = ''.join(map(lambda i: '0' if i < avg else '1', im.getdata()))  # 得到哈希字符串
        # 6.将64位哈希值序列4个4个分割,转为十六进制。
        str2 = ''.join(map(lambda x: '%x' % int(str1[x: x + 4], 2), range(0, 64, 4)))  # %x:转换无符号十六进制
        return str2
    
    
        
    
    
    # 得到汉明距离
    def Get_Hamming(str1, str2=''):
        # 如果不相同的数据位不超过5,就说明两张图片很相似;如果大于10,就说明这是两张不同的图片。
        Hamming = 0
        for i in range(16):
            if str1[i] != str2[i]:
                Hamming += 1
        return Hamming
    
    
    
    
    # 逆时针旋转
    def rotate(angle,img):
        height, width = img.shape[:2]
        matRotation = cv2.getRotationMatrix2D((width / 2, height / 2), angle, 1)
        imgRotation = cv2.warpAffine(img, matRotation, (width, height),)
        cv2.imwrite(r'./images/1/%s.png'%(angle), imgRotation)
    
    
    
    
    
    
    
    """
    print(f"开始训练--------------------------------------------------------------------------------------✨")
    filename = '4'
    # 1.创建存放模型图片的文件
    path = os.path.join(os.getcwd(), 'images', '1')
    if not os.path.exists(path):
        os.mkdir(path)
    
        
        
        
    # 2.创建模型圆形图案【算是第二版:解决图片边缘】
    ok = circle(r'./images/%s-yuan.png'%filename)
    pHash = Get_hash(r'./images/1/1.png')
    print(f"临时哈希Key:{pHash}")
    
    ok = circle(r'D:/jupyter_working/mi.png',True)
    hash_str = Get_hash('D:/jupyter_working/temp.png')
    similar = partial(Get_Hamming, str2=hash_str)
    print(f"临时哈希Key:{hash_str}")
        
    if ok:
        dome = set() # 保存图片哈希Key
        # 3.创建模型【解决图片旋转时失真】
        # COLOR_GRAY2RGB:只读取彩色像素【解决了默认底色为黑并且图片不会失真】
        img = cv2.imread(r'./images/1/1.png',cv2.COLOR_GRAY2RGB) 
    
        tick = cv2.TickMeter()
        # 4.存储图片的均值哈希密文
        with open("./images/%s.txt"%filename,'w+',encoding='utf-8') as f:
            for angle in range(1,361):
                tick.reset()
                tick.start()
                rotate(angle, img) # 旋转图片
                info = Get_hash(r'./images/1/%s.png'%(angle))
                dome.add(info)
    #             f.write(f"{info},{angle}\n") # 写入txt文件
                db.set(str(info),angle)
                tick.stop()
                print(f'哈希:{info} \t度数:{angle} \t误差数:{similar(info)} \t{tick.getTimeMilli():.3f} ms')
        # 序列化到文件【写入db文件】
        db.dump()
        print(f"360张图片去掉相似的数量:{len(dome)} 哈希键数:{len(db.getall())}")
        print(f"db存储成功 ✨")
    """
    
    
    
    
    
    
    print(f"开始测试---------------------------------------------------------------------------------------✨")
    ok = circle(r'D:/jupyter_working/mi.png',True)
    if ok:
        hash_str = Get_hash('D:/jupyter_working/temp.png')
        print(f"临时哈希Key:{hash_str}")
        if db.exists(hash_str):
            angle = db.get(hash_str)
            print(f"\t✨哈希Key:{hash_str} 原图逆旋转的角度:{angle}") 
        else:
            try:
                # 以偏函数传递参数【hash:找出相似的位置】
                similar = partial(Get_Hamming, str2=hash_str)
                res= {i:similar(i) for i in db.getall() if similar(i) < 4}
                print(f"\t✨哈希键数:{len(db.getall())} \n\t✨哈希值与误差数:{res}")
                hash_str = min(res, key=res.get)
                angle = db.get(hash_str)
                print(f"\t✨哈希Key:{hash_str} \t原图逆旋转的角度:{angle}") 
            except Exception as e:
                print(f"错误:{e}")
    
               
                
    print('执行结束...')
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    开始测试---------------------------------------------------------------------------------------✨
    

    在这里插入图片描述

    临时哈希Key:004e6f1f0f476030
    	✨哈希键数:823 
    	✨哈希值与误差数:{'006e2f1f0f476020': 3, '004e2f1f0f476020': 2, '004e2f1f0f476030': 1, '00ce6f1f0f476030': 1, '00ce6f3f0f476030': 2, '00ce6f3e0f476030': 3}
    	✨哈希Key:004e2f1f0f476030 	原图逆旋转的角度:311
    执行结束...
    Wall time: 1.04 s
    

    puppeteer 代码

    console.log('Running...✨')
        // 创建一个新的隐身浏览器上下文
        const context = await browser.createIncognitoBrowserContext();
        // 在上下文中创建一个新页面。
        const page = await context.newPage();
        appUrl = 'https://www.moyublog.com/code/5de692b9c93a4/index.html'
        await page.goto(appUrl)
    
    
    
        console.log(`测试开始. ✨`)
        let errNum = 0
        while (errNum < 100) {
            try {
                console.log(`1.点击测试按钮. ✨`)
                await page.waitForSelector('body > .btn')
                await page.click('body > .btn')
    
    
    
                console.log(`2.获取旋转图片. ✨`)
                let img_name = 'C:/Users/lenovo/Desktop/mi.png'
                const iframe_element = await page.waitForSelector('#rotateWrap1 > div > div.rotate-can-wrap > canvas')
                if (iframe_element) {
                    console.log('对象存在')
                    await iframe_element.screenshot({ 'path': img_name })
                    await page.waitForTimeout(200)
                } else {
                    console.log('对象不存在')
                    await page.screenshot({ 'path': img_name })
                }
    
    
    
    
                console.log(`3.获取旋转的位移和角度. ✨`)
                let datas = { 'name': 'moyublog', 'bg': img_name }
                let data = await axios.post(
                    'http://127.0.0.1:6868/whirling', datas
                ).then(res => {
                    return res.data
                }).catch(error => {
                    console.error(error)
                })
                console.log(data)
                let angle = data['angle']
                let move = data['move']
                // let move = 160
    
    
    
                console.log(`4.验证缺口位置. ✨`)
                await page.waitForSelector('.box > #rotateWrap1 > .rotateverify-contaniner > .control-wrap > .control-btn')
                let dragButton = await page.$('.box > #rotateWrap1 > .rotateverify-contaniner > .control-wrap > .control-btn')
                let box = await dragButton.boundingBox();
                // 获取滑动按钮中心点位置
                let x = box.x + (box.width / 2);
                let y = box.y + (box.height / 2);
                // 鼠标滑动至滑动按钮中心点
                await page.mouse.move(x, y);
                // 按下鼠标
                await page.mouse.down();
                // 慢慢滑动至缺口位置,终点值为 x + move
    
                for (let i = x; i <= x + move; i = i + 5) {
                    // 滑动鼠标
                    let steps = Math.ceil(Math.random() * 10)
                    await page.mouse.move(i, y, { 'steps': steps });
                }
                await page.mouse.move(x + move, y, { 'steps': 2 });
                // 假装有个停顿,看起来更像是人为操作
                await page.waitForTimeout(200);
                // 放开鼠标
                await page.mouse.up();
                errNum++
                await page.waitForTimeout(1000);
    
                await page.goto(appUrl)
                await page.reload(appUrl);
                window.location.reload()
            } catch (e) {
                // errNum++
                // console.log(await page.content())
            }
        }
    
    展开全文
  • 详解Python验证码识别

    2020-12-20 07:03:41
    以前写过一个刷校内网的人气的工具,Java的(以后再也不行Java程序了),里面用到了验证码识别,那段代码不是我自己写的:-) 校内的验证是完全单色没有任何干挠的验证码,识别起来比较容易,不过从那段代码中可以看到...
  • 蜜罐验证码 在Rails表单中添加蜜罐验证码的最简单方法。 蜜罐验证码的工作前提是,您... 只需在HTML选项哈希中指定表单具有蜜罐: <%= form_for Comment.new, :html => { :honeypot => true } do |form| -%>
  • Hash,一般翻译做“散列”,也有直接音译为"哈希"的,就是把任意长度的输入通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是散列值的空间通常远小于输入的空间,不同的输入...
  • 加盐使攻击者无法采用特定的查询表和彩虹表快速破解大量哈希值,但是却不能阻止他们使用字典攻击或暴力攻击。高端的显卡(GPU)和定制的硬件可以每秒进行数十亿次哈希计算,因此这类攻击依然可以很高效。为了降低...
  • java哈希加盐 加密密码When LinkedIn was hacked in 2012, many users were surprised to learn that their accounts were easily compromised due to the minimal security surrounding password encryption....
  • Go-哈希函数与消息认证详解(含代码)哈希函数简介历史特性安全性MD族md4md5SHA系列SHA-1SHA-2消息认证消息认证的目的消息认证码认证码与检错码HMAC的Go实现crypto/hmac包hash包crypto/sha1包代码实现截图参考 哈希...
  • 计算和验证文件的 MD5 或 SHA-1 加密哈希
  • 背景:我们的系统没有使用redis,所以在做验证码存储的时候一开始我选用了session,后来又考虑到集群环境下,session是不共享的,还得解决这个问题,于是就换掉了session,改为hash算法验证,验证码由有状态改为无...
  • 目录前言一、计算哈希值和消息认证1.引入库2.实现二、哈希函数的雪崩效应实现三、暴力破解MD51.引入库2.实现总结 前言 提示:测试运行环境为 python3.7.5,IDE为Pycharm2020.1,文章包含三道题,分别是:1.计算哈希...
  • java中哈希表及其应用详解哈希表也称为散列表,是用来存储群体对象的集合类结构。什么是哈希表数组和向量都可以存储对象,但对象的存储位置是随机的,也就是说对象本身与其存储位置之间没有必然的联系。当要查找一个...
  • JAVA手机验证码的生成简单实现

    千次阅读 2022-04-02 23:05:12
    //利用哈希值生成验证码 int hash =tele.hashCode(); //加密 int encryption= 2020666; //用hash异或上加密得到生成第一次加密结果 //这个生成的加过永远是固定的如果加密码不动的情况下 long result= hash ^...
  • 感知哈希本质上是哈希算法中的一类算法,最初被提出来就是用来做相似图片的匹配与计算的,以图搜图的本质也是在做详细图片的计算与匹配,不同的算法会有不同的计算精度和计算速度。 对于我们每个人来说,我们有...
  • 哈希随机

    2020-01-09 09:17:40
    常用于生成随机数,多运用于抽奖 测试数据 验证码等 接口名称 导入库 import random random . random ( ) 用于生成一个 0 到 1 的随机浮点数 : [ 0 , 1 ) random . randint ( ) 成 [ a , b ] 的随机整数,...
  • 基于哈希的身份验证消息代码或HMAC用于通过哈希功能对消息进行身份验证。 消息身份验证是网络安全中的重要机制,用于检查消息的真实性。 消息认证有不同的方式和机制。 信息 (Message) Message is the data, text, ...
  • cdh 6哈希验证失败解决方法

    千次阅读 2020-06-15 15:47:20
    当安装cdh 6,使用本地搭建的parcel时,出现了哈希验证失败的问题: 查看了parcel的sha值,与官网的一致,没有问题: #parcel sha值 [root@localhost bigdata]# sha1sum CDH-6.0.0-1.cdh6.0.0.p0.537114-el7.parcel...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,770
精华内容 3,108
关键字:

哈希验证码