Ethereal 自带许多协议的 decoder,简单,易用,基于winpcap的一个开源的软件.但是它的架构并不灵活,如何你要加入一个自己定义的的解码器,得去修改 Ethereal的代码,再重新编译,很烦琐.对于一般的明文 协议,没有什么问题,但是对于加密协议,比如网络游戏,客户端程序一般会在刚连接上的时候,发送一个随机密钥,而后的报文都会用这个密钥进行加密,如此. 要想破解,得要有一个可编程的抓包器.
libpcap是一个不错的选择,但是对于抓包这样需要反复进行”试 验->修改”这个过程的操作,c 语言显然不是明智的选择.
Python提供了几个libpcapbind,http://monkey.org/~dugsong/pypcap/这里有 一个最简单的。在windows平台上,你需要先安装winpcap,如果你已经安装了Ethereal非常好用
一个规范的抓包过程
import pcap
import dpkt
pc=pcap.pcap() #注,参数可为网卡名,如eth0
pc.setfilter('tcp port 80') #设置监听过滤器
for ptime,pdata in pc: #ptime为收到时间,pdata为收到数据
print ptime,pdata #...
对抓到的以太网V2数据包(raw packet)进行解包
p=dpkt.ethernet.E ......
一、python是什么?
其实,python就是一门编程语言,就像java一样。本来是在电脑上的,但是随着手机的流行,python被移植到了手机上,同时也被命名为pyS60。
二、py软件的构造
所有的py软件都要包括如下文件:.app--1.65k;.rsc--337b;.aif。这三个文件在所有py软件中都是相同的,唯一的区别就是软件的uid不同。这些文件其实就是一个py文件的壳,软件的真正起作用部分是在.py或.pyc文件里。
软件的app默认读取default.py这个文件,所有py代码可以直接写在这个文件里。也可以在default.py里写import xxx(意思就是引入xxx.py/pyc),然后把代码写在xxx.py这个文件里。如果你不想让你的代码被别人很轻易的看到,可以把xxx.py编译成pyc(软件:decompile)
三、如何运行py软件?
1. 首先要确定你的手机里安装了适合机型的python平台,建议再安装增强模块以保证能运行部分py软件。
2. py软件安装之后会在功能表里显示图标,像打开普通软件那样打开就可以了。如果软件打不开请检查是否正确安装python平台和增强模块。
3. 部分软件会显示口口,建议安装字库,因为软件开发者没有设置默认显示字体
四、如何开发py软件?
其实py软件开发是非常简单的。用文本编辑把代码写出 ......
今天看看如何用python实现抓包。
以前我们曾用过winpcap实现抓包,其实今天我们还是用它,只不过是它在python下的模块,在用之前我们必须先下载两个库,pcap库和dpkt库,这个可以在Google code里很容易找到,需要注意的是pcap只支持到python2.5 ,所以我们要用2.5来编写。
安装完两个库以后,我们就先来认识一下两个库。
首先看pcap。
我们在命令行输入:import pcap如果回车后没有出错信息,则说明我们安装成功了,然后我们利用help命令来查看一下帮助信息。
模块的说明:This module provides a high level interface to packet capture systems.All packets on the network, even those destined for other hosts, areaccessible through this mechanism.
关于它的类,这里只说下最重要的一个pcap类:
class pcap(__builtin__.object)
pcap(name=None, snaplen=65535, promisc=True, immediate=False, timeout_ms=None) -> packet capture object。Open a handle to a packet capture descriptor.
name &nb ......
#!/usr/bin/env python2
import pcap
import sys
import string
import time
import socket
import struct
protocols={socket.IPPROTO_TCP:'tcp',
socket.IPPROTO_UDP:'udp',
socket.IPPROTO_ICMP:'icmp'}
def decode_ip_packet(s):
d={}
d['version']=(ord(s[0]) & 0xf0) >> 4
d['header_len']=ord(s[0]) & 0x0f
d['tos']=ord(s[1])
d['total_len']=socket.ntohs(struct.unpack('H',s[2:4])[0])
d['id']=socket.ntohs(struct.unpack('H',s[4:6])[0])
d['flags']=(ord(s[6]) & 0xe0) >> 5
d['fragment_offset']=socket.ntohs(struct.unpack('H',s[6:8])[0] & 0x1f)
d['ttl']=ord(s[8])
d['protocol']=ord(s[9])
d['checksum']=socket.ntohs(struct.unpack('H',s[10:12])[0])
d['source_address']=pcap.ntoa(struct.unpack('i',s[12:16])[0])
d['destination_address']=pcap.ntoa(struct.unpac ......
OPENDATASOURCE 打开excel、access、qsl
use test
insert into OPENDATASOURCE('SQLOLEDB', 'Data Source=192.168.2.200;User ID=sa;Password=110').test.dbo.adf--打开远程数据库
select * from OpenRowSet('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;HDR=Yes;IMEX=1;Database=c:\2003.xls', [kg$])
--查询远程数据库
select * from OPENDATASOURCE('SQLOLEDB', 'Data Source=服务器地址;User ID=用户名;Password=密码').test.dbo.adf;
--打开sql远程数据
select * from OpenRowSet('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;HDR=Yes;IMEX=1;Database=c:\2003.xls', [表格名称$])
select * from Opendatasource('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;HDR=Yes;IMEX=1;Database=c:\2003.xls')...[表格名称$]
--开打excel
select * from
opendatasource('Microsoft.jet.oledb.4.0','data source=数据库所在位置.mdb;user id=admin;password=;')...[表格名称]
--打开access
(注:用office2007的同学 把privider改为'Microsoft.ACE.OLEDB.12.0',2007与2003的提供器是不一样的。。特别主意!!!)
......
一、ADO简介
ADO(Active Data Object,活动数据对象)实际上是一种基于COM(组件对象模型)中的自动化接口(IDispatch)技术,并以OLE DB(对象连接和镶入的数据库)为基础,经过OLE DB精心包装后的数据库访问技术,利用它可以快速的创建数据库应用程序。
ADO提供了一组非常简单,将一般通用的数据访问细节进行封装的对象。由于ODBC数据源也提供了一般的OLE DB Privider,所以ADO不仅可以应用自身的OLE DB Privider,而且还可以应用所有的ODBC驱动程序。
二、ADO数据库操作
1、首先,要用#import语句来引用支持ADO的组件类型库(*.tlb),其中类型库可以作为可执行程序(DLL、EXE等)的一部分被定位在其自身程序中的附属资源里,如:被定位在msado15.dll的附属资源中,只需要直接用#import引用它既可。可以直接在Stdafx.h文件中加入下面语句来实现:
#import "c:program filescommon filessystemadomsado15.dll"
no_namespace
rename ("EOF", "adoEOF")
其中路径名可以根据自己系统安装的ADO支持文件的路径来自行设定。当编译器遇到#import语句时,它会为引用组件类型库中的接口生成包装类,#import语句实际上相当 ......