用C语言获取任意文件的长度(可能大于2GB)#define _FILE_OFFSET_BITS 64

打开文件后用 fseek() 函数把文件位置指针移动到文件的末尾,用 ftell() 获得这时位置指针距文件头的字节数,这个字节数就是文件的长度。但是这样做也会受到下面的限制:ftell() 函数的返回值是 long 类型,在Windows 下(不管是 32 位还是 64 位),long 类型变量的长度都是 4 字节,这样能正常获取到的文件长度必须小于 2GB.

  微软在 Visual Studio 2005 及以后版本的开发工具中,在 stdio.h 中提供了函数 _fseeki64() 和 _ftelli64()。_fseeki64() 函数中表示文件指针偏移量的变量是 __int64 类型,_ftelli64() 的返回值也是 __int64 类型,因此可以用这两个函数获取大文件(指超过 2GB)的长度。

  注意 Linux 和 Unix 中的 C 编译器没有提供 _fseeki64() 和 _ftelli64() 函数,但是在 stdio.h 中提供了 fseeko() 和 ftello() 函数,fseeko() 函数中表示文件指针的偏移量的变量是 off_t 类型,ftello() 的返回值也是off_t 类型,off_t 类型的长度有可能是 32 比特或 64 比特,使用宏定义 #define _FILE_OFFSET_BITS 64 可以将 off_t 设为64 比特长。

  下面给出用C语言获取文件长度(可能大于 2GB)的实现示例,代码在 Windows 和 Linux 平台上都能使用(未在 Unix 上测试),包括三个文件:

http://itlab.idcquan.com/c/skill/943552.html

时间: 2024-11-05 20:37:37

用C语言获取任意文件的长度(可能大于2GB)#define _FILE_OFFSET_BITS 64的相关文章

seacms 任意文件删除

seacms 任意文件删除 http://172.16.173.242/seacms6.64/upload/admin/admin_template.php?action=del&filedir=../templets/../install/install_lock.txt 可以控制filedir参数进行任意文件删除 删除 install/install_lock.txt文件,然后可以重装seacms 分析代码: filedir参数必须以../template开头 原文地址:http://blo

PHP任意文件上传漏洞CVE-2015-2348浅析

昨晚安全新闻爆出一个“PHP任意文件上传漏洞”,CVE编号为:CVE-2015-2348. 当时楼主正准备收拾东西回家,看到这个新闻心里一惊:失传江湖多年的0字符截断上传漏洞又重现了?而且还影响这么多版本!如果漏洞属实,看来今晚又要通宵打补丁了啊. 不过经过简单分析后,发现漏洞的利用条件相当苛刻(很多人好奇到底有多苛刻),楼主简单记录自己的分析过程和大家分享一下,如有不当,请多多指正. 一.漏洞概述 漏洞报告者说php的上传函数 move_uploaded_file的目的路径参数可以使用空字符截

phpmyadmin任意文件包含漏洞分析(含演示)

0x01 漏洞描述 phpmyadmin是一款应用非常广泛的mysql数据库管理软件,基于PHP开发. 最新的CVE-2014-8959公告中,提到该程序多个版本存在任意文件包含漏洞,影响版本如下: phpMyAdmin 4.0.1 – 4.0.10.6 4.1.1 – 4.1.14.7 4.2.1 – 4.2.12 0x02 补丁分析 看到bobao.360.cn上提到了这个漏洞,于是我写个小分析吧,给渗透正没思路的人一个思路,也给学习代码审计的朋友一点资料. 前几天phpmyadmin出了个

审计 6 SSRF和任意文件读取

1 <?php 2 error_reporting(0); 3 session_start(); 4 header("Content-type:image/jpeg"); 5 echo file_get_contents($_SESSION['avatar']); 6 ?> 在第5行发现    读取的文件后,将文件进行了输出.  所以猜测此处可能存在SSRF 和  任意文件读取 搜索关键变量$_SESSION['avatar']  发现在登陆 和修改密码 读取了改变量,而上

Gxlcms时间盲注+后台任意文件删除读取下载+getshell

前台SQL时间盲注 在前台作品评分处 Lib\Home\Action/CommAction.class.php 第56行 $ting_id = $_GET["id"]; 第133行 $ting_gold = $mod->where("ting_id='$ting_id'")->getField("ting_gold"); 导致了可以时间盲注 因为回显不明确 后台GetShell 后台附件设置处 fuzz过程 输入php  被过滤成空

任意文件读取与下载

0x00 背景介绍 一些网站的业务需要,可能提供文件查看或下载的功能,如果对用户查看或下载的文件不做限制,就能够查看或下载任意的文件,可以是源文件,敏感文件等等 0x01 文件读取 文件读取在PHP这种可以有很多种方式实现,在web的默认情况下,$filename变量可能用户可控 <?php $filename = $_GET['f']; echo file_get_contents($filename); ?> #当变量 $filename 没有经过校验,或者校验不严格,用户可以控制这个变量

linux和windows文件名称长度限制

Linux文件名称的长度限制是255个字符 windows下全然限定文件名称必须少于260个字符,文件夹名必须小于248个字符. linux下文件数.文件夹数.文件名称长度的各种限制 下面測试都是在没有优化或改动内核的前提下測试的结果 1. 測试目的:ext3文件系统下filename最大字符长度  測试平台:RHEL5U3_x64  測试过程:LENTH=`for i in {1..255};do for x in a;do echo -n $x;done;done`touch $LENTH当

【原创】JEECMS v6~v7任意文件上传漏洞(1)

文章作者:rebeyond 受影响版本:v6~v7 漏洞说明: JEECMS是国内Java版开源网站内容管理系统(java cms.jsp cms)的简称.该系统基于java技术开发,继承其强大.稳定.安全.高效.跨平台等多方面的优点:采用SpringMVC3+Spring3+Hibernate3+Freemarker主流技术架构.广泛应用于政府(部委和省级政府部门.市.县.乡及委办局).教育科研(大.中.小学及各地方教育局).电信运营商.金融(证券.保险及银行).企业(矿业.煤炭.旅游.石油集

TEC-004-php文件下载任意文件读取漏洞修复

修改download?u参数值,将/public/files/14842030529.txt,替换为../../../../../../../../../../etc/passwd    function download() {        $u =$_GET['u'];        // 描述: 任意文件读取漏洞修复  date: 2017年4月28日 下午4:13:39  bylwy        $lenth=strrpos($u,'.');        $string = sub