www.pudn.com > ipman.zip > README, change:1998-04-08,size:5046b


IPMan Version:0.5b 
 
作者:HiHint		Email:HiHint@hotmail.com 
 
公开这个程序是出于教育的目的。程序的一些功能是危险的。因此,在没有许可的 
情况下不要随意使用。程序的作者对随意使用造成的后果不负责任。 
欢迎非商业性的使用,传播本程序。任何对本程序的传播必须包含本说明文件。 
程序的源代码是公开的,可以被随意修改。程序作者对此不负责任。 
 
一、简介 
    IPMan运行于Win95环境下的DOS命令行程序。主要功能是对以太网卡的直接读写。 
它是通过vpacket.vxd来完成上述工作的。vpacket.vxd可以在如下的地址下载: 
	http://willow.canberra.edu.au/~chrisc/nat32.html#Other 
也可以使用随本程序附带的vapcket.vxd。vpacket.vxd是不需要安装的。因此,IPMan 
也不需安装。 
    编译IPMan需要VC4.0或更高的版本。 
 
二、功能 
    当前版本的IPMan具有以下功能: 
    1.查询本机的以太网地址。 
    2.查询子网上任何机器的以太网址。 
    3.查询以太网址对应的IP地址。(未测试) 
    4.监听子网上流过的以太网包。	 
    5.发送ARP报文。 
    6.建立TCP连接,发送接收TCP报文。 
    利用最后两个功能,可以伪装成子网上的任何一台机器。当然,我只对伪装成受信 
主机感兴趣。 
 
三、文件 
    IPMan.c	源代码 
    IP.h	各种包头定义 
    IPMan.exe	可直接运行。只要当前目录下存在vpacket.vxd 
    IPMan.ini	IPMan运行所需的初始参数。 
    vpacket.vxd 
    vpacket.exe	vpacket.vxd编程环境。自解压文件。使用方法见展开后的vpacket.doc 
		文件(Word 97)。 
    README 
 
四、初始参数 
    IPMan运行所需的初始参数都存放在文件IPMan.ini中。在IPMan运行前,有两个参数是 
必须重新设定的:本机的IP地址和NDIS设备名。有关NDIS请参考: 
	http://www.microsoft.com/ddk 
NDIS设备名一般是0000、0001等等。在Win95注册表的如下位置: 
	HKEY_LOCAL_MACHINE/System/CurrentControlSet/control/net/0000 
    IPMan.ini的格式类似于其它Windows应用的INI文件。有一点要注意的是,两个定义的 
段中间必需用一个空行分隔。由"#"开始的行是注释行。以下是一个IPMan.ini样板。 
"//"后是作者加入的注释,真正的文件中是没有的。 
 
--------------cut here-------------- 
#Every segment should be seperated by blank line 
#My IP address  
[IpAddr]			// 本机的IP地址 
xxx.xxx.xxx.1 
 
#NDIS driver name 
[NDIS]				// NDIS设备名 
0000 
 
#Max data length 
[MaxDataLen]			// 输出时最多输出的字节数,详见输出一节 
4096 
 
#IP table to query 
[QueryIP]			// IP地址列表,表示想要监听主机的IP地址 
xxx.xxx.xxx.2 
xxx.xxx.xxx.3 
 
#Port table to query		// 端口列表,表示想要监听主机的端口(TCP/UDP) 
[QueryPort] 
21 
23 
80 
 
#Time out			// 超时(未提供) 
[TimeOut] 
12345 
--------------cut here-------------- 
 
五、命令行参数 
    IPMan的命令行参数如下: 
	无参数	显示本机以太网址 
	[-?]	显示帮助信息 
	[-l[ini] [-ip:sour_ip[:dest_ip]] [-port:sour_port[:dest_port]]] 
		-l	监听所有信息 
		-lini	监听信息有IPMan.ini的QueryIP和QueryPort过滤 
		-ip:sour_ip	过滤掉所有与sour_ip无关的IP包 
				sour_ip的格式为xxx.xxx.xxx.xxx 
		-ip:sour_ip:dest_ip	过滤掉非sour_ip与dest_ip之间通讯的 
					IP包 
		-port:sour_port	过滤掉所有与sour_port无关的IP包 
		-port:sour_port:dest_port	过滤掉非sour_port和						dest_ip间通讯的IP包 
	[qeth:ip_addr] 	查询ip_addr对应的以太网址 
	[-qip:eth_addr]	查询eth_addr对应的IP地址,以太网址的格式为 
			xx.xx.xx.xx.xx.xx(16进制) 
	[-fout:output_file]	输出文件 
	[-fcmd:command_file]	命令文件,用于发送ARP包、建立TCP连接等 
				详见命令文件一节 
 
六、命令文件 
    IPMan的命令文件用于发送ARP包、建立TCP连接和接收、发送TCP报文。其格式为: 
	命令名 命令参数1 命令参数2 命令参数3 ... 
    现在支持的命令有: 
	SENDARP my_eth targ_eth sour_eth sour_ip dest_eth dest_ip operation 
		发送ARP报文。关于ARP报文,请参考TCP/IP协议。 
	CONNECT my_eth targ_eth sour_ip dest_ip sour_port dest_port tcpid 
		建立从sour_ip的端口sour_port到dest_ip的dest_port端口的TCP 
		连接。用tcpid作为标识。这个标识将用于下列命令。要注意的是 
		my_eth(我的以太网址)和targ_eth(目的以太网址)一定要填写。 
	SENDTCP	tcpid tcpmessage 
		发送TCP报文。将tcpmessage发送到tcpid指定的连接。tcpmessage 
		为一个不含空格的字串。空格或不可显示字符以\xxx表示。xxx为 
		三位十进制数。 
	RECVTCP tcpid 
		接收由tcpid指定的TCP报文。 
	CLOSE tcpid 
		关闭由tcpid指定的TCP连接。 
    以下是一个命令文件的样板。以"#"开始的行是注释行。 
 
--------------cut here-------------- 
# A sample comment line 
SENDARP xx.xx.xx.xx.xx.xx xx.xx.xx.xx.xx.xx xx.xx.xx.xx.xx.xx xxx.xxx.xxx.xxx 
xx.xx.xx.xx.xx.xx xxx.xxx.xxx.xxx 2 
CONNECT xx.xx.xx.xx.xx.xx xx.xx.xx.xx.xx.xx xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx 
1026 21 1 
RECVTCP 1 
SENDTCP 1 USER\032stu2\013\010 
RECVTCP 1 
SENDTCP 1 PASS\032abc\013\010 
RECVTCP 1 
SENDTCP 1 BYE\013\010 
RECVTCP 1 
CLOSE 1 
--------------cut here-------------- 
 
七、输出 
    错误输出到屏幕。标准输出可以可以是屏幕或由命令行指定。输出格式为: 
	xxx.xxx.xxx.xxx -> xxx.xxx.xxx.xxx 	// 源和目的IP地址 
	xx Byte(s) TCP/UDP/ARP/ICMP Message:message_string 
其中message_string的格式和上节的tcpmessage相同。xx Byte(s)表示实际收到的字节 
数。真正输出的字节数由INI文件指定。 
 
八、将来 
    今后的版本将提供的功能包括建立伪UDP连接,发送和接收UDP报文,发送和接收 
ICMP报文等。 
 
九、感谢 
    在本程序和本文档的写作过程中,得到了Thomas F. Divine,Christopher Chlap和yuhj的 
帮助,再此表示感谢 。 
 
有什么意见或建议,欢迎和我联系。Email:HiHint@hotmail.com 
 
HiHint Apr. 8, 1998