VB设计Win2000下截获IP数据包程序

2016-02-19 14:19 27 1 收藏

有一种朋友不在生活里,却在生命力;有一种陪伴不在身边,却在心间。图老师即在大家的生活中又在身边。这么贴心的服务你感受到了吗?话不多说下面就和大家分享VB设计Win2000下截获IP数据包程序吧。

【 tulaoshi.com - 编程语言 】

以下是在VB中截获WIN2000下TCP/IP包的源代码,在VB6.0,win2000下测试通过,需要注意的地方是,1.必须和本地的一块网卡,2.每次获取数据后必须有一段延时。3.数据取到之后放在Buff的数组中。4.把以下的代码放在一个模块中就可以了。
  
  ->'-----------------------------代码开始--------------------------------------------------
  DeclareFunctionbindLib"ws2_32.dll"(ByValsAsLong,addrAsSOCK_ADDR,ByValnamelenAsLong)AsLong
  DeclareFunctionclosesocketLib"ws2_32.dll"(ByValsAsLong)AsLong
  DeclareFunctionconnectLib"ws2_32.dll"(ByValsAsLong,nameAsSOCK_ADDR,ByValnamelenAsInteger)AsLong
  DeclareFunctioninet_addrLib"ws2_32.dll"(ByValcpAsString)AsLong
  DeclareFunctionhtonsLib"ws2_32.dll"(ByValhostshortAsInteger)AsInteger
  DeclareFunctionrecvLib"ws2_32.dll"(ByValsAsLong,bufferAsAny,ByVallengthAsLong,ByValflagsAsLong)AsLong
  DeclareFunctionsendLib"ws2_32.dll"(ByValsAsLong,bufferAsAny,ByVallengthAsLong,ByValflagsAsLong)AsLong
  DeclareFunctionshutdownLib"ws2_32.dll"(ByValsAsLong,ByValhowAsLong)AsLong
  DeclareFunctionioctlsocketLib"ws2_32.dll"(ByValsAsLong,ByValvAsLong,utAsLong)AsLong
  DeclareFunctionsocketLib"ws2_32.dll"(ByValafAsLong,ByValtype_specificationAsLong,ByValprotocolAsLong)AsLong
  DeclareFunctionWSACancelBlockingCallLib"ws2_32.dll"()AsLong
  DeclareFunctionWSACleanupLib"ws2_32.dll"()AsLong
  DeclareFunctionWSAGetLastErrorLib"ws2_32.dll"()AsLong
  DeclareFunctionWSAStartupLib"ws2_32.dll"(ByValwVersionRequiredAsInteger,wsDataAsWSA_DATA)AsLong
  DeclareFunctionWSASocketALib"ws2_32.dll"(ByValafAsLong,ByValtype1AsLong,ByValprotocolAsLong,lpProtocolInfoAsLong,gAsLong,ByValdwFlagsAsLong)
  DeclareFunctionWSAIoctlLib"ws2_32.dll"(ByValsAsLong,ByValdwIoControlCodeAsLong,lpvInBufferAsLong,ByValcbInBufferAsLong,lpvOutBufferAsLong,ByValcbOutBufferAsLong,lpcbBytesReturnedAsLong,lpOverlappedAsLong,lpCompletionRoutineAsLong)AsLong
  
  DeclareSubCopyMemoryLib"kernel32"Alias"RtlMoveMemory"(DestinationAsAny,SourceAsAny,ByVallengthAsLong)
  
  PublicDeclareSubSleepLib"kernel32"(ByValdwMillisecondsAsLong)
  
  PublicConstWSADESCRIPTION_LEN=256
  PublicConstWSASYS_STATUS_LEN=128
  
  TypeWSA_DATA
   wVersionAsInteger
   wHighVersionAsInteger
   strDescription(WSADESCRIPTION_LEN 1)AsByte
   strSystemStatus(WSASYS_STATUS_LEN 1)AsByte
   iMaxSocketsAsInteger
   iMaxUdpDgAsInteger
   lpVendorInfoAsLong
  EndType
  
  TypeIN_ADDR
   S_addrAsLong
  EndType
  
  TypeSOCK_ADDR
   sin_familyAsInteger
   sin_portAsInteger
   sin_addrAsIN_ADDR
   sin_zero(0To7)AsByte
  EndType
  
  TypeIPHeader
   lenverAsByte
   tosAsByte
   lenAsInteger
   identAsInteger
   flagsAsInteger
   ttlAsByte
   protoAsByte
   checksumAsInteger
   sourceIPAsLong
   destIPAsLong
  EndType
  
  ConstAF_INET=2
  ConstSOCK_RAW=3
  ConstIPPROTO_IP=0
  ConstIPPROTO_TCP=6
  ConstIPPROTO_UDP=17
  ConstMAX_PACK_LEN=65535
  ConstSOCKET_ERROR=-1&
  
  PrivatemwsaDataAsWSA_DATA
  Privatem_hSocketAsLong
  
  PrivatemsaLocalAddrAsSOCK_ADDR
  PrivatemsaRemoteAddrAsSOCK_ADDR
  
  SubMain()
   DimnResultAsLong
  
   nResult=WSAStartup(&H202,mwsaData)
   IfnResultWSANOERRORThen
  MsgBox"ErrorenWSAStartup"
  ExitSub
   EndIf
  
   m_hSocket=socket(AF_INET,SOCK_RAW,IPPROTO_IP)
   If(m_hSocket=INVALID_SOCKET)Then
  MsgBox"Errorinsocket"
  ExitSub
   EndIf
  
   msaLocalAddr.sin_family=AF_INET
   msaLocalAddr.sin_port=0
   msaLocalAddr.sin_addr.S_addr=inet_addr("192.168.1.125")'这里需要你自己的网卡的IP地址
  
   nResult=bind(m_hSocket,msaLocalAddr,Len(msaLocalAddr))
   If(nResult=SOCKET_ERROR)Then
  MsgBox"Errorinbind"
  ExitSub
   EndIf
  
   DimInParamBufferAsLong
   DimBytesRetAsLong
   BytesRet=0
   InParamBuffer=1
  
   nResult=ioctlsocket(m_hSocket,&H98000001,1)
  
   IfnResult0Then
  MsgBox"ioctlsocket"
  ExitSub
   EndIf
  
   DimstrDataAsString
   DimnReceivedAsLong
  
   '截获来的数据放在BUFF里面
   DimBuff(0ToMAX_PACK_LEN)AsByte
   DimIPHAsIPHeader
  
   DoUntilFalse'这个例子里,一直获取
   DoEvents
   nResult=recv(m_hSocket,Buff(0),MAX_PACK_LEN,0)
   IfnResult=SOCKET_ERRORThen
  MsgBox"ErrorinRecvData::recv"
  ExitDo
   EndIf
   CopyMemoryIPH,Buff(0),Len(IPH)'为了访问方便
   SelectCaseIPH.proto
  CaseIPPROTO_TCP
   'frmHookTcpip.Text1.SelText=HexIp2DotIp(IPH.sourceIP)
   'frmHookTcpip.Text1.SelText="-----"
   'frmHookTcpip.Text1.SelText=HexIp2DotIp(IPH.destIP)
   'frmHookTcpip.Text1.SelText=vbCrLf
   Debug.PrintHexIp2DotIp(IPH.sourceIP)&"-----"&HexIp2DotIp(IPH.destIP)
   EndSelect
  Loop
  
   nResult=shutdown(m_hSocket,2)
   nResult=closesocket(m_hSocket)
   nResult=WSACancelBlockingCall
   nResult=WSACleanup
  EndSub
  
  FunctionHexIp2DotIp(ByValipAsLong)AsString
   DimsAsString,p1AsString,p2AsString,p3AsString,p4AsString
   s=Right("00000000"&Hex(ip),8)
   p1=Val("&h"&Mid(s,1,2))
   p2=Val("&h"&Mid(s,3,2))
   p3=Val("&h"&Mid(s,5,2))
   p4=Val("&h"&Mid(s,7,2))
   HexIp2DotIp=p4&"."&p3&"."&p2&"."&p1
   EndFunction
  '-----------------------------代码结束---------------------------------------------------->

来源:http://www.tulaoshi.com/n/20160219/1606734.html

延伸阅读
Win2000 Server下安装j2ee 一、环境配置 1、WIN2000SERVER或NT4,最好128M以上内存 2、正确安装了JDK 有关JDK的安装请参考相关文章,只有正确安装了JDK,才能确保J2EE的正常运行 3、下载j2sdkee-1_2_1-win.exe 和 j2sdkee-1_2_1-doc-win.exe 开发文档 相关网址:http://Java.sun.com/j2ee/ 二...
标签: Web开发
一、前期准备情况 Apache2(Win32) 完全模块化安装perl,php,ssl 1。一个安装好的WIN2000服务器,注意:如果你的机器上已经安装了IIS,将IIS里的所有web站点停掉或端口改成别的先。 2。下载软件 APACHE 2.0.48 Perl 4.3.1 PHP 4.3.1 MYSQL 4.0.12 ZendOptimizer 还有几个小东西,很重要,后面的安...
淘宝助理怎么上传数据包   首先,准备工作,当然是下载安装淘宝助理了,然后数据包这我就不用多说了吧,做淘宝这些东西肯定要准备的。 淘宝助理5.5使用教程 第一登陆淘宝助理 第二步点击宝贝管理进入管理宝贝页面 第三步就是导入产品csv文件了哦 第4步 就是找到你要导入的文件,然后这里要注意的...
标签: SQLServer
在Win2000 Server & Professional不能Attach DB File的原因和解决方法。     yy的SQL Server因为Master DB损坏,在没有Backup的情况下,无法修复和Restore,无奈只能Reinstall SQL Server,然后用Sp_attach_db来附加原来的应用DB File(xxx.mdf and xxx.ldf)。 为了保险起见,准备现在一台双平台的电脑上面试验。这台...
一.软件安装及PATH等设置: 这一步没什么说的,按J2SDK1.4.1(当然也可以是其他版本的),Apache2.0.43,Tomcat4.1.12的顺序安装就是了。 然后再分别设置CLASSPATH,PATH,Java_HOME,CATALINA_HOME。 二.整合配置: 1. 下载mod_jk2-2.0.43.dll(地址:http://jakarta.apache.org/builds/jakarta-tomcat-connectors/j...

经验教程

972

收藏

80
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部