`

一段从 tcpdump剥离出来 读取timeval变为hh:mm:ss的源码

阅读更多
gmt2local.c:
int32_t
gmt2local(time_t t)
{
	register int dt, dir;
	register struct tm *gmt, *loc;
	struct tm sgmt;

	if (t == 0)
		t = time(NULL);
	gmt = &sgmt;
	*gmt = *gmtime(&t);
	loc = localtime(&t);
	dt = (loc->tm_hour - gmt->tm_hour) * 60 * 60 +
	    (loc->tm_min - gmt->tm_min) * 60;

	/*
	 * If the year or julian day is different, we span 00:00 GMT
	 * and must add or subtract a day. Check the year first to
	 * avoid problems when the julian day wraps.
	 */
	dir = loc->tm_year - gmt->tm_year;
	if (dir == 0)
		dir = loc->tm_yday - gmt->tm_yday;
	dt += dir * 24 * 60 * 60;

	return (dt);
}


tcpdump.c
int tflag=1;

cast 't'  //如果在参数中有指定
  --tflag;
  break;

if (tflag > 0)
  thiszone = gmt2local(0);

util.c
void
ts_print(register const struct timeval *tvp)
{
	register int s;
	struct tm *tm;
	time_t Time;
	static unsigned b_sec;
	static unsigned b_usec;

	switch(tflag) {
	case 1: /* Default */
		s = (tvp->tv_sec + thiszone) % 86400;
		(void)printf("%02d:%02d:%02d.%06u ",
			     s / 3600, (s % 3600) / 60, s % 60,
			     (unsigned)tvp->tv_usec);
		break;
	case -1: /* Unix timeval style */
		(void)printf("%u.%06u ",
			     (unsigned)tvp->tv_sec,
			     (unsigned)tvp->tv_usec);
		break;
	case -2:
		if (b_sec == 0) {
			printf("000000 ");
		} else {
			int d_usec = tvp->tv_usec - b_usec;
			int d_sec = tvp->tv_sec - b_sec;

			while (d_usec < 0) {
				d_usec += 1000000;
				d_sec--;
			}
			if (d_sec)
				printf("%d. ", d_sec);
			printf("%06d ", d_usec);
		}
		b_sec = tvp->tv_sec;
		b_usec = tvp->tv_usec;
		break;
	case -3: /* Default + Date*/
		s = (tvp->tv_sec + thiszone) % 86400;
		Time = (tvp->tv_sec + thiszone) - s;
		tm = gmtime (&Time);
		if (!tm)
			printf("Date fail  ");
		else
			printf("%04d-%02d-%02d ",
				   tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday);
		printf("%02d:%02d:%02d.%06u ",
			   s / 3600, (s % 3600) / 60, s % 60, (unsigned)tvp->tv_usec);
		break;
	}
}
1
1
分享到:
评论

相关推荐

    tcpdump源码分享

    tcpdump是一款广泛使用的开源网络数据包分析工具,它允许用户实时捕获并分析网络上的数据包。这个资源包含了tcpdump的4.0和3.9两个版本的源代码,对于理解网络协议、学习网络监控以及进行网络调试具有极高的价值。 ...

    tcpdump源码(tcpdump-4.99.4.tar.gz)生成tcpdump

    tcpdump源码编译,需要多个部件的源码进行顺序编译而成。 m4-1.4.19.tar.gz flex-2.6.4.tar.gz bison-3.7.6.tar.gz libpcap-1.10.4.tar.gz tcpdump-4.99.4.tar.gz tar xvf *.tar解压后,分别执行./configure 和make ...

    tcpdump源码

    tcpdump是一款广泛使用的开源网络分析工具,主要用于在网络中捕获和分析数据包。它能够帮助系统管理员、网络工程师以及安全专家深入理解网络流量,诊断问题,进行故障排除,以及进行网络安全监控。tcpdump的源码提供...

    tcpdump 源代码安装包

    tcpdump是一款广泛使用的网络数据包分析工具,它允许系统管理员或网络工程师实时捕获网络上的数据包,并进行分析。在Linux或类Unix操作系统上,tcpdump是标准的网络诊断工具,能够帮助用户深入理解网络流量,查找...

    tcpdump最新版本源码

    tcpdump是一款广泛使用的网络数据包分析工具,它允许系统管理员或网络工程师实时捕获网络上的数据包,并对其进行分析。在网络安全、故障排查和性能优化等领域,tcpdump扮演着至关重要的角色。最新版本的tcpdump源码...

    Reader读取TcpDump读取的Pcap包

    标题中的“Reader读取TcpDump读取的Pcap包”涉及到的是网络数据包捕获和分析的技术。TcpDump是一款广泛使用的命令行工具,用于在各种操作系统上捕获网络流量,生成pcap(Packet Capture)格式的数据包文件。Pcap文件...

    libpcap源码和tcpdump源码文件,用于编译tcpdump

    libpcap和tcpdump是网络监控和数据包分析领域中的两个关键开源工具。它们在IT行业中扮演着重要的角色,尤其对于网络管理员、安全专家以及软件开发者来说,它们是理解和调试网络流量不可或缺的工具。 libpcap是...

    4.9.2版本的tcpdump源码

    4.9.2版本的tcpdump源码提供了深入理解其工作原理的机会,对于网络管理员、程序员和网络安全专家来说,这是一个宝贵的资源。源码分析可以帮助我们了解数据包捕获、解析和过滤的底层机制。 首先,tcpdump的核心是...

    Tcpdump抓包工具免安装版v4.5.1

    Tcpdump 4.5.1版本,解压后是一个二进制可执行文件,不需要任何编译和安装,可以直接执行,上传Linux环境解压即可使用: root@admin:/tmp# ./tcpdump -help tcpdump version 4.5.1 libpcap version 1.5.3 Usage: ...

    Tcpdump命令详解

    ### Tcpdump命令详解 #### 一、Tcpdump简介与安装 Tcpdump是一款广泛应用于网络监控的强大工具,主要用于抓取网络中的数据包,并对其进行分析。它能够帮助系统管理员追踪网络问题,进行安全审计以及网络流量分析等...

    TCPDUMP 的详细说明

    1. **下载源码**:从官方网站或FTP服务器下载TCPDUMP和libpcap的源码包。例如: ``` wget ftp://ftp.ee.lbl.gov/tcpdump.tar.Z wget ftp://ftp.ee.lbl.gov/libpcap.tar.Z ``` 2. **解压源码包**: ``` zcat ...

    tcpdump-tcpdump-4.9.2.zip

    tcpdump是一款广泛使用的开源网络数据包分析工具,用于捕获和分析网络上的数据包。它在IT领域中扮演着至关重要的角色,特别是在网络诊断、安全审计和协议开发中。tcpdump-4.9.2是该软件的一个版本,此版本可能包含了...

    100款最佳安全工具之Tcpdump源码

    大家看看,一个工具的源码,不怎么看得懂,大家研究下

    tcpdump的用法

    tcpdump是一款强大的网络数据包分析工具,主要用于在网络层面捕获和分析网络流量。它可以帮助系统管理员、网络工程师或安全专家监控网络活动,检测潜在的问题,甚至进行网络安全审计。以下是tcpdump的一些关键用法和...

    TCPDump使用方法小结

    TCPDump 是一款强大的网络封包分析软件,广泛用于网络故障排查、网络安全分析和性能测试等领域。在Linux系统中,TCPDump通常预装在发行版中,便于用户进行网络抓包工作。它允许用户以命令行方式捕获网络接口上的...

    TCPDUMP抓包程序

    TCPDUMP抓包程序是一种强大的网络诊断工具,主要用于捕获和分析网络中的数据包。它由C#语言编写,利用了SharpCap库,能够帮助网络管理员、开发人员和安全专家理解网络流量,检测潜在的问题,如性能瓶颈、安全威胁或...

    tcpdump Android抓包工具

    tcpdump是一款强大的网络数据包分析工具,主要用于在网络中捕获和分析网络协议数据包。在Android平台上,tcpdump同样能够发挥作用,帮助开发者、网络安全人员以及普通用户了解网络通信的细节,排查网络问题,或者...

    tcpdump离线安装

    1. **下载压缩包**:首先,你需要从一个可靠的源下载包含TCPDump的压缩包。 2. **解压缩**:使用命令行工具(如tar或unzip)解压下载的文件,通常命令为`tar -zxvf 文件名.tar.gz` 或 `unzip 文件名.zip`。 3. **...

Global site tag (gtag.js) - Google Analytics