tcpdump shell下的sniffer工具

tcpdump命令是一款sniffer工具,它可以打印所有经过网络接口的数据包的头信息,也可以使用-w选项将数据包保存到文件中,方便以后分析。

语法

tcpdump(选项)

选项

-a:尝试将网络和广播地址转换成名称;
-c<数据包数目>:收到指定的数据包数目后,就停止进行倾倒操作;
-d:把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出;
-dd:把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出;
-ddd:把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出;
-e:在每列倾倒资料上显示连接层级的文件头;
-f:用数字显示网际网络地址;
-F<表达文件>:指定内含表达方式的文件;
-i<网络界面>:使用指定的网络截面送出数据包;
-l:使用标准输出列的缓冲区;
-n:不把主机的网络地址转换成名字;
-N:不列出域名;
-O:不将数据包编码最佳化;
-p:不让网络界面进入混杂模式;
-q :快速输出,仅列出少数的传输协议信息;
-r<数据包文件>:从指定的文件读取数据包数据;
-s<数据包大小>:设置每个数据包的大小;
-S:用绝对而非相对数值列出TCP关联数;
-t:在每列倾倒资料上不显示时间戳记;
-tt: 在每列倾倒资料上显示未经格式化的时间戳记;
-T<数据包类型>:强制将表达方式所指定的数据包转译成设置的数据包类型;
-v:详细显示指令执行过程;
-vv:更详细显示指令执行过程;
-x:用十六进制字码列出数据包资料;
-w<数据包文件>:把数据包数据写入指定的文件。

实例

直接启动tcpdump将监视第一个网络接口上所有流过的数据包

tcpdump

监视指定网络接口的数据包

tcpdump -i eth1

如果不指定网卡,默认tcpdump只会监视第一个网络接口,一般是eth0,下面的例子都没有指定网络接口。

监视指定主机的数据包

打印所有进入或离开sundown的数据包。

tcpdump host sundown

也可以指定ip,例如截获所有210.27.48.1 的主机收到的和发出的所有的数据包

tcpdump host 210.27.48.1

打印helios 与 hot 或者与 ace 之间通信的数据包

tcpdump host helios and \( hot or ace \)

截获主机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 \)

打印ace与任何其他主机之间通信的IP 数据包, 但不包括与helios之间的数据包.

tcpdump ip host ace and not helios

如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:

tcpdump ip host 210.27.48.1 and ! 210.27.48.2

截获主机hostname发送的所有数据

tcpdump -i eth0 src host hostname

监视所有送到主机hostname的数据包

tcpdump -i eth0 dst host hostname

监视指定主机和端口的数据包

如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令

tcpdump tcp port 23 host 210.27.48.1

对本机的udp 123 端口进行监视 123 为ntp的服务端口

tcpdump udp port 123

监视指定网络的数据包

打印本地主机与Berkeley网络上的主机之间的所有通信数据包

tcpdump net ucb-ether

ucb-ether此处可理解为“Berkeley网络”的网络地址,此表达式最原始的含义可表达为:打印网络地址为ucb-ether的所有数据包

打印所有通过网关snup的ftp数据包

tcpdump 'gateway snup and (port ftp or ftp-data)'

注意:表达式被单引号括起来了,这可以防止shell对其中的括号进行错误解析

打印所有源地址或目标地址是本地主机的IP数据包

tcpdump ip and not net localnet

如果本地网络通过网关连到了另一网络,则另一网络并不能算作本地网络。

Linux网络流量查看

      使用不同的机制来制作流量报告。nload等一些工具可以读取"proc/net/dev"文件,以获得流量统计信息;而一些工具使用pcap库来捕获所有数据包,然后计算总数据量,从而估计流量负载。

下面是按功能划分的命令名称。

  • 监控总体带宽使用:nload、bmon、slurm、bwm-ng、cbm、speedometer和netload
  • 监控总体带宽使用(批量式输出):vnstat、ifstat、dstat和collectl
  • 每个套接字连接的带宽使用:iftop、iptraf、tcptrack、pktstat、netwatch和trafshow
  • 每个进程的带宽使用:nethogs

speedometer

监控流量:

speedometer -r eth0 -t eth0 

-c 选项可以以垂直分割的方式显示不同的项目:

speedometer -tx eth0 -c -rx eth0

另外,Speedometer 还可以监测某个文件的下载速率,比如你正在下载 downlod.iso 这个文件,那么只要:

speedometer download.iso

就会显示出文件下载的速率,不过这招有时也不是很灵,因为大多数文件下载工具,会缓存下载的数据,或者在临时文件中保存下载的数据,而 Speedometer 只能通过监测文件大小的变化算出速率。如果你知道下载文件的大小,可以在命令中指定大小,这样 Speedometer 就会帮你显示一个进度条,比如我知道 download.iso 是 80M:speedometer download.iso $((80*1024*1024))

pktstat

pktstat可以实时显示所有活动连接,并显示哪些数据通过这些活动连接传输的速度。它还可以显示连接类型,比如TCP连接或UDP连接;如果涉及HTTP连接,还会显示关于HTTP请求的详细信息。

 pktstat -i eth0 -nt 

dstat

dstat是一款用途广泛的工具(用python语言编写),它可以监控系统的不同统计信息,并使用批处理模式来报告,或者将相关数据记入到CSV或类似的文件。这个例子显示了如何使用dstat来报告网络带宽。

dstat -nt

树莓派3b+_AlphaBot2模块列表

Arduino控制程序:

 Run-Test                       电机测试
 Joystick 程序                  五向摇杆
 IR 程序                        红外遥控器控制
 Infrared-Obstacle-Avoidancec   红外避障
 Ultrasionc-Obstacle-Avoidance  超声波避障
 Ultrasionc-Infrared-Obstacle-Avoidance  超声波红外避障
 Ultrasionc_Ranging             超声波测距
 TRSensors                      寻迹传感器测试
 Infrared-Line-Tracking         红外寻迹
 W2812                          RGB彩灯
 OLED                           绘图操作demo
 Line-Tracking                  综合程序
 MazeSolver                     迷宫程序
 Bluetooth                      蓝牙控制
 Bluetooth-json                 蓝牙控制(json格式)

树莓派控制程序(AlphaBot2.tar.gz):

 wget http://www.waveshare.net/w/upload/e/ee/AlphaBot2-Demo.7z
 wget http://www.waveshare.net/w/upload/c/c3/Rpi_ws281x-master.zip

gpio

 git clone git://git.drogon.net/wiringPi
 cd wiringPi
 ./build
 gpio -v
 gpio readall

红外遥控器控制

 cd ~/AlphaBot2/python
 python IRremote.py

电机测试

 cd ~/AlphaBot2/python
 python AlphaBot2.py

五向摇杆

 cd ~/AlphaBot2/python
 python Joystick.py

红外避障

 cd ~/AlphaBot2/python
 python Infrared_Obstacle_Avoidance.py

超声波测距(树莓派 3B 套餐不包含超声波模块)

 cd ~/AlphaBot2/python
 python Ultrasonic_Rangeing.py

超声波测距(树莓派 3B 套餐不包含超声波模块)

 cd ~/AlphaBot2/python
 python Infrared_Obstacle_Avoidance.py

RGB 彩灯

 rpi_ws281x-master.zip
 unzip rpi_ws281x-master.zip

 apt-get install build-essential python-dev scons swig

 cd rpi_ws281x-master
 scons

 ./test

 cd python
 python setup.py install

 cd examples
 python lowlevel.py

 cd ~/AlphaBot2/python
 python ws2812.py

循迹传感器测试

 cd ~/AlphaBot2/python
 python TRSensors.py

红外循迹程序

 cd ~/AlphaBot2/python
 python LineFollow.py

舵机

 cd ~/AlphaBot2/python
 python PCA9685.py

mjpg-streamer 软件实时监控

 a,raspi-config 开启摄像头
 b,/etc/modules 添加一行:bcm2835-v4l2
 c,重启后,ls -ltr /dev/video0
 (若无,rpi-update)

 cd AlphaBot2/lib/mjpg-streamer
 ./start
 http://ip:8080/

通过 webiopi 实现远程遥控

 cd AlphaBot2/lib/WebIOPi-0.7.1-raspi2
 ./setup.sh
 webiopi -h
 webiopi -d -c /etc/webiopi/config
 http://ip:8000

 mjpg-AlphaBot 目录,修改视频源 IP:
 cd ./AlphaBot2/mjpg-AlphaBot/
 vim index.html
 http://x.x.x.x:8080/?action=stream

 cd ./AlphaBot2/mjpg-AlphaBot
 webiopi -c config
 http://x.x.x.x:8000/

 ./AlphaBot2/mjpg-AlphaBot/mjpg-AlphaBot
 webiopi -c config

 设置开机启动:
 cd ./AlphaBot2/mjpg-AlphaBot
 cp config /etc/webiopi/config
 update-rc.d webiopi defaults
 vim /etc/rc.local:
     cd /home/pi/AlphaBot2/lib/mjpg-streamer
     ./start.sh &

通过 Bottle 实现远程遥控

 a.apt-get install python-bottle
 b.cd ~/AlphaBot2/Web-RGB
   python main
 c. http://ip:8000
   (手机端)
 d.cd ~/AlphaBot2/Web-Control
   vim index.html,修改真实ip:
   <img width="320" height="240" src="http://192.168.10.235:8080/?action=stream">
 e.python main
 f.http://ip:8000
 g.开机启动:
   vim /etc/rc.local:
     cd /home/pi/AlphaBot2/lib/mjpg-streamer
     ./start.sh &
     cd /home/pi/AlphaBot2/Web-Contrl
     python main &
 h.vim /etc/dhcpcd.comf 设置静态 IP
     interface wlan0
     static ip_address = 192.168.1.114/24
     static routers = 192.168.1.1

通过软件远程遥控小车

 a.cd ~/AlphaBot2/App-Control
 b.vim main.py:
   Host = '192.168.10.235'
 c.python main

 d.运行mjpg-streamer

 e.打开 AlphaBot.exe 程序,输入 IP 地址,mjpg-stream 的端口号,小车 Soket 服务端的端口号
 f.开机启动, vim /etc/rc.local:
   cd /home/pi/AlphaBot/lib/mjpg-streamer
   ./start.sh &
   cd /home/pi/AlphaBot/App-Contrl
   python main &
 g.可开启树莓派无线网络适配器的AP功能(不用连接WIFI)

通过树莓派蓝牙遥控小车

 a.升级蓝牙软件包
   apt-get update
   apt-get upgrade -y
   apt-get dist-upgrade -y
   apt-get install pi-bluetooth bluez bluez-firmware blueman
 b.pi用户到蓝牙组 
   usermod –G Bluetooth –a pi
 c.reboot
 d.启动/增加 SPP,开启蓝牙设备:
   vim /etc/systemd/system/dbus-org.bluez.service
     ExecStart=/usr/lib/bluetooth/bluetoothd
     ExecStartPost=/usr/bin/sdptool add SP
   reboot
 e.hciconfig
   (如果/boot/config.txt 文件中有 dtoverlay=pi3-miniuart-bt 这语句需要注释掉)
 f.bluetoothctl
   agent on
   agent on
   default-agent
   pair XX:XX:XX:XX:XX:XX ( XX:XX:XX:XX:XX:XX 替换为你自己设备的地址)
   trust XX:XX:XX:XX:XX:XX (配对之后把设备添加到信任列表)
   connect XX:XX:XX:XX:XX:XX
   (注意:如果命令行下链接不成功可以在图形界面下连接。)
 g.cd /AlphaBot2/Bluetooth-Control
   rfcomm watch hci0 1 python bluetooth.py
 h.下载APP(只有安卓, page 45)
   https://fir.im/hysk
 i.bluetoothctl
   discoverable on
   quit