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