请各位一定帮我以把!!(底层抓的以太网包分析)

left8200 2003-05-20 10:59:16
我用packet32包在链路层抓得以太网包:
在底层抓的以太网包(经分析是ip包),
且有端口号(21)的是ftp数据。
tcp包头如下定义:
typedef struct _tcphdr //定义TCP首部
{
USHORT th_sport; //16位源端口
USHORT th_dport; //16位目的端口
unsigned int th_seq; //32位序列号
unsigned int th_ack; //32位确认号
unsigned char th_lenres; //4位首部长度/6位保留字
unsigned char th_flag; //6位标志位
USHORT th_win; //16位窗口大小
USHORT th_sum; //16位校验和
USHORT th_urp; //16位紧急数据偏移量
}TCPHDR, *PTCPHDR;
最后去掉:以太网头部,ip头部,tcp头部。得数据区buf.
(应用层ftp数据)
****
1.请问怎样从buf中分离出ftp命令?(即buf中数据格式)
(比如说是:list,quit还是别的命令)
2.此做法是否可行??
(我看完telnet,ftp协议后还是不明白怎么解包)
请各位高人一定帮小第一把.
THANK YOU VERY MUCH!!
THANK YOU VERY MUCH!!
非常感谢!!!!!!!!!!!!!
...全文
37 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
ckacka 2003-05-23
to realdreamer(楼主英明,贫僧久仰大名,特来拜见):
telnet, finger whois也都是用的nvt ascii,按照你的逻辑,岂不是都是不可行的了??好笑!!!!
回复
ckacka 2003-05-22
你自己试验一下就全明白了

ABOR
LIST
PORT
QUIT

等等,呵呵,一下子还都想不起来还有哪些了
回复
spark_li 2003-05-22
对于ftp的tcp包,很容易就解出来的,因为一切都是明文,下面是我简单的解包得到的,
对应的执行是ftp
open ftphost
ftp
id@ad.or
dir
但是数据传给server的时候,ftp软件把我们的命令整和了一下,
比如边成了user ftp
pass id@ad.or
list
这个你就需要看ftp命令集变换了,


220 Serv-U FTP Server v4.0 for WinSock ready...

USER ftp

331 User name okay, please send complete E-mail address as password.

PASS id@ad.or

230 User logged in, proceed.

PORT 210,28,177,200,5,98

200 PORT Command successful.

LIST

150 Opening ASCII mode data connection for /bin/ls.

drw-rw-rw- 1 user group 0 Dec 8 2001 .

drw-rw-rw- 1 user group 0 Dec 8 2001 ..

dr--r--r-- 1 user group 0 May 15 2002 JAVA

dr--r--r-- 1 user group 0 Dec 14 2001 linux

drw-rw-rw- 1 user group 0 Dec 8 2001 lotus

-rw-rw-rw- 1 user group 87 Apr 22 22:45 win2003sn.txt

drw-rw-rw- 1 user group 0 May 13 2002 win2kadvserver

-rw-rw-rw- 1 user group 763585 May 9 20:25 zmud.exe

drw-rw-rw- 1 user group 0 Jan 18 2002 办公系统

drw-rw-rw- 1 user group 0 Dec 8 2001 操作系统

drw-rw-rw- 1 user group 0 Nov 8 2002 测试软件

drw-rw-rw- 1 user group 0 Dec 10 2001 常用工具

drw-rw-rw- 1 user group 0 Dec 8 2001 电子商务

drw-rw-rw- 1 user group 0 Aug 21 2002 电子书籍

drw-rw-rw- 1 user group 0 Dec 21 17:25 工作文件

drw-rw-rw- 1 user group 0 Dec 14 2001 开发工具

drw-rw-rw- 1 user group 0 Aug 22 2002 课程课件

drw-rw-rw- 1 user group 0 Jan 16 2002 课件制作

drw-rw-rw- 1 user group 0 Dec 8 2001 媒体播放

drw-rw-rw- 1 user group 0 Dec 8 2001 杀毒软件

drw-rw-rw- 1 user group 0 May 15 2002 上传目录

drw-rw-rw- 1 user group 0 Dec 8 2001 实用软件

drw-rw-rw- 1 user group 0 Dec 8 2001 数据仓库


至于代码很简单,你知道对于长度大于40字节的包进行数据分析(IP_HEADER+TCP_HEADER=40)
就可以了,直接printf("%s",tcpdata)就行了
回复
realdreamer 2003-05-22
我用ftp下载一个 <<smtp 命令简介>> 的文本文件, 里面有 一大堆命令, 依楼上一系列所讲岂不是要把这个东西当成smtp会话中的消息了?

http也传输文本的哦, 是不是也有可能. 楼主好好考虑一下先.
回复
left8200 2003-05-21
请问:
设:buf是char * 类型。
在buf中是否遇到\r或\n之前就是命令了??
THANK YOU VERY MUCH!!
非常感谢!!!!!!!!
回复
ckacka 2003-05-21
ftp的命令的编码是NVT ASCII,每行结尾都有返回CR、LF对 - "\r\n"(CR - 换行、LF - 回车)

回复
realdreamer 2003-05-21

协议分析你要有个概念, 协议是分层的. 你拿到的心太网包是最底层的.你要从中先分析出 ip 层, 再分析出 tcp 或是 udp , 在 tcp 层上再分析是http,是ftp,是smtp.

回复
cnss 2003-05-20
TCP包可不好解,不如试试监听IE的数据传输
回复
相关推荐
发帖
工具平台和程序库
创建于2007-09-28

2.4w+

社区成员

C/C++ 工具平台和程序库
申请成为版主
帖子事件
创建了帖子
2003-05-20 10:59
社区公告
暂无公告