0:常用工具
#后面的三个工具无法安装,原因目前不知,后面用来时再寻找解决方法
pip install python-nmap python-bluez bluetooth python obexftp
#pycrypto是一个非常强大的加密解密module,对于信息的加密和破解是需要经常用到的
pip install pycrypto #在windows下,安装报错后,需要安装一个VCForPython27.msi的软件即可,详细看安装的报错信息
#在windows下import crypt,发现找不到此module,发现只在linux系统下Python才自带有此模块
crypt.crypt(word, salt) #这个module只有这一个函数
1:Python基础
#导入自己写的module
import sys
sys.path.append("C:/pyqt/chap02") #把我们写的module路径添加到了path路径,这里我们就可以import自己写的module了
#data type
port=23
banner="hello hacker"
type(port)
type(banner)
banner.upper()
banner.lower()
banner.replace("old","new")
banner.find("hacker")
#list
portlist=[]
portlist.append(22)
portlist.append(80)
print portlist
portlist.sort() #对portlist进行排序
pos=portlist.index(80)
portlist.remove(443)
print portlist
cnt=len(portlist)
#dictionary
services={"ftp":21,"ssh":22,"smtp":25,"http":80}
services.keys() # return list
services.items() #change to tuple couple
services.has_key("ftp") #true or false
services["ftp"] # return value
2:Networking部分
import socket
socket.setdefaulttimeout(2) #2秒时长没有收到想要的数据长度,就返回了socket.timeout 异常
s=socket.socket() #创建一个socket对象
s.connect(("8.8.8.8",21))
ans=s.recv(1024) #从服务器接收 1024个数据 ,如果在2秒内,没有接收完,就会返回 socket.timeo9ut异常
3: Python简单异常处理
try:
3/0
except:
print "3/0 is illegal"
#下面是除0后,得到的ZeroDivisionError
>>> 3/0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
#异常处理可以保证,程序出错后,自动处理错误,程序可以接着运行下
#没有异常处理,程序会由于这些异常直接退出
#查看异常类型:
try:
15/0
except Exception, e:
print "Error"+str(e)
#socket中使用异常处理
import socket
socket.setdefaulttimeout(2)
s=socket.socket()
try:
s.connect(("8.8.8.8",21)) # 成功后,不会运行except部分
except Exception,e:
print "error"+str(e) # connect失败后,会运行这部分代码
4:函数的使用
import socket
def abc(arg1,arg2):
try:
socket.setdefaulttimeout(2)
xxx
return
except:
return
def main():
xxx
if __name__=="__main__":
main()
5:IP,Port的扫描
portList=[21,22,25,80,110]
for x in range (1,255):
for port in portList:
print "Checkingt 192.168.1"+str(x)+":"+str(port)
#文件的行读取
f=open("hello.txt","r")
for line in f.readlines():
if line.strip("\n") in banner: #从文件中读取到的行内容是否有用
print "xxxx"
6:sys,os,系统模块
import sys
if len(sys.argv)==2:
filename=sys.argv[1]
print "filename"+filename
import os
if not os.path.isfile(filename)
pirnt filename+" does not exist"
return
if not os.access(filename,os.R_OK): #chmod 000 a.txt 后,就无法access
print filename+" access denied"
return
7:运行时决定是否生成函数
import sys
if sys.version_info[:2] <(2,4): #小于2.4的版本没有sorted这个函数,那么我们自己写一个,用自己的
def sorted(items):
xxx
xxx
return items
8:Python异常处理
#运行过程:
#先try,输出 hello ahc,然后运行3/0后报错
#接下来进行except,输出except happened
#接下来程序接着往下走(不会执行else)
for i in dir(a):
try:
print "hello ahc"
3/0
except:
print "except happened"
else:
print "run without except"
\
#运行过程:
#输出hello ahc,由于没有异常,所以会运行else,输出run always
try:
print "hello ahc"
except:
print "except happened"
else:
print "run without except"
# 下面是一个标准的异常处理过程
try:
process()
except IndexError, e:
print "Error: %s" % e
except LookupError, e:
print "Error: %s" % e
9:根据不同的操作系统,选择采用不同的文件路径表达形式(实用)
import platform
os_type=platform.platform().lower()
if "windows" in os_type:
fontfile=r"C:\Windows\Fonts\timesi.ttf"
else:
fontfile="/usr/share/fonts/truetype/msttcorefonts/Times_New_Roman_Italic.ttf"