passthru问题

汪园园   2010-2-2 16:40 楼主
小子又迷茫了,还是描述下问题,首先在MPSENDPACKETS对发往某一地址的所有TCP包进行加密,也修改过校验和。然后在PTRECEIVE中进行反向解密,最终调用NdisMIndicateReceivePacket(pAdapt->MiniportHandle, &MyPacket, 1)将包含解密后数据的新建包MyPacket交给上层。这就是小子想实现的功能。
现在拿两台装上这个驱动的电脑测试发包和收包过程。用的网上现成TCP发包工具进行的测试。问题发现,加密和发包过程没问题,对方可以收到,同时跟踪发现对方解密函数也确实调用了,对新建包进行分析也和未加密前一样。但NdisMIndicateReceivePacket后发现测试工具显示的却是加密前的内容。
老马在吗?哪位可以给小子说说问题可能出在什么地方呢?

回复评论 (7)

帮顶下。

MARK.
点赞  2010-2-2 17:58
没看明白,你是说调用NdisMIndicateReceivePacket的时候,MyPacket的内容是解密后的吗?那这个地方应该是对了,是不?“测试工具显示的却是加密前的内容”不对吗?测试工具如果是协议层的,那它显示的包就应该是调用NdisMIndicateReceivePacket往上层传的数据包。
点赞  2010-2-3 09:10
AnalysisPacket(MyPacket, TRUE);

if (pAdapt->MiniportHandle != NULL)
{
        NDIS_SET_PACKET_STATUS(MyPacket, NDIS_STATUS_RESOURCES);
        NdisMIndicateReceivePacket(pAdapt->MiniportHandle, &MyPacket, 1);

        NdisUnchainBufferAtFront(MyPacket,&MyBuffer);
        NdisQueryBufferSafe(MyBuffer,&MyPacketContent,&BufLength,32);
        if(MyPacketContent != NULL)
                NdisFreeMemory(MyPacketContent,BufLength,0);

        NdisFreeBuffer(MyBuffer);
        NdisDprFreePacket(MyPacket);
        break;
}
AnalysisPacket之前是对包的修改过程,AnalysisPacket分析发现包的内容确实已经修改好,然后我用的winpcap-Sniffer捕获确发现显示的是修改前的内容,是选用Sniffer测试结果不对吗?
点赞  2010-2-3 12:07

这个也是我!
点赞  2010-2-3 12:14
我估计是Sniffer层次比你的程序低,它先截获的数据包,当然是修改前的了
点赞  2010-2-3 16:48
哦,能不能给推荐个协议层以上的抓包工具,再次感谢老马。
点赞  2010-2-3 19:07
这个还真不清楚,一般抓包工具都会比较底层。你可以写个socket程序来测试,这是协议层的东西,应该没问题。
点赞  2010-2-3 23:35
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复