tcpdump strace archlinux gento字符串截取

    xiaoxiao2025-04-16  7

    1、TCPDUMP

    (1)简介:

    TcpDump可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。

    Linux作为网络服务器,特别是作为路由器和网关时,数据的采集和分析是不可少的。TcpDump是Linux中强大的网络数据采集分析工具之一。

    用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。作为互联网上经典的的系统管理员必备工具,tcpdump以其强大的功能,灵活的截取策略,成为每个高级的系统管理员分析网络,排查问题等所必备的工具之一。tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。tcpdump存在于基本的 FreeBSD系统中,由于它需要将网络接口设置为混杂模式,普通用户不能正常执行,但具备root权限的用户可以直接执行它来获取网络上的信息。因此系统中存在网络分析工具主要不是对本机安全的威胁,而是对网络上的其他计算机的安全存在威胁。

    基本上tcpdump的总的输出格式为:系统时间 来源主机.端口 > 目标主机.端口 数据包参数

    (2)功能:

    数据过滤 输入输出

    (3)、经典实例

    下面我们介绍几种典型的tcpdump命令的输出信息 (1) 数据链路层头信息 使用命令#tcpdump --e host ice ice 是一台装有linux的主机,她的MAC地址是0:90:27:58:AF:1A H219是一台装有SOLARIC的SUN工作站,它的MAC地址是8:0:20:79:5B:46;上一条 命令的输出结果如下所示: 21:50:12.847509 eth0 ice. telne t 0:0(0) ack 22535 win 8760 (DF) 分析:21:50:12是显示的时间(微妙级精确度),eth0 表示从网络接口设备发送数据包, 8:0:20:79:5b:46是主机H219的MAC地址,它表明是从源地址H219发来的数据包. 0:90:27:58:af:1a是主机ICE的MAC地址,表示该数据包的目的地址是ICE . ip 是表明该数据包是IP数据包,60 是数据包的长度, h219.33357 > ice. telnet 表明该数据包是从主机H219的33357端口发往主机ICE的TELNET(23)端口. ack 22535 表明对序列号是222535的包进行响应. win 8760表明发送窗口的大小是8760. (2) ARP包的TCPDUMP输出信息 使用命令#tcpdump arp 得到的输出结果是:22:32:42.802509 eth0 > arp who-has route tell ice (0:90:27:58:af:1a) 22:32:42.802902 eth0 表明从主机发出该数据包, arp表明是ARP请求包, who-has route tell ice表明是主机ICE请求主机ROUTE的MAC地址。 0:90:27:58:af:1a是主机ICE的MAC地址。 (3) TCP包的输出信息 用TCPDUMP捕获的TCP包的一般输出信息是: src > dst: flags data-seqno ack window urgent options src > dst:表明从源地址到目的地址, flags是TCP包中的标志信息,S 是SYN标志, F (F IN), P (PUSH) , R (RST) "." (没有标记); data-seqno是数据包中的数据的顺序号, ack是 下次期望的顺序号, window是接收缓存的窗口大小, urgent表明数据包中是否有紧急指针. Options是选项. (4) UDP包的输出信息 用TCPDUMP捕获的UDP包的一般输出信息是: route.port1 > ice.port2: udp lenth UDP十分简单,上面的输出行表明从主机ROUTE的port1端口发出的一个UDP数据包到主机 ICE的port2端口,类型是UDP, 包的长度是lenth

    (5)想要截获所有210.27.48.1 的主机收到的和发出的所有的数据包: #tcpdump host 210.27.48.1 (6) 想要截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信,使用命令 :(在命令行中适用 括号时,一定要 #tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \) (7) 如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包 ,使用命令: #tcpdump ip host 210.27.48.1 and ! 210.27.48.2 (8)如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令: #tcpdump tcp port 23 host 210.27.48.1 

     详情参考 http://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html

    2、strace命令

    在理想世界里,每当一个程序不能正常执行一个功能时,它就会给出一个有用的错误提示,告诉你在足够的改正错误的线索。但遗憾的是,我们不是生活在理想世界里,起码不总是生活在理想世界里。有时候一个程序出现了问题,你无法找到原因。

    在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。strace是一个必不可少的 调试工具,strace用来监视系统调用。你不仅可以调试一个新开始的程序,也可以调试一个已经在运行的程序(把strace绑定到一个已有的PID上 面)。

    使用 Linux 的 strace 命令跟踪/调试程序的常用选项

    1 寻找被程序读取的配置文件 2 跟踪指定的系统调用 3 跟踪进程 4 strace的统计概要 5 保存输出结果 6 显示时间戳 7 更精细的时间戳 8 相对时间

    详情见

    https://linux.cn/article-3935-1.html

    http://huoding.com/tag/strace

    3、ArchLinux

    Arch Linux(或称Arch)是一种以轻量简洁为设计理念的Linux发行版。其开发团队秉承简洁、优雅、正确和代码最小化的设计宗旨。Arch Linux 项目受 CRUX 启发,由 Judd Vinet 于2002年启动。 Arch Linux是起源于加拿大的一份致力于使用简单、系统轻量、软件更新速度快的GNU/Linux发行版。创始人Judd Vinet出于对Debian以及Red Hat的包管理器不满,以及受CRUX影响而创立。最初针对i686,但是如今对x86_64也支持良好,而且还派生出了针对ARM平台的Arch Linux ARM以及针对HURD内核的Arch Hurd(发展缓慢)。 4、Gentoo

    Gentoo Linux是一套通用的、快捷的、完全免费的Linux发行,它面向开发人员和网络职业人员。与其他发行不同的是,Gentoo Linux拥有一套先进的包管理系统叫作Portage。在BSD ports的传统中,Portage是一套真正的自动导入系统,然而Gentoo里的Portage是用Python编写的,并且它具有很多先进的特性, 包括文件依赖、精细的包管理、OpenBSD风格的虚拟安装,安全卸载,系统框架文件、虚拟软件包、配置文件管理等等。  Gentoo Linux是一种可以针对任何应用和需要而自动优化和自定义的特殊的Linux发行版。Gentoo拥有优秀的性能、高度的可配置性和一流的用户及开发社区。 由于Portage技术的产生,Gentoo Linux可以担当一个理想的安全服务器、开发平台、专业级桌面应用、游戏服务器、嵌入式应用等等各种角色。由于其无限制的可配置性,我们甚至可以称Gentoo Linux为一个元发行版。 5、Linux字符串截取命令(8种)

    假设有变量 var=http://www.google.com/test.htm

    1、 # 号截取,删除左边字符,保留右边字符。 echo ${var#*//} 其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符 即删除 http:// 结果是 :www.google.com/test.htm

    2、 ## 号截取,删除左边字符,保留右边字符。 echo ${var##*/} ##*/ 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符 即删除 http://www.google.com/          结果是 test.htm

    3、 %号截取,删除右边字符,保留左边字符 echo ${var%/*} %/* 表示从右边开始,删除第一个 / 号及右边的字符 结果是:http://www.google.com

    4、 %% 号截取,删除右边字符,保留左边字符

    echo ${var%%/*} %%/* 表示从右边开始,删除最后(最左边)一个 / 号及右边的字符 结果是:http:

    5、 从左边第几个字符开始,及字符的个数 echo ${var:0:5} 其中的 0 表示左边第一个字符开始,5 表示字符的总个数。 结果是:http:

    6、 从左边第几个字符开始,一直到结束。 echo ${var:7} 其中的 7 表示左边第8个字符开始,一直到结束。 结果是 :www.google.com/test.htm

    7、 从右边第几个字符开始,及字符的个数 echo ${var:0-7:3} 其中的 0-7 表示右边算起第七个字符开始,3 表示字符的个数。 结果是:test

    8、 从右边第几个字符开始,一直到结束。 echo ${var:0-7} 表示从右边第七个字符开始,一直到结束。 结果是:test.htm

    注:(左边的第一个字符是用 0 表示,右边的第一个字符用 0-1 表示)

    转载请注明原文地址: https://ju.6miu.com/read-1298130.html
    最新回复(0)