吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1265|回复: 28
收起左侧

[讨论] 强行修改文件头可否避免百度网盘爆破?

[复制链接]
vtor 发表于 2024-8-22 23:05



针对一个文件,
读取前1M空间,将其异或一个数字,再写入,能否实现       避免百度网盘爆破?

我已有对应c语言源码与对应程序

[C] 纯文本查看 复制代码
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>

#define FILE_DISTORT_NUMBER (1024*1024)
#define FILE_DISTORT_XOR_VALUE (0X5A)


void PrintInfo()
{
    printf("\n");
    printf("本软件基本信息\n");
    printf("    软件名称:文件破坏器-20240515\n");
    printf("    编译时间:2024年05月15日\n");
    printf("    软件版本:1.0.1\n");
    printf("    软件作者:保密,嘿嘿\n");
    printf("    适用场景:打算用于网盘文件防止和谐(注:尚未测试)\n\n");

    printf("本软件核心原理\n");
    printf("    将文件前 <1024*1024> 个字节,异或 <0x5a>\n");
    printf("    强行修改文件头,使得文件解析出错,从而实现加密\n\n");

    printf("本软件注意事项\n");
    printf("    本软件只对有文件头的文件适用\n");
    printf("        mp3,mp4,zip,rar,pdf,doc有文件头,可以使用\n");
    printf("        txt,bin,或者其他二进制文件    没有文件头,加密几乎无效\n");
    printf("    本软件只对大于1M的文件适用,如果小于1M,不会进行加密。\n\n");

    printf("加解密操作方法(命令行版本)\n");
    printf("    任意文件夹内,按住shift->鼠标右击->打开powershell,\n");
    printf("    往powershell内拖入 <file_fistort.exe>,\n");
    printf("    在powershell内输入一个 <空格>\n");
    printf("    往powershell内拖入 <要加密的文件>\n");
    printf("    再按下回车\n\n");

    printf("加解密操作方法(拖拽操作)\n");
    printf("    将文件拖入到此 软件 上即可。\n\n");

    printf("请查看 <加解密操作方法>,并正确使用本软件。\n\n");
}

int main(int argc, char* argv[]) {

    if (argc < 2) // 如果只有程序,没有被加密的文件
    {
        PrintInfo();
        system("pause");
        return 0;
    }

    char* file_path = argv[1]; // 文件路径

    char* fileHeadBuffer = (char*)malloc(FILE_DISTORT_NUMBER);
    printf("输入的文件为<%s>\n", file_path);
    
    // 打开文件
    FILE* file = fopen(file_path, "r+b");
    if (!file) {
        perror("文件打开失败,检查路径是否正确,检查文件是否存在");
        free(fileHeadBuffer);
        return 1;
    }
    // 读取前面的字节
    if (FILE_DISTORT_NUMBER != fread(fileHeadBuffer, 1, FILE_DISTORT_NUMBER, file)) {
        perror("文件大小小于1M,不进行加密,将退出软件。");
        fclose(file);
        free(fileHeadBuffer);
        return 1;
    }

    for (int i = 0; i < FILE_DISTORT_NUMBER; i++)
    {
        fileHeadBuffer[i] ^= FILE_DISTORT_XOR_VALUE;
    }


    // 移动文件指针到文件开头
    if (fseek(file, 0, SEEK_SET) != 0) {
        perror("移动文件指针失败,未知原因,请重试。");
        fclose(file);
        free(fileHeadBuffer);
        return 1;
    }

    // 写入新内容
    if (fwrite(fileHeadBuffer, 1, FILE_DISTORT_NUMBER, file) != FILE_DISTORT_NUMBER) {
        perror("移动文件指针失败,未知原因,请重试。");
        fclose(file);
        free(fileHeadBuffer);
        return 1;
    }
    // 关闭文件
    fclose(file);
    free(fileHeadBuffer);
    
    printf("文件破坏成功!!!\n\n");
    return 0;
}

免费评分

参与人数 2吾爱币 +1 热心值 +2 收起 理由
liuwei716254 + 1 用心讨论,共获提升!
chinawolf2000 + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

风之暇想 发表于 2024-8-22 23:21
最好首尾都改,部分格式的信息会存到尾部。
zj19970417 发表于 2024-8-22 23:45
cpbjlwh 发表于 2024-8-23 00:35
leonca 发表于 2024-8-23 04:11
好想法啊。。。。。。。
chplifeng 发表于 2024-8-23 05:42
希望你可以成功
shaokui123 发表于 2024-8-23 07:58
有易语言的实现源码吗
axinabcd 发表于 2024-8-23 08:05
按照这个办法应该问题不大吧
submariner 发表于 2024-8-23 08:40
直接用压缩包存储模式加密,速度很快,通用性也好,bug的可能性也很低,我觉得也许会更好,如果怕忘记密码可以考虑在注释里加上密码
kof888 发表于 2024-8-23 09:01
问题是改了文件头万一改得久了或者文件多了自己也忘记了呢?
不如简单一点,只是防止被爆破的话,写个程序把里面的数据全部xor一次就可以了吧。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 12:29

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表