# Network Tools



## FordGT90Concept (Sep 26, 2009)

*This version has been superceded by Network Tools 2.*


This app was inspired by Ping Tool.  It implements all user suggestions found on that thread.






Shown: Trace Route (Advanced), Ping

This is a relatively advanced network tool.  Simply select which you want to perform, enter a domain name or IP address, how many packets/hops to perform, and click start.  Once it has started, changing any of the above settings will stop it.

In order to perform an infinite ping, enter -1 into Packets field.  It will turn cyan to confirm an infinite run is selected.  Fields that have an invalid value will turn pink.

You can scan multiple port numbers by placing a comma between them.

Requires .NET Framework 2.0 or newer.


Usage:


Action|Input Description|Example
Ping|A domain name or IP address.|example.com or 192.16.0.192
Trace Route|A domain name or IP address.|example.com or 192.16.0.192
Trace Route (Advanced)|A domain name or IP address.|example.com or 192.16.0.192
Port Scan|Port numbers delimited by commas and ranges with a hypen.|80,90,800-810
Remote Port Scan|IP or domain name followed by a colon, followed by the port numbers (same as Port Scan).  Separate many domain/ip queries using a semicolon.|domain.com:80,90,800-810;ip:80,90,800-810
Intranet Scan|Blank, the IP address of your computer to use, the start and stop address of the last byte, or a combination of ip and range.|(empty) or 192.168.0.191 or 100-199 or 192.168.0.191:100-199.
Intranet Scan (Sorted)|Blank, the IP address of your computer to use, the start and stop address of the last byte, or a combination of ip and range.|(empty) or 192.168.0.191 or 100-199 or 192.168.0.191:100-199.
Intranet Scan (Advanced)|Blank, the IP address of your computer to use, the start and stop address of the last byte, or a combination of ip and range.|(empty) or 192.168.0.191 or 100-199 or 192.168.0.191:100-199.
DNS Record|A domain name.|example.com
DNS Resolve|A domain name or IP address.|example.com or 192.16.0.192
DNS Resolve (Advanced)|A domain name or IP address.|example.com or 192.16.0.192
Whois (Domain)|A domain name.|example.com
Whois (Name Server)|An IP address or domain name.|192.16.0.192 or example.com
Whois (Registrar)|A business name.|Network Solutions

Credits:
Global Whois (reference) by marschills
Whois Resolver (reference) by Mentalis.org
Dig.Net by Alphons van der Heijden
Ping, ICMP, and Trace Route (reference) by jscott


Version History:
1.0.0 - Used ping.exe and tracert.exe.
1.1.0 - Uses internal ICMP code for ping and trace route.
1.2.0 - Added DNS Resolve, DNS Resolve (Advanced) and Trace Route (Advanced).  Changed the selection from radios to a combo box.
1.3.0 - Added DNS Record, Whois (Domain), Whois (Name Server), Whois (Registrar), and Port Scan.  Also added a Stop button.
1.4.0 - Added Intranet Scan and Remote Port Scan.  The application should be IPv6 capable now. Several other minor changes were made.
1.4.1 - Several minor fixes and improvements.
1.4.2 - Whois is more robust.  Exception handling improved (not complete).  Intranet Scan now only displays those that returned a name.
1.4.3 - Some code added to catch/prevent Intranet Scan errors.
1.4.4 - Changed the Intranet Scan code to not ping and get DNS info, just DNS info.  Performance didn't change (DNS info has a long time out) although network chatter during a Intranet Scan should be greatly diminished.
1.4.5 - Made some changes to Remote Port Scan.  It now attempts to establish a TCP connection with the port number.  Remote Port Scan, therefore, won't work to test UDP connections.  Also reenabled IPv6 on Intranet Scan.  Unfortunately, an IPv6 scan will only detect other IPv6 computers on the intrenet.
1.4.6 - Added Clear Results button, it now displays the destination in both trace routes, and displays the version number in the title bar.
1.4.7 - Further improved the Intranet Scan.  It is now approximately twice as fast as it was and gathers network devices regardless of whether or not they are named.
1.5.0 - Added Intranet Scan (Sorted).  Tweeked a few settings in Trace Route (Advanced) and Intranet Scan.
1.5.1 - Several improvements made to both Trace Route actions.  Universal timeout setting increased from 3 seconds to 5 seconds.
1.5.2 - Large chunks of Ping, TraceRoute, and Trace Route (Advanced) recoded.  GUI reworked a bit.
1.5.3 - Intranet Scan and Intranet Scan (Sorted) now accepts "ip", "start-stop", and "ip:start-stop."  Setting an IP allows you to scan one of the networks your computer is connected to (e.g. IPv4 or IPv6).  Details in the table above.  Also added Help ->  Tech Power Up!
1.5.4 - Added WMI to Intranet Scans.
1.5.5 - Intranet Scan (Sorted) now shows the count of devices found before it outputs the sorted list.  Cleaned up some code that would throw a NullReferenceException if conditions were right.
1.5.6 - Changed the appearance of Trace Route and Trace Route (Advanced) errors.
1.6.0 - Added tooltips and a guide under the Help menu.
1.6.1 - Intranet Scan and Intranet Scan (Advanced) now return OS Name if available.
1.7.0 - Added Intranet Scan (Advanced).  Standardized the calculations for millisecond and seconds--they won't mess up if there was more than 999 milliseconds or 59 seconds.  Seconds also shows milliseconds in decimal form.


----------



## AsRock (Sep 26, 2009)

FordGT90Concept said:


> This app was inspired by Ping Tool.  It implements all user suggestions found on that thread.
> 
> http://img.techpowerup.org/090925/nettools.png
> 
> ...



Sweet how about adding resolving too.


----------



## FordGT90Concept (Sep 26, 2009)

DNS resolving?  Do Ping and on the first line, it will say "google.com [74.125.45.100]."  The address in the brackets is the resolved IP address.

Do you want that added as a separate radio button?


----------



## FordGT90Concept (Sep 26, 2009)

Uploaded version 1.2.  It added the following:

DNS Resolve: Gives you the IP, no frills.

DNS Resolve (Advanced): Gives you the host name, aliases, and addresses of the domain name.

Trace Route (Advanced): This performs a Trace Route in addition to requesting the host name from all IPs.  It can get all the host name information in the time it takes tracert.exe to get one thanks to multithreading.


More suggestions are welcome.


----------



## Solaris17 (Sep 26, 2009)

very awsome


----------



## FordGT90Concept (Oct 1, 2009)

I was thinking about recoding the GUI and adding Whois + DNS record.  I don't know if I will though because this application isn't getting much attention.


----------



## AsRock (Oct 1, 2009)

FordGT90Concept said:


> I was thinking about recoding the GUI and adding Whois + DNS record.  I don't know if I will though because this application isn't getting much attention.




Well i only use such a tool when Comcast are BS'ing me about my connection not being ucked up lol.

They have actually deleted every post about bad connections i have made in there forums lol.  Last time it got me 2 free months haha.


----------



## Solaris17 (Oct 1, 2009)

FordGT90Concept said:


> I was thinking about recoding the GUI and adding Whois + DNS record.  I don't know if I will though because this application isn't getting much attention.



i like your tool i run it just because im curious lol


----------



## FordGT90Concept (Oct 2, 2009)

I'm going to start an important project soon so adding the Whois/DNS Record features might be a ways off.  We'll see.


----------



## AsRock (Oct 2, 2009)

FordGT90Concept said:


> I'm going to start an important project soon so adding the Whois/DNS Record features might be a ways off.  We'll see.



Cool. People might like it more with a GUI ? ( even the option of ).


----------



## lemonadesoda (Oct 2, 2009)

Super little tool.

I suggest a STOP button that is greyed out until you press START. The STOP is useful if you enter an unresolvable or dropped connection. Waiting for all the timeouts is unnecessary.

Otherwise, excellent.

ONE MORE FEATURE:

Some connections are blocked depending on your roaming. Example, I am currently using a hotspot and while I can DNS resolve, I can HTTP:80, I cannot HTTPS:8080 or FTP:21... and some other issues.

Perhaps a "test" of key port blocking would be useful too?!


----------



## FordGT90Concept (Oct 2, 2009)

AsRock said:


> Cool. People might like it more with a GUI ? ( even the option of ).


It will remain console-ish because it's easier to copy and paste results in addition to allowing different output from different tests.  I'm definitely going to change the input at the top and the code behind the console.




lemonadesoda said:


> Super little tool.
> 
> I suggest a STOP button that is greyed out until you press START. The STOP is useful if you enter an unresolvable or dropped connection. Waiting for all the timeouts is unnecessary.


You can stop it by typing something in the input box.  But yeah, that's one of the things I will change.  The way it is now made sense earlier but it doesn't anymore. 




lemonadesoda said:


> Some connections are blocked depending on your roaming. Example, I am currently using a hotspot and while I can DNS resolve, I can HTTP:80, I cannot HTTPS:8080 or FTP:21... and some other issues.
> 
> Perhaps a "test" of key port blocking would be useful too?!


I guess I don't follow...  do you mean ping the server on a specific port?  Or attempt to create a TCP connection on that port and see if it fails?

Also, "test of key port blocking" would mean attempting the TCP connection accross mutliple ports at once, yeah?  Do you have a list of which ones specifically?


----------



## AsRock (Oct 2, 2009)

FordGT90Concept said:


> *It will remain console-ish because it's easier to copy and paste results in addition to allowing different output from different tests.  I'm definitely going to change the input at the top and the code behind the console*.
> 
> 
> 
> ...



What if info was in a copyable part.


----------



## FordGT90Concept (Oct 2, 2009)

Well, what did you have in mind instead of the console-esque appearance?


----------



## lemonadesoda (Oct 2, 2009)

FordGT90Concept said:


> Also, "test of key port blocking" would mean attempting the TCP connection accross mutliple ports at once, yeah?  Do you have a list of which ones specifically?



I'll give you an example: I have a server running in the office providing services on :80 (http), :21 (ftp), :8080 (https), and :5050 (ISDN over IP.  From a regular ISP I can access all services, however, from wifi "hotspots" there is typically a lot of port blocking... which means that ping doesnt work, ftp doesnt work, https doesnt work, and ISDNoIP doesnt work. However, regular HTTP :80 does.

So what would be useful is to allow your tool to test things OTHER than just ping or traceroute, e.g. an :80 call, :21 ftp attempt, and possibly "optional" tests. That way we can "green light" various ports/services running (or available) at a certain site.

You could set up something like this:


----------



## FordGT90Concept (Oct 2, 2009)

I'll need someone to test that because I am not blocking anything here.  I'll see what I can do though.

I'm thinking of making the GUI tabbed pages (a page dedicated to each test and the results) and getting rid of the console.


----------



## lemonadesoda (Oct 2, 2009)

I'm willing to test. You are doing a fine job and your tool has the potential to be a million download winner... with a little work 

PS. Dont overtab or overcomplicate the interface. Perhaps a GUI mainscreen for inputs, GO/STOP, and traffic lights, and a console second window for traceroute.

PPS. When you hit "START" the traffic lights go yellow, then results make them green (success) or red (timeout). Nice.


----------



## FordGT90Concept (Oct 3, 2009)

I decided to stick to the console for the time being.  So far, I added the following features:

-Stop button.
-Whois (Domain)
-Whois (Name Server)
-Whois (Registrar)

I'm working on adding other stuff.


Edit:
-DNS Record

Now to see what I can do about checking if a port is blocked.


----------



## FordGT90Concept (Oct 3, 2009)

I uploaded version 1.3.  See the first post for details.  I am not certain Port Scan will actually detect blocked ports or not.  It needs to be tested. 


Also, if someone wants to make an Icon for me to use on it, I'll use it.  The generic icons get a bit old.



No fancy colors yet.  If I ever overhaul the GUI, I'll do that.  Instead, I made "BLOCKED" all uppercase so it should stand out in a big list of scans.


----------



## Kreij (Oct 3, 2009)

How about adding a way to scan a local network and return all IPs and machine names that are in use. At work I use all static IPs on our local network and it would nice to run a quick test to see if an IP is taken. Normally you could just go to the domain server for this information, but not all of the networked machines are members of the domain (e.g. CNC machines, optical comparitors, etc.).


----------



## FordGT90Concept (Oct 3, 2009)

I'm not finding much information about how to do that.


----------



## Solaris17 (Oct 3, 2009)

FordGT90Concept said:


> I'm not finding much information about how to do that.



NOES!! this would be very usefull i would love to have a tool like this for the home network. their are a bunch of things on my network and id love be able see which device is offline. when the network goes down and comes back


----------



## FordGT90Concept (Oct 3, 2009)

Yeah, it would be useful but it looks like I'd have to use WMI/unmanaged/NetBIOS over TCP/IP and nothing is popping out at me saying "this will work."  The only sure fire way to get network IPs, from what I am finding, is to get the list from a domain server.


----------



## Solaris17 (Oct 3, 2009)

FordGT90Concept said:


> Yeah, it would be useful but it looks like I'd have to use WMI/unmanaged/NetBIOS over TCP/IP and nothing is popping out at me saying "this will work."  The only sure fire way to get network IPs, from what I am finding, is to get the list from a domain server.



could you do a range scan?

192.xxx.xx:xxxx-:xxxx and list responses?


----------



## FordGT90Concept (Oct 3, 2009)

For 192.168 (which is the smallest of the local networks), it would have to scan 65,536 IP addresses which is a lot.  Moreover, if there is a firewall on that computer, you are likely to get no response at all from it.


----------



## Solaris17 (Oct 3, 2009)

FordGT90Concept said:


> For 192.168 (which is the smallest of the local networks), it would have to scan 65,536 IP addresses which is a lot.  Moreover, if there is a firewall on that computer, you are likely to get no response at all from it.



couldent you ping localhost get that systems ip then scan the range :xxxx ?


----------



## FordGT90Concept (Oct 3, 2009)

I can get the IP addresses of the running machine easily, but not the IPs of other machines without being told what they are.

I know routers send a "Hello?" message to all connected machines in order to build a database of connections but I doubt individual computers have access to that information.

What I can do is list all active connections.  I see my server on that list but I don't see my other desktop.


----------



## Solaris17 (Oct 3, 2009)

hmmm osrry man i guess well need to wait for kreij this is beyond my skill


----------



## FordGT90Concept (Oct 3, 2009)

"net view" shows all the machine names (Windows only) but I can't find any way to turn those names into IPs.


----------



## Kreij (Oct 3, 2009)

No, actually you wouldn't need to do it that way. Grab the IP of the requesting machine, strip off the last number (say 10.1.1.x) and then scan from 10.1.1.1 to 10.1.1.254

I occansionally use a little freeware utility called "dnswalker", but it's dirt slow and only does that (unlike yours which has more functionality).


----------



## Kreij (Oct 3, 2009)

@FordGT

You should not have to use unmanaged code for network stuff.
Try this ...


```
string _HostName = System.Net.Dns.GetHostEntry(xxx.xxx.xxx.xxx).HostName;
```

I don't really care if the machine does not return a hostname (you can always just substitute "unknown" for the name), as long as it detects its presence on the network at a particular IP address.


----------



## FordGT90Concept (Oct 3, 2009)

Kreij said:


> No, actually you wouldn't need to do it that way. Grab the IP of the requesting machine, strip off the last number (say 10.1.1.x) and then scan from 10.1.1.1 to 10.1.1.254
> 
> I occansionally use a little freeware utility called "dnswalker", but it's dirt slow and only does that (unlike yours which has more functionality).


So just ping those 256 addresses and display those that respond?




Kreij said:


> @FordGT
> 
> You should not have to use unmanaged code for network stuff.
> Try this ...
> ...


That's what DNS Resolve does if you give it an IP address.  It returns something like...

##-##-##-##.dr01.lmrs.ia.frontiernet.net

... on intrernet or the IP address entered.


----------



## Kreij (Oct 3, 2009)

Yes, start a loop for the local class C IP addresses in the domain (or just on the local LAN) and if one responds to the ping try to get the hostname.


----------



## FordGT90Concept (Oct 3, 2009)

None will return a hostname (just loopback the IP address).  Not to mention, GetHostByEntry on an IP address if it doesn't have a hostname takes like 5-10 seconds.  The timeout they have set in there is way too long.


Having some 258 threads running at once is a lot but it would be the absolute fastest way to get the results.  I'll have to decide if I will break it up or limit how many are running at once.


----------



## lemonadesoda (Oct 3, 2009)

1./Port scanner isnt working fully yet. Where to enter the port data?

2./The console keeps "homing" rather than staying at the bottom of the output script


----------



## FordGT90Concept (Oct 3, 2009)

1. In the input text box.  Separate multiple port numbers by commas.  See the picture in the first post for an example.  It assumes all ports use the "localhost" IP.  Basically, it creates a TCP Listener on all the ports you specify.  Once the Listener is good, it stops it and reports back.  Theoretically, if the port is blocked, it should throw an exception when attempting to start the listener which is caught and handled.

By the way, the Port Scan is multithreaded so if you put in 80,8080,5050, it may or may not show the results in that order.  It displays them in the order it completes them.


2. That's a short fall of the .NET framework.  Everytime the app finishes writing data, I force it to scroll to the bottom through a user32.dll call and then focus the cursor back in the input text box.  I don't know of a way to do it any better than that, unfortunately, without either changing the GUI completely or making the app an entirely console application which means no stopping a task mid-stream and text-based menus.



Edit:



Kreij said:


> No, actually you wouldn't need to do it that way. Grab the IP of the requesting machine, strip off the last number (say 10.1.1.x) and then scan from 10.1.1.1 to 10.1.1.254
> 
> I occansionally use a little freeware utility called "dnswalker", but it's dirt slow and only does that (unlike yours which has more functionality).


This worked.  On my network, it does 192.168.0.1-192.168.0.255 in approximately 30 seconds.  Is that faster than dnswalker?  It gets the hostname too (which surprised me) for all except my the router.  It detected all running devices (router, my computer, my server, laser printer, and inkjet printer).


Edit 2:  I think I won't release 1.4 until I know for sure Port Scan works.  Also, if there's any other changes I should make in this release, let me hear 'em.   At this rate, I'm going to run out of version numbers. 


Edit 3: Solaris' comment about "ranges" inspired me to add port ranges to the port scan.  For example, in 1.4, the following will work:
80,90,100-110,99-95,70

It produces:

```
Started the port scan...
  100  Good
   90  Good
  101  Good
   80  Good
  102  Good
  103  Good
  104  Good
  105  Good
  106  Good
  107  Good
  108  Good
  109  Good
  110  Good
   95  Good
   96  Good
   97  Good
   98  Good
   99  Good
   70  Good
Scan Complete (500 milliseconds)
```


----------



## oily_17 (Oct 4, 2009)

I downloaded your app to try out, as it seems like a very handy tool....but got a small bug

Just tried the Ping -

Can ping router 192.168.1.1, but trying to ping any other machine and I get the windows pop up "Network Tools has stopped working..." and the app closes.
It seems to start, gives "Pinging [machine name][IPv6 address] with 32 bytes" but then crashes..

Some info - 
Running on Vista SP2 x32 (PC5)
No difference running as Admin (right click)
I can ping these machines using the command prompt.

Network is set up as follows-

Router>>PC2 & Switch1>>PC1,3,4 & Switch2>>PC5 & Print Server


Any idea's , as this does seem to be a useful tool to have.


----------



## [I.R.A]_FBi (Oct 4, 2009)

i  network tool


----------



## FordGT90Concept (Oct 4, 2009)

oily_17 said:


> ...
> 
> Any idea's , as this does seem to be a useful tool to have.


The Ping code might not be IPv6 compatible.  Can you give me the detailed message of the exception?  Most of the code there is mine so if I know what exactly isn't IPv6 capable, I should be able to fix it.


----------



## oily_17 (Oct 4, 2009)

Give me a sec

EDIT: This is the window that pops up -








And info from it-

Description:
  Stopped working

Problem signature:
  Problem Event Name:	CLR20r3
  Problem Signature 01:	nettool.exe
  Problem Signature 02:	1.3.0.0
  Problem Signature 03:	4ac7430d
  Problem Signature 04:	System
  Problem Signature 05:	2.0.0.0
  Problem Signature 06:	49cc5ec9
  Problem Signature 07:	2c1e
  Problem Signature 08:	127
  Problem Signature 09:	System.Net.Sockets.Socket
  OS Version:	6.0.6002.2.2.0.256.1
  Locale ID:	2057


----------



## FordGT90Concept (Oct 4, 2009)

When it shows the IPv6, does it have a port number on it?  Also, is the IPv4 address appended to the end of it?  I suspect the bug has something to do with a TrimPort function which could mistake a IPv6 colon for a IPv4 colon.


I PM'd you a debugging version by the way.


----------



## oily_17 (Oct 4, 2009)

Got your PM.

The IPv6 shows[fe80: :......: 15de%9] no port number or IPv4 address

Will run the debugging version now.

EDIT: OK same window, with same error

EDIT2:Just disabled IPv6 and now I get "Timed Out" but at least it does not crash..maybe need a reboot.


----------



## FordGT90Concept (Oct 4, 2009)

Well, I fixed a potential bug but I'm not sure it is the bug. 

A shame it doesn't give you the detailed description.  That makes it much harder to troubleshoot. 


Download it again at the same URL.  Hopefully it will be fixed.


----------



## oily_17 (Oct 4, 2009)

Ok, I just rebooted  (slow old work horse)

Will give it a try now.

EDIT: With IPv6 disabled I get the timed out result both with your app and through the command prompt ping

Will try again with IPv6 enabled to see if it crashes.

EDIT2: As soon as I enable IPv6 the app crashes when attempting to ping another machine


----------



## FordGT90Concept (Oct 5, 2009)

I'm trying to figure out how to enable IPv6 on my network but I think my DGL-4500 doesn't support it.  I don't see anything else that stands out as causing problems with IPv6 just by examining the code. 


Edit: If both apps time out, that most likely means either the target is unreachable or the target is not responding to pings.


----------



## oily_17 (Oct 5, 2009)

I just disabled it through the Network Connections >>Properties>>IPv6 (unchecked box)

EDIT:Yea , I think I didn't give them enough time after the reboot before trying them out


----------



## FordGT90Concept (Oct 5, 2009)

I enabled IPv6 on Windows XP via cmd: _netsh interface ipv6 install_

Pinging google.com still returned IPv4.  Is there a certain host that is IPv6 to make it return IPv6?


Edit: Ha, "localhost" worked.  I got the exception now so I should be able to fix it.


----------



## oily_17 (Oct 5, 2009)

Maybe I am looking at this wrong in ipconfig /all I get "Link-local IPv6 address...XXXX::XXXX::"

EDIT: Ahh I see you got it to work/not work..I thought it was just me there


----------



## FordGT90Concept (Oct 5, 2009)

I'm getting somewhere with it.  Instead of crashing, it now times out.  I have a theory as to why that is happening so it shouldn't be long before it is fixed, at least in the pinger.


----------



## oily_17 (Oct 5, 2009)

Yeah I get the same result 
IPv6 = crash
no IPv6 = time out

EDIT: I may be off to bed soon, if not I will try out anything if you want.

No hurry on this....I probably just give you more headaches...


----------



## FordGT90Concept (Oct 5, 2009)

I'm off to bed too.  I will have to code an ICMPv6 class which will take some time.  I then have to make it autonegotiate between v4 and v6.  I'll work on it when I get up.

The following currently aren't IPv6 compatible:
-Whois
-Ping
-Trace Route
-Trace Route (Advanced)
-Intranet Scan
-DNS Record

Not 100% certain on DNS record.  The others use that ICMPv4 code.


It times out because ICMPv4 is not compatible with ICMPv6.  Basically, the receiving computer doesn't know what it is looking at so it just loops the sent data back.  This is problematical because an ICMP Echo is supposed to recieve an Echo Reply.  No Echo Reply = timeout.


----------



## oily_17 (Oct 5, 2009)

No worries , will take it up when you have time.

On a side note, was just listening to the Rocky theme tune, so I think you can beat this lol


----------



## lemonadesoda (Oct 5, 2009)

FordGT90Concept said:


> 1. In the input text box.  Separate multiple port numbers by commas.  See the picture in the first post for an example.  It assumes all ports use the "localhost" IP.  Basically, it creates a TCP Listener on all the ports you specify.  Once the Listener is good, it stops it and reports back.  Theoretically, if the port is blocked, it should throw an exception when attempting to start the listener which is caught and handled.
> 
> By the way, the Port Scan is multithreaded so if you put in 80,8080,5050, it may or may not show the results in that order.  It displays them in the order it completes them.



Ah, so it checks "open ports" or "port responses" on localhost?

I think the other way round is more useful... ie... test if a resolved IP is providing services on said ports. That way we can not only "ping" an IP address, we can see if it answers an :80, :23, :8080, :5080 service.

Clearly I know what is running on my PC; I want to test if my PC can reach services on the distant IP. Is the distant IP a server? Or at least... can i *reach* those server services.

Actually, both options make sense if possible.  You enter the IP in the relevant 2nd input box, and the ports in the THIRD input box... which was greyed out.

(That's a bit of an amateur explaination... but hope it makes sense!)


----------



## FordGT90Concept (Oct 5, 2009)

lemonadesoda said:


> Ah, so it checks "open ports" or "port responses" on localhost?
> 
> I think the other way round is more useful... ie... test if a resolved IP is providing services on said ports. That way we can not only "ping" an IP address, we can see if it answers an :80, :23, :8080, :5080 service.
> 
> ...


Is the Port Scan helpful as is or is it pointless (ehm, should it be removed)?  I think I will add a "Remote Port Scan" option which accepts "domain: port list" and "ip: port list"

I'm not certain that ICMP packets work on any port but I'll try.


Edit: I think IPv6 is working across everything; however, it is pretty sickly on the Intranet Scan.  Apparently with Microsoft's loopback service, every IP you send a packet to responds, albeit slowly.  It basically is a bandage and not a permanent solution.


Edit 2: I did:

google.com:80,21;microsoft.com:21

Result:

```
Started the remote port scan...
    74.125.127.100:80  Good
    74.125.127.100:21  Good
    207.46.232.182:21  Good
Scan Complete (500 milliseconds)
```

Problem is, I don't think what port the ICMP is on matters.  What matters is if the network responds to pings or not...

The only way to test if a port is open is to attempt to establish a connection to it using its specific protocol.  For instance, FTP needs login credentials while HTTP needs a request.  Every port is different.


I will upload 1.4 once I make sure everything is still good in IPv4...


----------



## Kreij (Oct 5, 2009)

Hmmm ... No matter what I try to do, Windows tells me the application has stopped working.

VS Debugger is throwing a SocketException


> System.Net.Sockets.SocketException was unhandled
> Message="An attempt was made to access a socket in a way forbidden by its access permissions"
> Source="System"
> ErrorCode=10013
> ...



Probably something I'm doing wrong.


----------



## FordGT90Concept (Oct 5, 2009)

10013 = PermissionDenied

Maybe try running as Administrator?


1.4 was just uploaded to the original post.  See the bottom of that post for some of the major changes made.


----------



## Kreij (Oct 5, 2009)

FordGT90Concept said:


> 10013 = PermissionDenied
> 
> Maybe try running as Administrator?



Duh. It's going to be one of those days. lol



> 1.4 was just uploaded to the original post.  See the bottom of that post for some of the major changes made.



Got it, will continue testing for you.


----------



## Kreij (Oct 5, 2009)

1) Please override the address TextBox OnKeyPress method and make it so that when a return is hit it executes the start button code.

2) Trace Route to TPU just gives me 5 timeouts before thee Trace Complete message.


> Tracing route to www.techpowerup.com [74.86.91.2]
> over a maximum of 30 hops:
> Timed out.
> Timed out.
> ...




Trace Route (Advanced) returns nothing for me.


> Tracing route to www.techpowerup.com [74.86.91.2]
> over a maximum of 30 hops...
> Target (74.86.91.2) is unreachable.
> 
> ...


More as I play with it.
Great tool Ford


----------



## FordGT90Concept (Oct 5, 2009)

Kreij said:


> 1) Please override the address TextBox OnKeyPress method and make it so that when a return is hit it executes the start button code.


I forgot to do that.  I'll make sure it is there for 1.5.




Kreij said:


> 2) Trace Route to TPU just gives me 5 timeouts before thee Trace Complete message.
> 
> 
> 
> ...


Try dropping the www.  I noticed that some only work with www. and some work without it.  It depends how the DNS is set up.


----------



## Kreij (Oct 5, 2009)

Just a quick note, I'm on a satellite connection and my pings look like this ...


> Pinging www.techpowerup.com [74.86.91.2] with 32 bytes of data:
> Reply from 74.86.91.2: bytes=32 time=465ms TTL=128
> Reply from 74.86.91.2: bytes=32 time=480ms TTL=128
> Reply from 74.86.91.2: bytes=32 time=485ms TTL=128
> ...



I don't know what you have the timeouts set for ...


----------



## FordGT90Concept (Oct 5, 2009)

All ping timeouts are 3 seconds.


----------



## Kreij (Oct 5, 2009)

Trace route still times out if I drop the "www".


----------



## FordGT90Concept (Oct 5, 2009)

It says "Target (74.86.91.2) is unreachable." on advanced.  I'm guessing that address is either down or is not responding to ICMP requests. 

I'm changing all ping timeouts to 500 ms and making it consistent application wide.


----------



## Kreij (Oct 5, 2009)

500 ms is a bit skinny for us poor satellite users. Maybe put something in where we can set the timeout ourselves?


----------



## Kreij (Oct 5, 2009)

Maybe consider putting in a horizontal scroll bar on the display window. The text does not wrap and gets cut off whn using the default size on app launch.


----------



## FordGT90Concept (Oct 5, 2009)

Kreij said:


> 500 ms is a bit skinny for us poor satellite users. Maybe put something in where we can set the timeout ourselves?


I'm not entirely convinced that setting it has any impact.  I'll leave it at 3 seconds then.

Edit: One of them was at 500 ms.  I'll double check and make sure they are all using the new value...


Here is my trace routes of www.techpowerup.com:

```
Tracing route to www.techpowerup.com [74.86.91.2]
over a maximum of 30 hops:
  1   31 ms  74.44.40.1     
  2   31 ms  74.40.43.113   
  3   31 ms  74.40.3.237    
  4   31 ms  74.40.4.142    
  5   31 ms  206.223.119.12 
  6   31 ms  129.250.3.98   
  7   62 ms  129.250.3.17   
  8   78 ms  129.250.2.174  
  9   46 ms  157.238.224.70 
 10   46 ms  66.228.118.207 
 11   46 ms  66.228.118.182 
Trace Complete

Tracing route to www.techpowerup.com [74.86.91.2]
over a maximum of 30 hops...
Traced to 11 addresses.  Getting hostnames...
Hostnames obtained.  Results:
Hop Latency    IP Address        Hostname   
  1   15 ms  74.44.40.1       74-44-40-1.dr01.lmrs.ia.frontiernet.net
  2   62 ms  74.40.43.113     
  3   31 ms  74.40.3.237      ge-3-1-0--0.cr02.chcg.il.frontiernet.net
  4   46 ms  74.40.4.142      ge-2-0-0--0.br01.chcg.il.frontiernet.net
  5   46 ms  206.223.119.12   xe-0.equinix.chcgil09.us.bb.gin.ntt.net
  6   31 ms  129.250.3.98     ae-0.r21.chcgil09.us.bb.gin.ntt.net
  7   93 ms  129.250.3.17     as-1.r21.dllstx09.us.bb.gin.ntt.net
  8   62 ms  129.250.2.174    po-2.r02.dllstx09.us.bb.gin.ntt.net
  9   93 ms  157.238.224.70   te2-1.cer02.dal01.dallas-datacenter.com
 10   46 ms  66.228.118.207   po2.dar02.dal01.dallas-datacenter.com
 11   62 ms  66.228.118.182   po2.fcr02.dal01.dallas-datacenter.com
```



Kreij said:


> Maybe consider putting in a horizontal scroll bar on the display window. The text does not wrap and gets cut off whn using the default size on app launch.


Will do.


----------



## Kreij (Oct 5, 2009)

I still get nothing from trace route. I will look into it on my end.

When I do any of the "Whois" commands I get "no match" responses.


----------



## FordGT90Concept (Oct 5, 2009)

The trouble with whois is finding a source that has all the domain names.  It is using whois.internic.net right now (which appears to be the fallback for any whois query).


Edit:
Whois (Domain) - Just a domain name (e.g. example.com).
Whois (Name Server) - An IP address or domain name (e.g. 192.16.0.192 or example.com).
Whois (Registrar) - A business name (e.g. Network Solutions).


----------



## Kreij (Oct 5, 2009)

I have a domain registered through Network Solutions (www.northfx.com) that returns no match also.
internic.net does work and returns a registrar of GoDaddy, and a whois server of whois.godaddy.com


----------



## Easy Rhino (Oct 5, 2009)

how the hell did i miss this last week. good work.


----------



## Kreij (Oct 5, 2009)

Tracert in a cmd window works ...


> Tracing route to www.techpowerup.com [74.86.91.2]
> over a maximum of 30 hops:
> 
> 1     1 ms    <1 ms    <1 ms  10.10.10.50
> ...


----------



## lemonadesoda (Oct 5, 2009)

This little util is really coming along   Great job

*****
Intranet scan gave me this:


----------



## FordGT90Concept (Oct 5, 2009)

Kreij said:


> Tracert in a cmd window works ...


Heh, I bet it is that 500 ms rearing its head.  I'll upload 1.4.1 soon which has it set to 3 sec...


----------



## lemonadesoda (Oct 5, 2009)

Hitting return (when entering data) should automatically initiate the start button.


----------



## FordGT90Concept (Oct 5, 2009)

Kreij said:


> I have a domain registered through Network Solutions (www.northfx.com) that returns no match also.
> internic.net does work and returns a registrar of GoDaddy, and a whois server of whois.godaddy.com


I tried:

Whois (Domain): northfx.com
Result:

```
Domain Name: NORTHFX.COM
Registrar: NETWORK SOLUTIONS, LLC.
Whois Server: whois.networksolutions.com
Referral URL: http://www.networksolutions.com
Name Server: NS1.RAQ-SERVER.NET
Name Server: NS2.RAQ-SERVER.NET
Status: clientTransferProhibited
Updated Date: 16-jan-2008
Creation Date: 29-mar-1997
Expiration Date: 30-mar-2013
```
I'll make it trim "www."




lemonadesoda said:


> Intranet scan gave me this:
> 
> http://img.techpowerup.org/091005/Capture076.jpg


I need to add debugging info throughout...




lemonadesoda said:


> Hitting return (when entering data) should automatically initiate the start button.


That is already implemented and will be released soon.


----------



## FordGT90Concept (Oct 5, 2009)

1.4.1 has been uploaded.  The error handling isn't added yet but hopefully the one I did add will catch that error.


----------



## lemonadesoda (Oct 5, 2009)

Nice fixes in 1.4.1

Why does a ping (e.g. to techpowerup.com) take 140ms whereas a remote port scan to the same address times out at 500ms?  Maybe there is nothing that can be done... and this is a code quirk. But is there a "real" explanation for this?

I think there is a button missing: a button with just the TPU logo that JUMPS TO THIS THREAD , or at least, a help thread, once you have written one


----------



## lemonadesoda (Oct 5, 2009)

Intranet scan needs some work/thinking about.







The output is unsorted and has lots of redundant data.

The error is there... but it still completed the run.


----------



## FordGT90Concept (Oct 5, 2009)

lemonadesoda said:


> Why does a ping (e.g. to techpowerup.com) take 140ms whereas a remote port scan to the same address times out at 500ms?  Maybe there is nothing that can be done... and this is a code quirk. But is there a "real" explanation for this?


What are you entering to make the Remote Port Scan timeout?

500ms comes from a thread that monitors the port scans (retires them, basically).  It runs every 500ms so that is the absolute minimum time it will take to finish the port scan.  Ping is a better indicator of network performance.




lemonadesoda said:


> I think there is a button missing: a button with just the TPU logo that JUMPS TO THIS THREAD , or at least, a help thread, once you have written one


A good idea but, I think I'll wait on that one (would need Wizzard's blessing and a permanent home).




lemonadesoda said:


> Intranet scan needs some work/thinking about.
> 
> http://img.techpowerup.org/091005/Capture077.jpg
> 
> ...


Ugh, it strikes again.  I spent like three hours trying to prevent it from listing everything and I thought I had it fixed.  My only permanent solution is to only display those that have a name.

I was hoping it would catch the error but apparently it didn't.  I just gone done adding a system for handling exceptions so I'll make sure it is covering the intranet code...

1.4.2 has a more robust Whois system.


----------



## FordGT90Concept (Oct 5, 2009)

1.4.2 uploaded.  Description on the original post.


I can sort the Intranet Scan output but to do so, I would have wait until the scan completes before displaying anything.  As such, it would appear as "Intranet Scan (Sorted)" in the drop down box.  If that's what you want, I need to know what to sort it by (ip or name).


----------



## lemonadesoda (Oct 5, 2009)

Given this console refresh issue, I would suggest using the console to print intermin results, then once finish, CLEAR the console and print sorted.

Re portscan, I just did techpowerup.com:80 and 500ms was the response, whereas it was 130ms on ping.


----------



## FordGT90Concept (Oct 5, 2009)

lemonadesoda said:


> Given this console refresh issue, I would suggest using the console to print intermin results, then once finish, CLEAR the console and print sorted.


Clearing the console would get rid of all previous tests as well.  It also won't be very easy to gather all the feedback for a single output (like Trace Route Advanced does) because it is specifically designed to keep the user in the know.  This is why it would have to be a separate item under the drop down list.  If you really want it, I can do it but I need to know whether to sort it by name or by address.




lemonadesoda said:


> Re portscan, I just did techpowerup.com:80 and 500ms was the response, whereas it was 130ms on ping.


Oh, I thought it timed out/didn't work.  Yeah, on a few things (everything that uses a monitor thread), 500ms is the bare minimum.  The result could have been received in only 140ms but it currently isn't keeping track of individual requests.


----------



## lemonadesoda (Oct 5, 2009)

1./ OK, I agree with philosophy of console. Keep it as is. Perhaps (not now) once the feature set is finished, consider a second tab for lanscan, and a third tab for traffic lights.  That will allow you to implement it differently, whilst keeping console.

2./ OK, thanks for explanation. I did notice that "port open" is different from "port response"... but understand that coding it aint straightforward due to different "protocols" at each port. Perhaps standard :21 and :80 could be implemented though? A traffic light showing that not only is the port open, but is "served".


----------



## lemonadesoda (Oct 5, 2009)

Can you show a graphic in the console?  





A flag after each traceroute IP would be great to see the internet route around the world!


----------



## FordGT90Concept (Oct 6, 2009)

lemonadesoda said:


> 1./ OK, I agree with philosophy of console. Keep it as is. Perhaps (not now) once the feature set is finished, consider a second tab for lanscan, and a third tab for traffic lights.  That will allow you to implement it differently, whilst keeping console.
> 
> 2./ OK, thanks for explanation. I did notice that "port open" is different from "port response"... but understand that coding it aint straightforward due to different "protocols" at each port. Perhaps standard :21 and :80 could be implemented though? A traffic light showing that not only is the port open, but is "served".





lemonadesoda said:


> Can you show a graphic in the console?
> http://img.techpowerup.org/091005/Capture079.jpg
> 
> A flag after each traceroute IP would be great to see the internet route around the world!


All great ideas but they'll have to wait for NetTool 2.0 if I ever get around to making it.  Instead of being console-centric, it will be GUI centric which will allow those features to be added.


Edit: For my future reference: site


----------



## Solaris17 (Oct 6, 2009)

runngin intranet scan immedietly kills the tool on win 7 x64 the other versions worked for me. ill try some of the other things like whois and see if its that setting particularly.

EDIT: just that setting the others work


----------



## FordGT90Concept (Oct 6, 2009)

It doesn't give you any detailed text?  Intranet scan apparently likes bugs.


----------



## Solaris17 (Oct 6, 2009)

FordGT90Concept said:


> It doesn't give you any detailed text?



nope just a stopped working prompt and it shuts down as soon as you hit ok

EDIT::







and thats all she wrote.


----------



## FordGT90Concept (Oct 6, 2009)

Blah, I'll add more catches...

Edit: Oops, I found a place I intended to put a catch but forgot to...


----------



## lemonadesoda (Oct 6, 2009)

Solaris, dont click the button. leave the error dialog there and the scan keeps running.

GT: http://support.stora.hipserv.com/en/router/testportforward.html


----------



## FordGT90Concept (Oct 6, 2009)

lemonadesoda said:


> GT: http://support.stora.hipserv.com/en/router/testportforward.html


Their app only checks 80, 21, 22, and 443.  I can do 80, 21, and 443 with a bit a research but 22 is proprietary.


Edit: the script that actually does the port test is here: http://support.stora.hipserv.com/cpetest


How about a full list of all the non-proprietary port numbers you want checked?


----------



## Kreij (Oct 6, 2009)

FordGT90Concept said:


> All great ideas but they'll have to wait for NetTool 2.0 if I ever get around to making it.  Instead of being console-centric, it will be GUI centric which will allow those features to be added.
> 
> 
> Edit: For my future reference: site



If you need a hand. let me know. I've always enjoyed doin GUIs.



FordGT90Concept said:


> Blah, I'll add more catches...



Gotta love exception handling


----------



## FordGT90Concept (Oct 6, 2009)

Kreij said:


> If you need a hand. let me know. I've always enjoyed doin GUIs.


I think I will but not ready to commit to 2.0 yet.  For sure I would want to make the TraceRoute and Intranet Scan in a custom GUI object (similar to a detailed list view).  Port Forward Scan would use the same GUI object as the Intranet Scan.




Kreij said:


> Gotta love exception handling


Oh the sarcasm.


----------



## Solaris17 (Oct 6, 2009)

lemonadesoda said:


> Solaris, dont click the button. leave the error dialog there and the scan keeps running.
> 
> GT: http://support.stora.hipserv.com/en/router/testportforward.html



ill test it but itf thats the case wtf is the point?


----------



## FordGT90Concept (Oct 7, 2009)

I had an idea last night and implemented it this morning.  Hopefully it will fix the Intranet Scan crashes but, no guarentee.  As always, details and the file are on the original post.


----------



## Solaris17 (Oct 7, 2009)

FordGT90Concept said:


> I had an idea last night and implemented it this morning.  Hopefully it will fix the Intranet Scan crashes but, no guarentee.  As always, details and the file are on the original post.



works great


----------



## FordGT90Concept (Oct 7, 2009)

W00t!


----------



## FordGT90Concept (Oct 8, 2009)

Uploaded 1.4.5.  Details on the original post.  Thanks to lemonadesoda in helping to debug it.


----------



## Kreij (Oct 8, 2009)

Both Trace Route and TR (Advanced) do not display the final destination in the listing.
(e.g. techpowerup)

From windows tracert ...


> Tracing route to techpowerup.com [74.86.91.2]
> over a maximum of 30 hops:
> 
> 1    <1 ms    <1 ms    <1 ms  10.10.10.251
> ...



From Nettools TR


> Tracing route to techpowerup.com [74.86.91.2]
> over a maximum of 30 hops:
> 1    0 ms  10.10.10.251
> 2   78 ms  66.206.51.1
> ...



From Nettools TR (Advanced)


> Tracing route to techpowerup.com [74.86.91.2]
> over a maximum of 30 hops...
> Traced to 11 addresses.  Getting hostnames...
> Hostnames obtained.  Results:
> ...



windows tracert also found more names.

Edit : Using 1.4.5 on a DSL connection

Edit 2 : You need a clear results button, so you can get a blank display area again.

EDIT 3 :
Intranet scan only returns my workstation


> Started the intranet scan...
> 10.10.10.250     epl-infotech.apexepl.com
> Scan Complete (4 seconds)



EDIT 4 :
Can you put the version number in the title bar?
Here's how I do it in the main form of my app...

```
Assembly _Assembly = Assembly.GetEntryAssembly();
AssemblyName _AssemblyName = _Assembly.GetName();
Version _Version = _AssemblyName.Version;

this.Text += "   Version : " + _Version;
```


----------



## FordGT90Concept (Oct 8, 2009)

Kreij said:


> Both Trace Route and TR (Advanced) do not display the final destination in the listing.
> (e.g. techpowerup)...


Fixed. Tracert might find more names because it has a longer delay.




Kreij said:


> Edit 2 : You need a clear results button, so you can get a blank display area again.


Added.




Kreij said:


> EDIT 3 :
> Intranet scan only returns my workstation


There's three potential reasons for this:
1) There are no other computers at 10.10.10.#
2) There are other computers but they aren't named.
3) Your computer is IPv4 and the rest are IPv6.




Kreij said:


> EDIT 4 :
> Can you put the version number in the title bar?
> Here's how I do it in the main form of my app...
> 
> ...


Fixed and thanks for providing code.


1.4.6 with all the above changes is on the original post.


----------



## Kreij (Oct 8, 2009)

There's three potential reasons for this:
1) There are no other computers at 10.10.10.#

All of the computers and network capable devices on our subnet are in the range of 10.10.10.xxx

2) There are other computers but they aren't named.

All computers are named. however, it still would be nice to see an IP that is in use even if it is not a named computer or other network capable device (eg. Printer, CNC, etc.)

3) Your computer is IPv4 and the rest are IPv6.

All computers and network capable devices here are IPv4.


----------



## FordGT90Concept (Oct 8, 2009)

Did it work before version 1.4.5?


----------



## Kreij (Oct 8, 2009)

1.4.5 is the first version I pulled here at work. IF you post a previous version I can test that (if you still have the zips).

Both TR and TR(Advanced) work fine.


----------



## FordGT90Concept (Oct 8, 2009)

Maybe your router, switch, or hub is blocking the scan?  It could see it as a DOS attack potentially.


The reason why I don't list unnamed sources is because, even if a device doesn't respond, the router/host still does.  That is, it would list the whole range that was scanned if that check wasn't there.


I made it so it would show the ip range it is scanning before it starts (e.g. Scanning intranet addresses from 192.168.0.1 to 192.168.0.255...).  That's not a significant enough reason to release it though...


----------



## Kreij (Oct 8, 2009)

What is your software doing to detect machines when it does the intranet scan ?


----------



## FordGT90Concept (Oct 8, 2009)

Just Dns.GetHostEntry(ip).  I imagine if the DNS doesn't have a list, it will only find itself.


----------



## Kreij (Oct 8, 2009)

*Fun with Dick and Jane ... and Ping and WMI and ...*

This works pretty well for intranet scanning.

```
using System;
using System.Net;
using System.Net.NetworkInformation;
using System.Management;
using System.Windows.Forms;

namespace DNSTest
{
    public partial class Form1 : Form
    {
        PingReply _Reply;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string _ipaddr;

            for (int i = 1; i < 255; i++)
            {
                textBox2.Update();
                _ipaddr = "10.10.10." + i.ToString();

                textBox2.Text += _ipaddr + " - ";

                Ping _Ping = new Ping();
                _Reply = _Ping.Send(_ipaddr, 100);
                if (_Reply.Status == IPStatus.Success)
                {
                    // Ping returned good, try to get the hostname

                    ManagementScope _scope = new ManagementScope(@"\\" + _ipaddr + @"\root\cimv2");
                    ObjectQuery _oj = new ObjectQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled='True'");
                    ManagementObjectSearcher _mos = new ManagementObjectSearcher(_scope, _oj);
                    ManagementObjectCollection _moc;

                    try
                    {
                        _moc = _mos.Get();
                    }
                    catch (Exception)
                    {
                        // Timeout on Get command, not a WMI supported device.
                        textBox2.Text += "Unknown Device" + Environment.NewLine;
                        continue;
                    }

                    foreach (ManagementObject _obj in _moc)
                    {
                        textBox2.Text += _obj["DNSHostName"].ToString() + Environment.NewLine;
                    }
                    _Ping.Dispose();
                }
                else
                {
                    // Ping did not return success
                    textBox2.Text += Environment.NewLine;
                    _Ping.Dispose();
                }
            }
        }
    }
}
```

It does a ping to an address and if it returns good (it got a reply) it uses the System.Management APIs to try to get a hostname. 

It has a button to start the loop (which would not be static in the real program) and a TextBox for output. It's resonably quick, but needs work as it does not update and respond (to the mouse) correctly while the loop is running. 

You don't need to use it if you don't want, I'm just tired of app programming and figured I play with network stuff to relax. lol


----------



## FordGT90Concept (Oct 8, 2009)

I tried your code and it only got the Host Name of my computer.  On the rest, it returns:

Windows 2003 Server: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
Router, Printers: The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)


```
Scanning intranet addresses from 192.168.0.1 to 192.168.0.255...
192.168.0.191    by-2009
192.168.0.128    Unknown Device
192.168.0.111    Unknown Device
192.168.0.199    Unknown Device
192.168.0.1      Unknown Device
Scan Complete (18 seconds)
```
I could just use Dns.GetHostEntry on those IPs...

I wonder why Ping class works but my ICMP class doesn't.


Edit:

```
Scanning intranet addresses from 192.168.0.1 to 192.168.0.255...
192.168.0.191    by-2009
192.168.0.111    PTR-LASER
192.168.0.128    SERVER
192.168.0.199    PTR-MFC
192.168.0.1      192.168.0.1
Scan Complete (16 seconds)
```
Dns.GetHostEntry() appears to be a little bit faster even.


----------



## Kreij (Oct 8, 2009)

Yes, but the DNS class doesn't seem to work for crap if you are not running from the DNS server (as far as I can tell).

I got a simlilar error from HRESULT (but not access denied) when I first wrote it, but it was a timeout (which is why I added the try-catch clause). I'm not sure why you are getting that exception running from the server.

Are you runnning a firewall on the client machines?


----------



## FordGT90Concept (Oct 8, 2009)

The only firewall running is in the router.  I am debugging on BY-2009.  The server is a domain name server but its only member is itself.

Edit: This seems to be working well so I think I'll upload 1.4.7 soon:

```
private void Looper(object param)
        {
            try
            {
                IPAddress ip = (IPAddress)param;
                Ping ping = new Ping();
                if (ping.Send(ip, StaticMethods.PingTimeOut).Status == IPStatus.Success)
                {
                    IntranetScanHandler e = IntranetScans;
                    if (e != null)
                        e(IntranetScanResult.Responded, ip.ToString(), Dns.GetHostEntry(ip).HostName);
                    ping.Dispose();
                }
                else
                {
                    IntranetScanHandler e = IntranetScans;
                    if (e != null)
                        e(IntranetScanResult.TimedOut, ip.ToString());
                    ping.Dispose();
                }
            }
            catch (ExtendedException ex)
            {
                Program.MainForm.ExceptionCaught(ex);
            }
        }
```


----------



## Kreij (Oct 8, 2009)

Looks good, I'll be happy to test 1.4.7 here at work.

Ever seen this little freeware gem? http://www.spiceworks.com/

... and we're just trying to get text output. lol


----------



## FordGT90Concept (Oct 8, 2009)

1.4.7 is uploaded.


I've never heard of Spice Works.


----------



## Solaris17 (Oct 8, 2009)

damn iv come to the conclusion its hit or miss with me as too when this works. im now failing intranet scan on all builds including the new 1.47 its like ti works when it wants to iv tried computability mode etc as well.


----------



## Kreij (Oct 8, 2009)

Intranet scan from 1.4.7 when run on my workstation (the only one that shows a name) ...


> Scanning intranet addresses from 10.10.10.1 to 10.10.10.255...
> 10.10.10.4       10.10.10.4
> 10.10.10.5       10.10.10.5
> 10.10.10.3       10.10.10.3
> ...



It found all of the IPs in use, but they are out of order and don't show names.
It is darn fast though !!!


----------



## FordGT90Concept (Oct 8, 2009)

Solaris17 said:


> damn iv come to the conclusion its hit or miss with me as too when this works. im now failing intranet scan on all builds including the new 1.47 its like ti works when it wants to iv tried computability mode etc as well.


Are you getting errors?




Kreij said:


> It found all of the IPs in use, but they are out of order and don't show names.


If it didn't have a name, it would take 15 seconds for it to get it (Dns.GetHostEntry has a very long timeout).  That is the case with my router (192.168.0.1).  Because you got your results in well under 15 seconds, I'd guess the IPs are the established names of those machines.  Kind of odd, but possible.

The only way I could sort it is if I wait to output until all responses are gathered (like Trace Route Advanced).  If that is an important feature, I could add Intranet Scan (Sorted).  Should it be sorted by name or IP though?




Kreij said:


> It is darn fast though !!!


Heh, it better be.  It uses 255 threads.


----------



## Kreij (Oct 8, 2009)

The System.Management APIs take forever also, if the IP is not in use (that's why I did the ping first in my little code test). It does, however, return the name fairly quickly if the IP is in use (and is a windows machine).

Sort by IP Address.


----------



## Solaris17 (Oct 8, 2009)

no errors other than its stopped responding


----------



## FordGT90Concept (Oct 8, 2009)

Kreij said:


> The System.Management APIs take forever also, if the IP is not in use (that's why I did the ping first in my little code test). It does, however, return the name fairly quickly if the IP is in use (and is a windows machine).
> 
> Sort by IP Address.


The router and printers are not Windows.  Dns.GetHostEntry appears to work better for this purpose.  I wish I could recode it with a shorter timeout though.

Alright.  1.5 will feature Intranet Scan (Sorted) which sorts by IP.




Solaris17 said:


> no errors other than its stopped responding


Does it ever snap out of it (it should in a under a minute)?

I wonder if the 255 threads it starts is stressing your overclock.


----------



## FordGT90Concept (Oct 8, 2009)

1.5 uploaded.  Details on the original post.


----------



## Solaris17 (Oct 8, 2009)

FordGT90Concept said:


> The router and printers are not Windows.  Dns.GetHostEntry appears to work better for this purpose.  I wish I could recode it with a shorter timeout though.
> 
> Alright.  1.5 will feature Intranet Scan (Sorted) which sorts by IP.
> 
> ...



it does this with all builds and it wont come out of it. I play crysis on this machine and run wprime benches and she runs fine and as far as i know the other builds didnt have 255 threads?


----------



## FordGT90Concept (Oct 8, 2009)

All Intranet Scan builds had/have ~257 threads (255 scans, 1 monitor, 1 form).  Crysis, wPrime, etc. won't even come close to that number but the threads they run are _much_ heavier.

Intranet Scan and Intranet Scan (Sorted) are the only two actions to run 100+ thread concurrently.  Trace Route (Advanced) could if you had 99+ hops.


----------



## Kreij (Oct 8, 2009)

Ran IS at home. Both IS and IS(Sorted) take about 4 seconds with only 3 devices on the lan.
Local machine spits out name, Linksys router and Unix based NAS do not (only IPs as expected).


----------



## FordGT90Concept (Oct 8, 2009)

Wow, the best I can do is 16 seconds with my D-Link router always being last.


----------



## Kreij (Oct 8, 2009)

TR at home on satellite connection for both techpowerup.com and www.techpowerup.com


> Tracing route to www.techpowerup.com [74.86.91.2]
> over a maximum of 30 hops:
> Timed out.
> Timed out.
> ...



Both for TR(Advanced)


> Tracing route to techpowerup.com [74.86.91.2]
> over a maximum of 30 hops...
> Target (74.86.91.2) is unreachable.
> 
> ...



Version 1.5.0


----------



## Kreij (Oct 8, 2009)

GAH !!!  Ford you Slacker !!!

You're not even checking for well formed domain names before running the tests?

Bad coder !! Now off to your room with no dinner.


----------



## FordGT90Concept (Oct 8, 2009)

Kreij said:


> GAH !!!  Ford you Slacker !!!
> 
> You're not even checking for well formed domain names before running the tests?
> 
> Bad coder !! Now off to your room with no dinner.


Some tests I do, some I don't.  The main reason being is that the input could be IPv6, IPv4, a combination of both, or a domain name.  I leave it to Dns.GetHostEntry() to sort out what's what and handle it if it is clueless.


1.5.1 uploaded.  I changed several things in regards to both Trace Route actions.


----------



## Kreij (Oct 9, 2009)

Just teasing on the input checks. 

No change for me in either TR function.
TR gives me timeouts, TRA give me unreachable.

Suggestion : Since you added the clear display (which works great, thank you) now would be a good time to add a "Copy results to clipboard" button to make things even easier.


----------



## FordGT90Concept (Oct 9, 2009)

Kreij said:


> No change for me in either TR function.
> TR gives me timeouts, TRA give me unreachable.


What does Ping do?  The Ping code is effectively the same as the Trace Route code (only difference is the TimeToLive attribute).




Kreij said:


> Suggestion : Since you added the clear display (which works great, thank you) now would be a good time to add a "Copy results to clipboard" button to make things even easier.


I'm running out of space up there.


----------



## lemonadesoda (Oct 9, 2009)

Time to program a drop-down 

Nice recycleable code.

OMG I've got to download ANOTHER version. This utility I have downloaded more times per day than any other utility ever.


----------



## oily_17 (Oct 9, 2009)

For me

Ping gives timeouts, TR gives me timeouts, TRA give me unreachable and IS finds my PC's and router and then "stops working"


----------



## Kreij (Oct 9, 2009)

FordGT90Concept said:


> What does Ping do?  The Ping code is effectively the same as the Trace Route code (only difference is the TimeToLive attribute).




```
Pinging techpowerup.com [74.86.91.2] with 32 bytes of data:
Reply from 74.86.91.2: bytes=32 time=629ms TTL=128
Reply from 74.86.91.2: bytes=32 time=397ms TTL=128
Reply from 74.86.91.2: bytes=32 time=605ms TTL=128
Reply from 74.86.91.2: bytes=32 time=794ms TTL=128
Ping statistics for 74.86.91.2:
	Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
	Minimum = 397ms, Maximum = 794ms, Average = 606ms
```



> I'm running out of space up there.


Add a menu strip on the top above the buttons for less used utilities and such.

This is a great utility and the people here are gonna break your balls until it's perfect. lol


----------



## FordGT90Concept (Oct 9, 2009)

lemonadesoda said:


> Nice recycleable code.


That's the sad part, it really isn't.   It won't be designed around recycleability until 2.0.  This is more or less "proof of concept."  That is, find out what works best so I see the whole picture before I stick it in a box and shake it up.




oily_17 said:


> For me
> 
> Ping gives timeouts, TR gives me timeouts, TRA give me unreachable and IS finds my PC's and router and then "stops working"


I'm working on changing all three over to .NET Ping class instead of my custom ICMP class.  Hopefully that will work for everyone.

Not sure why Intranet Scan would stop responding beyond the ~257 threads issue (similar to what Solaris is having problems with).  I could break it up to fewer threads but every time the number of threads is halved, so is the performance.




Kreij said:


> Add a menu strip on the top above the buttons for less used utilities and such.


I think that's what I'll do....

File ->
-Exit

With Output ->
-Copy to Clipboard
-Clear




Kreij said:


> This is a great utility and the people here are gonna break your balls until it's perfect. lol


I noticed.  I haven't got much GTA4 game time in (it's minimized).


----------



## Kreij (Oct 9, 2009)

I've started on some concepts for the 2.0 GUI that I will run past you.
Try to put everything you can in static classes so they can be called without having to instantiate the class and can be eventually put into DLLs.
Just keep working on the network code. 

I don't want to horn-in on your project, not do I want any credit, but dammit man, you are going to need some help if you want more GTA4 time.


----------



## FordGT90Concept (Oct 9, 2009)

Kreij said:


> Try to put everything you can in static classes so they can be called without having to instantiate the class and can be eventually put into DLLs.


All classes heavily rely on delegates/events in order to handle the multithreading nature of everything.  As such, it is not a good idea to make them static.

All it would take is a copy and paste to another project to build them into a DLL.  One can reference the current executable ("NetTool" namespace) to gain access to most of the existing classes/delegates.  The events currently return params through an object[] so it's not very user friendly yet.


----------



## Kreij (Oct 9, 2009)

*2.0 Gui*

Okay here is something I tossed together.







The buttons are created dynamically by information entered into an XML file.
The reason I did this is so that the text can be changed easily. You cannot really add more buttons ad-hoc (as there will be no code behind them), but it makes life a little easier for version changes if need be. I just added three, but in the working version there will be everything.

The settings GroupBox control labels will change depending on the button pressed. I just put something in the labels to view. Also the settings GroupBox text would change to let you know what you are changing the settings for.

The "Run" button, once clicked, will change to the "Stop" button so we do not need two buttons on the interface to start and stop tests.

I added a status strip at the bottom for realtime information of what is currently going on. There is nothing there now, but we can add labels and progress bars for nice effect.

Like I said, this is a quick mock up. I am putting this out so that maybe other TPU'ers will give feedback on the GUI (instead of just PM you).


----------



## FordGT90Concept (Oct 9, 2009)

Trace Route is updated.  All that's left is Trace Route (Advanced).

I hope it fixes all the problems...



Kreij said:


> The buttons are created dynamically by information entered into an XML file.
> The reason I did this is so that the text can be changed easily. You cannot really add more buttons ad-hoc (as there will be no code behind them), but it makes life a little easier for version changes if need be. I just added three, but in the working version there will be everything.


The text can already be changed easily:

```
public const string ACT_PING = "Ping";
        public const string ACT_TRACE_ROUTE = "Trace Route";
        public const string ACT_TRACE_ROUTE_ADVANCED = "Trace Route (Advanced)";
        public const string ACT_PORT_SCAN = "Port Scan";
        public const string ACT_REMOTE_PORT_SCAN = "Remote Port Scan";
        public const string ACT_INTRANET_SCAN = "Intranet Scan";
        public const string ACT_INTRANET_SCAN_SORTED = "Intranet Scan (Sorted)";
        public const string ACT_DNS_RECORD = "DNS Record";
        public const string ACT_DNS_RESOLVE = "DNS Resolve";
        public const string ACT_DNS_RESOLVE_ADVANCED = "DNS Resolve (Advanced)";
        public const string ACT_WHOIS_DOMAIN = "Whois (Domain)";
        public const string ACT_WHOIS_NAMESERVER = "Whois (Name Server)";
        public const string ACT_WHOIS_REGISTRAR = "Whois (Registrar)";
```
The next build will make that available to you via StaticMethods.


My highest priority is to keep only one file (offers many advantages) so if there were any XML files, they would have to be an embeded resource.


Edit: The GUI version won't need Intranet Scan (Sorted).  The GUI will be able to sort according to column.


----------



## Kreij (Oct 9, 2009)

Yes, but in order to change the text of a button (or whatever) it would require recompiling the executable if you setting it in the code. Not so if the app pulls the data out of an XML file.

Xml files do not have to be embedded resources. When you create the setup project for the app they will be included in the installation directory.

I love this stuff. Thanks for putting up with my ideas Ford, and feel free to trash anything I say any time.


----------



## Kreij (Oct 9, 2009)

Okay, Mrs. Kreij just told me I need to redesign the interior of the 40x60 ft outbuilding we have under construction. It's too late in the evening to have my brain processing that and the networking coding. I am just going to do a system pause and go to bed. Back tomorrow.

Have a good evening all.


----------



## FordGT90Concept (Oct 9, 2009)

1.5.2 uploaded.  If there is still problems, I have a theory as to why...


G'Nite Kreij


----------



## Kreij (Oct 9, 2009)

Pulled 1.5.2 here at work (DSL, not satellite).

All 3 output area menu functions work perfectly for me. Nice job and it unclutters the IO area a bit

Intranet scan works and is sorted. It would still be nice to see device names though. Maybe you could incorporate an option to either do a fast (no/few names) or a slow (does everything it can to find the name even though the timeouts take a long time) scan.

How about the ability to input a desired range on the intranet scan? (eg. 150 - 200)


----------



## lemonadesoda (Oct 9, 2009)

> I think that's what I'll do....
> 
> File ->
> -Exit
> ...



Better standard to follow... and will give room for logical expansion:

File -> Print
File -> Send console to email
File -> Exit

Edit -> Copy

View -> Fullscreen
View -> Clear

Help -> TPU help page

Your suggested "with output" menu bar shows you need some sleep. The blurry line between reality and a programmers brain is getting wooly. I dread to think how you are talking with your family right now!


----------



## FordGT90Concept (Oct 9, 2009)

Kreij said:


> Intranet scan works and is sorted. It would still be nice to see device names though. Maybe you could incorporate an option to either do a fast (no/few names) or a slow (does everything it can to find the name even though the timeouts take a long time) scan.


Does "net view" work to get the names (in command prompt)?




Kreij said:


> How about the ability to input a desired range on the intranet scan? (eg. 150 - 200)


I can do that...




lemonadesoda said:


> Better standard to follow... and will give room for logical expansion:
> 
> File -> Print
> File -> Send console to email
> ...


Yeah, it was past my bed time.  It is "Output Area" in the most recent build.  Saying "View" isn't specific enough because "View -> Clear" could imply it will reset the entire GUI.

If you think you will use Send to Email, I'll add it.  .NET doesn't like printers very much so I think that's more work than it's worth.

I will add Help -> Link to TPU.


----------



## Kreij (Oct 9, 2009)

Yes, Net View shows computer names (including printers) but no IP Addresses.


----------



## FordGT90Concept (Oct 9, 2009)

Kreij said:


> Yes, Net View shows computer names (including printers) but no IP Addresses.


I'm not sure why it can't get them. 

You got any code that does work?


1.5.3 uploaded with the suggestions above implemented.


----------



## Kreij (Oct 9, 2009)

FordGT90Concept said:


> I'm not sure why it can't get them.
> 
> You got any code that does work?



The code I posted (post #107) using ping and then the System.Management classes works for me, but that is the code that was giving you access denied exceptions when run from your server.
I don't have a server machine with VS on it to debug that unfortunately.


----------



## FordGT90Concept (Oct 9, 2009)

You think Dns.GetHostEntry or Management is faster?  I could do the faster one and do the other for all those that the first didn't get.


Is the one that returns a name (250) the domain name server and all the rest are members of that domain?  If so, that explains it.  The server has all the domain name information and expects all requests to be serviced through it.


Edit: I tried it and it takes twice as long (32 seconds instead of 16).  That could be because of my D-Link router...

Anyway, I'll upload it and hopefully it will get the names...


Edit: 1.5.4 uploaded for you.


----------



## Kreij (Oct 9, 2009)

Sorry I didn't get back right away. I'm coding here myself 

Both IS's work great. Found all the names. Took 46 seconds for both. Excellent.
I will verify that the ones that only returned IPs are really not wondows devices.

I am going to delve into a way to get other information too (like printer names, if it's a switch or router, etc.) when I have some time.


----------



## FordGT90Concept (Oct 9, 2009)

I'm mostly concerned about how much time it adds to the search. 


It'll be irrelevant with a GUI but for the console structure, it causes pretty lengthy delays.


----------



## Kreij (Oct 9, 2009)

Okay ... back at home. I pulled 1.5.4 and did some testing (Satellite connection)

TR(Adv) Worked !! W00t!


> Tracing route to techpowerup.com [74.86.91.2]
> over a maximum of 30 hops...
> Traced to 22 addresses.  Getting hostnames...
> Hostnames obtained.  Results:
> ...



Sometimes regular TR  errors out with the typical "Stopped Working" message, but not always. Error says "An unhandled exception (System.NullReferenceException occurred in NetTool.exe[255]". When debugger starts in VS I get the old "Object reference not set to an instance of an object".

```
System.NullReferenceException was unhandled
  Message="Object reference not set to an instance of an object."
  Source="NetTool"
  StackTrace:
       at NetTool.TraceRoute.Looper(Object host)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart(Object obj)
  InnerException:
```

I'm not sure if TR(Adv) fails like this also as I only ran it once.

As far as Intranet Scan speeds, it found all the network devices at work and filled in the names in under a minute. That's the fastest I've ever seen that on my network. There are ~45 devices (can't count them, not at work. lol) which averages about 1 second per device. I think that is outstanding !! No other program I have tested got that information that fast.


----------



## FordGT90Concept (Oct 10, 2009)

I uploaded the debug version.  Extract the PDB and EXE to the same directory and try to get the error to pop up.  Hopefully the exception will include a line number for me so I can better know what's going wrong.


It's fast because I doubt anyone used ~257 to do an intranet scan.  I imagine that's pretty hard on the hardware but as processors grow in number of cores, the workload per core diminishes.

I should really display a count of devices found...(done, but only on Intranet Scan Sorted)


Edit: If TR throws an exception, I can almost guarentee TRA is capable of doing the same.  The only real difference between the two (and likewise for Intranet Scan vs Intranet Scan Sorted) is that instead of raising an event, they stick the results in an internal array.  Once the Monitor thread sees all threads are dead, it raises an event containing the internal array.  NetTool.TraceRoute.Looper, except for that little change, is effectively the same.  Advanced and Sorted should actually be easier on the hardware because there are far fewer events to handle.


----------



## Kreij (Oct 10, 2009)

Debug version does not give any more information unless I need to do something different (I am woefully weak using debuggers). It either asks for the source file (debug version) or fusses about no symbol table (non-debug version).


----------



## FordGT90Concept (Oct 10, 2009)

I'll PM you a link to the project source...


----------



## Kreij (Oct 10, 2009)

Got it, PM back at you.


----------



## FordGT90Concept (Oct 10, 2009)

1.55 uploaded. Details on original post.


----------



## Kreij (Oct 10, 2009)

1.5.5 TR works without any exceptions.
Maybe instead of just displaying "Request timed out", you can insert the hop number before the message so it all looks polished.

```
9  428 ms  67.14.7.30     
Request timed out.
 11  462 ms  205.171.17.158
```

Should look like ...

```
9  428 ms  67.14.7.30     
 10  Request timed out.
 11  462 ms  205.171.17.158
```

Just a thought.


----------



## FordGT90Concept (Oct 10, 2009)

The same thought crossed my mind...  ...and so it will be.



Edit: 1.5.6 uploaded with this change.


----------



## Kreij (Oct 10, 2009)

All cleaned up in 1.5.6

```
Tracing route to techpowerup.com [74.86.91.2]
over a maximum of 30 hops...
Traced to 23 addresses.  Getting hostnames...
Hostnames obtained.  Results:
Hop Latency    IP Address        Hostname   
  1    1 ms  10.10.10.50      
  2  428 ms  10.32.0.1        
  3  754 ms  10.242.20.1      
  4  385 ms  10.242.30.25     
  5  714 ms  10.242.30.1      
  6  477 ms  10.242.100.2     
  7  625 ms  10.242.110.2     
  8  611 ms  63.227.232.221   ewr-edge-10.inet.qwest.net
  9  403 ms  67.14.7.30       ewr-core-02.inet.qwest.net
 10  932 ms  205.171.17.158   ewr-brdr-03.inet.qwest.net
 11  119 ms  4.68.111.69      ge-4-16.car4.SanJose1.Level3.net
 12  131 ms  4.68.99.62       ae-32-52.ebr2.Newark1.Level3.net
 13  131 ms  4.69.132.101     ae-4-4.ebr2.Washington1.Level3.net
 14  503 ms  4.69.134.158     ae-92-92.csw4.Washington1.Level3.net
 15  116 ms  4.69.134.141     ae-91-91.ebr1.Washington1.Level3.net
 16  Request timed out.
 17  531 ms  4.69.132.85      ae-2.ebr3.Atlanta2.Level3.net
 18  710 ms  4.69.134.21      ae-7.ebr3.Dallas1.Level3.net
 19  145 ms  4.69.145.136     ae-3-80.edge3.Dallas1.Level3.net
 20  174 ms  4.71.198.18      
 21  129 ms  66.228.118.203   
 22  137 ms  66.228.118.182   
 23  180 ms  74.86.91.2       www1.techpowerup.com
```

What I found intersting was that after my rig (hop 1) all of the Wild Blue (Satellite) addresses are also in the non-routable range of 10.x.x.x, until you hit qwest.net.


----------



## FordGT90Concept (Oct 10, 2009)

Indeed, 10.0.0.0-10.255.255.255 are IANA reserved addresses for intranet traffic.  I suppose the satellite considers all its traffic to be intranet though so in a way, it makes sense (even if it is bad practice).

Maybe every satellite that services IP addresses has a reserved 10.# address?


----------



## Kreij (Oct 10, 2009)

I don't know, but maybe if I set my system to the same IP as the 2nd hop I can take over the satellite and reposition it, then demand a MILLION dollar ransom or I fire the big laser.


----------



## mrhuggles (Oct 10, 2009)

maybe add that cute little chart of how to do things to the help pulldown?


----------



## FordGT90Concept (Oct 10, 2009)

Kreij said:


> I don't know, but maybe if I set my system to the same IP as the 2nd hop I can take over the satellite and reposition it, then demand a MILLION dollar ransom or I fire the big laser.


Yes, Dr. Evil.  Muahahah.  Muaahahaha.  Muahahahaha. 




mrhuggles said:


> maybe add that cute little chart of how to do things to the help pulldown?


I can do that.  I'll probably also put that info in tooltips.


----------



## Kreij (Oct 10, 2009)

FordGT90Concept said:


> I can do that.  I'll probably also put that info in tooltips.



I was going to create a html help project for your app that explained not only how to use it, but what the different terminology meant.

Then after a little reasearch, I found out that MS's html help is a disasterous, OS version dependant, cluster fudge.

Maybe I'll write my own help system. Been kicking around the idea for some time anyway.
Always wanted to write a custom installer too.
So much coding, so little time


----------



## FordGT90Concept (Oct 10, 2009)

1.6 uploaded with the internal guide + tooltips.


----------



## Kreij (Oct 10, 2009)

Okay Ford, I'm gonna pick your brain a little....

Since you do not use the dropdown selections (eg. Ping) anywhere else than Main.cs, why did you put them all in StaticMethods as string constants instead of just adding them to the control and calling the SelectedItem.ToString() method in the StartCommand handler?
I'm not questioning your judgement, I would just like to know as if there are any advantages to doing it that way. I could understand if you were using these constants in other files, but your not.

Also ... How about on the Intranet scan you also query for the OS Version of the windows based devices?

```
10.10.10.10  Machine1  Windows XP SP2
10.10.10.11  Machine2  Windows Server 2003
```

You get the idea.


----------



## FordGT90Concept (Oct 10, 2009)

They are canstant so that the switch...case can use them as well as being absolutely positive they will never change (imagine if they were changed during runtime then large chunks of code would be inaccessible).

I place everything that will never change in a static, StaticMethods class for the sake of continuity.

Now, Guide and Main make use of those constant strings--I didn't have to move them from StaticMethods because it was already accessible to the entire Project (but I did to prevent using ridiculously long names where possible).

In the latest build, I moved name, description, usage, and examples to the class they describe where possible.  Those that don't have a class still have that information in StaticMethods.


----------



## Kreij (Oct 10, 2009)

Gotcha. You weren't using them before "Guide" which is why I asked, but I can see the logic in having all of the strings accessible to the whole app if you need them. Especially since C# does not use the concept of global variables (which is a good thing IMO).

Now, what about the OS Versions? heheheh
I'll keep suggesting features until you kick me out of your thread. lol


----------



## FordGT90Concept (Oct 10, 2009)

1.6.1 uploaded which gets OS Name if available.


----------



## Kreij (Oct 10, 2009)

Sweet. Now just strip out  the "Microsoft® Windows " and it will be perfect.
It's redundant, we know it's MS Windows.


----------



## FordGT90Concept (Oct 10, 2009)

Does it have the Registered symbol?  I don't get it on mine ("Microsoft Windows").


----------



## Kreij (Oct 10, 2009)

It shows up on mine. Maybe a Vista thing?
I also have a (TM) after Vista, but that's no big deal


----------



## FordGT90Concept (Oct 10, 2009)

So, find/replace:
"Microsoft Windows " -> ""
"Microsoft® Windows " -> ""

That it?


----------



## Kreij (Oct 10, 2009)

That will work for the IS, however, I think we need a IS (Adv) ...


```
10.10.10.10 Machine1 Vista Ultimate
    CPU Type     Amount of RAM
```


----------



## FordGT90Concept (Oct 10, 2009)

I think I'm going to remove it.  It is taking 52 seconds to execute on my smallish network.  Every additional query added is going to make it take more and more time.  I leave it only Names.

Edit: Next release will only be IP/Name


----------



## Kreij (Oct 10, 2009)

Can you toss a version with the additional info out there? I would like to try it on my network at work Monday. Don't forget that people can always run fast scans with less info if they want. I would be willing to have it take awhile to get more info. You code as it is now is blistering fast. DNSWalker took at least 10 minutes to get me just IPs and names.

If you can get me the info for my network in under 2 minutes I'll have your baby ... oh wait ... forget that


----------



## FordGT90Concept (Oct 11, 2009)

I'll add Intranet Scan (Advanced) later...


Edit: Amout of RAM as in available or total?  CPU type being "Athlon 64" or "AMD Athlon 64 4000+?"


----------



## Kreij (Oct 11, 2009)

For CPU, whatever the system spits out. 
For RAM, the total installed.

I know that it will slow the scans down as you add more, but what exactly is the goal of you app if not to give someone what they are looking for. Speed is not everything, my friend.

This app that you have written is one of the finest (and fastest) I've seen. You don't want to create an entire asset management tool, but for System Admins the things I suggested make life a lot easier. Perhaps in a future version you could make it possible to select the data you want to see from various functions. The more info, the slower, but that is a decision the user of the app can make.

The reason that I keep adding little tidbits here and there is as a IT Manager I can't find a program that does what yours accomplishes, and the ones' that come close are nowhere near as fast. Perhaps it is a bit of selfish ambition, but I am on the verge of dumping all of my other network utilities in favor of yours if you can just add a few more things.

Keep going my friend, this app is a Godsend for getting network information quickly.

The final thing I ask is for a network monitor thread that will find all of the currently connected devices and in real time will tell me when a device joins in/drops off the network.

Not to much to ask is it?


----------



## FordGT90Concept (Oct 11, 2009)

It was running over a minute but I added some code that makes it check once for WMI functionality and if it fails that test, it discontinues the rest of the WMI work for that IP.  Doing that means it's only a few seconds slower than only using WMI to get the host name.

Dns.GetHostEntry takes about 16 seconds and any WMI work adds an additional 16 seconds (~32 seconds for both).  The question is: Should I remove all WMI code from Intranet Scan and Intranet Scan (Sorted) and leave WMI to Advanced?  That means you'll mostly only see IPs on domain-controlled networks but you'll have that data in under 20 seconds.  Advanced works best in domain-controlled environments anyway because it accepts WMI requests making it worth the extra time.




Kreij said:


> The final thing I ask is for a network monitor thread that will find all of the currently connected devices and in real time will tell me when a device joins in/drops off the network.


That will have to wait for a GUI and it would also have to be constantly running it (just the pings) to find new/dropped devices.


1.7 uploaded with Intranet Scan (Advanced)


----------



## Kreij (Oct 11, 2009)

If you don't mind, leave it how it is for the moment. I would like to test it at work where I have a lot more machines (both Windows and non-Windows) to do some timing tests.

Here at home I have 1 Windows machine, 1 Lynksys router and 1 NAS device.
It took 13.015 seconds to scan the network in IS(Adv).

Real time monitoring:
If I'm not mistaken, you don't need to send the 32 byte array with ping if you only are looking for a reply and don't care about times. If you loop through the address range and send one ping per second, you will have scanned the entire network for new/dropped machines in approx. 5 minutes (4.25 minutes to be a little more accurate). 
Knowing about new/dropped machines ever 5 mintes is acceptable to me. It would create minimal network traffic and since you could run it in a single thread, it would put hardly any load on the machine that's running it.


----------



## Kreij (Oct 11, 2009)

Just had a thought. Don't machines send out a broadcast packet of some sort at some interval?
Could RTM be done just using a listener?


----------



## FordGT90Concept (Oct 11, 2009)

Kreij said:


> If I'm not mistaken, you don't need to send the 32 byte array with ping if you only are looking for a reply and don't care about times. If you loop through the address range and send one ping per second, you will have scanned the entire network for new/dropped machines in approx. 5 minutes (4.25 minutes to be a little more accurate).
> Knowing about new/dropped machines ever 5 mintes is acceptable to me. It would create minimal network traffic and since you could run it in a single thread, it would put hardly any load on the machine that's running it.


I'm pretty sure ICMP needs some data otherwise the packet will be destroyed.

Again, I'm not going to do anything that lasts longer than about 30 seconds without a GUI which can be updated on the fly.




Kreij said:


> Just had a thought. Don't machines send out a broadcast packet of some sort at some interval?
> Could RTM be done just using a listener?


I doubt it.  Routers/managed switches check in with IP addresses to see if there is someone sitting there but from that, you'll only get the router/switch IP that is making the request.  You have to go to the router/switch and request the full list which, I doubt that is even information it readily releases (needs details).


----------



## Kreij (Oct 11, 2009)

FordGT90Concept said:


> I'm pretty sure ICMP needs some data otherwise the packet will be destroyed.



From the MSDN page on the Ping Class:

```
You can also specify any of the following types of information:

    -Data to accompany the request. [b]Specifying buffer[/b] allows you to learn the amount of time required for a packet of a particular size to travel to and from the remote host and the maximum transmission unit of the network path. (See the Send or SendAsync overloads that take a buffer parameter.)
```

Looks like the buffer is optional the way the info is written. Especially since you can call the Ping.Send() Method with the IPAddress as the only parameter, and also with only the IPAddress and Timeout



> Again, I'm not going to do anything that lasts longer than about 30 seconds without a GUI which can be updated on the fly.


I understand. I was just tossing out random thoughts. 



> I doubt it.  Routers/managed switches check in with IP addresses to see if there is someone sitting there but from that, you'll only get the router/switch IP that is making the request.  You have to go to the router/switch and request the full list which, I doubt that is even information it readily releases (needs details).



How does "Network" in Windows Explorer know what machines are available?
Can't be from the server only, as it updates in workgroups (domainless nets) too.


----------



## FordGT90Concept (Oct 11, 2009)

Kreij said:


> From the MSDN page on the Ping Class:
> 
> ```
> Looks like the buffer is optional the way the info is written. Especially since you can call the Ping.Send() Method with the IPAddress as the only parameter, and also with only the IPAddress and Timeout[/QUOTE]
> ...


----------



## FordGT90Concept (Oct 12, 2009)

Here's a pic of the NetTool 2.0 Ping prototype:





Everything you see there works.

You can click on the column headers to sort them by the column.  It automatically sizes the columns to the content.

The same GUI will be used for all tests.  Only the details on the left and the view on the right will change between tests.  It should be possible to run multiple tests concurrently.


----------



## Kreij (Oct 12, 2009)

Gui looks great!! Except the "Start" Button is a little small 
I really like the use of the PropertyGrid. Are you going to use tabs for the various functions, or repaint the windows with the desired information?

I ran IS(Adv) here at work. If found 47 devices on the network (both Windows and non-Windows) in 46.14 seconds.

I expected it to take a couple of minutes. Superb job, Mr. FordGT


----------



## FordGT90Concept (Oct 12, 2009)

Kreij said:


> Gui looks great!! Except the "Start" Button is a little small
> I really like the use of the PropertyGrid. Are you going to use tabs for the various functions, or repaint the windows with the desired information?


It is currently based on a UserControl so I could do either.  I'm leaning towards a TabControl.  I have no idea when I'll get around to finishing it.


The only downside is you can't do the same test more than once without losing the previous test.


So are we pretty much done making changes to 1.#?


----------



## Kreij (Oct 12, 2009)

FordGT90Concept said:


> The only downside is you can't do the same test more than once without losing the previous test.



There's always a way. lol



> So are we pretty much done making changes to 1.#?



Works fine for me, and I can't think of any fancy, new features at the moment.


----------



## lemonadesoda (Oct 12, 2009)

WHERE IS THE NetTool 2.0 SECRET DOWNLOAD LOCATION?!?!?

What a tease you are...


*WHERE
IS
THE
SECRET
DOWNLOAD
LOCATION?http://www.youtube.com/watch?v=ScA7PhDJPJE*


----------



## FordGT90Concept (Oct 12, 2009)

Kreij said:


> There's always a way. lol


It would make sorting near impossible. 




Kreij said:


> Works fine for me, and I can't think of any fancy, new features at the moment.


Yay!  *takes a break*




lemonadesoda said:


> WHERE IS THE NetTool 2.0 SECRET DOWNLOAD LOCATION?!?!?
> 
> What a tease you are...
> 
> ...


Somewhere near Fort Knox, on the darkside of the sun, or my server. XD

I saw that video before too.  It's fenneh! 


Trace Route is done:





And yeah, it gets all the hostnames that are available in about 2 seconds.  There is a long delay for those it can't get...

I'll try to get one done per day, less Wednesday (dentist appointment ).


----------



## Kreij (Oct 13, 2009)

FordGT90Concept said:


> Yay!  *takes a break*
> 
> I'll try to get one done per day, less Wednesday (dentist appointment ).



Doesn't sound like much of a break to me 

Take a few of days off, Ford, that will give us a chance to play around with 1.x.x and come up with lots of ideas for 2.0 

Let us know when you want start testing 2.0.
I just started a new *super secret* project, but I always have time do some software QA for my coding friends. 

Maybe one of these days, all of us can get together at my place to share our humourous coding/IT stories and consume many of our favorite libations. I'm sure that if I told my wife that a bunch of coding/computer geeks were coming over for the weekend, she would find a reason to vacate the premises and we could run amock.


----------



## FordGT90Concept (Oct 13, 2009)

About the only thing that doesn't change between 1 and 2 is the main looper code. For instance, both Trace Routes combined had three handles (trace route, trace route advanced monitor, trace route advanced).  This new one has five (trace route, error, working, complete, host name).


----------



## FordGT90Concept (Oct 13, 2009)

Intranet Scan done:





It updates the various fields as it gets it.

Again, it is sortable.


----------



## Kreij (Oct 13, 2009)

I notice from you pic that you have no fields filled in for necessary. ?

What does the hide button hide?

It's also interesting that the internet can took a little over 35 seconds on your net to find 5 devices and a little of 46 seconds on my work net to find 47 devices. It looks like the additional information is not causing much of a slowdown in result times.


----------



## FordGT90Concept (Oct 13, 2009)

Kreij said:


> I notice from you pic that you have no fields filled in for necessary. ?


IPAddress = first address your computer returns
ScanRange = 1-255

You only need to fill in IP Address if, for instance, you have more than one network cards or a specific loopback address (e.g. IPv6) you want to try.




Kreij said:


> What does the hide button hide?


The menu on the left (Start button and the PropertyGrid).




Kreij said:


> It's also interesting that the internet can took a little over 35 seconds on your net to find 5 devices and a little of 46 seconds on my work net to find 47 devices. It looks like the additional information is not causing much of a slowdown in result times.


If I disable all WMI features, it takes about 16 seconds.  That test in the picture has all WMI features enabled.


I didn't make Intranet Scan update on regulat intervals yet.  I forgot to do that.


----------



## Kreij (Oct 13, 2009)

FordGT90Concept said:


> IPAddress = first address your computer returns
> ScanRange = 1-255
> 
> You only need to fill in IP Address if, for instance, you have more than one network cards or a specific loopback address (e.g. IPv6) you want to try.



I assumed that, but having the properties under "necessary" would make one think they are required when they are optional.



> If I disable all WMI features, it takes about 16 seconds.  That test in the picture has all WMI features enabled.
> 
> 
> I didn't make Intranet Scan update on regulat intervals yet.  I forgot to do that.



IS runs a lot quicker on my net also without the WMI features. What surprised me is that it does not seem to make a whole lot of difference if you have 5 or 50 WMI devices. The scan,  with WMI features enabled, is still under a minute.


----------



## FordGT90Concept (Oct 13, 2009)

Kreij said:


> I assumed that, but having the properties under "necessary" would make one think they are required when they are optional.


Ah, yeah.  I'll change it. (fixed)





Kreij said:


> IS runs a lot quicker on my net also without the WMI features. What surprised me is that it does not seem to make a whole lot of difference if you have 5 or 50 WMI devices. The scan,  with WMI features enabled, is still under a minute.


Either my switch or my router doesn't like what I'm doing.  It's not a big deal--just people will get different performance with it.

If WMI fails once, it stops trying WMI tasks.  For instance, if it failed to get the WMI host name, it won't try to get processor, OS, and memory.  The idea is that either the device is allowing access to WMI or it isn't.  I think most of the time actually comes from timeouts and not actually doing work.  Limiting queries that will most likely cause a timeout, therefore, vastly reduces the execution time.


I'll add a ManuallyStop option (if true, will run until the user stops it).


----------



## Kreij (Oct 13, 2009)

FordGT90Concept said:


> Either my switch or my router doesn't like what I'm doing.  It's not a big deal--just people will get different performance with it.



At work I have everything running through Dell gigabit switches. All of the cabling is 350Mhz capable but many of the machines are only running at 100Mhz and some 10Mhz.
Here at home, my switch is a Lynksys router and 3 device. Both are within approx 10 seconds in total execution time. 



> If WMI fails once, it stops trying WMI tasks.  For instance, if it failed to get the WMI host name, it won't try to get processor, OS, and memory.  The idea is that either the device is allowing access to WMI or it isn't.



Makes sense not to try for more if you can't get less.



> I think most of the time actually comes from timeouts and not actually doing work.  Limiting queries that will most likely cause a timeout, therefore, vastly reduces the execution time.



I agree. In all the tests I have done with WMI, the returns are pretty fast unless there is a timeout. The other key is that you are running these in seperate threads, so If it takes 15 seconds to timeout and you are running 10 threads, you are not looking at 150 seconds, but 15 for each thread. 

Al in all, very nice my friend


----------



## lemonadesoda (Oct 13, 2009)

help->about can still be anonymous but owned, e.g.


----------



## FordGT90Concept (Oct 14, 2009)

Instead of "ManuallyStop," it is "ScanInterval" and it is now implemented and works.  It puts parenthesis around the name and if the parenthesis aren't removed, the device is no longer responding.  It does a full scan on those intervals (no less than 30 seconds between) so it will find and get all the selected info for those devices just as doing another scan would.  It also updates instead of clearing the list.


----------



## Kreij (Oct 14, 2009)

I'm looking forward to testing the new stuff !!


----------



## FordGT90Concept (Oct 14, 2009)

I could release a beta.  The version number won't be incrementing with each release though.


----------



## Kreij (Oct 14, 2009)

It's up to you , my friend. I'll be happy to test anything you toss out there.


----------



## FordGT90Concept (Oct 14, 2009)

I think I'll wait.  It'll be hard to focus on finishing the feature set if I have to consantly go back to fix something.  It's easier to handle all the fixing at once. XD


----------



## FordGT90Concept (Oct 15, 2009)

I'm going to upload what I have so it can be tested.  I'm going to take a longer break than expected from this project because of what transpired yesterday.  In the mean time, I'd like to gather some things to be fixed.

Note: None of the menu items are coded yet in 2.0 beta.


----------



## Kreij (Oct 15, 2009)

FordGT90Concept said:


> I'm going to upload what I have so it can be tested.  I'm going to take a longer break than expected from this project *because of what transpired yesterday*.  In the mean time, I'd like to gather some things to be fixed.
> 
> Note: None of the menu items are coded yet in 2.0 beta.




Did I miss something?

Pulled the beta. Incoming report soon


----------



## FordGT90Concept (Oct 15, 2009)

It's personal.


----------



## Kreij (Oct 15, 2009)

FordGT90Concept said:


> It's personal.



Okay, didn't mean to pry. The way you phrased it made it sound like something here on TPU or something to do with the program.

Suggestions (for after your extended time off) :
- Unanchor the PropertyGrid from the right side so it does not enlongate if you make the main Form wider.
- On TR Property Grid, move IPAddress property to the top like ping (Unless they have to be alphabetically arranged). 
- When you fill in an address or domain in Ping, have it transfer when the TR tab is selected so you don't have to type it in again if you want to run a TR on the same address/DN, and vice versa.
- On IS, the description for ScanInterval is somewhat confusing. I thought it implied the number of seconds the program waited after completing a scan, before starting the scan again. I'm still not real clear on what it actually does mean. 
- Code the menu functions.


----------



## FordGT90Concept (Oct 15, 2009)

Kreij said:


> - Unanchor the PropertyGrid from the right side so it does not enlongate if you make the main Form wider.


It is a SplitContainer.  I fixed the left panel so when you resize, it will stay put.  You can still manually resize the left panel.




Kreij said:


> - On TR Property Grid, move IPAddress property to the top like ping (Unless they have to be alphabetically arranged).


They are arranged alphabetically.  I just moved Hops and Packets to Optional because the default value (as with the lot of them) will work (it won't flat out fail without that value).




Kreij said:


> -  When you fill in an address or domain in Ping, have it transfer when the TR tab is selected so you don't have to type it in again if you want to run a TR on the same address/DN, and vice versa.


I'm trying to find a solution for this but it won't be easy.  They are designed to be completely independant of one another.

Edit: Think I got it working (currently it only syncrhonizes Ping and Trace Route but only if said target is not already busy.




Kreij said:


> - On IS, the description for ScanInterval is somewhat confusing. I thought it implied the number of seconds the program waited after completing a scan, before starting the scan again. I'm still not real clear on what it actually does mean.


What you think it means is what it means.  I just had/have difficulty describing that one.   I'll paraphrase how you described it because that is more clear than what I had.


Edit: I won't release beta 2 until a new feature is added which might be a while.

Edit: File -> Exit implemented.  Edit -> Save to CSV implemented.


----------



## FordGT90Concept (Oct 16, 2009)

Beta 2 uploaded.  Dns Resolve added with numerous other changes.


----------



## oily_17 (Oct 16, 2009)

Been away for the week and come back to see you have made some nice changes.

Just want to say thanks for your trouble and congrats on a great wee tool.

Just gave the beta a try out and all seems to be working well.
Just a small request, is it possible to have the tool remember if you have resized the Property/Main grid or changed any of the values (like setting GetWMIHostName till True).So that when it is shut down and restarted they remain the same.


----------



## FordGT90Concept (Oct 16, 2009)

I'm thinking about putting a "File -> Save Settings" option which is off by default.  Once it is checked, you give the application permission to create an INI file in the same directory which will save all settings on close and load all previous settings on open.  If you uncheck it, it will no longer use an INI file until checked again.

I'll probably add it sooner rather than later because it would help speed up testing.


----------



## oily_17 (Oct 16, 2009)

Cheers, that would be great


----------



## Kreij (Oct 16, 2009)

Dang it, Ford. Everything works great, so I guess I'm going to have to start nit-picking.

Suggestions/Comments :
- You may want to set the Main Form's minimum size you can't squish the reults section out of existance. A good horizontal size seems to be if you select IS and reduce enough that you can still see all of the result columns (that size also makes all of the pick result boxes still visible. A good vertical minimum size seems to be when in IS you can still see all of the options.
- I like how the IPAddress property auto-fills when you click in it.
- Can you add a three option property in IS so you can choose the text style for the HostNames (default / upper case / lower case)?
- Maybe add a print results menu option?
- Code the help menu item


----------



## FordGT90Concept (Oct 16, 2009)

Kreij said:


> - You may want to set the Main Form's minimum size you can't squish the reults section out of existance. A good horizontal size seems to be if you select IS and reduce enough that you can still see all of the result columns (that size also makes all of the pick result boxes still visible. A good vertical minimum size seems to be when in IS you can still see all of the options.


Done.




Kreij said:


> - I like how the IPAddress property auto-fills when you click in it.


Currently, only Ping, Trace Route, and DNS Resolve autofill (because their values are cross-compatible).

Edit: Improved how this works internally (much fewer handles and easier to code).




Kreij said:


> - Can you add a three option property in IS so you can choose the text style for the HostNames (default / upper case / lower case)?


Done.




Kreij said:


> - Maybe add a print results menu option?


Printing in .NET is a PITA so we'll see.




Kreij said:


> - Code the help menu item


Meh. 


Edit: Still working on saving/loading settings...


----------



## lemonadesoda (Oct 16, 2009)

Nettool2 should be called nettool2.exe not nettool.exe or it will overwrite the console edition. Two excellent versions of the utility, two filenames needed.


----------



## Kreij (Oct 16, 2009)

Not if you put them in different directories.


----------



## FordGT90Concept (Oct 16, 2009)

Once nettool 2 is done, nettool 1 will be no more.  The difference between them is the version number (Properties -> Version tab).

Which reminds me...I need icons.


----------



## Kreij (Oct 16, 2009)

I'm going to keep all of the version from 1.45 on, so when one day you become famous for NetTools I can sell them as collectable versions on e-bay 

I was thinking of that earlier today but forgot to mention the icons.


----------



## lemonadesoda (Oct 16, 2009)

FordGT90Concept said:


> Once nettool 2 is done, nettool 1 will be no more.


(quickly grabs and archives a copy of 1.70)


----------



## FordGT90Concept (Oct 17, 2009)

lemonadesoda said:


> (quickly grabs and archives a copy of 1.70)


That mean you don't like the beta? 


Beta 3 uploaded.  Lots of changes, most important being saving/loading settings (File -> Save Settings).


----------



## Kreij (Oct 17, 2009)

Intranet scan is about 1 second slower on 2b3 than on 1.7
Not that I care, just giving you testing data.

IS on 2b3 is not sorting by IP address (should it be?).

Help menu item not working 

More testing in a little while ... wife says it's dinner time


----------



## Kreij (Oct 17, 2009)

More testing results on the GUI ... 

These are not suggestions, but more of a "is this the way you want it to work?" kind of thing...

- When the "Hide" button is clicked, the description of the test still states "Fill in the form to the left and click on "Start"", Even though the form and start button are no longer visible.
- The Hide/Show button is not a "global" type of setting. It does not persist from tab to tab. You have to click hide for each test.

Oops, what was that?:
- If ping is started with no IP Address, the IP address reports "Object reference not set to an instance of an object", four times for IP Address in results.
- If TR is started with no IP address  it gives me "fe80::1cfa:c0f:f5f5:f59a" for IP address in results.
- If DNS resolve is run without IP Address, it gives me 4 lines of stuff similar to last bullet point(sorry can't copy and past out of the result window. See Suggestion #2)

Suggestions:
- The column name "Id" does not impart the meaning of the number. For Ping it means packet, for TR it means hop, etc.
- Implement "Copy to Clipboard" by right clicking in result window.
- Icons are ugly


----------



## FordGT90Concept (Oct 17, 2009)

Kreij said:


> Intranet scan is about 1 second slower on 2b3 than on 1.7
> Not that I care, just giving you testing data.


The only change to that code was adding the upper/lower case code which shouldn't have much impact at all on performance.




Kreij said:


> IS on 2b3 is not sorting by IP address (should it be?).


They appear in the order a response was received.  If you want to sort by IP Address, just click on the IP Address column header.




Kreij said:


> Help menu item not working


If it was, I'd be concerned. 




Kreij said:


> - When the "Hide" button is clicked, the description of the test still states "Fill in the form to the left and click on "Start"", Even though the form and start button are no longer visible.
> - The Hide/Show button is not a "global" type of setting. It does not persist from tab to tab. You have to click hide for each test.


I'm thinking about removing that button because it isn't very useful (only really useful on looping Intranet Scan w/ low resolution monitor).




Kreij said:


> - If ping is started with no IP Address, the IP address reports "Object reference not set to an instance of an object", four times for IP Address in results.


What are the other settings?  I haven't been able to reproduce that one.




Kreij said:


> - If TR is started with no IP address  it gives me "fe80::1cfa:c0f:f5f5:f59a" for IP address in results.
> 
> - If DNS resolve is run without IP Address, it gives me 4 lines of stuff similar to last bullet point(sorry can't copy and past out of the result window. See Suggestion #2)


It uses the first address it finds for the local machine when none is given.  That is true for DNS Resolve, Trace Route, and Ping.




Kreij said:


> - The column name "Id" does not impart the meaning of the number. For Ping it means packet, for TR it means hop, etc.


Id = unique identifier for that row.  It is provided in order to sort by the order in which they were added.  For example, if you sort by time on Trace Route or Ping, the Id column allows you to put them back in order for when they were received.




Kreij said:


> - Implement "Copy to Clipboard" by right clicking in result window.


I am planning to create a Save to Text Document which could also be copied to the clipboard.  That will take a lot of work to add though so it will be some time.




Kreij said:


> - Icons are ugly


I haven't been inspired to make any icons yet.


----------



## Kreij (Oct 17, 2009)

FordGT90Concept said:


> The only change to that code was adding the upper/lower case code which shouldn't have much impact at all on performance.



All is good, just reporting boss.



> They appear in the order a response was received.  If you want to sort by IP Address, just click on the IP Address column header.



Fair enough, that's how I do it in my apps too.



> If it was, I'd be concerned.



That caught me off guard. Thanks for the laugh.


----------



## Kreij (Oct 17, 2009)

FordGT90Concept said:


> I'm thinking about removing that button because it isn't very useful (only really useful on looping Intranet Scan w/ low resolution monitor).



I agree.



> What are the other settings?  I haven't been able to reproduce that one.



default on application start up.



> It uses the first address it finds for the local machine when none is given.  That is true for DNS Resolve, Trace Route, and Ping.



Maybe a message somewhere to report that? You could add a status bar to the form.



> Id = unique identifier for that row.  It is provided in order to sort by the order in which they were added.  For example, if you sort by time on Trace Route or Ping, the Id column allows you to put them back in order for when they were received.



That I understand. Should the columns name (not function) change to reflect the test?



> I am planning to create a Save to Text Document which could also be copied to the clipboard.  That will take a lot of work to add though so it will be some time.



I am not sure a save to document would be that useful, as different people would want it in different formats (word, pdf, etc.). Why not copy to clipboard and let them paste it into whatever they want? 



> I haven't been inspired to make any icons yet.



That is always the last thing I do too. Any thoughts on what you want the icons to look like?

Btw, for a couple of years I built and did s/w QA on MRI scanners for GE. People's lives depended on the s/w working as it should. I apply the same rules to testing your app.


----------



## Kreij (Oct 17, 2009)

No Address Ping ...


----------



## FordGT90Concept (Oct 17, 2009)

Kreij said:


> Maybe a message somewhere to report that? You could add a status bar to the form.


It should say "Pinging '(address)'..." before "Ping complete. ..."  What does it say between the apstrophes (if anything)?  Do an infinite run if you need it to display for longer.





Kreij said:


> I am not sure a save to document would be that useful, as different people would want it in different formats (word, pdf, etc.). Why not copy to clipboard and let them paste it into whatever they want?


The same code is used for both but every UserControl needs it coded individually so it will take time to add.





Kreij said:


> That is always the last thing I do too. Any thoughts on what you want the icons to look like?


Nope.  That's why I haven't made any. XD




Kreij said:


> Btw, for a couple of years I built and did s/w QA on MRI scanners for GE. People's lives depended on the s/w working as it should. I apply the same rules to testing your app.


----------



## Kreij (Oct 17, 2009)

1) Yes, it does say pinging address. I guess I never noticed it becuase I was watching the results, not the message.

2) Take your time. You're supposed be taking a "longer than expect" leave from the project anyway. 

3) Are you planning on making your own or borrowing something from the webz? I can snoop around for ideas if you want. Finding/making icons always drives me nuts. I'm never really happy with the end results. I usually just end up picking out something that looks reasonable and not worrying about it. The users have to look at it, not me. 

4) Lol ... no mercy.


----------



## FordGT90Concept (Oct 17, 2009)

Kreij said:


> 1) Yes, it does say pinging address. I guess I never noticed it becuase I was watching the results, not the message.


What's the address?  Nothing? IPv4 or IPv6?




Kreij said:


> 2) Take your time. You're supposed be taking a "longer than expect" leave from the project anyway.


I know but nothing else interests me at the moment so I might as well be productive.




Kreij said:


> 3) Are you planning on making your own or borrowing something from the webz? I can snoop around for ideas if you want. Finding/making icons always drives me nuts. I'm never really happy with the end results. I usually just end up picking out something that looks reasonable and not worrying about it. The users have to look at it, not me.


I make my own with Paint usually.  It's only 32x32 so I usually don't get bored before I finish.  I just don't have any inspiration to make one (haven't since I started the project).


----------



## Kreij (Oct 17, 2009)

1) IPv6

2) I'm convinced that for some of us coding is like a drug, it's the addiction to the mental challenge and the speed at which your mind functions when coding. When coding I'm usually doing multiple things too (like coding another app while I am mentally working on a problem in the first ap. Yay Multitasking !!). When not coding, things seem to sort of be in slow motion and irritatingly slow. Usually causes thoughts during human interaction like "will you get to the point already?!?!?". Probably not a good thing, but I enjoy coding. It relaxes me. Maybe I'm just nuts 

3) Oh well, you can always modify your avatar for the icon. Your program is blistering fast, after all.


----------



## FordGT90Concept (Oct 17, 2009)

Kreij said:


> 1) IPv6


Found the problem:
reply.Options.Ttl

Options is null on IPv6.  I got it fixed.  I think I won't release it until another feature is implemented which will most likely be some time tomorrow.




Kreij said:


> 2) I'm convinced that for some of us coding is like a drug, it's the addiction to the mental challenge and the speed at which your mind functions when coding. When coding I'm usually doing multiple things too (like coding another app while I am mentally working on a problem in the first ap. Yay Multitasking !!). When not coding, things seem to sort of be in slow motion and irritatingly slow. Usually causes thoughts during human interaction like "will you get to the point already?!?!?". Probably not a good thing, but I enjoy coding. It relaxes me. Maybe I'm just nuts


Coding bores me to death most of the time because it doesn't challenge me. 




Kreij said:


> 3) Oh well, you can always modify your avatar for the icon. Your program is blistering fast, after all.


Not a bad idea but a GT90 looks like a white blob at 32x32. XD


Edit: FYI, NetTool 1.7 weighs in at 3913 lines of original code in 27 files (161,513 bytes).  NetTool 2 already weighs in at 3849 lines of original code in 32 files (141,901 bytes).


----------



## Kreij (Oct 17, 2009)

FordGT90Concept said:


> Found the problem:
> reply.Options.Ttl
> 
> Options is null on IPv6.  I got it fixed.  I think I won't release it until another feature is implemented which will most likely be some time tomorrow.



I will be looking forward to testing b3.



> Coding bores me to death most of the time because it doesn't challenge me.



That is because most of the time we are writing boring code. Once the challenging part has been overcome, the rest is tedious detail work. Important, but tedious non the less. Have you solved 340 yet? No? Well?  



> Not a bad idea but a GT90 looks like a white blob at 32x32. XD


Hmmm ... okay, maybe just a headlight. lol


----------



## FordGT90Concept (Oct 17, 2009)

Kreij said:


> That is because most of the time we are writing boring code. Once the challenging part has been overcome, the rest is tedious detail work. Important, but tedious non the less. Have you solved 340 yet? No? Well?


The problem there is processing power (24^64 potential solutions).  I have the algorithm that will do it but it has to be fed data until coherent words start forming.  Once NetTool is done, I might multithread the algorithm and have my server work on it.  It could take years to find the answer though.




Kreij said:


> Hmmm ... okay, maybe just a headlight. lol


I'm pretty sure Ford owns the patent for those.


----------



## Kreij (Oct 17, 2009)

FordGT90Concept said:


> The problem there is processing power (24^64 potential solutions).  I have the algorithm that will do it but it has to be fed data until coherent words start forming.  Once NetTool is done, I might multithread the algorithm and have my server work on it.  It could take years to find the answer though.



I think you are going to run into more issues. I don't think he coded it in any kind of sequential manner. Clues could be horizontal, veritcal or diagonal and then not necessarily in any sort of concurrent order or logical pattern. He was upset that his his first message was decoded on the same day it was received, and made 340 a lot harder. Given his ego and desire for public attention, I don't think he planned on making 340 undecipherable, however.

If you look at some of the thoughts on his Halloween message you can see that perhaps some of his other messages contain clues to that one. He consistently spelled Paradise as "Paradice". An elusion to a "pair fo dice"?  Madnes or Method? Could he have been rolling dice and placing the pertanent symbols in location based on the outcome of the dice?

Fun stuff for crazy people like us who can't resist a good challenge.


----------



## FordGT90Concept (Oct 17, 2009)

I have several algorithms that can search an one dimensional array forwards and backwards, two dimensional array in any direction, and three dimensional arrays in any direction.

The 408 was broken fast for numerous reasons (repetition of words, failure to stick to the homologous cipher methodology, not enough symbols, etc.).  340 clearly has all those bugs fixed that made the previous ciphers weak.




Kreij said:


> He was upset that his his first message was decoded on the same day it was received, and made 340 a lot harder.


Or more likely, made it mean nothing.  He stopped his killing spree when someone saw him commit a murder (Oct. 11, 1969) this was about the same time the 340 was published (Nov. 8, 1969).  I'm rather convinced that the 340 is much like his other ciphers in that it is the ramblings of a madman and highly doubt it contains a name.


He intentionally misspelled words to mask his identity and make the ciphers harder to break.


----------



## Kreij (Oct 17, 2009)

I agree that it definitely from a madman, but is it just ramblings. I think if you truly believed that you would not go to the trouble to try to decipher the message.

I can't believe it meant nothing (just random symbols). The psychiatric profile one would get from all his action would indicate that he always had a message of some kind that he wanted to taunt the authorities with in its difficulty to decipher. I am convinced that 340 says something, but what that is is sitll a mystery. I could be a clue to anything, a confession, a name or something else, but I don't believe it is totally meaningless.

Btw  my first wife had a PhD in Clinical Sociology and Criminal Justice. She taught me crime and sociology, I taught her doctoral level statistics.  Even trade I guess. lol


----------



## Kreij (Oct 17, 2009)

I think we just hijacked your thread.


----------



## FordGT90Concept (Oct 17, 2009)

This is the only cipher he claims his name is in:
http://www.zodiackiller.com/MyNameIsLetter.html

What is astonishing is that is only 7 unique characters and 13 characters in length:

```
public static byte[] Name = new byte[] { 0, 1, 2, 3, 4, 5, 4, 6, 4, 7, 2, 0, 6 };
```


----------



## Kreij (Oct 17, 2009)

But we can still not make the assumption that each of the characters in his cypher corresponds to a single letter, the order they are in or if each should be used as part of the name. 
If, in fact, it is his name. It may be a clue to help find his name and not the name itself.


----------



## FordGT90Concept (Oct 17, 2009)

"Berkeley" is too close of a match to be mere coincidence:
http://www.zodiackiller.com/images/lennyheller.gif

Result: *BERKELEY*E RBY

The 408 cipher had gibberish at the end as well...

It also can't be mere coincidence that Berkeley is in San Francisco Bay Area where most of the murders took place.


Edit: I did some more digging into what I discovered above and everything fits like a glove.  I won't say anymore until someone can confirm it.


----------



## lemonadesoda (Oct 17, 2009)

FordGT90Concept said:


> That mean you don't like the beta?



Nettool.exe (1.70) works well for me. Dont want to lose that.

Nettool.exe (beta 2) is still very WIP. I dont like it yet.

1./ When you open it up, the windows/column sizes are all out of whack. That means I have to spend time footling with windows and column sizes before I can start






2./ The input boxes are non obvious and too complex for a KISS tool. All those VB property dialogs that need to be editted. Quite fine for an alpha... but not so user friendly

3./ Sorting of IP addresses is not numeric but alpha... meaning that 192.168.0.2 is AFTER 192.168.0.100, etc.





Keep up the good work!!


----------



## FordGT90Concept (Oct 17, 2009)

lemonadesoda said:


> 1./ When you open it up, the windows/column sizes are all out of whack. That means I have to spend time footling with windows and column sizes before I can start
> http://img.techpowerup.org/091017/Capture039.jpg


The columns on the right are automatically sized according to content.  Enabling Save Settings will store/load how large that panel on the left is.




lemonadesoda said:


> 2./ The input boxes are non obvious and too complex for a KISS tool. All those VB property dialogs that need to be editted. Quite fine for an alpha... but not so user friendly


Only the ones at the top (under Necessary) are required.  The others can be ignored.  Generally speaking, it will work without changing anything but it will only get local info if you do.




lemonadesoda said:


> 3./ Sorting of IP addresses is not numeric but alpha... meaning that 192.168.0.2 is AFTER 192.168.0.100, etc.
> http://img.techpowerup.org/091017/Capture040.jpg


I haven't looked into fixing this but probably should.  The real concern with handling it as an IP Address is IPv6 support.


----------



## oily_17 (Oct 17, 2009)

FordGT90Concept said:


> The columns on the right are automatically sized according to content.  Enabling Save Settings will store/load how large that panel on the left is.



Just tried it on beta3 and it only saves changes to the Optional values and not if you resize the left panel.

EDIT: The values for the splitter size change in the .ini file but dont load when you restart.


----------



## Kreij (Oct 17, 2009)

The minimum size for the main form works fine for not allowing one to make the window too small, but if you resize the left pane the form does not grow to accomodate what is in the right pane and you can quish it out of existance by making the left pane as large as the entire main form.

The help menu item opens up a great help file. Excellent job 

If you do file->Exit the settings are saved.
If you click the red X the settings are saved.
If you right click in the task bar and close the app, the settings are saved.
If you Ctrl-Atl-Del and go into task manager and kill the process, the settings are saved.
It's getting harder to find anything misbehaving.


```
[Main]
Width=2576           <--- Giant NetTools lol
Height=1586          <---
SelectedIndex=0
```

Maybe you should just use the "eek" smiley for the icons.


----------



## FordGT90Concept (Oct 17, 2009)

oily_17 said:


> Just tried it on beta3 and it only saves changes to the Optional values and not if you resize the left panel.


I'm not sure I follow?




oily_17 said:


> EDIT: The values for the splitter size change in the .ini file but dont load when you restart.


I noticed that oddity before but it seemed to fix itself.  I'll look into it...




Kreij said:


> The minimum size for the main form works fine for not allowing one to make the window too small, but if you resize the left pane the form does not grow to accomodate what is in the right pane and you can quish it out of existance by making the left pane as large as the entire main form.


I suppose I could make that slider adjust the size of the entire form but, I think that is a behavior most users wouldn't expect.




Kreij said:


> The help menu item opens up a great help file. Excellent job


I try. 




Kreij said:


> If you do file->Exit the settings are saved.
> If you click the red X the settings are saved.
> If you right click in the task bar and close the app, the settings are saved.
> If you Ctrl-Atl-Del and go into task manager and kill the process, the settings are saved.
> It's getting harder to find anything misbehaving.


Oops.




Kreij said:


> Maybe you should just use the "eek" smiley for the icons.


Now that's an idea but I fear someone just stumbling across it will think it is a virus and delete it.


----------



## Kreij (Oct 17, 2009)

> I suppose I could make that slider adjust the size of the entire form but, I think that is a behavior most users wouldn't expect.



I understand what you mean, but if you are going to persist (via settings) the left pane's size, the app will start with no results pane at all if the users squishes it out of existance and then exits. Something to consider.

You are right on the eek icon, it was meant to be tongue-in-cheek. Maybe you could use something similar to what Windows puts in the taskbar for internet connections (two minitor thingy).

Or maybe a ninja. Everyone likes ninjas.


----------



## lemonadesoda (Oct 17, 2009)

IMO there are two many applications using the "monitorthingy". Nettool should look different.

Either a spanner (wrentch), or
A nut, or
A crowbar, or
Pink panther


----------



## Kreij (Oct 17, 2009)

I think Ford should post a few icon choices in this thread so we can vote on them. heheh


----------



## FordGT90Concept (Oct 17, 2009)

lemonadesoda said:


> 3./ Sorting of IP addresses is not numeric but alpha... meaning that 192.168.0.2 is AFTER 192.168.0.100, etc.
> http://img.techpowerup.org/091017/Capture040.jpg


Unfortunately, this can't be fixed.  Comparisons are made using integers (-2,147,483,648 to 2,147,483,647)  IPv4 has values of (0 to 4,294,967,295).  IPv6 has values of (0 to 2^128).  There simply no way to compare the two without losing a lot of data.

All I can really do is pad it with zeros (e.g. 192.168.0.1 -> 192.168.000.001).




oily_17 said:


> Just tried it on beta3 and it only saves changes to the Optional values and not if you resize the left panel.
> 
> EDIT: The values for the splitter size change in the .ini file but dont load when you restart.


Finally got it fixed.  When docking is set to Dock.Fill, Width is set to 200 and Height is set to 100 (doesn't reflect the actual size).  It is impossible to change these values and the SplitContainer.SplitterDistance relies on them to resize.  The solution was to use SizeChanged event to manually "dock" it without using the Dock property.




Kreij said:


> The minimum size for the main form works fine for not allowing one to make the window too small, but if you resize the left pane the form does not grow to accomodate what is in the right pane and you can quish it out of existance by making the left pane as large as the entire main form.


It is impossible to make them go completely go away.  Still, I increased the min sizes from 25 to 100.




Kreij said:


> If you do file->Exit the settings are saved.
> If you click the red X the settings are saved.
> If you right click in the task bar and close the app, the settings are saved.
> If you Ctrl-Atl-Del and go into task manager and kill the process, the settings are saved.


It saves no matter how you close it (except ctrl+alt+del) so long as "Save Settings" is checked.  If you uncheck it and agree to delete the settings file, it will no longer save settings until it is checked again.  It is designed to only save on close.  Clicking Save Settings only enables/disables saving.




lemonadesoda said:


> Pink panther


That is trademarked by Owens Corning.


If someone wants to make their own icons for me to use, they can.  I'll probably use it so long as it is appropriate and legal.


Beta 4 uploaded.  I don't remember what I changed. 


Edit: By the way, I submitted that "Berkeley, E." result to the Vallejo police (they are handling the Zodiac Killer case).  We'll see what comes of it.


----------



## Kreij (Oct 18, 2009)

Sorry for not posting. I didn't see that you made b4 available.

Cant' find any problems. 

One thought I had, do you think it would be better to shorten up the property names.
(eg. GetWMIHostName -> GetHost, GetWMIOperatingSystemAndMemory -> GetOS, GetWMIProcessor -> GetCPU)

I am good with the way it is, I just wonder if people who are not familiar with what WMI is would be confused or even a bit reluctant to set those to true.

As I said, just a thought. Your app, your call.


----------



## FordGT90Concept (Oct 19, 2009)

I think I'll leave in case I want to add more later.  GetHostName should be there as an option anyway (ehm, only get IP addresses).


Edit: A few quick changes:
-TraceRoute: GetHostNames -> GetHostName
-Intranet Scan: Added GetHostName with default setting of true.
-Settings: Automatically deletes invalid sections of the INI instead of raising errors.  You'll lose settings for that one tab but it automatically corrects the errors it encountered.

Not going to release yet...


----------



## lemonadesoda (Oct 19, 2009)

*New bug on lauching the exe*







NEVER had any problems in previous versions of nettool.

PS. The error box says NetTool2. (Which is think is CORRECT ) But the exe is still named nettool.exe.  Rename the exe to NetTool2.exe FTW!


----------



## Kreij (Oct 19, 2009)

I have no problems with b4 on either Vista or XP


----------



## FordGT90Concept (Oct 19, 2009)

lemonadesoda said:


> http://img.techpowerup.org/091019/Capture086.jpg
> 
> NEVER had any problems in previous versions of nettool.
> 
> PS. The error box says NetTool2. (Which is think is CORRECT ) But the exe is still named nettool.exe.  Rename the exe to NetTool2.exe FTW!


Most likely there is a problem with the settings.ini.  rename/move it to another folder, or delete it and it should be fixed (you'll have to reenable saving).

If moving the settings.ini fixes it, maybe you could send it to me so I can figure out what in there is making it crash (copy and paste its contents to a PM would work).


----------



## lemonadesoda (Oct 19, 2009)

From a DIFFERENT computer this time




Something is up. No problems with v1.7x, cant say I've used the beta 2's much so cant vouch for earlier v2.x


----------



## Kreij (Oct 20, 2009)

Whoops !  Typed in a non-existant (but correctly formed) Domain name into 2b4 Ping and it didn't handle it very gracefully (TR and DNS-R throw exceptions also) ...


```
System.Net.Sockets.SocketException was unhandled
  Message="No such host is known"
  Source="System"
  ErrorCode=11001
  NativeErrorCode=11001
  StackTrace:
       at System.Net.Dns.GetAddrInfo(String name)
       at System.Net.Dns.InternalGetHostByName(String hostName, Boolean includeIPv6)
       at System.Net.Dns.GetHostEntry(String hostNameOrAddress)
       at NetTool.UcPing.Looper(Object host)
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart(Object obj)
  InnerException:
```


----------



## FordGT90Concept (Oct 20, 2009)

What was the domain name?


----------



## [Ion] (Oct 20, 2009)

The Beta isn't working for me:




Every time I try to launch it, I get this error.  I'm running XP Pro x32, SP3


----------



## FordGT90Concept (Oct 21, 2009)

I'll be uploading another beta soon (a day or two).  I'm in the middle of trying to add printing support so it's taking a while...


Edit: How does this look?

```
Network Tools 2.0.0
Trace Route
-------------------


Results:
+-----+-----------+----------------+------------------------------------------+
| Hop | Time (ms) | IP Address     | Host Name                                |
+-----+-----------+----------------+------------------------------------------+
| 1   | 1390      | 74.44.40.1     | 74-44-40-1.dr01.lmrs.ia.frontiernet.net  |
| 2   | 46        | 74.40.43.113   |                                          |
| 3   | 31        | 74.40.3.97     | ge-3-1-0--0.cr01.chcg.il.frontiernet.net |
| 4   | 62        | 74.40.2.170    |                                          |
| 5   | 46        | 74.40.2.102    | ge-0-0-0--0.br01.atln.ga.frontiernet.net |
| 6   | 109       | 72.14.216.28   |                                          |
| 7   | 156       | 72.14.233.54   |                                          |
| 8   | 78        | 72.14.236.27   |                                          |
| 9   | 171       | 216.239.43.80  |                                          |
| 10  | 109       | 209.85.250.126 |                                          |
| 11  | 109       | 209.85.250.144 |                                          |
| 12  | 140       | 64.233.174.131 |                                          |
| 13  | 109       | 72.14.232.2    |                                          |
| 14  | 93        | 74.125.53.100  | pw-in-f100.1e100.net                     |
+-----+-----------+----------------+------------------------------------------+
```


----------



## Kreij (Oct 21, 2009)

FordGT90Concept said:


> What was the domain name?



ftp.apex-epl.com

When I ran the source for 1.5.4, it says "unable to resolve the address" and does not throw an exception (using Ping). Something your not checking for in N2b4 ? 



FordGT90Concept said:


> I'll be uploading another beta soon (a day or two).  I'm in the middle of trying to add printing support so it's taking a while...
> 
> 
> Edit: How does this look?



In the kindest possible way I can concieve to reply ... it sucks. I would rather do a screen print.
No offense intended. I'm just being honest, my friend.


----------



## FordGT90Concept (Oct 21, 2009)

Kreij said:


> ftp.apex-epl.com
> 
> When I ran the source for 1.5.4, it says "unable to resolve the address" and does not throw an exception (using Ping). Something your not checking for in N2b4 ?


Got that fixed on Ping, DNS Resolve, and TraceRoute.  





Kreij said:


> In the kindest possible way I can concieve to reply ... it sucks. I would rather do a screen print.
> No offense intended. I'm just being honest, my friend.


That's too bad.  I guess you'll be using Print Screen then? XD

What "sucks" about it?  I think it is awesome (this is what it put in the clipboard by the way):

```
Network Tools 2.0.0
Intranet Scan
-------------------


Results:
+---------------+-----------+-----------------------------+----------------------------------------+-------------+
| IP Address    | Host Name | Operating System            | Processor                              | Memory (KB) |
+---------------+-----------+-----------------------------+----------------------------------------+-------------+
| 192.168.0.1   |           |                             |                                        | 0           |
| 192.168.0.111 | PTR-LASER |                             |                                        | 0           |
| 192.168.0.128 | SERVER    |                             |                                        | 0           |
| 192.168.0.191 | by-2009   | XP Professional x64 Edition | Intel(R) Pentium(R) III Xeon processor | 6289248     |
| 192.168.0.199 | PTR-MFC   |                             |                                        | 0           |
+---------------+-----------+-----------------------------+----------------------------------------+-------------+
```
And another:

```
Network Tools 2.0.0
DNS Resolve
-------------------

Host Name: techpowerup.com

Addresses:
+----+------------+
| Id | IP Address |
+----+------------+
| 1  | 74.86.91.2 |
+----+------------+

Aliases:
+----+-------+
| Id | Alias |
+----+-------+
+----+-------+
```

Remember, you can always use Save to CSV to send the data to another application (like Excel) which can format it however you want it.


----------



## FordGT90Concept (Oct 21, 2009)

Beta 5 uploaded.  If you are upgrading from a previous beta, Trace Route and Intranet Scan settings will be returned to default on start.

Save to TXT and Copy to Clipboard was added.  I don't remember much more than that. XD

Hopefully those two crashes above will be fixed.


----------



## Kreij (Oct 21, 2009)

> What "sucks" about it? I think it is awesome (this is what it put in the clipboard by the way):



You have a great program with a sweet GUI and the print out looks like the stat read-out from an Atari 2600 on a CGA monitor.

Bah ... Just ignore me, Ford, I'm tired tonight. I look at it after some sleep  ... ZZZzzz.


----------



## FordGT90Concept (Oct 21, 2009)

Those aren't print outs, just save to .txt and copy to clipboard.  I don't know if I'm going to add printing functions or not seeing as ASCII is unacceptable for a spooler. 

Hey, hey! Do you want to write a printing class?  I could give you my TextFile classes which contain all the data.  All it needs is formatting and to be sent to the spooler.


----------



## Kreij (Oct 21, 2009)

FordGT90Concept said:


> Those aren't print outs, just save to .txt and copy to clipboard.  I don't know if I'm going to add printing functions or not seeing as ASCII is unacceptable for a spooler.



A few posts ago you said you were trying to add printing support, followed by "how does it look?" You can see where I may have made the association. 



> Hey, hey! Do you want to write a printing class?  I could give you my TextFile classes which contain all the data.



Sure. What's one more project? lol
Hmm .. Just the TextFile classes won't allow me to debug with actual application data. If it's not a problem, why don't you pass along the source for the whole project. I'll be happy to sign an NDA if you want. 



> All it needs is formatting and to be sent to the spooler.



Borrowing your line ..... Oh the sarcasm


----------



## FordGT90Concept (Oct 21, 2009)

Kreij said:


> Sure. What's one more project? lol
> Hmm .. Just the TextFile classes won't allow me to debug with actual application data. If it's not a problem, why don't you pass along the source for the whole project. I'll be happy to sign an NDA if you want.


Fine, but no NDA necessary.   I'll PM you a link.





Kreij said:


> Borrowing your line ..... Oh the sarcasm


----------



## [Ion] (Oct 21, 2009)

Beta 5 still isn't working for me, I'm getting the same error as above


----------



## FordGT90Concept (Oct 21, 2009)

[Ion] said:


> Beta 5 still isn't working for me, I'm getting the same error as above


Do you have the .NET framework installed?  You can get it through Windows Update under Optional updates.

If yes, did the application create a setttings.ini?  If so, could you PM the contents of it to me (make sure to put code BB tags around it)?


----------



## Kreij (Oct 21, 2009)

@ Ford : I got your PM and pulled the file.
If I have questions or requests for "slight modifications", do you want them here or in PMs?
I really need to write a print engine for my work app too, so I can safely do it on "company" time too. 

@ION : I'm running XP x86 SP3 at work and don't have that problems.
Can you find anything in the Application Event Log that may shed a little light on why the program is crashing on your system?


----------



## [Ion] (Oct 21, 2009)

Whoops, I realized I didn't have .NET installed, I'm installing it now


----------



## lemonadesoda (Oct 22, 2009)

No ini file created

I'll run Windows Update. I have .NET installed, but let's see if a security update is required.


----------



## FordGT90Concept (Oct 22, 2009)

Kreij said:


> @ Ford : I got your PM and pulled the file.
> If I have questions or requests for "slight modifications", do you want them here or in PMs?
> I really need to write a print engine for my work app too, so I can safely do it on "company" time too.


If it is directly related to the code, PM.  If general, this thread.  We don't want to fill this thread with technical jargon. 

I really need to write a print engine as well but really have no need.  By the way, the TextFile and CSV code is presorted (according to what is in the list view) so it is just a matter of getting it to a spooler.


----------



## lemonadesoda (Oct 22, 2009)

I think the output looks fine


----------



## FordGT90Concept (Oct 22, 2009)

[Ion] said:


> Whoops, I realized I didn't have .NET installed, I'm installing it now


Hopefully it will work for you once .NET is installed.




lemonadesoda said:


> http://img.techpowerup.org/091021/Capture120.jpg
> 
> No ini file created
> 
> I'll run Windows Update. I have .NET installed, but let's see if a security update is required.


If you have .NET 2.0 installed or newer and it is still causing errors, I have to assume that there is some security issue like the user account does not have enough privileges to run it.  Maybe try running it as an administrator?  If there isn't a problem with the INI, I really don't know what else could cause it to error on start.


----------



## lemonadesoda (Oct 22, 2009)

Nope. I can only guess it is bombing out before trying to write the ini, since security settings aint it.






Have you put some x64 specific code in there? I'm on 32bit.


----------



## Bot (Oct 22, 2009)

sweet GT, subscribed


----------



## FordGT90Concept (Oct 22, 2009)

lemonadesoda said:


> Nope. I can only guess it is bombing out before trying to write the ini, since security settings aint it.
> 
> http://img.techpowerup.org/091021/Capture121.jpg
> 
> Have you put some x64 specific code in there? I'm on 32bit.


I'll try running it on a 32-bit machine...


----------



## Kreij (Oct 22, 2009)

FordGT90Concept said:


> If it is directly related to the code, PM.  If general, this thread.  We don't want to fill this thread with technical jargon.



We don't?!?!?!? 



> I really need to write a print engine as well but really have no need.  By the way, the TextFile and CSV code is presorted (according to what is in the list view) so it is *just a matter of* getting it to a spooler.



Yeah, that's what they all say.



lemonadesoda said:


> I think the output looks fine



Brown-Nosing wienie. (j/k) 



FordGT90Concept said:


> I'll try running it on a 32-bit machine...



I haven't tested n2b5 at work yet (was fighting all day with ComboBox event .. Arrgggh), but I can check it tomorrow. Home is x64 Vista, work is x86 XP.
At work I am running on a domain, but I have full admin rights to everything. I guess that is because I'm the only one in the IT department.
"Kneel before me and beg, lowly users of my domain!!"


----------



## FordGT90Concept (Oct 22, 2009)

I ran Beta 5 on Windows XP Pro 32-bit and Windows Vista Home Premium 32-bit without problems.


----------



## Kreij (Oct 22, 2009)

Just ran n2b5 on Vista x64. No problems.

Interesting TR to TPU ..

```
Network Tools 2.0.0
Trace Route
-------------------

Results:
+-----+-----------+----------------+--------------------------------------+
| Hop | Time (ms) | IP Address     | Host Name                            |
+-----+-----------+----------------+--------------------------------------+
| 1   | 1         | 10.10.10.50    |                                      |
| 2   | 3019      | 10.32.0.1      |                                      |
| 3   | 1809      | 10.242.20.1    |                                      |
| 4   | 1679      | 10.242.30.25   |                                      |
| 5   | 1789      | 10.242.30.1    |                                      |
| 6   | 1493      | 10.242.100.2   |                                      |
| 7   | -1        |                | Request timed out.                   |
| 8   | 2409      | 10.242.110.2   |                                      |
| 9   | 1603      | 63.227.232.221 | ewr-edge-10.inet.qwest.net           |
| 10  | 1832      | 67.14.7.30     | ewr-core-02.inet.qwest.net           |
| 11  | 3534      | 205.171.17.158 | ewr-brdr-03.inet.qwest.net           |
| 12  | 1600      | 4.68.111.69    | ge-4-16.car4.SanJose1.Level3.net     |
| 13  | 2272      | 4.68.99.62     | ae-32-52.ebr2.Newark1.Level3.net     |
| 14  | 2403      | 4.69.132.101   | ae-4-4.ebr2.Washington1.Level3.net   |
| 15  | 2438      | 4.69.134.158   | ae-92-92.csw4.Washington1.Level3.net |
| 16  | 4496      | 4.69.134.141   | ae-91-91.ebr1.Washington1.Level3.net |
| 17  | -1        |                | Request timed out.                   |
| 18  | 2370      | 4.69.132.85    | ae-2.ebr3.Atlanta2.Level3.net        |
| 19  | 3278      | 4.69.134.21    | ae-7.ebr3.Dallas1.Level3.net         |
| 20  | 1678      | 4.69.145.136   | ae-3-80.edge3.Dallas1.Level3.net     |
| 21  | 3603      | 4.71.198.18    |                                      |
| 22  | 2313      | 66.228.118.203 |                                      |
| 23  | 2387      | 66.228.118.182 |                                      |
| 24  | 1494      | 74.86.91.2     | www1.techpowerup.com                 |
+-----+-----------+----------------+--------------------------------------+
```

From WI, to SanJose, to Newark, to Washington, to Atlanta, to Dallas.
I wish I could get frequent flyer miles for my packets.


----------



## lemonadesoda (Oct 22, 2009)

Different machine (netbook Atom), different anti-virus, 32bit







DrWatsn32 is not showing any diagnostic data. Anything i can do to help you track this down?

If not 32bit issue, what about international settings? Or physical location/folder of nettool.exe?


----------



## FordGT90Concept (Oct 22, 2009)

It should auto-negotiate all international settings (namely datetime) and it doesn't use any international stuff until you do something.

Nettool should be able to run from anywhere except the ZIP archieve (it might work but don't count on settings saving/loading).


Maybe double check that .NET 2.0 is installed?  It would be under Add/Remove Programs labeled as "Microsoft .NET Framework 2.0 Service Pack 2"

Ion's error and your error are remarkably similar ("Application has encountered an error...").


----------



## Kreij (Oct 22, 2009)

The print engine is going well. 
It can be easily extended for more functionality as it implements basic classes and interfaces.
The code will be reusable in other apps if you want. I didn't put it into a library, so you will have to snag the code out of the NetTool project if you want to reuse it. 

My s/w quality tester (the toolroom manager. lol) at work is on vacation for the next two weeks, so my coding load will be almost zero at work. So unless something takes a total crap on the network, I should be able to work on it almost exclusively.

I can also include an option to print the output using the freely redistributable Crystal Reports runtime that VS uses. You would have to include the files in an installer if you wanted to do that, so I will leave that up to you.

Were you planning on including an installer, or just let people run the exe from whatever directory they extract it into. Installers are nice as they check for dependancies and guide people to update/install what they are missing (like .Net Framework versions, etc.).


----------



## FordGT90Concept (Oct 22, 2009)

Kreij said:


> It can be easily extended for more functionality as it implements basic classes and interfaces.
> The code will be reusable in other apps if you want. I didn't put it into a library, so you will have to snag the code out of the NetTool project if you want to reuse it.


I habitually snag. XD




Kreij said:


> I can also include an option to print the output using the freely redistributable Crystal Reports runtime that VS uses. You would have to include the files in an installer if you wanted to do that, so I will leave that up to you.


I'd rather not...




Kreij said:


> Were you planning on including an installer, or just let people run the exe from whatever directory they extract it into. Installers are nice as they check for dependancies and guide people to update/install what they are missing (like .Net Framework versions, etc.).


I wasn't planning on making an installer because there is nothing there that warrants it (multiple files in multiple directories, multiple registry entries, other apps need to find it, shortcuts needed, etc.).  I could make an installer for it just to make sure .NET is available but that will have to wait until the very end of developement.


----------



## Kreij (Oct 22, 2009)

> I habitually snag. XD



I lol'd. I do too. Most of the coding I do is a one-up deal, and I don't tend to put things into libraries. If I was writing software for distribution I am sure I would give it quite a bit more thought, but that is not the case at the moment. 

One thing that I do, however, is that if I find a solution to a problem I post it in P&W on TPU so that if anyone runs into the same problem it may help them. It is not completely altruistic though, as I refer to my own posts when I forget how I did something before


----------



## lemonadesoda (Oct 22, 2009)

FordGT90Concept said:


> Maybe double check that .NET 2.0 is installed?  It would be under Add/Remove Programs labeled as "Microsoft .NET Framework 2.0 Service Pack 2".







Nope, .NET is installed.


----------



## FordGT90Concept (Oct 22, 2009)

Try running the program (HelloWorld.zip) attached to this post.  If it doesn't work, .NET must be corrupt so you should either repair it or uninstall and get a fresh copy from Microsoft.  If it does work, I guess we'll just have to some serious debugging (stepping through everything from execution to displaying the form).


----------



## lemonadesoda (Oct 22, 2009)

.NET is fine, it seems





Go to bed!


----------



## FordGT90Concept (Oct 22, 2009)

Indeed.  I'll make a build just for you that will write to a file line by line and hopefully, it will stop writing just before it crashes. XD


----------



## lemonadesoda (Oct 22, 2009)

FordGT90Concept said:


> Indeed.  I'll make a build just for you that will write to a file line by line and hopefully, it will stop writing just before it crashes. XD



I'll happily run a debugger version.

It all started going wrong with your beta 4 build. What did you change between b3 and b4?


----------



## FordGT90Concept (Oct 22, 2009)

lemonadesoda said:


> I'll happily run a debugger version.
> 
> It all started going wrong with your beta 4 build. What did you change between b3 and b4?


I have no idea. 


Extract and run the attached app.  It will create a "step.log" in the same directory it is in.  Copy and paste its contents here.


----------



## lemonadesoda (Oct 22, 2009)




----------



## FordGT90Concept (Oct 22, 2009)

That's helpful...  This version will zoom in on the problem code more...


----------



## lemonadesoda (Oct 22, 2009)

Ford, I'm out now until Saturday.... sorry cant help further until then. Got to leave for Strasbourg. Lemon


----------



## FordGT90Concept (Oct 22, 2009)

It should be fixed in this file...

If it isn't, copy the step.log again.


Have fun on your trip.


----------



## Kreij (Oct 23, 2009)

The print engine is moving right along.
There are a few quirks with alignment between the PrintDocument positioning and the graphics device drawing methods. No big deal, but it means a little extra tweeking to get the text and graphics positioned correctly.
I hope to have a working screen for you tonight yet. (crosses fingers)

Btw, I had to make a few minor modifications. 
Everything is commented to indicate something I did, so you will not have any problems finding the changes.


----------



## FordGT90Concept (Oct 23, 2009)

That was quick.  I'm working on adding DNS Record now...


Edit: I got DNS Record done but I am going to wait until for sure lemonsoda's problem is fixed before releasing it.

Here's the Copy to Clipboard results for cnn.com:

```
Network Tools 2.0.0
DNS Record
-------------------

Header: id: 44166
Flags: Query: 1, Answer: 6, Authority: 3, Additional: 1

Questions:
+----+---------+------+-------+
| Id | Name    | Type | Class |
+----+---------+------+-------+
| 1  | cnn.com | A    | ANY   |
+----+---------+------+-------+

Answers:
+----+---------+------+-------+-----+----------------+
| Id | Name    | Type | Class | TTL | Record         |
+----+---------+------+-------+-----+----------------+
| 1  | cnn.com | A    | IN    | 177 | 157.166.224.26 |
| 2  | cnn.com | A    | IN    | 177 | 157.166.226.25 |
| 3  | cnn.com | A    | IN    | 177 | 157.166.226.26 |
| 4  | cnn.com | A    | IN    | 177 | 157.166.255.18 |
| 5  | cnn.com | A    | IN    | 177 | 157.166.255.19 |
| 6  | cnn.com | A    | IN    | 177 | 157.166.224.25 |
+----+---------+------+-------+-----+----------------+

Authorities:
+----+---------+------+-------+-----+---------------------+
| Id | Name    | Type | Class | TTL | Record              |
+----+---------+------+-------+-----+---------------------+
| 1  | cnn.com | NS   | IN    | 124 | twdns-02.ns.aol.com |
| 2  | cnn.com | NS   | IN    | 124 | twdns-04.ns.aol.com |
| 3  | cnn.com | NS   | IN    | 124 | twdns-03.ns.aol.com |
+----+---------+------+-------+-----+---------------------+

Additionals:
+----+---------------------+------+-------+------+---------------+
| Id | Name                | Type | Class | TTL  | Record        |
+----+---------------------+------+-------+------+---------------+
| 1  | twdns-03.ns.aol.com | A    | IN    | 2343 | 207.200.73.85 |
+----+---------------------+------+-------+------+---------------+
```


----------



## Kreij (Oct 23, 2009)

Okey dokey.  Preliminary results ...





It still needs work, but what do you think?


----------



## FordGT90Concept (Oct 23, 2009)

It's good so long as it supports multiple Options, Fields, and Tables.   Maybe I should give you the new one with DNS Record code which has all of the above.


----------



## Kreij (Oct 23, 2009)

It should not matter, I pull the data directly from the "uc" class (I needed the data in a different format than you were sending to the TextFile, so I wrote a method for the class to send me what I wanted).

It's a standard method that works off of the SVL's so it will work on any of the classes.

Hope you don't mind.


----------



## FordGT90Concept (Oct 23, 2009)

You probably better send the UserControl changes to me because if it doesn't work with the larger scheme of things, it won't be acceptable.


----------



## Kreij (Oct 23, 2009)

You could have named your SVL's the same thing in all your classes.  

Trace Route ...


----------



## FordGT90Concept (Oct 23, 2009)

DNS Record, for example, has four SLVs and two fields.  The descriptive names make it easier to debug.


----------



## Kreij (Oct 23, 2009)

Okay, I'm stupid, but how can I send you a zip file or the project using TPU?
I don't have an exteral site I can link you to.

I don't think the multiple SVL's will be a problem, just a little code modification.


----------



## FordGT90Concept (Oct 23, 2009)

Edit: I'll PM you my email address.


Edit: MeasureString will get the bounds of a string with the appropriate font.


----------



## Kreij (Oct 23, 2009)

FordGT90Concept said:


> Edit: MeasureString will get the bounds of a string with the appropriate font.



Rumor has it that TextRenderer.MeasureText works best for getting the string width.
Seems to work fine for centering text and the like.


----------



## Kreij (Oct 23, 2009)

Time for a few hours of sleep, my friend.
PM me with new stuff.


----------



## FordGT90Concept (Oct 23, 2009)

Is the rumor true?

You got mail.


----------



## lemonadesoda (Oct 23, 2009)

Working... This is the opening screen:






A bit of a mess. However SAVE SETTINGS does work 

The "windowed console" looks good, but I still dont like the input areas, "VBA properties style". But that can be worked on later 





Also the "UI logic" isnt quite right. First you enter the data, and at the end of the list boxes, there should be the START or STOP buttons. Going back to the stop of the page to hit start is IE8 style. Urgh.

Oh, and the "copy to clipboard, csv, etc" is a great idea!* THANKS to Kreij *for helping on a print spooler too! You guys are doing a great job.

******

Can anyone recommend a MONOSPACED and NARROW and CLEAR font? Using courier or Lucida Console doesnt work... due to length of line still being too long even at 8pt.

I've tried "monaco" at 7pt... which so far is the best... but I'm sure there are better


----------



## FordGT90Concept (Oct 23, 2009)

Wikipedia has a list of monspaced fonts here but I doubt any would make them substantially narrower (namely because of "W"):
http://en.wikipedia.org/wiki/Samples_of_Monospaced_typefaces


The Start/Stop button was originally at the bottom.  There's three reasons why it got moved to the top:
1) To operate the application, you only have to move the mouse in a very small area.
2) Having the button sandwiched between the description and the progress bar just didn't look right.
3) Having the Start/Stop button so close to the Hide/Show button looked like an accident waiting to happen.  The Hide/Show button is gone now so that's not an issue anymore.

Remember, the default values almost always work but using them is kind of pointless (like pinging yourself). 


I know the Property Grid isn't the best possible solution but it allows me to add options quickly and the option set is unique and relatively consistent across all features.  If there was something similar but better (not being so developer'esque), I'd jump on it.


Are you running the application on a 800x600 resolution?  I think that might of been what caused the crashes.  It maybe wanted to make the screen smaller than your resolution supported so it caused errors in attempting to resize before it was ready to.  It's fixed now though so it shouldn't be an issue in the future.  Knowing it is fixed means I can release beta 6...


Beta 6 uploaded to the original post.  Several features added (DNS Record and more options under Edit).

*Do not click File -> Print or File -> Print Preview!*.  It will insta-crash until the feature is fully implemented.


----------



## lemonadesoda (Oct 23, 2009)

OK, I am - for the moment - happy with the Consolas font, free download from Microsoft


----------



## lemonadesoda (Oct 23, 2009)

FordGT90Concept said:


> Are you running the application on a 800x600 resolution?  I think that might of been what caused the crashes.  It maybe wanted to make the screen smaller than your resolution supported so it caused errors in attempting to resize before it was ready to.  It's fixed now though so it shouldn't be an issue in the future.  Knowing it is fixed means I can release beta 6...



No, I have been running it on different machines with resolutions all a lot higher than that: 1280x1024 (one machine), 1600x1200 (another machine), and 1366x768 (the netbook). 

One thing is common across all machines: display is set to 120DPI, not 96DPI. This setting is a standard corporate setup. The machines are used for productivity (ie. MS Office, acrobat etc.) and not gaming, so the 120DPI setting is used so that, with cleartype, the users get the best possible font rendering and legibility for long term office use. 

That might explain why the standard nettool layout is crunched up; the code is assuming certain "pixel widths".  Note that you may run into all kinds of scaleable desktop issues with Win 7. Be careful 

PS. LOL! Latest download NetTool2beta6 = NetTool1.70


----------



## Kreij (Oct 23, 2009)

@Ford : Are you pulling the SLV SubItem Bounds data into the TextFile.Table from the uc classes?

Oops ... was that technical jargon? 

Nevermind.


----------



## FordGT90Concept (Oct 23, 2009)

lemonadesoda said:


> One thing is common across all machines: display is set to 120DPI, not 96DPI. This setting is a standard corporate setup. The machines are used for productivity (ie. MS Office, acrobat etc.) and not gaming, so the 120DPI setting is used so that, with cleartype, the users get the best possible font rendering and legibility for long term office use.


Hmm, maybe that's what caused the problem.




lemonadesoda said:


> PS. LOL! Latest download NetTool2beta6 = NetTool1.70


Oops.  I thought it was kind of odd that their size matched.  Anyway, the correct file has been uploaded.


----------



## Kreij (Oct 23, 2009)

All is well with the PrintEngine.
Everything works fine for all of the tests, including multiple table tests.
Orientation switches to landscape depending on options (like turning everything on when doing an Intranet Scan).

Pagination needs to be done, so I will be working on that this weekend if I have time (lots to do around the house).


----------



## FordGT90Concept (Oct 23, 2009)

No need to rush.  I still have to do Whois and Remote Port Scan before it goes official.  I'm not sure if I will include Port Scan or not.  Remote Port Scan will definitely be the most difficult ("traffic lights").


----------



## Kreij (Oct 23, 2009)

FordGT90Concept said:


> Remote Port Scan will definitely be the most difficult ("traffic lights").



We like difficult. Easy coding is boring.

If you want to have some real fun, when the project is complete, let's rewite the whole thing in Pascal. 
Ah the good old days. I wrote a S/W QA database management app in Pascal many years ago when I worked for GE. That was back in the days when if you said OOP, people thought you dropped something. lol

Okay, I'll quit reminiscing and get back to coding.


----------



## Kreij (Oct 24, 2009)

Oh, by the way, you may think that us coding geeks are lost in some kind of bizaare world of twiddling bits. While this is basically true, we still have a few tentacles reaching out into reality.

That means if you are reading this and you have not posted in this thread, and you have new ideas or suggestion, I'm pretty confident they will be considered by Mr. FordGT.

Since I am writing the printing portion, I would like to hear any ideas that you may have thought of for printing features. I too, will consider all ideas and after discussing them with Ford, will implement any that we feel are worthy. 

Now's the time while the project is still in Beta !!
So quit lurking and toss out your ideas.


----------



## bissa (Oct 24, 2009)

wow, this is a great tool, I am in a networking/information security course in university and having a simple all in one tool like this is what I was looking for so I could test my network next Tuesday.


----------



## lemonadesoda (Oct 24, 2009)

1./ Please put date/time in the output, which will therefore be spooled to print.

2./ Did you consider an HTML output, not just csv and txt. Combined with 3, that would be interesting

3./ Allow IntranetScan and RemotePortScan to be run as a service, executing on a periodic basis, and saving the results to a file, even better if pointed to an FTP location

3B./ If 3. is too tricky a change in coding design, then have two start buttons, one which is the regular "EXECUTE" and another which is "REPEAT". In global settings you set the REPEAT time cycle, eg. 15 secs, 60 secs, 300 secs, 3600 secs.

Using 2 and 3 would allow me to have the service update a webpage. W00t! With 1 I would know how old the data was. Blxxdy brilliant.

4./ MAC address please on IntranetScan

5./ A print header would be useful. If managing multiple sites or network segments, it would be useful to be able to have a note WHAT (Network) the results were from

6./ PLEASE make sure the print spooler doesnt force Letter size. The rest of the world is on A4. MUCH MUCH appreciated.  There is NOTHING worse than having to unblock a printer demanding Letter to be manually fed into the cassette tray :grrr:  ESPECIALLY if it is a remote printer

( you did ask  )

PS. I am really looking forward to seeing those traffic lights and Kreij trying to spool them in color


----------



## Kreij (Oct 24, 2009)

lemonadesoda said:


> 1./ Please put date/time in the output, which will therefore be spooled to print.



That is already coded in. Each time you run a print, it will have the date you ran it on there.



> 2./ Did you consider an HTML output, not just csv and txt. Combined with 3, that would be interesting



Html that resembles the SaveToText or that resembles the Print job?
Your answer will determine who gets stuck with the coding 



> 3./ Allow IntranetScan and RemotePortScan to be run as a service, executing on a periodic basis, and saving the results to a file, even better if pointed to an FTP location



IS will continue to loop if you set the Interval greater than 30. As for saving to a file, would you want it to overwrite a single file or keep an archive of runs based on a timestamp?




> ( you did ask  )



YEs, and thanks for the input !!


----------



## Kreij (Oct 24, 2009)

I would like to formally pull post 317. I had no idea Lemon was going to be on. 

#4 - Mac Address id Ford's department, I'm sure he will respond.

#5 - Exactly how do you want it to describe the network you were on?


----------



## lemonadesoda (Oct 24, 2009)

2./ Answer depends on whose looks better  
*edit*
printguy get this job 
here is some inspiration, a little tool I have been using for years (not mine)
http://www.dimin.net/software/HTMLDirCreate/

3./ Overwrite is simplest. While keeping a log sounds interesting, investigating it for security reasons (who jumped in on the network, or when did a PC fail, etc.) is a seriously onerous task, and, IMO, not the task of Nettool to solve. So just overwrite... and then the updated http page can be accessed over the internet

5./ e.g. "Strasbourg office", or "Home", or "Result from h4cking NASA", ie. very very basic text entry, just a lot better than taking the printout and manually scribbling on it, esp. if the printer is remote, or you want to print to PDF and email it


----------



## Kreij (Oct 24, 2009)

#2 : The SaveToText is basically the raw data in pure text format, the spooler adds graphical elements for presentation. It's not really a matter of what looks better, it's a matter ofwhat you need. If you are not going to print the HTML page (because you can print the output from the run) there is little need for fancy formatting.  Since this is a diagnostic tool, does the HTML formatting need to be "fancier"? 

#5 : To allow that, the user would have to be queried for a description to add to the printed output. I am not sure that everyone would like that. Many would just want the printout without being bothered by addition questions. Please comment.

#6 : Farbernoofers!! I'm already fighting with the layout  
I will make sure to accomodate users of other paper sizes. Most likely we will have to add a page settings thingy. <--- (thingy is a highly technical term in case you didn't know)


----------



## lemonadesoda (Oct 24, 2009)

#2. Yes, a little fancier than the pure csv text. See my link in previous post for examples. Nothing more than that.

#6. This technical feature, as you call it, "*page setup*" is where you would also have an option to add the banner/header text.

MS Word for inspiration. Obviously not ALL of these...





Oh, well lookie here. There's some other ideas/organisation approach for Ford


----------



## Kreij (Oct 24, 2009)

The CSV output if for importing into another application (like excel) so there is no point in doing HTMl based on that.

I could generate all of the print output into HTML (based on a preference or something) and open a browser from which you could print.

Page setup brings to the table a few caveats. If you set the print location using that, the next time that you run the program it will report that the tests were run from where you ran it from the last time (as the data would be persisted). If someone runs the program from a different network and fails to change that, it will not reflect the current location. I think there is a better way to pull that off, and I will be pondering it. 

I am also pondering invading you dreams as a hit squad member and capping your a$$. 

Thanks for the suggestion, Lemon. I really appreciate them as you bring up things I have not thought of.


----------



## FordGT90Concept (Oct 24, 2009)

lemonadesoda said:


> 2./ Did you consider an HTML output, not just csv and txt.


I can do that.  Might as well throw XML in there too for good measure.  I have some code I can dig up from a previous HTML dump venture for formatting (including show/hide components)...




lemonadesoda said:


> 3./ Allow IntranetScan and RemotePortScan to be run as a service, executing on a periodic basis, and saving the results to a file, even better if pointed to an FTP location


That would require a separate application.  NetTool is not designed to be installed as a service.  Services generally don't have a GUI either (two separate applications) so yeah...that would be a big, mostly unrelated project to what we have now.  Of course, a lot of the code would translate but it would still work differently.




lemonadesoda said:


> 4./ MAC address please on IntranetScan


The only way to get MAC address would be via WMI.  If the device isn't responding to WMI requests, there's no way to get the MAC address.

Edit: MAC Address implemented (WMI).


----------



## Kreij (Oct 24, 2009)

This is the (not) official response to Lemon's input.


> 1./ Please put date/time in the output, which will therefore be spooled to print.



It does not matter if we do this or not as you have no real grasp of objective reality.
You are living in a time zone that make the time zone for Saturn look like a local one.



> 2./ Did you consider an HTML output, not just csv and txt. Combined with 3, that would be interesting



HTML is so old school. We have created something called "WYSIWWWYTS".
It stands for "What You See Is What We Want You To See."
It's far better and makes our lives less stressful.



> 3./ Allow IntranetScan and RemotePortScan to be run as a service, executing on a periodic basis, and saving the results to a file, even better if pointed to an FTP location



We could do this, but you would forget it is running and bury the interwebz with your crap packets. Besides, we know that you have been infected by the virus the Umbrella Corporation released and are really a flesh eating zombie.



> 3B./ If 3. is too tricky a change in coding design, then have two start buttons, one which is the regular "EXECUTE" and another which is "REPEAT". In global settings you set the REPEAT time cycle, eg. 15 secs, 60 secs, 300 secs, 3600 secs.



Two buttons is a bit much for someone who can only think of eating brains.



> 4./ MAC address please on IntranetScan



The MAC address is a good idea for normal folk, but would just allow you to hunt down unsuspecting flesh bags to quench your hunger. Sorry, our lawyers won't let us.



> 5./ A print header would be useful. If managing multiple sites or network segments, it would be useful to be able to have a note WHAT (Network) the results were from



This is a good idea. I recommend entering you GPS coordinants. That way we can send an armed team assistant to help you.



> 6./ PLEASE make sure the print spooler doesnt force Letter size. The rest of the world is on A4. MUCH MUCH appreciated. There is NOTHING worse than having to unblock a printer demanding Letter to be manually fed into the cassette tray :grrr: ESPECIALLY if it is a remote printer



Like you care about page size as you are munching on someone's liver.

------------------------------------------------------------------

Yeah, I've had a long day, but it's always good to have a little fun.
A big thanks to Lemon for his ideas, and let's hear more from all of you.



> PS. I am really looking forward to seeing those traffic lights and Kreij trying to spool them in color



No problem, they light you up in the night vision scope.


----------



## lemonadesoda (Oct 24, 2009)

Ford, please implement FLASHING traffic lights. That will REALLY SCREW Kreij and his print spooler, LOL.  That will give him nightmares. Can't wait to see how he implements flashing ink. Perhaps through some concept of folding the paper and flicking it back and forwards 

*Back to point 3.*  While you have the option to save as, as a manual step, perhaps consider this being AUTOMATIC. When you execute, there is are output files created for each format, perhaps with a lastrun.xxx filename. The manual save you currently have in "edit" ("file"?) would allow you to save to a filename of your choice.

The automatic save, esp. the HTML file, would allow me to run a separate folder watch service to take the file and dump it to my webserver, so I can access it from the internet. 

That way I can monitor who is on my network/hotspot.

Better still if you could tell (in options) WHERE this lastrun.xxx would be saved. That way I could run nettool on the same network as the server, or even the server itself, without having to have a separate folder watch service running in the background.  Clearly this is only useful if nettool can be set to re-run the last scan on a periodic basis as mentioned in 3B above.

PS. *THANKS* for the MAC info on scan. That is very useful of IDing larger networks, esp. wireless users, and for setting a list of approved/managed ACL 

***

Kreij. Go to sleep. You are losing it . Whatever happens, DONT TALK to anyone on the way home.


----------



## FordGT90Concept (Oct 24, 2009)

XML, HTML, CSV, and TXT formats are supported with options.  There will be nothing under Edit, instead, it is all being moved to File --> Export... where a viewer will pop up letting you select which type of output, which options to output, preview the output, and whether to save the output to file or copy to clipboard.

Intranet Scan now has a "Repeat" section with four new settings (SaveToFileOrFolder, SaveToPath, SaveToType, and SaveToOptions).  Combined, these settings are effectively the same as described above.  Yes, it automatically saves/loads these settings as part of Intranet Scan settings.


NetTool will never be compiled as a service.  Everything about it is built around the GUI so no GUI = no function.  I'm not saying a "NetMonitor" or something won't be released in the future that does run as a service but it won't ever be NetTool.


Remember, Intranet Scan is *very demanding*.  On your average computer, it could increase the number of threads running by 36% or more (673 to 914 for me).  Use at your own peril.


----------



## FordGT90Concept (Oct 24, 2009)

Beta 7 uploaded.  Too many chaneges to list but most on the surfaces are in "File -> Export..." and Intranet Scan.


----------



## Kreij (Oct 24, 2009)

Good morning Gents (or whatever salutation is applicable in your time zone),



			
				Lemon said:
			
		

> Kreij. Go to sleep. You are losing it . Whatever happens, DONT TALK to anyone on the way home.



I lol'd at that. I just post stuff like that to remind everyone that no matter what we are doing or how long we are working on it, there is always time to sit back, relax and have a little fun. I just used your post for the response because I know you can take a joke. 

@Ford , Got the latest. I will work on it as I have time this weekend. Get some sleep, my friend.


----------



## lemonadesoda (Oct 26, 2009)

Looking great. I like the export tool and preview. Nice!

Quick comments/suggestions (please excuse their brevity)

1./ Intranet scan is quite slow compared to Radmin's Advanced LAN scanner, and Advanced IP scanner

2./ Perhaps allow a double click on the intranetscan output (e.g. click on an identified IP) and then expand that for a port scan, see the Radmin tools above to get an idea what I mean

3./ Consider renaming "comma limited..." to csv, "hypertext markup language" to html etc. etc. Much quicker for the brain to process. Anyone who needs txt, html, xml EXPLAINING to them, wouldnt be using this tool in the first place!

The tool is coming on really nicely. Look forward to the REPEAT options working


----------



## FordGT90Concept (Oct 26, 2009)

lemonadesoda said:


> 1./ Intranet scan is quite slow compared to Radmin's Advanced LAN scanner, and Advanced IP scanner


The more options enabled, the slower it will go.  With no options selected, it completes in about 6 seconds for me.  Remember, most of the delays are because of an arbritary timeout I can't adjust.




lemonadesoda said:


> 2./ Perhaps allow a double click on the intranetscan output (e.g. click on an identified IP) and then expand that for a port scan, see the Radmin tools above to get an idea what I mean


Once remote port scan is added, I might be able to make it switch to and autofill remote port scan.  You'd have to click Start to make it begin the scan though (making sure the options are correct).




lemonadesoda said:


> 3./ Consider renaming "comma limited..." to csv, "hypertext markup language" to html etc. etc. Much quicker for the brain to process. Anyone who needs txt, html, xml EXPLAINING to them, wouldnt be using this tool in the first place!


I could maybe stick "TXT - ", "CSV - ", etc. on the front of them so they stand out.




lemonadesoda said:


> The tool is coming on really nicely. Look forward to the REPEAT options working


It does work.


----------



## Kreij (Oct 26, 2009)

I'm working on getting the print engine all functioning correctly.
There are many things to consider and I want it to work as well as possible from the start, so please bear with me. and you all will have the code to test in a couple of days. 

Back to coding.....


----------



## Kreij (Oct 28, 2009)

Comments ?

I also noticed that if you type an address in DNS Record, hit start and then repeat it adds to the list of records. Is this by design?


----------



## FordGT90Concept (Oct 29, 2009)

It looks good.  Three things...

1) Add labels to the tables (found in Table.Label, I think).  In your example, it should show Questions, Answers, Authorities, and Additionals, respectively.

2) Do not display empty tables.

3) Why does dailytech's name server list Dell and TechPowerUp? 



Kreij said:


> I also noticed that if you type an address in DNS Record, hit start and then repeat it adds to the list of records. Is this by design?


It is supposed to recycle controls every time Start is pressed.  The code looks correct so I'm not sure what is going wrong.


----------



## Kreij (Oct 29, 2009)

FordGT90Concept said:


> It looks good.  Three things...
> 
> 1) Add labels to the tables (found in Table.Label, I think).  In your example, it should show Questions, Answers, Authorities, and Additionals, respectively.



eh? More info please. It displays like the TextBox on the control.



> 2) Do not display empty tables.



No problem. 



> 3) Why does dailytech's name server list Dell and TechPowerUp?
> 
> 
> It is supposed to recycle controls every time Start is pressed.  The code looks correct so I'm not sure what is going wrong.



I typed in one IP and hit start, then cleared the property and hit start again and it added it, and once again in the example. n2b7src

Okay, I would just like to add,  *DOES ANYONE ELSE HAVE COMMENTS ON ANYTHING?*

Sorry for yelling, but we depend on you guys for feedback.


----------



## FordGT90Concept (Oct 29, 2009)

Kreij said:


> eh? More info please. It displays like the TextBox on the control.


Use Export... and output DNS Records as a Text Document.  You'll see how it displays the table label before outputting the table.





Kreij said:


> I typed in one IP and hit start, then cleared the property and hit start again and it added it, and once again in the example. n2b7src


I'll have to look into it when you are done.


----------



## lemonadesoda (Oct 29, 2009)

Kreij said:


> Okay, I would just like to add,  *DOES ANYONE ELSE HAVE COMMENTS ON ANYTHING?*
> 
> Sorry for yelling, but we depend on you guys for feedback.



If NOONEELSE says anything for a week, I will give you some more feedback... and suggestions... but for now I'll be zip.


----------



## Kreij (Oct 29, 2009)

FordGT90Concept said:


> Use Export... and output DNS Records as a Text Document.  You'll see how it displays the table label before outputting the table.



Got it. I do, however, see that your text output displays headers for empty tables.


----------



## FordGT90Concept (Oct 29, 2009)

Kreij said:


> Got it. I do, however, see that your text output displays headers for empty tables.


Bah!


----------



## Kreij (Oct 31, 2009)

Print Preview completely rewritten to facilitate a more consistent interface accross the app.






Still have a few things to complete.
Comments?


----------



## lemonadesoda (Oct 31, 2009)

Looks good! (apart from possible improvement of tab alignment in above example you showed)


----------



## Kreij (Nov 1, 2009)

Thanks lemon, I added a bunch more settings to the property grid. Ford is going to think I'm insane. lol

I've added ...
- The ability to change the border color on the boxes
- The ability to change the border width on the boxes
- the ability to make the header/footer fonts and colors different from the table text


Tab alignment? Ummm ... there aren't any tabs.
Anyway, the GUI is in a raw form I need to clean it up and align the controls and stuff like that.
I also need to make all the buttons above the preview function perfectly (well, at least as expected. lol)

One questions. I am adding the option of rounded (beveled) corners on the header/footer boxes. Do you also want the option of doing a color fill on the boxes with the option of having color gradients?

Speak now or forever hold you peace.


----------



## lemonadesoda (Nov 1, 2009)

Come off it! We dont need options about square or round corners on the header! But look at your print preview. The columns (data) dont line up. Can you fix that?

PS.Do a preview test on A4... just to check nothing falls off.

NOW I have a curved ball for you... I'm using an A5 _filofax_. Any chance of an A5 printout? http://www.whsmith.co.uk/CatalogAndSearch/ProductDetails-A5+Domino+Filofax++Red-32784763.html

Oh, one more thing... your preview looks a bit tight in the margins. Get a hole-punch to file the data, and the punch will punch out some numbers.  Default margins on left needed to allow for holepunch.


----------



## Kreij (Nov 1, 2009)

*Features*
Hey !! Don't kill me I'm just asking !!   Someone in a previous post expressed the idea that they wanted the printouts to be nice. I am just trying to facilitate whatever anyone wants. You can always leave them at the defaults if it is unimportant to you. My thought is I would rather have too much than not enough. Especially since it is easy to implement.

*Columns*
The columns line up with the column headers. When there are more (or less) headers, the data columns are aligned below them. If the data width of a specific table requires more space, then the columns must accomodate that. Each table (data) has it's own columns (headers). I could do a size aggreagation to make sure everything lines up, but that would leave a ton of white space in the tables that do not need that kind of room.

*Page Sizes*
I don't care if you are using the A$$ hat format. If you want it to work I will make it happen.
Looking into A5F specifically for you, my friend. 
In all honesty the Page sizes are a huge PITA. But it's a neccessity, so it will happen.

*Hole Punch*
For you lemon, anything. lol  Thanks for all your input. I really appreciate it.


----------



## Kreij (Nov 1, 2009)

lemonadesoda said:


> I didnt mean it in a negative way... only dont get carried away!
> 
> Ideas for Ford:http://www.packettrap.com/product/pt360_pro.aspx



I know that you didn't mean it in a negative way.
I'm trying to make the printing part as flexable as I can to try to support whatever people want.
This also allows for easy addition in the future.

About you link ... If Ford decides to change the entire way the application outputs data I am going to make sure you are brought up at the next Hit Squad meeting.


----------



## Kreij (Nov 1, 2009)

In my best estimate, Ford wanted to write a light weight application that would be useful for viewing network related stuff. I don't think (and Ford can prove me wrong) that the application was meant to be a total network management suite of tools. Between Ford and I, we could make this happen, but that is not what I think Ford was shooting for.

What Ford created was a network browsing tool that is the fastest I've ever seen. I can scan my entire network at work for unused IPs in less than a minute including details. I cannot find anything like this elsewhere, and have since dumped all my other tools in favor of this application.

I agreed to write the print portion of this for Ford so that he could work on finishing the rest of the modules and not have to worry about it. I can make this as raw as people want, or as fancy. I really don't care as coding this is the way I relax in the evenings. Some people sit on the couch and watch reruns and laugh at their farts. I sit a my computer and write code and laugh at my farts.

All that concerns me is that you guys let us know what you want (or don't want) so we can give you a tool that is painfully fast and gives you the output you want.

Cheers


----------



## lemonadesoda (Nov 1, 2009)

Whatever happens,dont bloat the tool! I removed the link... it was only for tangential sense-checking. I tried the tool, then uninstalled it pretty quick... I didnt like it. But the *process*/exercise was useful... what should be in "lean" what shouldnt. Does an icon based toolbar make sense, or not... whatever... probably a distraction... so dont waste your time on it. Hence removed my earlier post.

You guys are doing a great job. Cant wait to see nettool2 with all nettool 1.7 functionality, AND THE PRINT


----------



## FordGT90Concept (Nov 1, 2009)

Kreij said:


> Thanks lemon, I added a bunch more settings to the property grid.


The more the merrier.  It will just take some work to save/load.

It looks very good.




Kreij said:


> ...laugh at their farts.


Yay for funny sounds!


----------



## Kreij (Nov 1, 2009)

FordGT90Concept said:


> The more the merrier.



Hooray!  It's up to 613 property options now.  (j/k)


----------



## FordGT90Concept (Nov 1, 2009)

Zomg!


----------



## Kreij (Nov 2, 2009)

The bad news : Switching from Portrait to Landscape broke. lol DOH!! For some reason the app sees that the page is landscape, but reports the PrintableArea as portrait. Working on that now.

The good news : I got all of the requests implemented (Lemon, A5 is available as long as your printer supports it).

The *REALLY* good news : The doctors thought Mrs. Kreij might have cancer. All tests came back negative.   
Sorry for the off-topic comment, but you have no idea how worried I was. It's kind of hard to concentrate on coding with that kind of stress.


----------



## Solaris17 (Nov 3, 2009)

beta 7 is SEX and it works!!!! zomg! yay!! omg it works i have a tear im soooo happy their must have been something wrong with my install all workls fine now YES great tool man according to intranet scan my laptop is off line...


EDIT: it was god soooo handy!


----------



## FordGT90Concept (Nov 3, 2009)

Kreij said:


> The *REALLY* good news : The doctors thought Mrs. Kreij might have cancer. All tests came back negative.


Cancer sucks.   No cancer is good. 




Solaris17 said:


> beta 7 is SEX and it works!!!! zomg! yay!! omg it works i have a tear im soooo happy their must have been something wrong with my install all workls fine now YES great tool man according to intranet scan my laptop is off line...
> 
> 
> EDIT: it was god soooo handy!


Yay!


----------



## Kreij (Nov 4, 2009)

Moving right along. Almost have everything working.
Not prefectly happy at this point with the way things have to be done, because the printing APIs tend to return inconsistent (and sometimes useless) information.
Even if one pulls handles from the Win32 dll's, the return values leave a lot to be desired.

I now see why Ford pawned this one off on me. 

I'll send Ford the project as soon as I can, so we can at least get something out there for testing while I battle with the details.


----------



## lemonadesoda (Nov 4, 2009)

Kreij. Dump the landscape and A5 formats if THAT is causing the problems. They were just "nice to haves" and not "important".


----------



## Kreij (Nov 4, 2009)

While I appreciate you trying to make things easier, I personally find that unacceptable.
It either works right, or it's crapware. There are nothing in between.

Like I said, I will send Ford a "working" version. 
But I will not stop working on it until I'm happy with it.
Hopefully, that will be in our lifetimes. lol


----------



## FordGT90Concept (Nov 4, 2009)

I dunno, I'd rather we weren't working on it at the same time because changes you make won't be consistent with changes I make.  I still have to do the port stuff and whois.  I would rather you finish or I finish, if you know what I mean...


----------



## Kreij (Nov 4, 2009)

Go ahead and continue, Ford. All of my code is contained in three fies.

IPrintable, which is just the IPrintPrimitive interface class
DocumentPrintPreview which does all of the work and
OptDocumentPrinter which is the PropertyGrid options.

DocumentCreator just has two lines each for Print() and PrintPreview(), to instantiate the class and call the appropriate method.

I kept everything confined to these files so that I would not break anything you were doing.
Various classes can be moved elsewhere if you feel they should be, later. Because everything is in the same namespace, that will not break anything either.

Given that the output from whois/port stuff may affect the printing, I think that you should get all of the output done first.

Plus, that will give me a little time to get mine working corretly


----------



## FordGT90Concept (Nov 4, 2009)

Oh, alright.  I don't know when I'll get around to it though because I am having KVM/monitor problems ATM...


----------



## Kreij (Nov 4, 2009)

FordGT90Concept said:


> Oh, alright.  I don't know when I'll get around to it though because I am having KVM/monitor problems ATM _I'm playing computer games instead_...



Fixed 

Take your time Ford, the program is already extremely useful as is.

I have to update a main application server here and needed to check the hardware on all the clients so see if they meet the minimal requirements.
Intranet Scan with all option turned on FTW !!!


----------



## FordGT90Concept (Nov 4, 2009)

Kind of hard to play games with the mouse on your leg.  I tried, by the way.


----------



## FordGT90Concept (Nov 4, 2009)

Kreij, you got mail.

We'll try to get Beta 8 (which includes printing, Whois, and a few other fixes) out soon.


----------



## Kreij (Nov 4, 2009)

I got it. Just have to work on a server here at work today.
Hopefully will have time tommorow. 
Tonight will probably be useless to seeing as I just bought DA:O


----------



## FordGT90Concept (Nov 4, 2009)

Aw, it won't take you long.


----------



## lemonadesoda (Nov 5, 2009)

FordGT90Concept said:


> Kind of hard to play games with the mouse on your leg.  I tried, by the way.


http://www.youtube.com/watch?v=VAATIIeLPRU


----------



## Kreij (Nov 5, 2009)

Ford, you got mail.


----------



## FordGT90Concept (Nov 5, 2009)

As do you.


----------



## lemonadesoda (Nov 5, 2009)

Where's mine?  Go on, shuv it under the door. Won't tell.


----------



## Kreij (Nov 6, 2009)

@Ford : Incoming

@Lemon : You should see Beta 8 real soon for testing.
Thanks again for helping us 

@Self : I can't believe your working on this code when you have a new game to play.


----------



## FordGT90Concept (Nov 6, 2009)

lemonadesoda said:


> Where's mine?  Go on, shuv it under the door. Won't tell.


I broke one part of it while fixing another part and Kreji is going to have to fix it.  Beta 8 should be out later today or tomorrow.


----------



## Kreij (Nov 6, 2009)

@Ford .... Incoming.

I fixed what you fixed that I broke and what broke because of your fix, and the fix for what broke after that fix is fixed


----------



## lemonadesoda (Nov 6, 2009)

Pleased to hear you fixed the fix that broke because of another fix that broke the fix. Now what about my fix before I blow the blxxdy doors off?


----------



## FordGT90Concept (Nov 6, 2009)

Uh?


Beta 8 uploaded.  Printing and Whois added among many other changes.


----------



## Solaris17 (Nov 6, 2009)

yes!


----------



## Kreij (Nov 6, 2009)

Whoops. Paper Size is broke. Will be fixed in next iteration.


----------



## FordGT90Concept (Nov 6, 2009)

Beta 9 uploaded with some changes Kreij made.


----------



## Kreij (Nov 6, 2009)

Solaris17 said:


> yes!



Sol, my friend, your enthusiasm is much appreciated. 

Now as soon as Ford finishes up the code for querying non-Windows computers and other network devices (eg. switches, routers, etc) using SNMP to get device types, names and status using their OID references, we ....

Oh wait. I didn't tell Ford about that idea yet.

... and remember all our faithful beta testers, run the software through the wringer. We can't fix it if we aren't aware it's broken.


----------



## lemonadesoda (Nov 6, 2009)

Yes, the list of devices that exist but dont return a Windows query should be tested in other ways 

It would be nice for the printers, linux servers, and routers/APs to announce themselves even in the most basic way.


----------



## Kreij (Nov 6, 2009)

I was looking into it and it is quite possible that it could slow down the final results of intranet scan considerably, so I am not sure it would be something Ford would like to persue.

But hey, I'm willing to help with anything. Until someone come up with a new project that's more interesting.


----------



## FordGT90Concept (Nov 6, 2009)

Kreij said:


> Now as soon as Ford finishes up the code for querying non-Windows computers and other network devices (eg. switches, routers, etc) using SNMP to get device types, names and status using their OID references, we ....
> 
> Oh wait. I didn't tell Ford about that idea yet.
> 
> ... and remember all our faithful beta testers, run the software through the wringer. We can't fix it if we aren't aware it's broken.


That looks like a fairly large can of worms.   I could always add it and default it to false (GetSNMP...).  The infrastructure (multithreading, GUI elements, etc.) are already there.  It is just a matter of coding the protocol.  I think I would hit major roadblocks with IPv6 though.


----------



## Kreij (Nov 8, 2009)

It's up to you Ford, you're the network code guru.

@Lemon : Did you try any A5 printing yet?

Any other features you guys want us to consider?


----------



## FordGT90Concept (Nov 8, 2009)

I'm not finding much information on SNMP so it is pretty unlikely I'll add it.


----------



## lemonadesoda (Nov 8, 2009)

I'll post screenies of programs that are able to pull out more than just Windows machines... up to you if you want to investigate







"SECURE" is a linkstation NAS (linux based)
QMS-SCANNER is an HP 9200c network scanner
WAG102 is a netgear wireless AP

The software is fast. But it isnt perfect (LOL). It isnt picking up the Xerox or Kyocera printers, not the OTHER access point, a WG302, or the webcam.


----------



## Kreij (Nov 9, 2009)

Well, since no one has come back with any problems with the printing portion of Beta 9, and I don't know what Ford's working on at the moment, I guess I just start some custom user controls for NetTool 3 alpha 1 (I like writing custom user controls) 

@Ford. I wrote an SNMP class and stub program that will query devices by IP address and pull the MIB information, but it is sketchy at best and is wholy dependant upon the device being SNMP enabled. I was using the top level SNMP MIB requests info (like 1.3.6.1.2.1.1.5.0 (sysName) ), but still got no response (timeout = 5sec) from most of my network devices. I did not try digging deeper into vendor specific MIB database structures. Actually the only device that responded was an HP network printer. I'll fiddle with it more later, if for nothing more than my own curiosity.


----------



## FordGT90Concept (Nov 10, 2009)

Well, WMI is very much the same way.


@lemonadesoda: The only thing that does that we aren't is getting a list of shared directories on the machine.  I can't see that really being useful though.


----------



## Kreij (Nov 10, 2009)

Yeah, but he is also getting host names for other devices (scanner, AP, etc.)
That's what I was trying to get on my network. I don't really need any more than the name and maybe what it is, but that is a little elusive at the moment.


----------



## lemonadesoda (Nov 10, 2009)

Dont worry about shared directories. But what IS important, is getting a scan to identify the device names so that we have a proper map. Just a list of DHCP assigned IP responses is worthless IMO.

It's an important element to crack. Sorry I cant help more than just show you examples of other software that have got it working (to some extent).


----------



## Kreij (Nov 10, 2009)

It's not just doing DHCP assign resources. All of my devices have static IPs and I do not run DHCP on my networks. That being said, I agree with you that we should be able to come up with something to detect non-windows network devices.


----------



## FordGT90Concept (Nov 10, 2009)

There are a lot on that list that are unnamed as well.  It all depends on the device and if/how it responds to host name requests.  Everything we're talking about (WMI, SNMP) go beyond the norm and attempt to extract very specific information from the machine.  If the machine isn't responding to the simpiliest of DNS requests, there's a very good chance it won't respond to anything else.

By the way, the only device it doesn't have a name for on my network is the router itself.  Both my Brother printers have their name.  At the same time, the have a printer node name defined and are configured  to operate via node name.


----------



## lemonadesoda (Nov 10, 2009)

Angry IP scan is also finding all the devices. Note that the scan doesnt look as complete as  softperfect's due to the fact i'm running this from wireless laptop... which doesnt jump a network bridge to the production room (soit cant see the scanners and printers)






Oh, very nice. Fast. I told it what ports to scan... and it is showing me what is open. 21 FTP, 80 HTTP, 443 HTTPS, 9100 for printers.
The web detect is useful... a smart scanner could then "read" a default web page and extract the "title"? Perhaps also on 9100? I know nothing about how port communication works... but can you query them and get useful info back?

Here is a printout from the router, for comparison:





LOOK! Here's the sourcecode to Angry IP: http://www.angryip.org/w/Development  Maybe that will help


----------



## FordGT90Concept (Nov 10, 2009)

What names does Net Tools 2 get compared to SoftPerfect Network Scanner?  Angry IP doesn't look to be pulling any more information than Net Tools already does (except ports, see below).


I think it is bad practice to port scan multiple IPs like that.  Network monitoring apps may flag the computer running the scan as a potential attack source.


----------



## Kreij (Nov 10, 2009)

For me (on my home network) NetTool2 gets the same hostnames as SoftPerfect (ie. it finds my NAS device). Neither find my linksys router.

I will try both SP at work tomorrow. I am not really intersted in all the additional details. I like the fact that NetTool is fast and consice. I can get other scanners that scan the network for ages trying to find information (like SpiceWorks), but I don't need all of that information.

I do, however, think that we need a GUI that is more purdy.


----------



## lemonadesoda (Nov 10, 2009)

FordGT90Concept said:


> I think it is bad practice to port scan multiple IPs like that.  Network monitoring apps may flag the computer running the scan as a potential attack source.



I disagree. I'm doing a LAN audit, and I selected through options a set of ports I wanted scanning. Now I have a (fullish) picture of what's on my LAN.  IMO this is _exactly_ what a scanner needs to be capable of doing, _when necessary_.

PS. Nettool is still brilliant, even if I have now found 2 alternative lan scanners


----------



## lemonadesoda (Nov 10, 2009)

I have just re-run Softperfect with some extra options. Nice. I see that there are additional names coming through SNMP.I'll run it on the main office LAN tommorow.


----------



## lemonadesoda (Nov 15, 2009)

Not much new when scanning from a wired LAN other than reaching over the bridge:






Suggestions:

1./ If live, but "hostname" is blank, then do SNMP to show some useful ID
2./ If live, but "hostname" and SNMP is blank, and port 80 is live, then read the html title to get some useful ID


----------



## FordGT90Concept (Nov 16, 2009)

Intranet Scan won't prode ports.  SNMP is not planned.


----------



## FordGT90Concept (Dec 18, 2009)

Coming soon...


----------



## FordGT90Concept (Dec 18, 2009)

Network Tools 2, Beta 10 uploaded.  Some changes...

-Added Port Scan (with "traffic lights" ).
-Added DefaultPort to Intranet Scan and double clicking on an IP in Intranet Scan will send to you the Port Scan with the appropriate data filled out.
-In places where it is expecting a port number, it can automatically get the port number from common port names (e.g. 80 from HTTP).  The image above demonstrates this feature.
-Cleaned up some code that controlled the progress bar.
-Put tabs in alphabetical order.


All that's left is the simple stuff in the Help menu.  We may be very close to final...


Port Scan currently only works for TCP ports.  It can be used the same as the "Port Scan" in version 1.7 by using your local ip.


----------



## Kreij (Dec 18, 2009)

Nice job, Ford.

I do have one suggestion however. Could you add a "Show open ports only" option when scanning a range of ports?


----------



## AsRock (Dec 18, 2009)

Sweeeeeeet.  GJ keep it up .


----------



## FordGT90Concept (Dec 18, 2009)

Kreij said:


> Nice job, Ford.
> 
> I do have one suggestion however. Could you add a "Show open ports only" option when scanning a range of ports?


Good idea...  That options pane is rather empty anyway. XD


----------



## FordGT90Concept (Dec 18, 2009)

Beta 11 uploaded.  Kreij's suggestion implemented.


----------



## lemonadesoda (Dec 19, 2009)

SUPERB!

Couple of problems
1./ save settings option didnt work on port scan page, like windows sizes
2./ sometimes problems if there are spaces in the port list, it skips them
3./ testing is too long by default. but an option might be useful there
4./ you can use http and ftp as port names, what is the full list?
5./ after hitting STOP, "testing..." should change to "aborted", assuming the thread really was cancelled

MARVERLOUS MARVELOUS MARVELOUS STUFF


----------



## FordGT90Concept (Dec 19, 2009)

lemonadesoda said:


> SUPERB!
> 
> Couple of problems
> 1./ save settings option didnt work on port scan page, like windows sizes
> ...


1. I didn't notice anything wrong there but I'll double check...fixed (it was using the value from DNS Record instead of Port Scan).

2. I'll see about cleaning it up automatically...fixed ("google.com : FTP , HTTP" works).

3. I think the default timeout setting in .NET framework is 20 seconds and I haven't found a way to change it.  If I find a way to, I'll fix it.  No promises though.

4. All it does is replace the name (it is case insensitive) with the TCP Port number (e.g. 21 is the same as typing in FTP):


Name|TCP Port
FTP|21
SSH|22
TELNET|23
SMTP|25
HTTP|80
POP3|110
SFTP|115
SSL|443
SPOP|995
5. This is a spawn from the same problem described in #3.  If you stop it, it lingers until those obscenely long timeouts finish.  As far as I can tell, you can start a new search without consequence.  There is no way for me to abort the action so, if you stop a scan and close the application, the application will hang until that 20 seconds has passed.


Kreji might have to help with #3 and #5. 


Beta 12 uploaded.


----------



## Kreij (Dec 19, 2009)

Happy to help.

#3 : I am not sure what Lemon means by, "takes too long by default".

#5 : You cant' just orphan a thread. Well actually you can. I am sure you have seen it before. It's when a program tells you that it's "Not responding". The best solution is for the program to stick around and wait for it's child threads to complete. Upon closing the application, it should check for thread completion and say something like "waiting for processes to complete" and then exit gracefully. Garbage collection is another matter in these cases also dpending on what is going on. I don't think any of the threads that Ford is launching require manual disposal of resources, but it is always best to make sure that everything is done. If a thread has consumed resources that are not cleaned up by the normal GC, the resources might not be released. Think memory leak.

Sorry for rambling.


----------



## FordGT90Concept (Dec 19, 2009)

The problem is it hangs for 20 seconds if the port is blocked.  Do like google.com:1 or google.com:FTP to get the hang.  Here's the functional code:

```
TcpClient client = new TcpClient();
                client.Connect(_EndPoint);
                client.Close();
```
I tried adding client.SendTimeOut = 5000 and client.ReceiveTimeOut = 5000 and it still hung for 20,000 ms (20 seconds).


----------



## Kreij (Dec 19, 2009)

Is that only on internet ports (remote). I was getting intranet port blocked messages in about 2 seconds. Port open was almost instantaneous.


----------



## FordGT90Concept (Dec 19, 2009)

Internet, yes.  Open ports do come back instananeously intranet and internet.  It's when it is blocked that there is a problem.  Everything I tried (including the following code) takes over 20 seconds on a closed port (e.g. google.com:1).


```
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                s.ReceiveTimeout = 5;
                s.SendTimeout = 5;
                s.Connect(_EndPoint);
                s.Close();
```

There's got to be a way to make the timeout shorter.


Intranet comes back blocked in 1.5 seconds compared to 21.5 seconds on internet.


----------



## Kreij (Dec 19, 2009)

Can you call the socket connect with the blocking property set to false? This will cause the socket to throw a SocketException as it need time to connect. It looks like you can see if the return error is WSAEWOULDBLOCK, which means that the connection has not been connected succefully at that point.

If you put a timer in place and get a SocketException after some number of seconds, you can dispose of the socket.

No, I have not tried this


----------



## FordGT90Concept (Dec 19, 2009)

I don't think that would work because the socket is currently busy trying to connect.  If you set blocking to true, that request wouldn't be processed until after the thread progresses beyond connecting.

It doesn't make sense why it would take so long to connect over internet compared to intranet.


----------



## Kreij (Dec 19, 2009)

Maybe I read this wrong, but here is what it says about Socket.Connect...


> Connect method will block, unless you specifically set the Blocking property to false prior to calling Connect. If you are using a connection-oriented protocol like TCP and you do disable blocking, Connect will throw a SocketException because it needs time to make the connection. Connectionless protocols will not throw an exception because they simply establish a default remote host. You can use SocketException.ErrorCode to obtain the specific error code. After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation in the MSDN library for a detailed description of the error. If the error returned WSAEWOULDBLOCK, the remote host connection has been initiated by a connection-oriented Socket, but has not yet completed successfully. Use the Poll method to determine when the Socket is finished connecting.



It looks like you can poll the socket for some period of time (say 3 or 5 seconds) to see if it sucessfully connected yet, and if not dispose of it.


----------



## Kreij (Dec 19, 2009)

Bug Report #123A994-112 : If you scan a port on a non-existant IP address in your intranet, it sits for 20 seconds and then reports blocked instead of telling you that the address does not exist on the LAN.

Bug Report #123A994-113 : If you set the display status to "Testing", it display all ports as testing even after the scan has finished. This may be by design?

Suggestion # S401-Z : Could you add a completed status count section below the completion notification that lists each status count returned? 
eg. Status Counts : Idle 0, Error 1, Blocked 5, Open 2
Similar to the Header and Flags section of DNS Record.


----------



## FordGT90Concept (Dec 20, 2009)

Kreij said:


> Maybe I read this wrong, but here is what it says about Socket.Connect...
> 
> 
> It looks like you can poll the socket for some period of time (say 3 or 5 seconds) to see if it sucessfully connected yet, and if not dispose of it.


Uh...I'm confused. 




Kreij said:


> Bug Report #123A994-112 : If you scan a port on a non-existant IP address in your intranet, it sits for 20 seconds and then reports blocked instead of telling you that the address does not exist on the LAN.


Everything sounds correct there except for the 20 second issue.  Blocked means a connection could not be established, for whatever the reason.




Kreij said:


> Bug Report #123A994-113 : If you set the display status to "Testing", it display all ports as testing even after the scan has finished. This may be by design?


I think I will just make it boolean for each: true to display those updates or false to ignore.




Kreij said:


> Suggestion # S401-Z : Could you add a completed status count section below the completion notification that lists each status count returned?
> eg. Status Counts : Idle 0, Error 1, Blocked 5, Open 2
> Similar to the Header and Flags section of DNS Record.


I'll do something with that but not sure what yet...


Edit: Beta 13 uploaded with some of these changes/fixes.


----------



## Kreij (Dec 20, 2009)

FordGT90Concept said:


> Uh...I'm confused.



I am too, and have not had an opportunity to try it. Whoever wrote that section for MSDN didn't make it very clear.



> Everything sounds correct there except for the 20 second issue.  Blocked means a connection could not be established, for whatever the reason.



Well, to me it's a bit misleading. It would make one think that the port is blocked on the machine when in fact, the machine does not exist.



> I think I will just make it boolean for each: true to display those updates or false to ignore.



I suppose it does not really matter. The testing result is not really of any value other than to show it's not completed that port's scan.



> I'll do something with that but not sure what yet...
> 
> 
> 
> ...


----------



## Kreij (Dec 20, 2009)

b13 looks good. Works as it should.

Maybe above count you could put in another line and before the scan starts do a quick ping on the host. If it fails, indicate that the host was not found or something and don't run the scan. That way it would save having to wait for the scan to complete in the event of a non-existing IP.


----------



## FordGT90Concept (Dec 20, 2009)

I can't do that because you can do more than one host by using a semi-colon.  It would be confusing what that line is talking about.

The host look up could take at least 5 seconds by itself.


----------



## Deleted member 67555 (Dec 24, 2009)

Ford For future reference, if you don't mind, please notify me on your works...

i find this quite interesting


LOL this would be great integrated into COD WaW


----------



## FordGT90Concept (Dec 24, 2009)

I can't even keep track of them.


----------

