存档

‘linux’ 分类的存档

如何读懂tcpdump的输出

2017年2月2日 2 条评论

tcpdump 是 Linux 下的抓包工具,使用参数比较多,输出条目比较细。

tcpdump的命令行格式

 

tcpdump的参数选项

 

tcpdump的表达式

表达式是一个逻辑表达式,tcpdump利用它作为过滤报文的条件,如果一个报文满足表达式的条件,则这个报文将会被捕获。如果没有给出任何条件,则网络上所有的信息包将会被截获。

在表达式中一般如下几种类型的关键字:

关于类型的关键字,主要包括host,net,port

例如,
host 210.27.48.2,指明 210.27.48.2是一台主机,net 202.0.0.0 指明202.0.0.0是一个网络地址,port 23 指明端口号是23。

如果没有指定类型,缺省的类型是host.

关于传输方向的关键字:src,dst,dst or src,dst and src

例如,src 210.27.48.2 ,指明ip包中源地址是210.27.48.2 , dst net 202.0.0.0 指明目的网络地址是202.0.0.0 。如果没有指明方向关键字,则缺省是src or dst关键字。

关于协议的关键字:fddi,ip,arp,rarp,tcp,udp

Fddi指明是在FDDI(分布式光纤数据接口网络)上的特定的网络协议,实际上它是"ether"的别名,fddi和e ther具有类似的源地址和目的地址,所以可以将fddi协议包当作ether的包进行处理和分析。

其他的几个关键字就是指明了监听的包的协议内容。如果没有指定任何协议,则tcpdump将会监听所有协议的信息包。

逻辑运算符关键字

非运算 'not ' '! '
与运算 'and','&&'
或运算 'or' ,'||'
这些关键字可以组合起来构成强大的组合条件来满足人们的需要,下面举几个例子来说明。

其他重要关键字

除了这三种类型的关键字之外,其他重要的关键字如下:gateway, broadcast,less,greater。

案例

想要截获所有210.27.48.1 的主机收到的和发出的所有的数据包:
tcpdump host 210.27.48.1

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

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

如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令:
tcpdump tcp port 23 host 210.27.48.1

输出结果介绍
下面我们介绍几种典型的tcpdump命令的输出信息

数据链路层头信息
使用命令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 < 8:0:20:79:5b:46 0:90:27:58:af:1a ip 60: h219.33357 > ice.telnet 0:0(0) ack 22535 win 8760 (DF)

分析:

21:50:12 是显示的时间
847509 是ID号
eth0 < 表示从网络接口eth0 接受该数据包
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
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 reply route is-at 0:90:27:12:10:66 (0:90:27:58:af:1a)

分析:

22:32:42 时间戳
802509 ID号
eth0 > 表明从主机发出该数据包
arp 表明是ARP请求包
who-has route tell ice 表明是主机ICE请求主机ROUTE的MAC地址
0:90:27:58:af:1a 是主机ICE的MAC地址。

TCP包的输出信息
用TCPDUMP捕获的TCP包的一般输出信息是:

src > dst 表明从源地址到目的地址
flags 是TCP包中的标志信息,S 是SYN标志, F(FIN), P(PUSH) , R(RST) "."(没有标记)
data-seqno 是数据包中的数据的顺序号
ack 是下次期望的顺序号
window 是接收缓存的窗口大小
urgent 表明数据包中是否有紧急指针
options 是选项

用TCPDUMP捕获的UDP包的一般输出信息是:

UDP十分简单,上面的输出行表明从主机ROUTE的port1端口发出的一个UDP数据包到主机ICE的port2端口,类型是UDP, 包的长度是lenth

wireshark查看
要让wireshark能分析tcpdump的包,关键的地方是 -s 参数, 还有要保存为-w文件,例如下面的例子:

wireshark的过滤,很简单的,比如:

tcp.port eq 5541
ip.addr eq 192.168.2.1
过滤出来后, 用fllow tcp 查看包的内容。

其他

device eth0/eth1 entered promiscuous mode
message日志中提示:
kernel: device eth0 entered promiscuous mode
kernel: device eth0 left promiscuous mode
网卡进入了混杂模式。一般对通信进行抓包分析时进入混杂模式(tcpdump)。(默认网卡启用了混杂模式的)
关闭混杂模式:ifconfig eth0 -promisc
启用混杂模式:ifconfig eth0 promisc
TCP协议的KeepAlive机制与HeartBeat心跳包:http://www.nowamagic.net/academy/detail/23350382
TCP Keepalive HOWTO:http://www.tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/

参考

http://xstarcd.github.io/wiki/shell/tcpdump.html
https://my.oschina.net/xianggao/blog/678644

分类: linux 标签: ,

vim函数跳转命令

2016年3月9日 1 条评论

gd 跳转到局部函数定义.
gD 跳转到全局函数定义.
g* 向下搜索光标所在单词 ( 当光标在 'rain' 会查找 'rainbow').
g# 向上搜索光标所在单词
gg 跳转到第一行
G 跳转到最后一行

分类: linux 标签:

eval恶意代码还原

2015年10月13日 1 条评论

查看后台日至看到如下内容:
117.21.176.241 - - [13/Oct/2015:16:14:34 +0800] "POST / HTTP/1.1" "-" 200 53156 lemon=@eval(base64_decode($_POST[z0]));&z0=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0%2BfCIpOztwcmludCgiaGFvcmVuIik7O2VjaG8oInw8LSIpO2RpZSgpOw== "-" "-"

这段内容是有人在扫面后台,执行eval一句话攻击,想知道它干什么,base64_decode这个内容。
decode时注意POST里的%要还原回url_encode前的字符。例如,把%2B和%3D用urldecode()函数还原分别是+号和=号

这段代码还原后的内容是:

分类: linux 标签:

linux命令行下curl方式post页面

2015年10月13日 2 条评论

1. linux curl抓取网页:

抓取百度:
curl http://www.baidu.com

如发现乱码,可以使用iconv转码:
curl http://iframe.ip138.com/ic.asp|iconv -fgb2312
iconv的用法请参阅:在Linux/Unix系统下用iconv命令处理文本文件中文乱码问题

2. Linux curl使用代理:

linux curl使用http代理抓取页面:
curl -x 111.95.243.36:80 http://iframe.ip138.com/ic.asp|iconv -fgb2312
curl -x 111.95.243.36:80 -U aiezu:password http://www.baidu.com

使用socks代理抓取页面:
curl --socks4 202.113.65.229:443 http://iframe.ip138.com/ic.asp|iconv -fgb2312
curl --socks5 202.113.65.229:443 http://iframe.ip138.com/ic.asp|iconv -fgb2312

代理服务器地址可以从爬虫代理上获取。

3. linux curl处理cookies

接收cookies:
curl -c /tmp/cookies http://www.baidu.com #cookies保存到/tmp/cookies文件

发送cookies:
curl -b "key1=val1;key2=val2;" http://www.baidu.com #发送cookies文本
curl -b /tmp/cookies http://www.baidu.com #从文件中读取cookies

4. linux curl发送数据:

linux curl get方式提交数据:
curl -G -d "name=value&name2=value2" http://www.baidu.com

linux curl post方式提交数据:
curl -d "name=value&name2=value2" http://www.baidu.com #post数据
curl -d a=b&c=d&txt@/tmp/txt http://www.baidu.com #post文件

以表单的方式上传文件:
curl -F file=@/tmp/me.txt http://www.aiezu.com

相当于设置form表单的method="POST"和enctype='multipart/form-data'两个属性。

5. linux curl http header处理:

设置http请求头信息:
curl -A "Mozilla/5.0 Firefox/21.0" http://www.baidu.com #设置http请求头User-Agent
curl -e "http://pachong.org/" http://www.baidu.com #设置http请求头Referer
curl -H "Connection:keep-alive \n User-Agent: Mozilla/5.0" http://www.aiezu.com

设置http响应头处理:
curl -I http://www.aiezu.com #仅仅返回header
curl -D /tmp/header http://www.aiezu.com #将http header保存到/tmp/header文件

6. linux curl认证:

curl -u aiezu:password http://www.aiezu.com #用户名密码认证
curl -E mycert.pem https://www.baidu.com #采用证书认证

7. 其他:

curl -# http://www.baidu.com #以“#”号输出进度条
curl -o /tmp/aiezu http://www.baidu.com #保存http响应到/tmp/aiezu

8. 经验
linux 使用curl小经验教训:
http请求地址的url要使用""括起来。当有存在多个参数使用&连接时可能会出错。

原文地址:http://www.cnblogs.com/davidwang456/p/4266867.html

分类: linux 标签:

linux查看物理cpu数量

2015年9月22日 1 条评论

# 总核数 = 物理CPU个数 X 每颗物理CPU的核数
# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数

# 查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l

# 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq

# 查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l

# 查看CPU信息(型号)
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

# 查看内 存信息
cat /proc/meminfo
free -g

# getconf LONG_BIT
32
(说明当前CPU运行在32bit模式下, 但不代表CPU不支持64bit)

分类: linux 标签:

Linux下用wget下载百度网盘资源

2015年9月20日 1 条评论

1.设置共享文件,把访问地址复制到chrome打开网页

2.在下载处点右键,复制下载地址

3.在SSH里输入

# wget -O 文件名.zip "把复制地址粘贴“

文件名.zip 可以任意命名,可以和下载的文件名不一样

例如我要下载文件名为:web.tar.gz

复制的地址:
http://www.baidupcs.com/file/d1e5fed96b131ee7e608d14a673edf42?fid=3373459577-250528-1657895455&time=1362149161&sign=FDTA-DCb740ccc5511e5e8fedcff06b081203-vTjW3QmCTiqMtarZZQwikQeGfb8%3D&expires=8h&sh=1&response-cache-control=private

完整命令:

# wget -O name.zip "http://www.baidupcs.com/file/d1e5fed96b131ee7e608d14a673edf42?fid=3373459577-250528-1657895455&time=1362149161&sign=FDTA-DCb740ccc5511e5e8fedcff06b081203-vTjW3QmCTiqMtarZZQwikQeGfb8%3D&expires=8h&sh=1&response-cache-control=private"

下载完后文件为 name.zip

# unzip name.zip #解压缩后得到你打包在web.tar.gz里的文件

分类: linux 标签:

digtalocean和Linode比较

2015年9月5日 没有评论

digtalocean到今天已经发展3年,价格上已经不比linode便宜,而且某些配置上已经比Linode价格稍贵一些。

价格和配置上:

DigtalOcean提供小的512M配置和最受欢迎的droplet(水滴)配置比Linode同价格配置多了6G的磁盘空间。

digtalocean 的配置

doprice

Linode 的配置
linodeprice

digtalocean和Linode优惠码:
digtalocean有新用户10美元优惠码,Linode同样有新用户优惠。

稳定性和速度上:
同样是美国的机房比较快,DigtalOcaen选择旧金山,Linode选弗里蒙特。
稳定上秒国内主机N条街。

客户支持和响应速度:
都需要英文发Ticket支持,10多分钟就会有响应。
我的Linode经常被攻击,大多被上传一些恶意脚本来发垃圾邮件,通过access很容易发现脚本位置。

综合来看,两家都差不太多.

分类: linux 标签:

vim 不高亮 显示横线

2015年8月30日 1 条评论

vim设置了代码高亮, syntax on

但是在secureCRT始终显示下划线,不显示高亮

解决方法:
1.检查$TERM变量,echo $TERM

如果输出不是xterm-color,那么需设置$TERM变量

使用vi打开/etc/profile

添加 export TERM=xterm-color

然后执行 source /etc/profile

如果还是没有语法高亮,那么第二步

2.如果你用的是远程登录,比如SecureCRT,这时候需要设置

会话选项>终端>仿真,选择下选菜单中的xterm,并打钩ANSI彩色,并根据自己需要是否选择彩色方案

分类: linux 标签:

gl inet刷openwrt固件开启wifi

2015年8月3日 1 条评论

从淘宝上买了个号称最小的路由器Gl inet玩,首先是刷固件

1. 下载OpenWrt官方网站上的固件,
下载地址:http://downloads.openwrt.org/snapshots/trunk/ar71xx/generic/openwrt-ar71xx-generic-gl-inet-6416A-v1-squashfs-factory.bin

2. 拔掉路由器上的一切连线。

3. 电脑连接路由器LAN口,并设置电脑的IP地址为 192.168.1.2。

4. 按住路由器的 reset 键,插入电源开机,此后会看到绿灯闪烁,待红灯亮起时松开reset键,此时路由器进入uboot web界面

5. 电脑上使用浏览器打开地址 http://192.168.1.1,将会看到:

uboot更新固件

6.选择刚才下载的文件后,点击 Upload按钮,开始刷机。

等待刷机

7. 刷机的过程中路由器的指示灯会频繁闪烁,待闪烁停止后,刷机完成,路由器会自动重启,重启的过程中,电脑上可以看到网络连接回暂时断开,然后会自动恢复,如果指示灯为绿红色,刷机失败,重新刷。

8. 带网络连接恢复后,将网络连接重新设置为自动获得IP地址。

9. 电脑网络连接自动获得192.168.1.0/24的地址成功后,telnet 到192.168.1.1,如果连接成功,并看到OpenWrt提示符,则刷机成功

=== IMPORTANT ============================
Use 'passwd' to set your login password
this will disable telnet and enable SSH
------------------------------------------

BusyBox v1.23.2 (2015-07-19 22:16:29 CEST) built-in shell (ash)

_______ ________ __
| |.-----.-----.-----.| | | |.----.| |_
| - || _ | -__| || | | || _|| _|
|_______|| __|_____|__|__||________||__| |____|
|__| W I R E L E S S F R E E D O M
-----------------------------------------------------
CHAOS CALMER (Bleeding Edge, r46421)
-----------------------------------------------------
* 1 1/2 oz Gin Shake with a glassful
* 1/4 oz Triple Sec of broken ice and pour
* 3/4 oz Lime Juice unstrained into a goblet.
* 1 1/2 oz Orange Juice
* 1 tsp. Grenadine Syrup
-----------------------------------------------------
root@OpenWrt:/#

10.telnet后输入passwd 修改密码 然后就可以用putty连接路由器了

11.putty连接后依次输入以下命令,系统会自动安装所需的软件包。

opkg update
opkg install luci

12.在电脑端的浏览器中输入192.168.1.1,可访问路由器就表示安装成功

13.默认界面是英文的这个时候输入root用户名密码就是你刚刚用“passwd”命令修改的密码

刷完openwrt默认是搜不到wifi信息的,WLAN灯不亮,无法搜索到无线网络,需要手动开启

# vim /etc/config/wireless
config wifi-device radio0
option type mac80211
option channel 11
option hwmode 11g
option path 'platform/ar933x_wmac'
option htmode HT20
# REMOVE THIS LINE TO ENABLE WIFI:
#option disabled 1

config wifi-iface
option device radio0
option network lan
option mode ap
option ssid OpenWrt
option encryption none

# /sbin/wifi up

使用logread能够看到启动日志
logread -f

无线配置文件
Configuration file: /var/run/hostapd-phy0.conf

adsl拨号设置
http://softwaredownload.gitbooks.io/openwrt-fanqiang/content/ebook/02.4.html
http://bbs.gl-inet.com/thread-63-1-1.html

分类: linux 标签: ,

解决-bash: fork: retry: Resource temporarily unavailable错误

2015年7月30日 没有评论

登陆不了服务器
The server refused to start a shell.

登陆服务器后执行ls命令报错:

上面这段错误提示的本质是Linux操作系统无法创建更多进程,导致出错。
因此要解决这个问题需要修改Linux允许创建更多的进程。

修改Linux最大进程数

我们可以通过ulimit -a来查看当前Linux系统的一些系统参数。

在上面这些参数中,通常我们关注得比较多的是一个进程可打开的最大文件数,即open files。
系统允许创建的最大进程数量即是max user processes 这个参数。
我们可以使用 ulimit -u 4096 修改max user processes的值,但是只能在当前终端的这个session里面生效,重新登录后仍然是使用系统默认值。
正确的修改方式是修改/etc/security/limits.d/90-nproc.conf文件中的值。

我们只要修改上面文件中的4096这个值,即可。

分类: linux 标签: