netmon中解析非1433端口的TDS协议
参考文献:
正文
如果你使用netmon3.4抓sql server网络包的话,在协议中你会发现有各种类型的协议,常见的由TCP/TDS/TLS等。如下图所示:
但是,之所以我们能够抓到TDS协议,是因为我们连接的是默认实例,其端口号是1433。如果我们连接的是命名实例,端口号不再是1433了,那么我们就抓不到TDS协议了,如下图所示:
在上图中我们已经找不到prelogin,response,recrequest等关键字了,多了许多Flag=...AP...,我自己抓到的网络包如下图所示:
为了能够让netmon解析命名实例的TDS网络包,我们需要对netmon进行一些修改。我们需要修改tcp.npl这个Praser,如下图所示:
找到tcp.npl以后,打开这个文件,在里面搜索1433,然后在case 1433之前添加命名实例的tcp端口号,如下图所示:
修改完以后点击保存,但是可能会出现如下错误:
这是因为tcp.npl这个文件是只读的,我们需要在磁盘中找到这个文件,去掉该文件的只读属性即可,这个文件的路径是:C:\ProgramData\Microsoft\Network Monitor 3\NPL\NetworkMonitor Parsers\Base。在这个目录下找到tcp.npl,在属性中去掉只读属性,然后我们再次保存tcp.npl文件,此时保存成功。点击“rebuild prasers”,最后重启netmon,否则修改不生效。
此时我们再次去抓sql server的网络包,我们就会发现能够解析TDS协议了,如下图所示:
我抓到的网络包如下图所示:
再说一句题外话,上面我们可以看到使用的是NTLM验证模式,而不是使用kerberos,这是因为我的sql server2012没有注册spn的缘故。