基于Openssl用C++写的小程序-贴吧自动签到

概述

从贴吧首页html源码中解析获得所需信息,对每个贴吧发送POST签到
贴吧首页

配置

  • Openssl v1.1.1以上
  • vs2019 或者更低版本也行
  • C++ 11 标准

编译

源码:Github

  • 下载src和openssl库,在vs配置openssl路径,把dll添加在vs项目内,然后bulid

贴吧签到解析

手动按下签到,查看网页XHR(前提要打开控制台)
有两个新的XHR分别是addloadmonth
仔细查看可以看出add是我们要post的内容,而loadmonth看名字和内容应该是记录时间的

summerpockets吧为例,查看我们浏览器发的request里的data

ie=utf-8&kw=summerpockets&tbs=e85da433fd9427d71595558101

浏览器解析为:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个使用 C++OpenSSL 进行数字签名的示例代码: ```cpp #include <iostream> #include <openssl/rsa.h> #include <openssl/pem.h> #include <openssl/evp.h> #include <openssl/err.h> using namespace std; int main() { // 1. 读取私钥 FILE* fp = fopen("private_key.pem", "r"); if (!fp) { cout << "Failed to open private key file." << endl; return -1; } RSA* rsa = PEM_read_RSAPrivateKey(fp, nullptr, nullptr, nullptr); fclose(fp); if (!rsa) { cout << "Failed to read private key." << endl; return -1; } // 2. 读取要签名的数据 fp = fopen("data.txt", "r"); if (!fp) { cout << "Failed to open data file." << endl; return -1; } fseek(fp, 0, SEEK_END); size_t data_len = ftell(fp); fseek(fp, 0, SEEK_SET); unsigned char* data = new unsigned char[data_len]; fread(data, 1, data_len, fp); fclose(fp); // 3. 计算 SHA256 摘要 unsigned char md[EVP_MAX_MD_SIZE]; unsigned int md_len = 0; EVP_MD_CTX* ctx = EVP_MD_CTX_new(); EVP_DigestInit(ctx, EVP_sha256()); EVP_DigestUpdate(ctx, data, data_len); EVP_DigestFinal(ctx, md, &md_len); EVP_MD_CTX_free(ctx); // 4. 使用私钥进行签名 unsigned char sig[RSA_size(rsa)]; unsigned int sig_len = 0; int ret = RSA_sign(NID_sha256, md, md_len, sig, &sig_len, rsa); if (ret != 1) { cout << "Failed to sign data." << endl; RSA_free(rsa); return -1; } // 5. 保存签名结果 fp = fopen("signature.bin", "wb"); if (!fp) { cout << "Failed to open signature file." << endl; RSA_free(rsa); return -1; } fwrite(sig, 1, sig_len, fp); fclose(fp); RSA_free(rsa); delete[] data; cout << "Signature successfully generated." << endl; return 0; } ``` 这个程序读取私钥文件 `private_key.pem` 和要签名的数据文件 `data.txt`,计算 SHA256 摘要并使用私钥进行签名,最后把签名结果保存到文件 `signature.bin` 中。需要注意的是,这里没有对错误和异常情况进行详细处理,实际应用中需要更加谨慎地处理这些情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值