怎么做这个程序??

gigglegile 2003-08-21 03:44:32
做一个windows下ip包控制程序,要求如下:
1):对进出ip包截获
2):对于外网进入本机的ip包,统计其地址,数量,并且可以做丢弃处理。
3):出去的ip包能够正常处理
我想问一下,做这个程序要用到什么开发工具,还有要具备哪些专业知识??
...全文
51 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zenggao 2003-08-21
  • 打赏
  • 举报
回复
用C++和SOCK套接字。找这方面的书就OK啦。。。介绍几本给你参考。
监听与隐藏
攻击与防护
以上是求是科技出版。
下面是黑客防线出版。
黑客编程 有点忘记书名了。你自己查查吧。我有一本在家里放着,人在办公室。
还有WINDOWS网络封包截获。。。
wina 2003-08-21
  • 打赏
  • 举报
回复
数据包监测

  实际上有几百种可用的数据包监测程序,许多结合起来破译和扫描特定类型的数据并被专门 设计为黑客的工具。我们在这里不讨论任何寻找密码或信用卡号的工具,但它们确实存在。 这类工具经常有内置的协议分析程序,它能够帮助翻译不同网络协议的数据包,而不是提供 原始的数字数据。

  一个最古老也最成功的数据包和网络分析产品是由WildPackets (以前的AG 组)出品的Ether Peek。 EtherPeek已经存在了10年,堪称互联网时代真正的恐龙。他们提供Windows版 和Mac intosh版,每个都具有网络管理员-导向的价格。这个工具软件开始只是一个网络分析器型的 数据包监测软件,经过这些年的发展已经成为一个真正的网络管理工具并具有网站监视和分 析等新的功能。在他们的网站有一个演示版,想要试验的人可以去下载。

  另一个能够监视网络活动捕获和分析数据包的程序是TamoSoft的CommView。这个流行的监测 程序显示网络连接和IP统计数字,能够检查单独的数据包,通过对IP协议TCP, UDP,和 ICMP 的完全分析解码到最低层。完全访问原始数据也只需要花费一个非常友好的价格$119(或者 是以更低的价格获得个人许可证,它只能捕获发送到你的PC的数据包)。TamiSoft的网站同 样提供一个可以下载的演示版。

  如果你运行微软的Windows NT Server,将不必买任何东西——它有一个内置的数据包监测程 序叫做网络监视器。要访问它,进入网络控制面板,选择服务标签,点击添加并选择网络监 视工具和代理。一旦它已经安装你就可以从程序菜单下的管理工具中运行网络监视器。

二、如何监测

  好了,现在你的手头至少有一个流行的数据包监测软件的测试版了,我们要开始研究事情的 真相了,看一看我们实际上能从这些数据包中学到什么。本文将以Tamisoft的CommView为例 。但同样的概念和功能在其它的数据包监测产品中也很容易适用。

  开始工作以前,我们需要打开监测功能,在CommView中通过从下拉菜单中选择网络适配器, 然后按下开始捕获按钮,或从文件菜单中选择开始捕获。如果发生网络阻塞,你应该立即看 到一些行为。

  CommView和大多数数据包监测软件一样,有一个显示IP网络信息的屏幕和一个显示数据包数 据的屏幕。在默认方式下你将看到IP统计页。你应该能够在你的浏览器中输入一个URL,或检 查你的e-mail,看这个屏幕接收通讯两端的IP地址数据。

  除了两端的IP地址,你应该看到端口号,发送和接受的数据包数,对话的方向(谁发送第一 个数据包),两个主机间对话的次数,和有效的主机名。CommView能和可选择的SmartWhoIs 模块相结合,所以在IP列表中右击IP号将提供一个查找信息返回关于这个IP号的所有已知的 注册信息。如果你用popmail型的帐号查收电子邮件,将在IP列表中看到一条线,端口号为1 10,标准popmail端口。你访问任意网站都会在端口80产生一条线,参见图A。

  查明某些数据包来自于哪儿是数据包监测程序最普通的应用之一。通过运行一个程序如Smar tWhoIs,你能够把数据包监测程序所给出的鉴定结果——IP和以太网地址扩展到潜在的更有 用的信息,如谁管理一个IP地址指向的域。一个IP地址和以太网地址对于要追踪一个无赖用 户来说没有太多作用,但他们的域管理员可能非常重要。

  在CommView中点击数据包标签可以在它们经过时看到实际的数据包。这样的视图意义很含糊 ,而且如果你惧怕十六进制,这不是适合你的地方。有一个数据包列表,其中每个数据包都 有一个独一无二的数据包编号。在列表视图中你也可以看到数据包的协议(如TCP/IP),MA C (以太网)地址,IP地址和端口号。

  在CommView数据包窗口中间的窗格中你可以看到在列表中选择的无论什么数据包的原始数据 。既有数据包数据的十六进制表示也有一个清楚的文本翻译。底部的窗格显示了IP数据包的 解码信息,包括数据包在IP, TCP, UDP, 和 ICMP层的完整分析,参见图B。

  如果你正在和这些信息打交道,那么你不是在进行繁重的网络故障排除工作,就是在四处窥 探。翻译十六进制代码不是这篇文章讨论的范围,但应用正确的工具,数据包可以被解开而 看到其内容。

  当然这些并不是用一个数据包检测软件所能做的一切——你也可以复制数据包,为捕获数据 包建立规则和过滤器,以成打不同的方式获得各种统计数字和日志。功能更加强大的工具不 仅限于可以查看,记录和分析发送和交换数据包,利用它们不费多少功夫就可以设想出一些狡猾的应用程序。

三、IP欺骗和更多资源

  一个完全不友好的数据包监测应用程序是一种IP欺骗技术。这时,一个不道德的用户不仅查 看经过的数据包,而且修改它们以获得另一台计算机的身份。

  当一个数据包监测程序在两台正在通讯的计算机段内时,一个黑客就能监听出一端的身份。 然后通过找到一个信任端口的IP地址并修改数据包头使数据包看起来好象来自于那个端口达 到攻击连接的目的。这类活动通常伴随着一个对伪造地址的拒绝服务攻击,所以它的数据包 不会被入侵干扰。

  关于数据包监测和IP欺骗技术的信息成吨,我们仅仅描述了对TCP/IP数据包操作的一些表面 知识。在开始数据包监测以前最好深入了解TCP/IP和网络——这样做更有意义。这里是一个 为那些想要进一步研究这个问题的人们提供的附加的资源列表。

ZDNet's Computer Shopper Network Utilities
Packetstorm's packet sniffer section with over 100 sniffing programs
Wild Packets, makers of EtherPeek
EtherPeek
TamoSoft, makers of CommView
Opt Out is a great program worth looking at and the site has a wealth of information about packet sniffing
An overview of the TCP/IP Protocol Suite

  最后一句警告——小心你监测的场所。在你家里的PC上运行一个数据包监测程序学习TCP/IP ,或者是在你控制的局域网运行以解决故障是一回事,在别人的网络上偷偷地安装却是另一 回事。机敏的网络管理员在集中注意力时会发现监测他们网络的人,并且他们通常不会很高 兴。


wina 2003-08-21
  • 打赏
  • 举报
回复
撷取IP封包

如果您的机器上面装有 netxray 等封包撷取软体或使用NT的“网路监视器”我们就可以撷取那些进出本机的封包了。

当我们打开撷取功能之後然後使用ping命令随便ping一个地址如www.hinet.net。我们可以撷取到如下这些封包




正如我们所见到的我们撷取到DNS和ICMP的封包了因为www.hinet.net需要到DNS解释而ping是一个ICMP协定。您或许知道ICMP封包的type为“Echo Request”和“Echo Reply”分别代表什麽意思吧

让我们再深入一点看看DNS封包里面有些什麽东东




如果您往上卷回有关“DNS”的文章看看我们用 nslookup 的 debug 模式查找 www.hinet.ne t这个网址时候引一下那里的内容您就知道这个封包说些什麽了。

下面让我们再看看ICMP封包里面的内容




其实我们真正撷取到的封包内容应该是红圈的围在上面和右边的栏目里面的资料是经过程式整理出来的结果。在第一行里面我们看到“00 80 c7 47 8c 9a 48 54 e8 27 75 77”这串数字所代表的分别是目的地和来源地的MAC地址然後“08 00”代表的是一个Ethernet II的IP协定类型。Ethernet II可以说是IEEE802.3的改进版本。(还记得“网路概论”里面关於“逻辑形态”的叙述麽)。这里可以说是Datalink网路层所要追踪的资料。

然後接下来的是属於IP封包的内容




请先记着上图的内容我打算在下一节里面在详细讨论每一行的意思。

IP封包格式

首先让我们看看IP封包的格式是怎样的和其组成部份以及各部份的长度如何

Version (4) Internet Header Length (4) Type of Service (8) Total Length (16)
Identification (16) Flags (3) Fragment Offset (13)
Time To Live (8) Protocol (8) Header checksum (16)
Source Address (32)
Destination Address (32)
Options (Variable) Padding (0-24)
 
Data
....



在上图中括号之内的数字就是各部件的长度(bit)如果您够细心就会计算得出每一列的总长度都是32bit。下面我们分别对各部件名称解释一下

Version


版本(VER)。表示的是IP规格版本目前的IP规格多为版本4(version 4)所以这里的数值通常为 0x4 (注意封包使用的数字通常都是十六进位的)。


Internet Header Length


标头长度(IHL)。我们从IP封包规格中看到前面的6列为header如果Options和Padding没有设定的话也就只有5列的长度所以这里的长度为“5”我们知道每列有32bit也就是4byte那麽5列就是20byte了20这个数值换成16进位就成了0x14所以当封包标头长度为最短的时候这里数值最终会被换算为 0x14 。

让我们看看我们撷取的ICMP封包其中属於IP部份的开头





在这里我们看到的数值是“45”前面的“4”就是版本号数而後面的“5”则是标头长度。



Type of Service


服务类型(TOS)。这里指的是IP封包在传送过程中要求的服务类型其中一共由8个bit组成其中每个bit的组合分别代表不同的意思

000..... Routine 设定IP顺序预设为0否则数值越高越优先
...0.... Delay 延迟要求0是正常值1为低要求
....0... Throughput 通讯量要求0为正常值1为高要求
.....0.. Reliability 可靠性要求0为正常值1为高要求
......00 Not Used 未使用


在下例中我们可以看到TOS的值为0也就是全部设置为正常值




Total Length


封包总长(TL)。通常以byte做单位来表示该封包的总长度此数值包括标头和数据的总和。




从上图我们看到的十六进位数值是“003C”换成十进位就是“60”了。



Identification


识别码(ID)。每一个IP封包都有一个16bit的唯一识别码。我们从OSI的网路层级知识里面知道当程式产生的数据要通过网路传送时都会被拆散成封包形式发送当封包要进行重组的时候这个ID就是依据了。




从上图我们可以看到此封包的ID为40973 (将 a00d 换成十进制就知道了)。



Flag


标记(FL)。这是当封包在传输过程中进行最佳组合时使用的3个bit的识别记号。请参考下表

000. 当此值为0的时候表示目前未被使用。
.0.. 当此值为0的时候表示封包可以被分割如果为1则不能被分割。
..0. 当上一个值为0时此值为0就示该封包是最後一个封包如果为1则表示其後还有被分割的封包。



在下例中我们看到这个封包的标记为“0”也就是目前并未使用。






Fragment Offset


分割定位(FO)。当封包被切开之後由於网路情况或其它因素影响其抵达顺序并不会和当初切割顺序一至的。所以当封包进行切割的时候会为各片段做好定位记录所以在重组的时候就能够依号入座了。

因为我们刚才撷取到的封包并没有被切割所以暂时找不到例子参考在上例中我们看到的FO为“0”。


Time To Live


延续时间(TTL)。这个TTL我们在许多网路设定上都会碰到当一个物件被赋予TTL值(以秒为单位)之後就会进行计时如果物件在到达TTL值的时候还没被处理的话就会被遗弃。 不过并不是所有的 TTL 都以时间为单位例如 ICMP 协定的 TTL则以封包路由过程中的跳站数目(Hop Count)做单位。TTL 值每经过一个跳站(或被一个 router 处理)之後就会被减低一个数值 。这样当封包在传递过程中由於某些原因而未能抵达目的地的时候就可以避免其一直充斥在网路上面。




上图中我们看到的数值可不是 20 哦因为这是个十六进位数字要换成十进位才知道 TTL 原来是 32 个跳站。



Protocol


协定(PROT)。这里指的是该封包所使用的网路协定类型例如ICMPDNS等。要注意的是这里使用的协定是网路层的协定这和上层的程式协定(如FTPPOP等)是不同的。您可以从Linux的/etc/protocol这个档案中找到这些协定和其代号此档案也存放於NT的\winnt\system32\drivers\etc目录里面。其内容如下
------------------------------------------------------
ip 0 IP # internet protocol, pseudo protocol number
icmp 1 ICMP # internet control message protocol
igmp 2 IGMP # Internet Group Management
ggp 3 GGP # gateway-gateway protocol
ipencap 4 IP-ENCAP # IP encapsulated in IP (officially ``IP')
st 5 ST # ST datagram mode
tcp 6 TCP # transmission control protocol
egp 8 EGP # exterior gateway protocol
pup 12 PUP # PARC universal packet protocol
udp 17 UDP # user datagram protocol
hmp 20 HMP # host monitoring protocol
xns-idp 22 XNS-IDP # Xerox NS IDP
rdp 27 RDP # "reliable datagram" protocol
iso-tp4 29 ISO-TP4 # ISO Transport Protocol class 4
xtp 36 XTP # Xpress Tranfer Protocol
ddp 37 DDP # Datagram Delivery Protocol
idpr-cmtp 39 IDPR-CMTP # IDPR Control Message Transport
rspf 73 RSPF #Radio Shortest Path First.
vmtp 81 VMTP # Versatile Message Transport
ospf 89 OSPFIGP # Open Shortest Path First IGP
ipip 94 IPIP # Yet Another IP encapsulation
encap 98 ENCAP # Yet Another IP encapsulation
------------------------------------------------------





在我们这个例子中可以看得出PROT的号码为“01”对照/etc/protocol档案我们可以知道这是一个ICMP协定。



Header Checksum


标头检验值(HC)。这个数值主要用来检错用的用以确保封包被正确无误的接收到。当封包开始进行传送後接收端主机会利用这个检验值会来检验馀下的封包如果一切看来无误就会发出确认信息表示接收正常。




上图中我们看到的封包之HC为“9049”。



Source IP Address


来源地址(SA)。相信这个不用多解释了就是发送端的IP地址是也。




我们将“c0.a8.00.0f”换成十进位就可以得出“192.168.0.15”这个地址了。



Destination IP Address


目的地址(DA)。也就是接收端的IP地址啦。




看看你能不能将“a8.5f.01.54”换成“168.95.1.84”



Options & Padding
【为什么学习微信小程序?】   小程序开发为当下一种主流的开发形式,小程序开发已经不仅仅局限于互联网行业,传统行业同样也有海量的需求,掌握小程序开发不仅仅是掌握了一个新的开发技能,更可以增加大家的行业竞争力,无论是在岗位的提升,求职面试、或者个人创业都是有很大的帮助。掌握了小程序开发小程序也是一门相对比较容易上手的技术,因为小程序开发容纳了前端、后端、运维等岗位所需掌握的知识但又极为简单好理解,对于刚刚入门或者小白用户是一个可以快速掌握并成为一名程序猿的不二途径。 【推荐你学习这门课程的四大亮点】 1、完整成体系的小程序开发知识: 对于没有学习过小程序开发的同学,本课程由浅入深系统的向同学们讲解了小程序开发知识,将知识点串联起来,让同学们可以更好更快的掌握小程序开发。2、视频及相关功能开发的掌握: 借助于小程序开发使得视频方向的开发变的尤为简单,即使你是入门小白也可以熟练掌握小程序中视频的相关开发,其中涉及了视频的常规控制如播放暂停等也有比较流行的视频弹幕功能,并结合了一下视频开发中相关的性能优化问题,可以让同学们通过本课程的学习对于视频类的开发有更深层次的认识。3、打造智能闲聊小程序: 借助于网络上开放的人工智能接口,去实现智能闲聊功能,使得开发的过程不仅能够收获更多的知识也变得更加有趣。项目中虽然知识讲解了智能闲聊功能的调用,但是通过此功能的调用方法大家可以举一反三去使用更多的开发功能使得开发变得简单且有趣。4、掌握项目级开发知识及技巧: 本课程中融入了两大当前比较主流的项目实例,视频功能和人工智能。通过项目的练习不仅可以让大家掌握较为主流的项目方向且融入很多的中高级语法及项目开发知识,如ES6+的一些语法和模块化、组件化开发的知识。【课程内容设计】   设计本门课程时考虑到很多同学可能没有小程序开发相关经验,本门课程将由浅入深,渐进式的讲解知识点。我把课程分为了三个阶段分别为:初次接触、基础入门、实战提升。   1、初次接触:   主要给大家讲解小程序开发的相关知识,让大家在宏观上对向程序开发能有一定的概念。并且讲授的开发环境的搭建让大家对在开发前期一个充分的热身。先激发起大家对线程序开发的热情,这样为下一步小程序的开发学习一个铺垫。   2、基础入门:   这个阶段主要为入门的同学提供了一个比较全面的小程序开发基础知识知识汇总,并伴有实践的例子简单且易上手,让大家能够体验到小程序的开发乐趣,并未下一步的项目实战开发打定基础。   3、实战提升:   这个阶段为项目实践阶段,通过实战项目让大家深入了解和学习小程序开发,项目中同时融入了现在主流的视频内容,和有趣并贴近生活的智能闲聊功能,项目中涉及到的技术点也是由浅入深,同学们在掌握小程序的开发能力的同时也掌握了问题解决与深入学习的能力。 【实战项目展示】 【学习完课程你将收获】

6,185

社区成员

发帖
与我相关
我的任务
社区描述
windows网络管理与配置
社区管理员
  • 网络管理与配置社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧