Linux命令
12 months ago
4 minutes
网络命令
命令 | 解释 |
---|---|
watch ss -tp | 使用watch命令定期执行ss -tp命令,以监视系统中的套接字连接状态 |
netstat -ant | 使用netstat命令显示网络状态信息,包括所有(-a)的TCP(-t)和UDP(-u)协议的套接字连接,以及数字(-n)形式的地址和端口 |
netstat -tulpn | 使用netstat命令显示网络状态信息,包括TCP(-t)和UDP(-u)协议的监听(-l)套接字连接,以及数字(-n)形式的地址和端口,以及对应的程序名(-p) |
lsof -i | 列出打开的文件信息,其中-i选项表示只列出与网络相关的文件,包括套接字、端口、协议等 |
smb:// ip /share | 使用smb协议访问远程主机上的共享资源,其中ip是远程主机的IP地址,share是共享资源的名称 |
share user x.x.x.x c$ | 使用share命令在本地主机上创建一个共享资源,其中user是共享资源的名称,x.x.x.x是本地主机的IP地址,c$是共享资源的路径 |
smbclient -0 user\ ip \ share | 使用smbclient命令连接到远程主机上的共享资源,并进入交互模式。其中-o选项表示不进行密码验证,user是远程主机上的用户名,ip是远程主机的IP地址,share是共享资源的名称 |
ifconfig eth# ip I cidr | 使用ifconfig命令配置网络接口的IP地址和子网掩码。其中eth#是网络接口的名称,如eth0、eth1等;ip是要设置的IP地址;cidr是要设置的子网掩码长度 |
ifconfig eth0:1 ip I cidr | 使用ifconfig命令配置网络接口的别名和IP地址和子网掩码。其中eth0:1是网络接口eth0的别名,可以用来设置多个IP地址;ip是要设置的IP地址;cidr是要设置的子网掩码长度 |
route add default gw gw lp | 使用route命令添加默认路由,即当目的地址不在本地网络时,发送到的网关地址。其中gw是网关地址,lp是本地网络接口 |
ifconfig eth# mtu [size] | 使用ifconfig命令配置网络接口的最大传输单元(MTU),即每个数据包能够传输的最大字节数。其中eth#是网络接口的名称,如eth0、eth1等;size是要设置的MTU大小,单位为字节 |
export MAC=XX:XX:XX:XX:XX:XX | 使用export命令设置一个环境变量,其中MAC是变量名,XX:XX:XX:XX:XX:XX是变量值,表示一个MAC地址 |
ifconfig int hw ether MAC | 使用ifconfig命令配置网络接口的MAC地址。其中int是网络接口的名称,如eth0、wlan0等;hw ether表示硬件类型为以太网;MAC是要设置的MAC地址 |
macchanger -m MAC int | 使用macchanger工具修改网络接口的MAC地址。其中-m选项表示指定一个新的MAC地址;MAC是要设置的MAC地址;int是网络接口的名称,如eth0、wlan0等 |
iwlist int scan | 使用iwlist工具扫描无线网络,并显示相关信息。其中int是无线网络接口的名称,如wlan0、wlan1等;scan是扫描选项 |
nc -lvvp port | 使用nc工具在本地主机上创建一个监听端口,并等待远程主机连接。其中-l选项表示监听模式;v选项表示详细模式;p选项表示指定端口号;port是要监听的端口号 |
python3 -m http.server port | 使用python3内置的http.server模块在本地主机上创建一个简单的HTTP服务器,并监听指定端口。其中-m选项表示运行模块作为脚本;http.server是模块名;port是要监听的端口 |
dig -x ip | 反向DNS查询,即根据IP地址查询对应的域名 |
host ip | 用host工具进行正向或反向DNS查询,即根据域名查询对应的IP地址,或根据IP地址查询对应的域名 |
host -t SRV _ service red.ghostwolflab.com | 使用host工具进行SRV记录查询,即根据服务名和域名查询对应的主机名和端口号。SRV记录是一种DNS记录,用于指定提供特定服务的服务器和端口。 |
dig @ ip domain -t AXFR | 使用dig工具进行AXFR记录查询,即从指定的DNS服务器(ip)请求指定的域名(domain)的完整区域传输。AXFR记录是一种DNS记录,用于在主从DNS服务器之间同步区域数据。 |
host -l domain nameserver | 使用host工具进行区域列表查询,即从指定的DNS服务器(nameserver)请求指定的域名(domain)的所有记录 |
ip xfrm state list | 使用ip工具查看IPSec安全策略数据库(SPD)中的状态条目,即用于加密和解密IP数据包的密钥和参数。IPSec是一种网络层的安全协议,用于保护IP通信的机密性和完整性。 |
ip addr add ip I cidr aev eth2 | 使用ip工具为网络接口添加一个IP地址和子网掩码,并激活该地址。其中ip是要添加的IP地址;cidr是要添加的子网掩码长度;aev表示自动激活(auto)、激活(enable)和显示(verbose);eth2是网络接口的名称。 |
/var/log/messages I grep DHCP | 使用grep工具从/var/log/messages文件中搜索包含DHCP关键字的行,并显示出来。/var/log/messages文件是一个系统日志文件,用于记录系统中发生的各种事件和消息。 |
tcpkill host ip and port PORT | 使用tcpkill工具终止指定的TCP连接,即发送RST包给连接的双方,使它们认为连接已经断开。其中host ip and port port是一个过滤表达式,用于指定要终止的TCP连接的条件,如源或目的IP地址、端口号等。 |
echo “1” /proc/sys/net/ipv4/ip _forward | 使用echo工具向/proc/sys/net/ipv4/ip_forward文件写入一个值,即开启或关闭IP转发功能。/proc/sys/net/ipv4/ip_forward文件是一个虚拟文件,用于控制系统是否允许将收到的数据包转发给其他网络接口。如果文件中的值为1,表示开启IP转发;如果文件中的值为0,表示关闭IP转发。 |
echo ‘‘nameserver 8.8.8.8’’ /etc/resolv.conf | 使用echo工具向/etc/resolv.conf文件写入一行内容,即指定一个DNS服务器的地址。/etc/resolv.conf文件是一个配置文件,用于存储系统解析域名时要使用的DNS服务器的地址。每行以nameserver开头,后面跟一个IP地址 |
showmount -e ip | 使用showmount工具显示指定的NFS服务器(ip)上可供挂载的共享目录。NFS(Network File System)是一种分布式文件系统协议,用于在不同的主机之间共享文件和目录。-e选项表示显示导出列表(export list),即服务器上允许客户端挂载的目录 |
mkdir /site_backup; mount -t nfs ip:/ /backup_file | 使用mkdir和mount两个工具创建一个本地目录,并将远程主机上的一个共享目录挂载到该本地目录。其中mkdir是创建目录的工具;mount是挂载文件系统的工具;-t nfs表示指定文件系统类型为nfs;ip是远程主机的IP地址;/backup_file是远程主机上的共享目录;/site_backup是本地主机上要创建和挂载的目录。 |
系统信息
命令 | 解释 |
---|---|
nbstate -A -ip | 显示本地和远程主机的NetBIOS名称和会话 |
id | 显示当前用户的用户ID(UID)、组ID(GID)和所属的组 |
w | 显示当前系统中登录的用户和他们正在执行的进程 |
who -a | 显示当前系统中登录的用户和他们的相关信息,如登录时间、终端设备、进程号等 |
last -a | 显示系统中最近登录和注销的用户列表,并显示他们的相关信息,如登录时间、持续时间、终端设备等 |
ps -ef | 显示系统中所有进程的详细信息,如进程号、父进程号、用户、状态、启动时间、CPU占用率、内存占用率等 |
df -h | 显示系统中所有文件系统的磁盘空间使用情况,如总大小、已用大小、可用大小、已用百分比、挂载点等 |
uname -a | 显示系统内核相关信息,如内核名称、版本号、架构类型、主机名等 |
mount | 显示当前已经挂载的文件系统列表 |
getent passwd | 从passwd数据库中获取条目,并以冒号分隔的格式输出每个条目的字段 |
PATH=$PATH:/home/mypath | 将/home/mypath目录添加到PATH环境变量的末尾,以便在执行命令时能够搜索该目录中的可执行文件 |
kill pid | 向指定的进程发送一个信号,通常用于终止进程 |
cat /etc/issue | 显示/etc/issue文件的内容。/etc/issue文件是一个文本文件,用于存储系统的发行版信息,如名称、版本号、内核版本等 |
cat /etc/release | 显示/etc/release文件的内容。/etc/release文件是一个文本文件,用于存储系统的发行版信息,如名称、版本号、内核版本等 |
cat /proc/version | 显示/proc/version文件的内容。/proc/version文件是一个虚拟文件,用于存储系统内核相关信息,如内核名称、版本号、编译时间、编译器版本等 |
rpm –query -all | 查询系统中已经安装的RPM软件包,并显示它们的名称、版本号、发布号等信息 |
rpm -ivh *.rpm | 安装一个RPM格式的软件包,并显示安装过程中的详细信息 |
dpkg -get-selections | 查询系统中已经安装或卸载的DEB软件包,并显示它们的名称和状态 |
dpkg -I *.deb | 查看一个DEB格式的软件包的元数据信息,如软件包名、版本号、描述、依赖关系等 |
pkginfo | 查询系统中已经安装或未安装的PKG软件包,并显示它们的名称、版本号、状态等信息 |
which tscsh csh ksh bash | 查找指定的可执行文件在系统路径中的位置,并显示出来 |
chmod -so 700 tcsh csh ksh | 修改指定文件或目录的权限,并设置特殊权限位。其中tcsh/csh/ksh是要修改权限的文件或目录的名称,它们也是不同类型的shell程序 |
find / -perm -4000 -type f -exec ls -la {} 2>/dev/null \; | 从根目录开始搜索所有具有setuid位且为普通文件的文件,并以长格式列出它们的属性信息 |
find / -uid 0 -perm -4000 -type f 2>/dev/null | 从根目录开始搜索所有属于root用户且具有setuid位且为普通文件的文件,并显示出来 |
find / -writable ! -user whoami -type f ! -path “/proc/” ! -path “/sys/” -exec ls -al {} \; 2>/dev/null | 从根目录开始搜索所有可写且不属于当前用户且为普通文件且不在/proc或/sys目录下的文件,并以长格式列出它们的属性信息 |
功能命令
命令 | 解释 |
---|---|
python -c "import pty;pty.spawn('/bin/bash')" | 使用python工具执行一段代码,该代码导入pty模块并调用spawn函数,以创建一个伪终端并运行/bin/bash程序 |
wget http://example.com/file.txt -O file.txt -o /dev/null | 从指定的URL下载文件,并将下载的文件保存为url.txt,同时将输出信息重定向到空设备 |
rdesktop 192.168.1.100 | 远程连接到指定的IP地址上运行的Windows系统,并显示其桌面界面 |
scp /tmp/foo user@192.168.1.100:/tmp/bar/baz | 将本地主机上的一个文件复制到远程主机上的一个目录中 |
scp user@192.168.1.100:/tmp/foo /tmp/bar/baz | 将远程主机上的一个文件复制到本地主机上的一个目录中 |
useradd -m user | 创建一个新用户,并为该用户创建一个同名的主目录 |
passwd user | 具修改指定用户的密码,并提示输入新密码和确认新密码 |
script -a log.txt | 记录终端会话中的所有输入和输出,并将其保存到一个文件中 |
apropos subject | 使用apropos工具搜索与指定主题相关的手册页,并显示出来 |
history | 显示历史命令列表,并显示每个命令的编号和内容 |
! num | 执行历史命令列表中指定编号的命令 |
ssh2john.py id_rsa > ssh-key | 使用ssh2john.py工具将一个SSH私钥文件转换为john可识别的格式,并将其保存到一个文件中 |
john ssh-key | 使用john工具破解一个SSH私钥文件的密码,并显示出来 |
ssh -i id_rsa user@192.168.1.100 | 以指定用户和指定私钥文件登录到远程主机,并进入交互式shell模式 |
id -u | 显示当前用户的用户ID(UID) |
cut -d: -f3 < <(getent group staff) | 从group数据库中获取staff组对应的条目,并提取第三个字段,即组ID |
curl -G 'http://example.com/file.php' –data-urlencode 'cmd=echo ssh-rsa AA………..' | 向http://example.com/file.php发送一个GET请求,并对请求参数cmd=echo ssh-rsa AA…………进行URL编码 |
curl –user ‘tomcat:$3cureP4s5w0rd123!’ –upload-file exploit.war "http://megahosting.com:8080/manager/text/deploy?path=/exploit.war" | 向http://megahosting.com:8080/manager/text/deploy?path=/exploit.war发送一个文件exploit.war,并使用用户名tomcat和密码$3cureP4s5w0rd123!进行身份验证 |
文件命令
命令 | 解释 |
---|---|
diff file1.txt file2.txt | 比较两个文件的内容,并显示它们之间的差异 |
rm -rf dir | 删除一个目录及其所有子目录和文件,不询问任何确认 |
shred -f -u secret.txt | 用随机数据覆盖文件,然后删除文件,使其无法恢复 |
touch -r file1.txt file2.txt | 将文件的时间戳设置为与参考文件相同 |
touch -t 202309180000 file.txt | 将文件的时间戳设置为指定的日期和时间 |
sudo fdisk -l | 以超级用户权限列出所有磁盘分区的信息 |
mount /dev/sdb1 /mnt/usbkey | 将设备/dev/sdb1挂载到/mnt/usbkey目录下 |
md5sum -t file.txt | 计算文件的MD5校验和,并显示在终端上 |
echo -n "Hello, world!" | md5sum | 计算字符串"Hello, world!"的MD5校验和 |
shalsum file.txt | 计算文件的SHA1校验和,并显示在终端上 |
sort -u file.txt | 对输入进行排序,并去除重复的行 |
grep -c "is" file.txt | 在文件中查找包含字符串"is"的行数,并显示在终端上 |
grep -Hnri test * | vim - | 当前目录下的所有文件中查找包含单词"test"的行,并将结果在vim编辑器中打开 |
grep -rial test | 在当前目录下的所有文件中递归地查找包含单词"test"的行,并显示匹配的文件名 |
tar cf file.tar file1.txt file2.txt file3.txt | 将多个文件打包成一个名为file.tar的tar文件 |
tar xf file.tar | 将一个tar文件解压缩到当前目录下 |
tar czf file.tar.gz file1.txt file2.txt file3.txt | 将多个文件打包并压缩成一个名为file.tar.gz的gzip文件 |
tar xzf file.tar.gz | 将一个gzip文件解压缩到当前目录下 |
tar cjf file.tar.bz2 file1.txt file2.txt file3.txt | 将多个文件打包并压缩成一个名为file.tar.bz2的bzip2文件 |
tar xjf file.tar.bz2 | 将一个bzip2文件解压缩到当前目录下 |
gzip file.txt | 将一个文件压缩成一个名为file.txt.gz的gzip文件,并删除原始文件 |
upx -9 -o out.exe orig.exe | 将一个可执行文件orig.exe用UPX工具压缩成一个名为out.exe的可执行文件,使用最高压缩比率[-9] |
zip -r zipname.zip dir/ | 将一个目录及其所有子目录和文件压缩成一个名为zipname.zip的zip文件,使用递归模式[-r] |
dd skip=1000 count=2000 bs=5 if=file of=file2 | 从输入文件file中跳过1000个块,读取2000个块,每个块大小为5字节,然后写入输出文件file2 |
split -b 9K file prefix | 将一个大文件file分割成多个小文件,每个小文件大小为9K字节,以prefix作为前缀命名 |
awk 'sub("$"."\r")' win.txt unix.txt | 将一个Windows格式的文本文件win.txt转换成一个Unix格式的文本文件unix.txt,去除每行末尾的回车符"\r" |
find -i -name file -type '.pdf | 在当前目录下递归地查找所有名为file的PDF文件,并忽略大小写[-i] |
find I -perm -4000 -o -perm -2000 -exec ls -ldb {} \; | 在当前目录下递归地查找所有具有SUID或SGID权限的文件,并用ls命令列出它们的详细信息 |
dos2unix win.txt | 将一个Windows格式的文本文件file转换成一个Unix格式的文本文件,去除每行末尾的回车符"\r" |
file file | 判断一个文件的类型,如文本文件,二进制文件,压缩文件等 |
chattr +i file.txt | 为一个文件设置或取消不可修改属性[+/-i],使其无法被删除或修改 |
while [ $? -eq 0 ]; do cd flag/; done | ?−eq0];docdflag/;done:一个无限循环,如果上一个命令执行成功[? -eq 0],则进入flag目录,否则退出循环 |
杂项命令
命令 | 解释 |
---|---|
unset HISTFILE | 删除HISTFILE环境变量,使得当前终端的命令历史不会被保存到任何文件中 |
ssh alice@192.168.1.200 arecord -l aplay - | 通过ssh远程登录到ip地址的主机,以user为用户名,并在远程主机上执行arecord -l aplay -命令,该命令会录制远程主机的音频输入,并将其播放到本地主机的音频输出 |
init 6 | 重启系统,相当于执行reboot命令 |
cat /etc/syslog.conf | grep -v "#" | 显示/etc/syslog.conf文件的内容,并过滤掉以#开头的注释行 |
grep 'href=' file1 | cut -d"/" -f3 | grep url | sort -u | 在file1文件中查找包含href=的行,并用/作为分隔符,提取第三个字段,然后再查找包含url的行,并去除重复的行,最后按字典序排序 |
dd if=/dev/urandom of=random.dat bs=3145728 count=100 | 从/dev/urandom设备中读取随机数据,并写入到file文件中,每次读写的块大小为3145728字节,共读写100次,即生成一个大小约为300MB的随机文件random.dat |
echo "" > /var/log/auth.log | 空/var/log/auth.log文件的内容,该文件记录了系统的认证日志 |
echo "" > /.bash_history | 清空/.bash_history文件的内容,该文件记录了当前用户的命令历史 |
rm -/.bash_history -rf | 删除/.bash_history文件及其所有子目录和文件,不询问任何确认 |
history -c | 清空当前终端的命令历史缓存 |
export HISTFILESIZE=0 | 设置HISTFILESIZE环境变量为0,使得命令历史不会被保存到任何文件中 |
export HISTSIZE=0 | 设置HISTSIZE环境变量为0,使得当前终端的命令历史缓存为空 |
kill -9 | 发送SIGKILL信号给当前进程,强制终止当前终端 |
ln /dev/null /.bash_history -sf | 创建一个指向/dev/null设备的符号链接/.bash_history,覆盖原来的/.bash_history文件,使得命令历史不会被记录到任何地方 |
IPtables命令
iptables是一种用于Linux系统的软件防火墙,它可以对网络数据包进行过滤,转发,修改等操作。
命令 | 解释 |
---|---|
iptables-save -c iptables.rules | 将当前iptables的规则和计数器保存到iptables.rules文件中 |
iptables-restore iptables.rules | 从iptables.rules文件中恢复iptables的规则和计数器 |
iptables -L -v --line-numbers | 列出当前iptables的规则 |
iptables -F | 清空当前iptables的所有规则 |
iptables -P INPUT/FORWARD/OUTPUTACCEPT/REJECT/DROP | 设置默认策略为接受/拒绝/丢弃数据包,-P选项表示设置默认策略,INPUT/FORWARD/OUTPUT表示输入/转发/输出链,ACCEPT/REJECT/DROP表示接受/拒绝/丢弃数据包 |
iptables -A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT | 允许来自eth0接口的已建立或相关联的数据包通过 |
iptables -D INPUT 7 | 删除输入链中第7条规则 |
iptables -t raw -L -n | 列出raw表中的所有规则 |
iptables -P INPUT DROP | 设置输入链的默认策略为丢弃数据包 |
允许从本地主机的端口22发出的TCP数据包通过
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
如果只允许ssh和端口22出站到192.168.1.100这个IP地址,并且只从eth0这个接口发出:
iptables -A OUTPUT -p tcp --sport 22 -d 192.168.1.100 -o eth0 -j ACCEPT
端口转发
# 当有TCP数据包到达本机的80端口时,将其转发到192.168.1.100这个IP地址的8080端口
echo "1" /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:8080
#只允许来自10.0.0.1这个IP地址,并且只从eth0这个接口进入的TCP数据包到达本机的80端口时,将其转发到192.168.1.100这个IP地址的8080端口
echo "1" /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -p tcp -s 10.0.0.1 -i eth0 --dport 80 -j DNAT --to-destination 192.168.1.100:8080
Chkconfig
Chkconfig用来管理系统服务,它们可以在不同的运行级别中启动或停止服务,或者查看服务的状态。
- chkconfig –list:列出所有可用的服务及其在各个运行级别中的启动状态
chkconfig –list
NetworkManager 0:off 1:off 2:on 3:on 4:on 5:on 6:off
abrt-ccpp 0:off 1:off 2:off 3:on 4:off 5:on 6:off
abrt-oops 0:off 1:off 2:off 3:on 4:off 5:on 6:off
acpid 0:off 1:off 2:on 3:on 4:on 5:on 6:off
...
- chkconfig NetworkManager -list:列出指定服务在各个运行级别中的启动状态
chkconfig NetworkManager -list
NetworkManager 0:off 1:off 2:on 3:on 4:on 5:on 6:off
- chkconfig NetworkManager on –level 35:启用指定服务在指定运行级别中自动启动3。如果不指定运行级别,那么默认为2,3,4,5这四个级别
- chkconfig NetworkManager off [–level levels]:禁用指定服务在指定运行级别中自动启动。如果不指定运行级别,那么默认为2,3,4,5这四个级别。如果要禁用NetworkManager服务在所有运行级别中自动启动,那么执行chkconfig NetworkManager off命令即可
TCP转储
- tcpdump -i eth0 -XX -w out.pcap:在eth0接口上抓取所有的数据包,并以十六进制和ASCII码的形式显示,并将抓取的数据包保存到out.pcap文件中
tcpdump -i eth0 -XX -w out.pcap
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
00:00:00.000000 IP 192.168.1.100.22 > 192.168.1.200.1234: Flags [P.], seq 1:40, ack 1, win 229, options [nop,nop,TS val 123456789 ecr 987654321], length 39
0x0000: 4500 004f 0000 4000 4006 b2b2 c0a8 0164 E..O..@.@......d
0x0010: c0a8 01c8 0016 04d2 aabb ccdd eeff aabb ................
0x0020: 8018 00e5 fe43 0000 0101 080a 075b cd15 .....C.......[..
0x0030: 3ade b839 ffff ffff ffff ffff ffff ffff :..9............
0x0040: ffff ffff ffff ffff ffff ffff ............
4500 IP Version=4, Header Length=20 bytes
004f Total Length=79 bytes
0000 Identification=0
4000 Flags=2 (Don't Fragment), Fragment Offset=0
4006 Time To Live=64, Protocol=TCP (6)
b2b2 Header Checksum=0xb2b2
c0a8 Source Address=192.168.1.100
0164
c0a8 Destination Address=192.168.1.200
01c8
0016 Source Port=22 (SSH)
04d2 Destination Port=1234
aabb Sequence Number=0xaabbccdd
ccdd
eeff Acknowledgment Number=0xeeffaabb
aabb
8018 Data Offset=32 bytes, Flags=PUSH+ACK (24)
00e5 Window Size=229
fe43 Checksum=0xfe43
0000 Urgent Pointer=0
0101 No-Operation Option (NOP)
080a Timestamp Option (TSOPT), Length=10 bytes
...
- tcpdump -i eth0 port 80 dst 2.2.2.2:在eth0接口上抓取目的端口为80,目的地址为2.2.2.2的数据包,并以可读的形式显示
tcpdump -i eth0 port 80 dst 2.2.2.2
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
00:00:00.000000 IP 192.168.1.100.1234 > 2.2.2.2.http: Flags [S], seq 123456789, win 29200, options [mss 1460,sackOK,TS val 123456789 ecr 0,nop,wscale 7], length 0
00:00:00.000000 IP 2.2.2.2.http > 192.168.1.100.1234: Flags [S.], seq 987654321, ack 123456790, win 28960, options [mss 1460,sackOK,TS val 987654321 ecr 123456789,nop,wscale 7], length 0
00:00:00.000000 IP 192.168.1.100.1234 > 2.2.2.2.http: Flags [.], ack 1, win 229, options [nop,nop,TS val 123456790 ecr 987654321], length 0
00:00:00.000000 IP 192.168.1.100.1234 > 2.2.2.2.http: Flags [P.], seq 1:40, ack 1, win 229, options [nop,nop,TS val 123456791 ecr 987654321], length 39: HTTP: GET / HTTP/1.1
00:00:00.000000 IP 2.2.2.2.http > 192.168.1.100.1234: Flags [.], ack 40, win 227, options [nop,nop,TS val 987654322 ecr 123456791], length 0
...
- tcpdump -i eth0 -tttt dst 192.168.1.22 and not net 192.168.1.0/24:在eth0接口上抓取目的地址为192.168.1.22,但不属于192.168.1.0/24网络的数据包,并以可读的形式显示,同时显示完整的日期和时间
tcpdump -i eth0 -tttt dst 192.168.1.22 and not net 192.168.1.0/24
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
2023-09-18 Mon Sep18-00:15:19 IP6 fe80::aabb:ccdd:eef:f11 > fe80::aabb:ccdd:eef:f22 ICMP6, neighbor solicitation, who has fe80::aabb:ccdd:eef:f22, length32
2023-09-18 Mon Sep18-00:15:19 IP6 fe80::aabb:ccdd:eef:f22 > fe80::aabb:ccdd:eef:f11 ICMP6, neighbor advertisement, tgt is fe80::aabb:ccdd:eef:f22,length32
2023-09-18 Mon Sep18-00:15:19 IP6 fe80::aabb:ccdd:eef:f11 > ff02::16 ICMP6,multicast listener report v2, length28
2023-09-18 Mon Sep18-00:15:19 IP6 fe80::aabb:ccdd:eef:f11 > ff02::16 ICMP6,multicast listener report v2, length28
2023-09-18 Mon Sep18-00:15:19 IP6 fe80::aabb:ccdd:eef:f11 > ff02::16 ICMP6,multicast listener report v2, length28
...
- tcpdump -i eth0 ‘icmp[icmptype] == icmp-echoreply’:在eth0接口上抓取ICMP协议中类型为回显应答(echo reply)的数据包,并以可读的形式显示
tcpdump -i eth0 'icmp[icmptype] == icmp-echoreply'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
00:00:00.000000 IP 192.168.1.100 > 192.168.1.200: ICMP echo reply, id 1234, seq 1, length 64
00:00:01.000000 IP 192.168.1.100 > 192.168.1.200: ICMP echo reply, id 1234, seq 2, length 64
00:00:02.000000 IP 192.168.1.100 > 192.168.1.200: ICMP echo reply, id 1234, seq 3, length 64
...