阅读:1464回复:8
问个很弱的问题......别嘲笑偶哈...;)
在NDIS驱动层怎么组织并发送一个数据包啊?
我想抓住本机发送的某个IP包,将它整个封装为新的IP包,转发到一台服务器上。好象有点类似于VPN啥的。 在应用层俺知道用socket(),send()等函数来制作和发送数据包,可是在驱动层俺不会。55555555555 |
|
最新喜欢:baoyib...
|
沙发#
发布于:2003-07-11 18:46
不就是NAT吗
在ptrecieve和ptreciepacket中,重新组报, 在ptsendcomplete中释放 [编辑 - 7/11/03 by antspower] |
|
|
板凳#
发布于:2003-07-11 18:53
不就是NAT吗 俺不会组包。:( 谁给段源代码看看啊? 俺能拦截包,并且把包分析出来的。只是不知道包头都应该包括哪些东西,有啥需要注意的,否则组出来的包不可用的。:( |
|
|
地板#
发布于:2003-07-11 18:56
[quote]不就是NAT吗 俺不会组包。:( 谁给段源代码看看啊? 俺能拦截包,并且把包分析出来的。只是不知道包头都应该包括哪些东西,有啥需要注意的,否则组出来的包不可用的。:( [/quote] 尤其是IP头有好多参数, union { BYTE VersionAndHeaderLength; // Version 4 bit, Header Length 4 bit * 4 struct { BYTE HeaderLength : 4; BYTE Version : 4; }; }; BYTE TypeOfService; WORD DatagramLength; WORD Id; WORD FlagsAndFragmentOffset; // Flags 3 bit, Fragment Offset 13 bit BYTE TimeToLive; BYTE Protocol; WORD CheckSum; BYTE SourceIp[4]; BYTE DestinationIp[4]; 其中checksum是校验码。我不知道该怎么填写啊。5555555 |
|
|
地下室#
发布于:2003-07-11 20:10
修改IP后要重新计算checksum,算法满天下都是 :D
呵呵,去看看RFC啊,这么问可能没人回答 http://www.csdn.net/develop/article/17/17991.shtm 看了这个晓得CHECKSUM 是怎么算的 [编辑 - 7/11/03 by antspower] |
|
|
5楼#
发布于:2003-07-11 20:25
http://www.driverdevelop.com/forum/viewthread.php?tid=4438
看了这个也许对你有用 |
|
|
6楼#
发布于:2003-07-11 20:53
http://www.driverdevelop.com/forum/viewthread.php?tid=4438 你真是好人哈!:) 要是有人给我点源码看看就好了。否则没信心。:( |
|
|
7楼#
发布于:2003-07-11 21:09
修改IP后要重新计算checksum,算法满天下都是 :D 我一个都没找到。你找一个发给我吧。有劳了。:) |
|
|
8楼#
发布于:2003-07-12 08:16
[quote]修改IP后要重新计算checksum,算法满天下都是 :D 我一个都没找到。你找一个发给我吧。有劳了。:) [/quote] 找不到?好象在驱动当前的页面,就有啊. |
|
|