WinBatch Tech Support Home

Database Search

If you can't find the information using the categories below, post a question over in our WinBatch Tech Support Forum.

TechHome

Samples From Users

Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.

Subnet Sniffer V4 Example Code

Keywords: 	  Subnet Sniffer V4

Winsock="wwwsk34I.dll"
Win95="www9534I.dll"

AddExtender(Winsock)
AddExtender(Win95)

crlf=strcat(Num2Char(13),Num2Char(10))
AvailableList=""
FinalDisplayList=""
CpterFile="Cpter.lst"
AvailableCount=0
CompleteLength=900

SelectAddressesFormat=`WWWDLGED,5.0`

SelectAddressesCaption=`Subnet Sniffer`
SelectAddressesX=60
SelectAddressesY=76
SelectAddressesWidth=144
SelectAddressesHeight=67
SelectAddressesNumControls=7

SelectAddresses01=`40,48,64,DEFAULT,PUSHBUTTON,DEFAULT,"Start Sniffer",1`
SelectAddresses02=`2,4,56,DEFAULT,STATICTEXT,DEFAULT,"Network Address"`
SelectAddresses03=`90,4,48,DEFAULT,EDITBOX,Net1,"111.222.333"`
SelectAddresses04=`2,18,64,DEFAULT,STATICTEXT,DEFAULT,"Start Host Address"`
SelectAddresses05=`90,18,48,DEFAULT,EDITBOX,StartHost,"111"`
SelectAddresses06=`2,32,78,DEFAULT,STATICTEXT,DEFAULT,"Finished Host Address"`
SelectAddresses07=`90,32,48,DEFAULT,EDITBOX,FinishHost,"111"`

DataCheck=@False
ErrorCodes=""

;*********************************************************************************************
WGList=w95Resources("",2,0,0)
CpterList=""
IPList=""

NeededWG=AskItemList("Select the necessary Workgroup to sniff",WGList,@Tab,@sorted,@single)
WGCount=ItemCount(NeededWG,@Tab)

For i = 1 to WGCount
	WorkingWG=ItemExtract(i,"%NeededWG%",@Tab)
	ComputerList=w95Resources("%NeededWG%",2,0,0)
	ComputerCount=ItemCount(ComputerList,@Tab)
	Counter=0.0
	For cc=1 to ComputerCount
					BoxColor(1,"192,192,192",0)
               BoxOpen("Collecting Network Information","Please be patient...")
               BoxPen(1,"255,255,255",100)
               BoxDrawRect(1,"70,800,%CompleteLength%,700",0)
               PercentComplete=Counter / ComputerCount
               TextComplete=int(PercentComplete * 100)
               PercentLength=CompleteLength*PercentComplete
               PercentDraw=Int(PercentLength)
               BoxPen(1,"0,255,0",100)
               BoxDrawRect(1,"70,800,%PercentDraw%,700",0)
               BoxDrawText(1,"70,800,%CompleteLength%,700","%TextComplete% %%",@False,1)
               BoxDataTag(1,"Tag1")
               BoxDataClear(1,"Tag1")
      
		CpterPull=ItemExtract(cc,ComputerList,@Tab)
		;Message("CPTRPULL",CpterPull)
		
		If StrSub(CpterPull,1,2) == "\\"
			CpterIP=wxHost2Addr(strSub(CpterPull,3,-1))
		Else
			CpterIP=wxHost2Addr(CpterPull)
		Endif
		
		Counter=Counter+1
		IPList=strcat(CpterIP,";",IPList)
		CpterList=strcat("%NeededWG%","/",strSub(CpterPull,3,-1),";",CpterList)
	Next cc
	BoxDestroy(1)
Next i
;***************************************************************
;End of Network Retrieval



;Message("IP List",IPList)

While DataCheck==@False
        ButtonPushed=Dialog("SelectAddresses")
        DataCheck=@True
        ErrorCodes=""
        UserDisplay=""
        
        ;Verify that the Network Address Meets ALL Standards
        
        ;Network 001 - Needs 3 Octets
        If ItemCount(Net1,".") <> 3
                DataCheck=@False
                ErrorCodes=strcat("001",";",ErrorCodes)
        Endif
                
        ;Network 101 - Octet 1 Must be Less than 255
        If ItemExtract(1,Net1,".") > 254
                DataCheck=@False
                ErrorCodes=strcat("101",";",ErrorCodes)
        Endif
        
        ;Network 102 - Octet 1 Must be Greater than 0
        If ItemExtract(1,Net1,".") < 1
                DataCheck=@False
                ErrorCodes=strcat("102",";",ErrorCodes)
        EndIf
        
        ;Network 103 - Octet 1 Must be a valid Integer
        If IsInt(ItemExtract(1,Net1,"."))==@False
                DataCheck=@False
                ErrorCodes=strcat("103",";",ErrorCodes)
        EndIf
        
        ;Network 201 - Octet 2 Must be Less than 255
        If ItemExtract(2,Net1,".") > 254
                DataCheck=@False
                ErrorCodes=strcat("201",";",ErrorCodes)
        Endif
        
        ;Network 202 - Octet 2 Must be Greater than 0
        If ItemExtract(2,Net1,".") < 1
                DataCheck=@False
                ErrorCodes=strcat("202",";",ErrorCodes)
        EndIf
        
        ;Network 203 - Octet 2 Must be a valid Integer
        If IsInt(ItemExtract(2,Net1,"."))==@False
                DataCheck=@False
                ErrorCodes=strcat("203",";",ErrorCodes)
        EndIf
        
        ;Network 301 - Octet 3 Must be Less than 255
        If ItemExtract(3,Net1,".") > 254
                DataCheck=@False
                ErrorCodes=strcat("301",";",ErrorCodes)
        Endif
        
        ;Network 302 - Octet 3 Must be Greater than 0
        If ItemExtract(3,Net1,".") < 1
                DataCheck=@False
                ErrorCodes=strcat("302",";",ErrorCodes)
        EndIf
        
        ;Network 303 - Octet 3 Must be a valid Integer
        If IsInt(ItemExtract(3,Net1,"."))==@False
                DataCheck=@False
                ErrorCodes=strcat("303",";",ErrorCodes)
        EndIf
        
        
        
        ;Check to see that the HOST Address meets ALL necessary Criteria
        
        ;Host 401 - Start Host Must be less than 255
        If StartHost > 254
                DataCheck=@False
                ErrorCodes=strcat("401",";",ErrorCodes)
        Endif
        
        ;Host 402 - Start Host Must be Greater than 0
        If StartHost < 1
                DataCheck=@False
                ErrorCodes=strcat("402",";",ErrorCodes)
        Endif
        
        ;Host 403 - Start Host Must be a valid Integer
        If IsInt(StartHost)==@False
                DataCheck=@False
                ErrorCodes=strcat("403",";",ErrorCodes)
        Endif
        
        ;Host 501 - Finish Host Must be less than 255
        If FinishHost > 254
                DataCheck=@False
                ErrorCodes=strcat("501",";",ErrorCodes)
        Endif
        
        ;Host 502 - Finish Host Must be Greater than 0
        If FinishHost < 1
                DataCheck=@False
                ErrorCodes=strcat("502",";",ErrorCodes)
        Endif
        
        ;Host 503 - Finish Host Must be a valid Integer
        If IsInt(FinishHost)==@False
                DataCheck=@False
                ErrorCodes=strcat("503",";",ErrorCodes)
        Endif
        
        ;Host 601 - Start Host Must be Less Than Finish Host
        If StartHost > FinishHost
                DataCheck=@False
                ErrorCodes=strcat("601",";",ErrorCodes)
        Endif
        
        ;Host 602 - Start Host Cannot be Equal to Finish Host
        If StartHost == FinishHost
                DataCheck=@False
                ErrorCodes=strcat("602",";",ErrorCodes)
        Endif
        
        ;Display Messages to the user on what to change
        If DataCheck==@False
                
                If ItemLocate("001",ErrorCodes,";") <> 0
                        UserDisplay=strcat("001 - Network Requires 3 Octets",";",UserDisplay)
                EndIf
                                 
                If ItemLocate("101",ErrorCodes,";") <> 0
                        UserDisplay=strcat("101 - Network Octet 1 Must be Less than 255",";",UserDisplay)
                EndIf
                
                If ItemLocate("102",ErrorCodes,";") <> 0
                        UserDisplay=strcat("102 - Network Octet 1 Must be Greater than 0",";",UserDisplay)
                EndIf
                 
                If ItemLocate("103",ErrorCodes,";") <> 0
                        UserDisplay=strcat("103 - Network Octet 1 Must be a Valid Integer",";",UserDisplay)
                EndIf
                
                If ItemLocate("201",ErrorCodes,";") <> 0
                        UserDisplay=strcat("201 - Network Octet 2 Must be Less than 255",";",UserDisplay)
                EndIf
                
                If ItemLocate("202",ErrorCodes,";") <> 0
                        UserDisplay=strcat("202 - Network Octet 2 Must be Greater than 0",";",UserDisplay)
                EndIf
                 
                If ItemLocate("203",ErrorCodes,";") <> 0
                        UserDisplay=strcat("203 - Network Octet 2 Must be a Valid Integer",";",UserDisplay)
                EndIf
                
                If ItemLocate("301",ErrorCodes,";") <> 0
                        UserDisplay=strcat("301 - Network Octet 3 Must be Less than 255",";",UserDisplay)
                EndIf
                
                If ItemLocate("302",ErrorCodes,";") <> 0
                        UserDisplay=strcat("302 - Network Octet 3 Must be Greater than 0",";",UserDisplay)
                EndIf
                 
                If ItemLocate("303",ErrorCodes,";") <> 0
                        UserDisplay=strcat("303 - Network Octet 3 Must be a Valid Integer",";",UserDisplay)
                EndIf
                
                If ItemLocate("401",ErrorCodes,";") <> 0
                        UserDisplay=strcat("401 - StartHost Must be less than 255",";",UserDisplay)
                EndIf
                
                If ItemLocate("402",ErrorCodes,";") <> 0
                        UserDisplay=strcat("402 - StartHost Must be greater than 0",";",UserDisplay)
                EndIf
                
                If ItemLocate("403",ErrorCodes,";") <> 0
                        UserDisplay=strcat("403 - StartHost Must be a vailid integer",";",UserDisplay)
                EndIf
                
                If ItemLocate("501",ErrorCodes,";") <> 0
                        UserDisplay=strcat("501 - FinishHost Must be less than 255",";",UserDisplay)
                EndIf
                
                If ItemLocate("502",ErrorCodes,";") <> 0
                        UserDisplay=strcat("502 - FinishHost Must be greater than 0",";",UserDisplay)
                EndIf
                
                If ItemLocate("503",ErrorCodes,";") <> 0
                        UserDisplay=strcat("503 - FinishHost Must be a vailid integer",";",UserDisplay)
                EndIf
                
                If ItemLocate("601",ErrorCodes,";") <> 0
                        UserDisplay=strcat("601 - StartHost Must be less than FinishHost",";",UserDisplay)
                EndIf
                
                If ItemLocate("602",ErrorCodes,";") <> 0
                        UserDisplay=strcat("602 - StartHost Cannot be equal to FinishHost",";",UserDisplay)
                Endif
                
                UserResponse=AskItemList("Errors with entries",UserDisplay,";",@sorted,@multiple)        
        Endif
EndWhile        
        
        

HostCount=(FinishHost - StartHost) + 1 ;Difference between start and finish hosts
HostCount=HostCount+0.0
StartHost=StartHost+0.0
CompleteCount=0


        For i= StartHost to FinishHost by 1
                completeCount=CompleteCount+1
                HostDigit=Int(i)
                Host=strcat(Net1,".",HostDigit)
                
                
                
                BoxColor(1,"192,192,192",0)
                BoxOpen("Searching For %Host%","Host: %Host% %crlf% %crlf% Hosts Found: %AvailableCount% %crlf% HostsSearched: %CompleteCount%")
                BoxPen(1,"255,255,255",100)
                BoxDrawRect(1,"70,800,%CompleteLength%,700",0)
                PercentComplete=CompleteCount / HostCount
                TextComplete=int(PercentComplete * 100)
                PercentLength=CompleteLength*PercentComplete
                PercentDraw=Int(PercentLength)
                BoxPen(1,"0,255,0",100)
                BoxDrawRect(1,"70,800,%PercentDraw%,700",0)
                BoxDrawText(1,"70,800,%CompleteLength%,700","%TextComplete% %%",@False,1)
                BoxDataTag(1,"Tag1")
                BoxDataClear(1,"Tag1")
                
                Available=ItemLocate(Host,IPList,";")
                If Available <> 0
                        AvailableList=strcat(Host,";",AvailableList)
                Endif
        Next i

;Message("",AvailableList)
;AskItemList("Available Hosts",AvailableList,";",@sorted,@multiple)
;FinalCount=ItemCount(AvailableList,";")


AvbleListCount=ItemCount(AvailableList,";")

handle=FileOpen(CpterFile,"WRITE")
For j=1 to AvbleListCount
	testIP=ItemExtract(j,AvailableList,";")
	IPLookup=ItemLocate(testIP,IPList,";")
	;Message("IP Lookup",IPLookup)
	If IPLookup <> 0
		CpterWrite=ItemExtract(IPLookup,CpterList,";")
		FileWrite(handle,"%testIP%		%CpterWrite%")
	Else
		FileWrite(handle,"%testIP%		???UnknownHost???")
	Endif
Next j
FileClose(handle)

Run("C:\Windows\Notepad.exe",CpterFile)

;For organize = 1 to FinalCount
;        testAddress=ItemExtract(organize,AvailableList,";")
;        testHost=wxAddr2Host(testAddress)
;        FinalDisplayList=strcat(testAddress," (",testHost,")",";")
;Next Organize

;AskItemList("Available Hosts",FinalDisplayList,";",@unsorted,@single)

Article ID:   W12673
Filename:   Subnet Sniffer V4.txt
File Created: 2001:03:01:15:05:50
Last Updated: 2001:03:01:15:05:50