qishi1997
驱动牛犊
驱动牛犊
  • 注册日期2003-03-20
  • 最后登录2007-09-09
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
阅读:1684回复:11

自己做了校验和以后怎么兰屏???

楼主#
更多 发布于:2003-05-23 00:03
 iphead=(PIP_HEADER)(PktBuffer+14);
//这个地方为自己分配的buffer应该可以操作
 my_checksum=CheckSum((USHORT*)iphead,20);
 iphead->HeaderCRC=my_checksum

请大虾们指点

最新喜欢:

baoyibao99baoyib...
fuq_dddd
驱动老牛
驱动老牛
  • 注册日期2002-10-15
  • 最后登录2009-10-09
  • 粉丝0
  • 关注0
  • 积分331分
  • 威望57点
  • 贡献值0点
  • 好评度28点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-05-23 01:09
校验和有多个,不同的包计算方法不同
看以前有关nat的帖子
星星之火 可以燎原 每一个光亮 都可能是黎明 [img]http://joke.tom.com/img/assets/1/gaoxiao_80_910.gif[/img]
qishi1997
驱动牛犊
驱动牛犊
  • 注册日期2003-03-20
  • 最后登录2007-09-09
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-05-23 03:29
我这里做的是ip包的,ip校验和
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-05-23 09:10
是你做的操作有问题,是不是在原先的buffer上修改的?
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
fuq_dddd
驱动老牛
驱动老牛
  • 注册日期2002-10-15
  • 最后登录2009-10-09
  • 粉丝0
  • 关注0
  • 积分331分
  • 威望57点
  • 贡献值0点
  • 好评度28点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-05-23 10:00
是你做的操作有问题,是不是在原先的buffer上修改的?
这个地方不是很明白,原先的buffer为什么不能改?
星星之火 可以燎原 每一个光亮 都可能是黎明 [img]http://joke.tom.com/img/assets/1/gaoxiao_80_910.gif[/img]
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-05-23 10:37
对于传进来的那个buffer,只有只读的权限,修改就会有问题了
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
qishi1997
驱动牛犊
驱动牛犊
  • 注册日期2003-03-20
  • 最后登录2007-09-09
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-05-23 11:57
那个buffer使我自己分配的

兰屏的问题同样出现在我对buffer(自己分配)进行加密操作上

我的机器装不上softice怎么办?
qishi1997
驱动牛犊
驱动牛犊
  • 注册日期2003-03-20
  • 最后登录2007-09-09
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-05-23 12:17
我加密的流程:
//分配缓冲用于存放从Packet buffer 中拷贝的数据
  NdisAllocateBuffer(&Status,&PktBuffer ,pAdapt->SendBufferPoolHandle,MemoryVA,TotalPacketLength);
//分配用于存储加密后的数据
 NdisAllocateBuffer(&Status,&PktBuffer_out ,pAdapt->SendBufferPoolHandle,MemoryVA,TotalPacketLength);
//Chain到MyPacket上
NdisChainBufferAtBack(MyPacket,PktBuffer_out);
//释放PktBuffer
NdisFreeBuffer(PktBuffer);
bingjie
驱动小牛
驱动小牛
  • 注册日期2001-08-15
  • 最后登录2007-11-29
  • 粉丝0
  • 关注0
  • 积分36分
  • 威望5点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-05-23 12:23
把你的checksum函数贴出来看看,可能你那函数有问题
qishi1997
驱动牛犊
驱动牛犊
  • 注册日期2003-03-20
  • 最后登录2007-09-09
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-05-23 14:16
这是我的校验和计算函数:
USHORT CheckSum(USHORT *addr,USHORT len)
{
       USHORT nleft = len;
       ULONG  sum = 0;
       USHORT answer = 0;
        //把check报头二进制数据以2字节为单位累加起来
       while(nleft > 1)
       {       sum += *addr++;
               nleft -= 2;
       }
       //若check报头为奇数个字节,会剩下最后一字节。把最后一个字节
    //视为一个2字节数据的高字节,这个2字节数据的低字节为0,继续累加
       if( nleft == 1)
       {
      *(UCHAR *)(&answer)=*(UCHAR *)addr;
      answer = answer & 0xff00;                
      sum += answer;
       }
       sum = (sum>>16) + (sum&0xffff);
       sum += (sum>>16);
       answer = (USHORT) ~sum;      
       DBGPRINT(\"校验和是新的\\n\");
       return answer;
}
下面是调用:
            iphead=(PIP_HEADER)(PktBuffer+14);
            my_checksum=CheckSum((USHORT*)iphead,20);
            iphead->HeaderCRC=my_checksum;//新家
            DBGPRINT(\"校验和是新的,已经替换\\n\");

另外:对于
函数NdisAllocateMemory(&MemoryVA,2000,0,HighestAcceptableAddress)
HighestAcceptableAddress怎么设置

我在加密模块中用该函数重新又分配一段内存,怎么分配不了?谢谢大虾

[编辑 -  5/23/03 by  qishi1997]

[编辑 -  5/23/03 by  qishi1997]
Quakexg
驱动小牛
驱动小牛
  • 注册日期2001-11-21
  • 最后登录2012-02-29
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望56点
  • 贡献值0点
  • 好评度18点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-05-23 15:04
蓝屏不知道,但是,你算的CHCKSUM不对,先要把原CHECKSUM置为0,再算!
qishi1997
驱动牛犊
驱动牛犊
  • 注册日期2003-03-20
  • 最后登录2007-09-09
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-05-23 16:19
是不是?
iphead=(PIP_HEADER)(PktBuffer+14);
iphead->HeaderCRC=0;
my_checksum=CheckSum((USHORT*)iphead,20);
iphead->HeaderCRC=my_checksum;
游客

返回顶部