[Violent Python for Hackers]常用工具收集整理

475 查看

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"