分享

用tcpdump备份出来的dump文件如何导入mysql中?

 看风景D人 2014-02-20
--------------------------------

用ethereal看,真的好有用的工具~~
 
我自个还是要写程序的,统计一些信息,用ethereal看数据包就有真实实验数据了,谢谢


 

你根本不能直接倒到MYSQL中,格式都不一样!

去网上下个UTRLEDIT或者其它二进制查看工具,然后按下面的方法看:

ZT:

Tcpdump文件格式:首先我们看到的是最外面的一张包装纸:tcpdump的文件格式。它的格式是这样的(详细的描述可以参考:libpcap-format的资料):文件头 | 数据包头 | 链路层数据 | 数据包头 |链路层数据| ....首先,每个文件以一个24字节长的文件头开头,我们需要知道的是最前面的四个字节是:A1 B2 C3 D4,如果不是这个标识,那么就不是tcpdump生成的数据文件(如果是PC上的windump生成的文件,那么则是D4 C3 B2 A1,以表明PC上的endian不同,我们这里不用关心这个区别)。跳过这24个字节,下面就是以“数据包头|链路层数据”为一组的这样一组组的数据。数据包头不是网络上真正传输的数据,它包含的信息主要是截获这个包的时间等信息。它的长度16个字节。我们关心的是第8-11和9-15字节(我们按编程的习惯,把第一个字节称为第0字节,下同)。前者表明后面的链路层数据包在文件里面的长度,后者表明它的实际长度。两者可能不同是因为可能存在截断的情况。由于我们使用了-s 0参数,所以他们应该是相同的。从数据包头结束,到长度指明的字节数为止,是实际在网络中传输的链路层数据包。然后,就是下一个数据包头。这样,我们就可以逐个把tcpdump文件的封装去掉,获得一个一个实际在网络中传输的数据包了。例如,我们忽略文件头,从第24字节开始的3F 44 32 28 ...就是数据包,数据包的第8-11字节:00 00 00 96就是这个后面数据链路层数据包的长度。也就是说,从40字节开始00 06 25 60...的150(0x96的转换成10进制)个字节就是实际网络传输的链路层数据包。然后,我们在第190(40+150)字节的位置又看到了3F 44 32 29...的下一个数据包头。我们这样就获得了一个个的链路层数据包。我们上面例子中的第一个是:
0000: 00 06 25 60 F4 C0 00 03
0008: 93 A7 09 38 08 00 45 00
0016: 00 88 8E 53 00 00 80 11
0024: 9D 9D C0 A8 01 66 CA 68
0032: 81 FD C2 34 1F 40 00 74
0040: C3 AD 02 08 16 00 22 00
0048: 10 01 82 5D 90 6F 30 FD
0056: 96 3B B1 0F E5 FF 8E 3E
0064: 4B 38 E2 86 E1 8A F7 C8
0072: CA B2 01 76 B6 ED 9E 2B
0080: 97 FD B9 7F 23 B2 09 02
0088: 71 22 94 E3 4B E8 E2 8F
0096: FD FF 02 87 83 0B 32 57
0104: 73 91 7F EF 7B 7A 60 CB
0112: 44 A4 B5 CA 13 19 F6 CE
0120: D5 EC 2F D5 8A 88 22 48
0128: 14 4E 44 08 18 37 9D 8D
0136: AA 42 9C 88 A4 AB 44 0D
0144: 4B 23 74 AC ED 03
链路层数据包:下面我们要撕去链路层数据包这个第二层包装纸。链路层数据包格式是和传输的方式有关的:如果我们是在局域网里面共享上网,那么一般是用称为RFC894以太网协议,少数情况下也会是RFC 1042的802.3协议。如果你用Modem拨号上网,那么可能会是RFC 1055的SLIP协议,如果是用ADSL,那么将会是RFC 1548的PPP协议。链路层数据对我们来说意义不大,我们要做的是剥去这层包装纸而已。
RFC894/RFC1042/RFC 1548:这三种协议的形式都是:
包头|IP数据包|(包尾)对RFC894,包头是14字节;RFC1042,包头是22字节;RFC 1548,包头是5个字节。我们跨过这些字节,就是IP包的数据了。包尾如何并不要紧,因为IP包的内容本身会告诉我们它的长度。在上面的链路层数据包中,我们跳过14个字节,第14字节以45 00 00 88开始的就是IP包的数据。其它的协议也可以这样处理。RFC 1055:IP数据包被封装在一对的0xc0字符中间。但是,由于数据包中间就不能有0xc0字符,所以原来的0xc0字符被其它代替了,我们要把它还原。方法是搜索这个数据包,把0xdb 0xdc转换为0xc0;0xdb 0xdd转换为0xdb。比较麻烦,所以,最后不要使用它来截取数据。IP包的第2-3字节是它的长度,上面我们看到的第14字节开始的IP包,它的长度就是00 88。也就是136个字节。所以,从14字节开始的136个字节就是IP数据包。这样,我们就剥去了链路层的包装纸,获取了IP包。我们上面的例子的第一个IP包是:0000: 45 00 00 88 8E 53 00 00
0008: 80 11 9D 9D C0 A8 01 66
0016: CA 68 81 FD C2 34 1F 40
0024: 00 74 C3 AD 02 08 16 00
0032: 22 00 10 01 82 5D 90 6F
0040: 30 FD 96 3B B1 0F E5 FF
0048: 8E 3E 4B 38 E2 86 E1 8A
0056: F7 C8 CA B2 01 76 B6 ED
0064: 9E 2B 97 FD B9 7F 23 B2
0072: 09 02 71 22 94 E3 4B E8
0080: E2 8F FD FF 02 87 83 0B
0088: 32 57 73 91 7F EF 7B 7A
0096: 60 CB 44 A4 B5 CA 13 19
0104: F6 CE D5 EC 2F D5 8A 88
0112: 22 48 14 4E 44 08 18 37
0120: 9D 8D AA 42 9C 88 A4 AB
0128: 44 0D 4B 23 74 AC ED 03

---------------------------------------------


 

IP包
IP包是网络上传送的与传输线路无关的数据包,也是我们开始需要真正关心的数据。IP包的格式是:IP包头|IP包数据(我们这里就是UDP数据包)IP包头,除了我们刚才说的包长度(第2-3字节)以外,还有几个重要的信息是我们所需要关心的:第12-15和第16-19分别为源和目的IP地址。它用四个字节来代表一个IP地址,把每个字节转换成十进制,就是我们熟悉的IP地址。比如,上面的源IP地址:C0 A8 01 66就是192.168.1.102,这是我局域网的IP地址,所以,这是一个从我的机器上发出的包。目的地址是CA 68 81 FD就是202.104.129.253。从后面我们对QQ数据包的了解我们知道这是一个发往服务器的包,所以我们就获得了一个QQ服务器的IP地址。(注意,并不是全部发出的包都是发往服务器的!)如果,找到一个原来不知道的服务器,那么是一个很重要的发现。
第0个字节,高4位为IP的版本号,低四位为IP包头的长度。比如说,我们上面的数据包第一个字节为45,它的高4位为4,表明它是我们通常所说的IPv4协议,低四位为5,表明IP包头的长度为5X4=20字节(头的长度是以四字节为单位的)。这样表明从第20字节开始就是IP包的数据部分,也就是UDP包的内容了。这样我们可以剥离出UDP包:0000: C2 34 1F 40 00 74 C3 AD
0008: 02 08 16 00 22 00 10 01
0016: 82 5D 90 6F 30 FD 96 3B
0024: B1 0F E5 FF 8E 3E 4B 38
0032: E2 86 E1 8A F7 C8 CA B2
0040: 01 76 B6 ED 9E 2B 97 FD
0048: B9 7F 23 B2 09 02 71 22
0056: 94 E3 4B E8 E2 8F FD FF
0064: 02 87 83 0B 32 57 73 91
0072: 7F EF 7B 7A 60 CB 44 A4
0080: B5 CA 13 19 F6 CE D5 EC
0088: 2F D5 8A 88 22 48 14 4E
0096: 44 08 18 37 9D 8D AA 42
0104: 9C 88 A4 AB 44 0D 4B 23
0112: 74 AC ED 03
UDP包
UDP包是多数即时通讯软件采用的协议。它的格式是:UDP包头|UDP包数据(这里就是腾讯QQ协议包)UDP包头是固定8个字节。第0-1字节是源端口号,第2-3是目的端口号。一般,我们客户端的端口号可以随便选取(有资料说是4000,但是实际发现,新版的QQ已经是随便选取,没有限制了)。从上面的UDP包,我们从以前IP包的信息知道是我们发送出去数据包,所以目的端口号就是服务器所使用的端口号。这里是1F 40,也就是8000号端口,目前还没有发现使用其他端口的,所以,如果发现有服务器使用其他端口,也将是一个很重要的信息。第4-5字节是UDP包的长度,这不是很重要,但是也可以用它来检验一下我们的剥离过程有没有错误。我们去除掉头8个字节,剩下的就是QQ协议包了:0000: 02 08 16 00 22 00 10 01
0008: 82 5D 90 6F 30 FD 96 3B
0016: B1 0F E5 FF 8E 3E 4B 38
0024: E2 86 E1 8A F7 C8 CA B2
0032: 01 76 B6 ED 9E 2B 97 FD
0040: B9 7F 23 B2 09 02 71 22
0048: 94 E3 4B E8 E2 8F FD FF
0056: 02 87 83 0B 32 57 73 91
0064: 7F EF 7B 7A 60 CB 44 A4
0072: B5 CA 13 19 F6 CE D5 EC
0080: 2F D5 8A 88 22 48 14 4E
0088: 44 08 18 37 9D 8D AA 42
0096: 9C 88 A4 AB 44 0D 4B 23
0104: 74 AC ED 03

--------------------------------

 

我用UTRLEDIT工具打开了是这些代码
"C0 A8 01 66就是192.168.1.102,这是我局域网的IP地址,所以,这是一个从我的机器上发出的包。目的地址是CA 68 81 FD就是202.104.129.253。"

可是这样要源地址,目的地址,源端口,目的端口,时间戳,这几个参量岂不是很费劲啊
麻烦一下netsys2(来电!)我就是想根据上面的dump文件统计信息
比如:
2005.06.08 00:00:00 源地址1,目的地址1,源端口1,目的端口1
2005.06.08 00:00:02 源地址2,目的地址2,源端口2,目的端口2
--------------------------------------------

ethereal看
www.

--------------------

------>正是你作为程序员大显身手的地方了,自己编程,fopen读取文件中参数信息,然后用SQL语句insert写到数据库中。。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多