March 2014 Blog Posts

Python中的缩进问题

LC 2014-03-24 Python


在学习的时候,即使按照教程的例子来操作;也偶尔难免会出现错误;当我参照例子输入一些命令的时候,有时候一不小心就很容易多了或者少了缩进。


举个例子,写一个名为for.py的文件:

#!/usr/bin/python 
# Filename: for.py 

for i in range(1,6): 
    print i 
else: 
print 'The for loop is over' 

然后运行它,将会返回“IndentationError: expected an indented block”的错误;提示第7行格式不对,期望一个缩进的块

# ./for.py    
  File "./for.py", line 7
    print 'The for loop is over'
        ^
IndentationError: expected an indented block

所以我们在第7行加上缩进

#!/usr/bin/python 
# Filename: for.py 

for i in range(1,6): 
    print i 
else: 
    print 'The for loop is over' 

然后再运行,就不会出错了。

 

再举个例子,写一个名为ex1.py的文件:

#!/usr/bin/python 
# Filename: ex1.py 
print "Hello World!" 
print "Hello Again" 
print "I like typing this." 
print "This is fun." 
print 'Yay! Printing.' 
print "I'd much rather you 'not'." 
    print 'I "said" do not touch this.' 

    
 然后运行它,将会返回“IndentationError: unexpected indent”的错误,提示第9行不需要缩进
 
 # ./ex1.py 
  File "./ex1.py", line 9
    print 'I "said" do not touch this.'
    ^
IndentationError: unexpected indent

根据提示,去掉第9行的缩进

#!/usr/bin/python 
# Filename: ex1.py 
print "Hello World!" 
print "Hello Again" 
print "I like typing this." 
print "This is fun." 
print 'Yay! Printing.' 
print "I'd much rather you 'not'." 
print 'I "said" do not touch this.' 

接着再运行ex1.py,就成功了。

由此可知,python对于格式的要求是非常严格的;所以刚开始学习就应该很仔细地领会这些。

治疗荨麻疹偏方

LC 2014-03-20 37摄氏度

治疗偏方,注意:网络中搜罗而来,仅供参考,具体请咨询医生!!!

1.香樟木煮水洗澡,我家洗了两周,彻底好了

2.擦了食醋和白酒的混合物,确实是肖的比较快,但是还是会发出来.........

3.起的厉害给他用淡盐水擦擦。另外不要带太暖

4.香樟树枝叶煮水后洗澡,我们试过,有疗效的
砍了几根樟树的树枝来烧水给她洗了一把,洗完过了一小会就肿块马上就退了,但是发的地方还是红红的,又过了大概1个小时左右,差不多就全部退掉了

5.蛋黄/芒果/菠萝,或者家里灰尘大不大,出去在绿地有没有接触花粉,家里或者宝宝接触过猫狗的毛没有,这些都有可能是过敏源头。

6.仙特敏和炉甘石洗剂,这两个是副作用最小的

7.我就用土方法,艾草,金银花露涂身体。但是还是会反复。过乐一周,身上不红乐,也不出疹子乐,自己就号乐。

8.用樟木枝烧水洗澡的,一般洗个三天就好了。小区里面都有香樟树的

9.另外再重点推荐一个(据说是治疗的祖传秘方),原文找不到了,整理如下:

川黄柏 10g 
地肤子 10g 
白鲜皮 10g 
苍耳子 10g 
木槿皮 10g 
白蒺藜 10g 
蝉  衣 10g 
防  风 10g 
蛇床子 10g 
荆  芥 10g 
野菊花 10g 
浮  萍 10g 
花  椒 10g 
五剂:每日一剂 外洗用 

wireshark过滤表达式实例介绍

Blog Author 2014-03-20 Networking

之前一片文章介绍了Wireshark的过滤语法,这里从网上收集了一些wireshark实例

 

1、基本的语法字符

\d          0-9的数字 
\D          \d的补集(以所以字符为全集,下同),即所有非数字的字符 
\w          单词字符,指大小写字母、0-9的数字、下划线 
\W          \w的补集 
\s          空白字符,包括换行符\n、回车符\r、制表符\t、垂直制表符\v、换页符\f 
\S          \s的补集 
.           除换行符\n外的任意字符。 在Perl中,“.”可以匹配新行符的模式被称作“单行模式” 
.*          匹配任意文本,不包括回车(\n)? 。 而,[0x00-0xff]*           匹配任意文本,包括\n 
[…]         匹配[]内所列出的所有字符 
[^…]        匹配非[]内所列出的字符 

 

2、定位字符  所代表的是一个虚的字符,它代表一个位置,你也可以直观地认为“定位字符”所代表的是某个字符与字符间的那个微小间隙。

^          表示其后的字符必须位于字符串的开始处 
$          表示其前面的字符必须位于字符串的结束处 
\b         匹配一个单词的边界 
\B         匹配一个非单词的边界 

 

3、重复描述字符

{n}          匹配前面的字符n次 
{n,}         匹配前面的字符n次或多于n次 
{n,m}        匹配前面的字符n到m次 
?            匹配前面的字符0或1次 
+            匹配前面的字符1次或多于1次 
*            匹配前面的字符0次或式于0次  

 

4、and or 匹配

and 符号 并 
or  符号 或 

例如:

tcp and tcp.port==80 
tcp or udp 

 

5、wireshark过滤实例

5.1、搜索按条件udp的数据段payload(数字8是表示udp头部有8个字节,数据部分从第9个字节开始udp[8:])

udp[8]==14 // (14是十六进制0x14)匹配payload第一个字节0x14的UDP数据包 
udp[8:2]==14:05 // 可以udp[8:2]==1405,且只支持2个字节连续,三个以上须使用冒号:分隔表示十六进制。 (相当于 udp[8]==14 and udp[9]==05,1405是0x1405) 
udp[8:3]==22:00:f7 // 但是不可以udp[8:3]==2200f7 
udp[8:4]==00:04:00:2a // 匹配payload的前4个字节0x0004002a 
udp contains 7c:7c:7d:7d // 匹配payload中含有0x7c7c7d7d的UDP数据包,不一定是从第一字节匹配。注意跟上一行的区别 
udp[8:4] matches "\\x14\\x05\\x07\\x18" 
udp[8:] matches "^\\x14\\x05\\x07\\x18\\x14" 

5.2、搜索按条件tcp的数据段payload(数字20是表示tcp头部有20个字节,数据部分从第21个字节开始tcp[20:])

tcp[20:] matches "^GET [ -~]*HTTP/1.1\\x0d\\x0a" 
// 等同http matches "^GET [ -~]*HTTP/1.1\\x0d\\x0a" 
tcp[20:] matches "^GET (.*?)HTTP/1.1\\x0d\\x0a" 
tcp[20:] matches "^GET (.*?)HTTP/1.1\\x0d\\x0a[\\x00-\\xff]*Host: (.*?)pplive(.*?)\\x0d\\x0a" 
tcp[20:] matches "^GET (.*?)HTTP/1.1\\x0d\\x0a[\\x00-\\xff]*Host: " 
tcp[20:] matches "^POST / HTTP/1.1\\x0d\\x0a[\\x00-\\xff]*\\x0d\\x0aConnection: Keep-Alive\\x0d\\x0a\\x0d\\x0a" 

检测SMB头的smb标记,指明smb标记从tcp头部第24byte的位置开始匹配。

tcp[24:4] == ff:53:4d:42 

检测SMB头的smb标记,tcp的数据包含十六进制ff:53:4d:42,从tcp头部开始搜索此数据。

tcp contains ff:53:4d:42 
tcp matches "\\xff\\x53\\x4d\\x42" 

检测tcp含有十六进制01:bd,从tcp头部开始搜索此数据。

tcp matches "\\x01\\xbd" 

检测MS08067的RPC请求路径

tcp[179:13] == 00:5c:00:2e:00:2e:00:5c:00:2e:00:2e:00 

5.3、其他

http.request.uri matches ".gif$" 
// 匹配过滤HTTP的请求URI中含有".gif"字符串,并且以.gif结尾(4个字节)的http请求数据包($是正则表达式中的结尾表示符) 
// 注意区别:http.request.uri contains ".gif$" 与此不同,contains是包含字符串".gif$"(5个字节)。匹配过滤HTTP的请求URI中含有".gif$"字符串的http请求数据包(这里$是字符,不是结尾符) 
eth.addr[0:3]==00:1e:4f 
// 搜索过滤MAC地址前3个字节是0x001e4f的数据包。 

如何在CentOS下升级Python

Blog Author 2014-03-18 Python

实验室中有一台CentOS5机器,它自带的 版本是2.4。

但是目前许多基于Python的应用软件要求的Python版本应要高于2.4,所以我打算到2.7版本.

这边记录整个升级的过程,分享给大家:

升级python版本的时候千万不要卸载 2.4,再安装python2.7,这样可能会导致很多程序无法运行,甚至无法连接网络,最后不得不重新装系统。

保守的方式是直接安装python2.7的源码包,也就是python两个版本共存。(因为Centos里面有很多程序是依赖着python,所有最好不要尝试去卸载python2.4)。

(1)下载/安装python
下载Python2.7.2.tar.bz2(http://www.python.org/ftp/python/2.7.2/Python- 2.7.2.tar.bz2)

$tar jxvf Python2.7.2.tar.bz2 //解压文件
$cd Python2.7.2 
$./configure 
$make && make install 

自此,python2.7安装完毕,安装后路径默认是在/usr/local/lib/python2.7

查看Python版本:

$ /usr/local/bin/python2.7 -V 

(2)建立软连接,使系统默认的python指向python2.7
正常情况下即使python2.7安装成功后,系统默认指向的 仍然是2.4版本,考虑到yum是基于python2.4才能正常工作,不敢轻易卸载。
我们想办法将系统默认的python指向到2.7版本

mv /usr/bin/python /usr/bin/python.bak //或者rm -rf /usr/bin/python
ln -s /usr/local/bin/python2.7 /usr/bin/python

返回“ln: creating symbolic link `/usr/bin/python' to `/usr/local/bin/python2.7': File exists”;
检验python指向是否成功 python -V;此时依旧显示“Python 2.4.3”;
运行以下命令

ln -f /usr/local/bin/python2.7 /usr/bin/python 

建立链接成功;
检验python指向是否成功 python -V;此时显示“Python 2.7.2”,这说明现在系统默认的python是指向新版本了。

(3) 解决系统python软链接指向python2.7版本后,不能正常工作方法:
$vi /usr/bin/yum 将文本编辑显示的#/usr/bin/python修改为#/usr/bin/python2.4,保存修改退出即可

美国签证免面签代传递流程记录

Blog Author 2014-03-18 其他

公司决定年初派我前往美国出差,参加CableLabs举办的2014年2月IPv6 IoT测试,我查了相关资料,因为在2010年曾经也前往美国出差过,发现自己符合 免面签手续,于是开始准备 资料。

1. https://ceac.state.gov/GENNIV 填写DS-160表格(注:如果是续签,且符合中信代传递服务的,要选择 广州 领事馆),并记住Visa Case Number;打印确认单

2. http://www.ustraveldocs.com/ 填写信息,会有几个问题确认您是否符合代传递的要求;获得一个CGI(CGI REFERENCE NUMBER )号码,打印确认单

3.带上步骤1和步骤2中打印的确认单,到中信银行交钱,将获得两张收据

4.登录 http://www.ustraveldocs.com/ , 到缴费的页面,可以看到已经缴费。然后继续下一步,打印文件提交信(Drop Box Confirmation Letter)

5. 带上护照原件,步骤1 的确认单,步骤4的文件提交信,交给中心银行的负责人就可以了

6. 之后可以登录 https://ceac.state.gov/CEACStatTracker/Status.aspx 查询你的VISA状态,选择NIV,选择您提交的领事馆,输入您的Visa Case Number
举个例子:
我是在1月14日上海提交的,这时候查询是No Status
1月19日中午查询是Administrative Processing
1月21日中午查询是Issued

7.等Visa状态显示为Issued之后,登录 http://www.ustraveldocs.com/ ,可以看到右边护照状态为仍在领事馆

1-22~26日 查询,状态均为“护照已从领事馆那边收回,目前正在安排运送”
拨打电话02083909000,自助查询结果是护照正在运送途中。
发邮件至 passportstatus@ustraveldocs.com ,回复是: The current status of your passport is Origination Scan.
1-26致电021-54255291(上海市漕溪北路737弄1号 (No 1, Lane 737, Caoxi North Rd, Shanghai);-- 021 54255500, 54255291徐汇(Xuhui), 上海Shanghai 200030,我选择的取护照的地点),查询护照是否到了中信银行,得到的回答是还没到,询问能不能查到状态,回复是不能。

所以做好准备请人代领,确认了代领所需的材料(与网站上写的一致):
代领人的政府签发附照身份证原件
申请人的政府签发附照身份证影印件
申请人签署的授权书,授权代领人领取护照。授权书必须包含下列信息:
代领人全名,必须与其政府签发附照身份证上的信息一致

不过后来好在2014年01月28日 00:11 (星期二) 的时候收到邮件:

Dear XXX,   

Your document(s) have been collected from the US Embassy/Consulate   

The passport number being returned is XXX   and the airway bill for tracking is XXX   

You have chosen to have your documents delivered to the following location:   

上海-徐汇 Shanghai - Xuhui, 上海市漕溪北路737弄1号 (No 1, Lane 737, Caoxi North Rd, Shanghai), 徐汇(Xuhui), 上海Shanghai 200030   

If you have any issues or concerns, please contact us at www.ustraveldocs.com/cn .   

 

于是乎1月28号一早就赶去取 了。至此,整个 流程结束。