阅读:2593回复:7
ndis 加解密
大家好!我现在基于passthru做了一个NDIS的加解密程序,现在的问题是解密数据能够成功,但是貌似解密之后的数据没有提交上去,因为我从一端ping另外一端的时候,在另外一端NDIS中间层打印了解密后的数据完全是正确的,但是另外一端并没有回应一个ICMP包,所以我猜想是解密后的数据包没有正确的提交到上层。
我简单的介绍一下我加解密的实现:首先是在加密端用ESP算法加密传输层之后(包括传输层头)的数据,因为AES加密算法需要数据时16的倍数,所以还有相应的填充数据,所以加密后数据的总长度会变长。然后在接受端用AES算法进行解密数据,解密后数据的长度还原到原来的长度。由于数据的加解密在数据是一片完整的存储区时才比较好计算,所以我在接受函数和发送函数都是分配自己的buffer描述符和buffer。 烦请各位大牛帮帮忙啊! 这个问题困扰我一个月了! |
|
沙发#
发布于:2011-05-30 13:14
抓一下包,看看包是否正确,别网络校验之计算问题
|
|
|
板凳#
发布于:2011-05-30 16:41
抓到的报是加密的数据!(因为抓包是从网卡拷贝一个包过来,我还没有解密的数据),对于校验和的问题我觉得应该没有什么问题,因为我解密后的数据完全就是发送端要发送的数据(未加密之前的数据),一模一样的!
|
|
地板#
发布于:2011-05-31 14:00
你修改了包数据后,就要重新计算校验和的.看这块计算对不对
|
|
|
地下室#
发布于:2011-06-01 10:45
看一下在不装驱动时候能不能ping通,很多防火墙是拦截ICMP的。如果能的话,就是没有提交上去啦。
|
|
|
5楼#
发布于:2011-06-01 19:49
首先,在没有装加解密模块的时候是能够ping通的!至于上面那位大哥说的检验和问题,我后来重新计算了校验和,还是提交不上去。不知道怎么回事?我该怎么办呢?
|
|
6楼#
发布于:2011-06-03 02:16
不加密驱动和加密驱动尝试下 不加密驱动如果ping通 说明是加密出的错 若ping不通 驱动哪里出错
|
|
7楼#
发布于:2011-06-03 15:05
现在的情况又变了,能提交上去,但是提交的貌似是加密的包,但是我用debug调试了一下,它确实进入了我的解密代码,而且数据也改变了,重新分配了一个packet描述符和buffer描述符,还有一个buffer数据区,buffer数据区是解密之后的数据,把它们关联起来在提交上去,提交的明明是mypacket,但是上层接受到的貌似是加密后的数据!
|
|