AlecSadler

[SIM] Secure Interface Module (With DARTIS©)

2 posts in this topic

#1 ·  Posted (edited)

Hello friends, today I am sharing a script I've been working on called secure interface module.

It's a peer to peer Instant Messenger, with optional 4D Holographic Encryption. (See THIS thread for more info about DARTIS)

To sign up for an account visit https://pdglobal.net (You will need to use a valid email)

Script is attached, to use just extract and run SIM.au3

Warning: There might be bugs. This is an early alpha version, if you find something that needs fixed, please fix it if you can or report it here in the thread so I can look into fixing it.

 

Secure Interface Module.zip

Edited by AlecSadler

Share this post


Link to post
Share on other sites



#2 ·  Posted (edited)

Please note: I need testers to help test out the long range message delivery system. I've been working on fixing the bugs in it, and need testers to confirm the bug has been fixed. Please leave a reply if you have time to help test it.

You can add me on skype my skype is zachary.litzinger, there we can discuss further testing of the networking functions.

There is also a known bug with encryption, if encryption is disabled for the sender but enabled for the receiver, the receiver's Client will crash, I'm working on a fix to this bug, but I really need testers to make sure my fixes work. [FIXED]

Edited by AlecSadler

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Similar Content

    • Danyfirex
      Open Control Panel Page(Items)
      By Danyfirex
      Hi Mate. Some times we need to launch a control panel item to users. So I Implemented an IOpenControlPanel Interface. It allows to launch control panel items easily.
      #include "ControlPanelConstants.au3" Global Const $sCLSID_OpenControlPanel = "{06622D85-6856-4460-8DE1-A81921B41C4B}" Global Const $sIID_IOpenControlPanel = "{D11AD862-66DE-4DF4-BF6C-1F5621996AF1}" Global Const $sTagIOpenControlPanel= "Open hresult(wstr;wstr;ptr);GetPath hresult(wstr;wstr;uint);GetCurrentView hresult(int*)" Local $oOpenControlPanel = ObjCreateInterface($sCLSID_OpenControlPanel, $sIID_IOpenControlPanel, $sTagIOpenControlPanel) $oOpenControlPanel.Open($MicrosoftAdministrativeTools,"",Null) $oOpenControlPanel.Open($MicrosoftDateAndTime,$AdditionalClocks,Null) $oOpenControlPanel.Open($MicrosoftDefaultPrograms,$pageDefaultProgram,Null) $oOpenControlPanel.Open($GUID_MicrosoftDeviceManager,"",Null) $oOpenControlPanel.Open($GUID_MicrosoftDevicesAndPrinters,"",Null) $oOpenControlPanel.Open($MicrosoftHomeGroup,"",Null) $oOpenControlPanel.Open($MicrosoftInternetOptions,$Connections,Null) $oOpenControlPanel.Open($MicrosoftPersonalization,$pageWallpaper,Null) $oOpenControlPanel=0;Free  ControlPanelConstants.au3
      Saludos
    • ManneMoses
      Change The Size Of The Gui Title Bar?
      By ManneMoses
      Hello Guys,
      I want to create a simple gui, but with a bigger title bar ( e.g. 2x bigger) Is that possible in any way? I searched the forum but I found nothing. Hope you understand what I mean. Nothing special with the gui, only the size of the title bar should change. Any ideas? Thanks in Advance 
    • Rickname
      Simple question about COM - pls help !
      By Rickname
      Hi,
      First , I don't know nothing about COM and I saw this script :
      #include <MsgBoxConstants.au3> Example() Func Example() ; Error monitoring. This will trap all COM errors while alive. ; This particular object is declared as local, meaning after the function returns it will not exist. Local $oErrorHandler = ObjEvent("AutoIt.Error", "_ErrFunc") ; Create Internet Explorer object Local $oIE = ObjCreate("InternetExplorer.Application") ; Check for errors If @error Then Return $oIE.Visible = True ; set visibility ; Custom sink object Local $oIEEvents = ObjEvent($oIE, "_IEEvent_", "DWebBrowserEvents2") ; Navigate somewhere $oIE.navigate("http://www.google.com/") ; Check for errors while loading If @error Then $oIE.Quit() Return EndIf ; Wait for page to load While 1 If $oIE.readyState = "complete" Or $oIE.readyState = 4 Then ExitLoop Sleep(10) WEnd EndFunc ... Now I want to know how can I find & list ALL those possible "functions" of a specific COM object ( those .Visible, .navigate, .readyState ... ), since I can't find those things nowhere listed 
    • Blinky
      SPI Hardware Interface
      By Blinky
      Hi everyone,
      This is my special pet project.
      It is an example of how u can use autoit to control external devices.
      this script is made to comunicate with the MAX335 chip  using the SPI protocol via the LPT(printer) port
      the beauty of the MAX335 chip is that the Clock, Data_In and the Chip_Select pins can be directly connected to the LPT port without any external components, and the 12V and 5V directly from an ATX PC power suply.
      aditionaly i made a custom GUI with CommandFusion instaled on an Android Tablet that sends TCP commands to an Autoit TCP server that controls three dasy chained MAX335 chips that totals 24 independent NO switches
      this script works perfectly for me
      i just finished this project and i think i will make an UDF including more SPI devices
      $DLLFileAndPath = @ScriptDir & "/inpout32.dll" Global $335_device_number=3 ;number of daisy chained chips Global $335_clock_bit=0 ;bit number for LPT pin 1 in the control Register of the LPT port(where i connected the CLK pin on te MAX335) Global $335_cs_bit=4;bit number for LPT pin 6 in the data Register of the LPT port(where i connected the CS pin on te MAX335) Global $335_data_in_bit=7;bit number for LPT pin 9 in the data Register of the LPT port(where i connected the DI pin on te MAX335) Global $clock_delay=1;this limits the clock speed but it works fine with 0 ;the ini file will be created and will keep the MAX335 pins statuses For $i=0 To $335_device_number*8-1 Step 1 IniWrite("355_buffer.ini","present_data",$i,"0") Next set_max335_output(2,3,1) ; this will activate switch 2 on device 3 on the daisy chain Func set_max335_output($output_no,$device_no,$status) $bit_no=($device_no-1)*8+$output_no-1 ; get the exact bit number of the switch IniWrite("355_buffer.ini","present_data",$bit_no,$status); whrite it to the buffer ;this part is where the SPI protocol begins set_control_bit($335_clock_bit,1); drop CLK set_data_bit($335_cs_bit,0) ;activate CS Sleep($clock_delay) For $i=$335_device_number*8-1 To 0 Step -1; start writing from buffer MostSignificantByte first $data=IniRead("355_buffer.ini","present_data",$i,"0") set_data_bit($335_data_in_bit,$data) ; set data bit value set_control_bit($335_clock_bit,0) ;raise CLK Sleep($clock_delay) set_control_bit($335_clock_bit,1); drop CLK Sleep($clock_delay) Next set_data_bit($335_cs_bit,1);deactivate CS EndFunc Func set_data_bit($bit,$stat=-1) ; it will write the value of the bit in the data reg of the LPT port $y= DllCall($DLLFileAndPath, "int", "Inp32", "int", "0x378") $bits=dec_to_bin($y[0]) If $stat = -1 Then If $bits[$bit]=0 Then $bits[$bit]=1 Else $bits[$bit]=0 EndIf $bcd=bin_to_dec($bits) DllCall( $DLLFileAndPath, "int", "Out32", "int", "0x378", "int", $bcd) Return 1 Else If $bits[$bit]<>$stat Then $bits[$bit]=$stat $bcd=bin_to_dec($bits) DllCall( $DLLFileAndPath, "int", "Out32", "int", "0x378", "int", $bcd) Return 1 Else Return 2 EndIf EndIf EndFunc Func set_control_bit($bit,$stat=-1); it will write the value of the bit in the control reg of the LPT port $y= DllCall($DLLFileAndPath, "int", "Inp32", "int", "0x37a") $bits=dec_to_bin($y[0]) If $stat = -1 Then If $bits[$bit]=0 Then $bits[$bit]=1 Else $bits[$bit]=0 EndIf $bcd=bin_to_dec($bits) DllCall( $DLLFileAndPath, "int", "Out32", "int", "0x37a", "int", $bcd) Return 1 Else If $bits[$bit]<>$stat Then $bits[$bit]=$stat $bcd=bin_to_dec($bits) DllCall( $DLLFileAndPath, "int", "Out32", "int", "0x37a", "int", $bcd) Return 1 Else Return 2 EndIf EndIf EndFunc Func dec_to_bin($dec) Local $bit_array[8] If $dec > 255 Then SetError(1,1,-1) If $dec < 0 Then SetError(2,1,-1) For $i=7 To 0 Step -1 If $dec >= 2^$i Then $bit_array[$i] = 1 $dec=$dec-2^$i Else $bit_array[$i] = 0 EndIf Next Return $bit_array EndFunc Func bin_to_dec($bit_array) If IsArray($bit_array) Then If UBound($bit_array) = 8 Then $dec=0 For $i=7 To 0 Step -1 $dec = $bit_array[$i]*(2^$i)+$dec Next Else SetError(2,1,-1) EndIf Else SetError(1,1,-1) EndIf Return $dec EndFunc
    • Ascend4nt
      Network Interface Info, Statistics, and Traffic
      By Ascend4nt
      Network Interface Info, Statistics, and Traffic (incl. IP, TCP, UDP and ICMP)

      This is an example of getting and displaying Network Interface Information, Statistics and Traffic.  Previously this was just a means to getting Network statistics (specifically IP, TCP, UDP, and ICMP), but now it includes Internet Interface information, as well as Interface-specific statistics.
      Since this UDF can be used in different ways, let me cover Statistics first:
      Network Statistics Information

      Stats example output
       
      To retrieve Statistics information, you can call one of the four _Network_xxxxStatistics() functions for IP, TCP, UDP, or ICMP Statistics.  These functions accept 1 argument which specifies which protocol to use.  Basically, zero is IPv4 and non-zero is IPv6.  It defaults to IPv4 if no arguments.  Here's the functions:
      Protocol Statistics Functions: _Network_IPStatistics() -> receives IP statistics _Network_TCPStatistics() -> TCP statistics _Network_UDPStatistics() -> UDP statistics _Network_ICMPStatistics() -> ICMP statistics -
      To get per-interface statistics requires 2 calls.  One call is required to collect information on adapters into an array. Once this information is retrieved, multiple calls to _Network_InterfaceEntryInfo() can be made for each indexed network interface.  Note that _Network_IPv4AdaptersInfo() is the only adapter/interface information function which doesn't get index information - so don't use it unless you want further interface information.  The main UDF functions to use are:
      Network Adapter & Interface Functions: _Network_IPv4AdaptersInfo() -> Retrieves information on Physical IPv4 adapters _Network_IPv4AdaptersInfoEx() -> Retrieves much more info on Physical IPv4 adapters _Network_IPv4AddressTable() -> Retrieves information on IPv4 Interfaces _Network_IPAllAddressTable() -> Retrieves information on both IPv4 and IPv6 interfaces Network Statistics for a Given Interface: _Network_InterfaceEntryInfo() -> For a given interface index, retrieves statistics -
      The simplest way to get overall traffic is to use _Network_IPAllAddressTable() (or _Network_IPv4AddressTable() for IPv4 only) to collect an array of info about interfaces.  This needs to be done only once.  Then, to collect statistics, for each row in the interface array, call _Network_InterfaceEntryInfo() with $aIPAddressTable[$i][0] to get the statistics for that network interface.
      IMPORTANT: Note that for all statistics, the data received/sent are represented as 32-bit numbers, and subject to wraparound after 4GBs of data has been transferred.
      Network Interface Information
      Regarding Network Interface Information, nearly every function except those ending in xxStatistics(), will return various info regarding the network adapters or interfaces.
      Currently, IPv4 and IPv6 addresses are retrieved for the interface, as well as for Gateway, DHCP, DNS and WINS servers (there's some XP issues here as to which functions to use - see UDFs).  The number of IP addresses (since there can be more than one assigned to each interface) is controlled via a parameter $bGetAllIPs.  If this value is non-zero, multiple IP addresses are returned in a string separated by "|" (pipe symbol).
      Also note that the MAC/Physical Address is returned by most functions as well.  These are properly formatted into a hex string in the form "01-23-45-67-89-ab".
      There is one issue with converting IPv6 addresses - on pre-Vista O/S's (Win XP I'm looking at you) WSAStartup must be called by the code.  This is all handled internally, but if you have code that relies on WSAStartup/Cleanup, keep it in mind and let me know if I can better accommodate any potential conflicts.
      Further notes:
      - The TCP Statistics gives information about the number of segments sent/received, rather than the # of packets.  I'm not totally clear on the association, however here's some links:
       What's the difference between a TCP segment and a TCP packet?
       Whats the difference between a Packet, Segment and Frame?
         
      - I'm not sure how segments, packets, or datagrams map to # of bytes, or what API functions I might use to figure this out. Any help there would be appreciated.
      Alternatives:
      While I have opened access to a lot of detailed network and performance information, there are alternatives - check out Netstat (-e for performance stats) or my >Performance Counters UDF's, which has a lot of varied stats (one example of these: >Network Usage).
      Following is the example, included in the ZIP file.  Note there's a cr@pload of info dumped to the console, so you'll probably want to redirect output or copy-and-paste from the output console:
      ; ======================================================================================================== ; <NetworkStatsExample.au3> ; ; Example of reading and displaying Network Interface Information and Statistics ; (using <NetworkStatistics.au3> UDF) ; Statistics information, including IP, TCP*, UDP, and ICMP and internet interface traffic, ; are displayed in a 'Splash' window - with both IPv4 and IPv6 data separated ; ; Author: Ascend4nt ; ======================================================================================================== #include "_NetworkStatistics.au3" ;   --------------------    HOTKEY FUNCTION & VARIABLE -------------------- Global $bHotKeyPressed = False Func _EscPressed()     $bHotKeyPressed=True EndFunc ;   --------------------    MAIN PROGRAM CODE   -------------------- HotKeySet("{Esc}", "_EscPressed") Local $hSplash, $sSplashText ; Network Stats Local $aUDPStats, $aTCPStats, $aIPStats, $aICMPStats Local $aUDPv6Stats, $aTCPv6Stats, $aIPv6Stats, $aICMPv6Stats Local $aIPv4Adapters, $nAdapters Local $aIPv4AddrTable, $aIPAllAddrTable, $nInterfaces, $aNIEntryInfo Local $sSeparator = "-----------------------------------------" ; IP Stats: IPv4 and IPv6 For $i = 0 To 1     $aIPStats = _Network_IPStatistics($i)     If @error Then         ConsoleWrite("_Network_IPStatistics("&$i&") error: "&@error&", @extended="&@extended&@CRLF)         ContinueLoop     EndIf     If $i Then         ConsoleWrite("IP [IPv6] Stats:")     Else         ConsoleWrite("IP [IPv4] Stats:")     EndIf     ConsoleWrite( _         " [0]  = IP Forwarding Status: [1 = Enabled, 2 = Disabled] : " & $aIPStats[0] & _         ", [1]  = Default initial time-to-live (TTL) for datagrams : " & $aIPStats[1] & @CRLF & _         ", [2]  = # Received Datagrams : " & $aIPStats[2] & _         ", [3]  = # Received Datagrams w/Header errors : " & $aIPStats[3] & _         ", [4]  = # Received Datagrams w/Address errors : " & $aIPStats[4] & @CRLF & _         ", [5]  = # Forwarded Datagrams : " & $aIPStats[5] & _         ", [6]  = # Received Datagrams w/Unknown Protocol : " & $aIPStats[6] & _         ", [7]  = # Received Datagrams Discarded : " & $aIPStats[7] & @CRLF & _         ", [8]  = # Received Datagrams Delivered : " & $aIPStats[8] & _         ", [9]  = # Requested Outgoing Datagrams : " & $aIPStats[9] & _         ", [10] = # Outgoing Datagrams Discarded : " & $aIPStats[10] & @CRLF & _         ", [11] = # Transmitted Datagrams Discarded : " & $aIPStats[11] & _         ", [12] = # Datagrams w/o Routes that were Discarded : " & $aIPStats[12] & _         ", [13] = TimeOut for Reassembling Incoming Fragmented Datagrams : " & $aIPStats[13] & @CRLF & _         ", [14] = # Datagrams Requiring Reassembly : " & $aIPStats[14] & _         ", [15] = # Datagrams Successfully Reassembled : " & $aIPStats[15] & _         ", [16] = # Datagrams that Failed to be Reassembled : " & $aIPStats[16] & @CRLF & _         ", [17] = # Datagrams that were Fragmented Successfully : " & $aIPStats[17] & _         ", [18] = # Datagrams not Fragmented, and Discarded : " & $aIPStats[18] & _         ", [19] = # Fragments created (for Datagrams) : " & $aIPStats[19] & @CRLF & _         ", [20] = # of Interfaces : " & $aIPStats[20] & _         ", [21] = # of IP addresses associated with PC : " & $aIPStats[21] & _         ", [22] = # of Routes in the Routing table : " & $aIPStats[22] & _         @CRLF)     ConsoleWrite($sSeparator & @CRLF) Next ; TCP Stats: IPv4 and IPv6 For $i = 0 To 1     $aTCPStats = _Network_TCPStatistics($i)     If @error Then         ConsoleWrite("_Network_TCPStatistics("&$i&") error: "&@error&", @extended="&@extended&@CRLF)         ContinueLoop     EndIf     If $i Then         ConsoleWrite("TCP [IPv6] Stats:")     Else         ConsoleWrite("TCP [IPv4] Stats:")     EndIf     ConsoleWrite( _         "[0] Rto Algorithm = " & $aTCPStats[0] & _         ",[1] Rto Min = " & $aTCPStats[1] & _         ",[2] Rto Max = " & $aTCPStats[2] & _         ",[3] #Max Connections = " & $aTCPStats[3] & _         ",[4] #Active Opens = " & $aTCPStats[4] & _         ",[5] #Passive Opens = " & $aTCPStats[5] & @CRLF & _         " [6] #Failed Connection Attempts = " & $aTCPStats[6] & _         ",[7] #Established Connections that were Reset = " & $aTCPStats[7] & _         ",[8] #Established Connections [current] = " & $aTCPStats[8] & @CRLF & _         " [9] #Recvd Segments = " & $aTCPStats[9] & _         ",[10] #Sent Segments = " & $aTCPStats[10] & _         ",[11] #Retransmitted Segments = " & $aTCPStats[11] & @CRLF & _         " [12] #Receive Errors = " & $aTCPStats[12] & _         ",[13] #Sent Segments with Reset Flag = " & $aTCPStats[13] & _         ",[14] #Connections = " & $aTCPStats[14] & _         @CRLF)     ConsoleWrite($sSeparator & @CRLF) Next ; UDP Stats: IPv4 and IPv6 For $i = 0 To 1     $aUDPStats = _Network_UDPStatistics($i)     If @error Then         ConsoleWrite("_Network_UDPStatistics("&$i&") error: "&@error&", @extended="&@extended&@CRLF)         ContinueLoop     EndIf     If $i Then         ConsoleWrite("UDP [IPv6] Stats:")     Else         ConsoleWrite("UDP [IPv4] Stats:")     EndIf     ConsoleWrite( _         " [0] #Recvd Datagrams = " & $aUDPStats[0] & _         ",[1] #Discarded Datagrams [invalid port] = " & $aUDPStats[1] & _         ",[2] #Erroneous Datagrams = " & $aUDPStats[2] & @CRLF & _         " [3] #Sent Datagrams = " & $aUDPStats[3] & _         ",[4] #UDP Listener Entries = " & $aUDPStats[4] & _         @CRLF)     ConsoleWrite($sSeparator & @CRLF) Next ; ICMP Stats: IPv4 and IPv6 For $i = 0 To 1     $aICMPStats = _Network_ICMPStatistics($i)     If @error Then         ConsoleWrite("_Network_ICMPStatistics("&$i&") error: "&@error&", @extended="&@extended&@CRLF)         ContinueLoop     EndIf     ConsoleWrite("ICMP [IPv"&4+($i*2)&"] Stats:" & _         " [0] = # Incoming ICMP Messages : " & $aICMPStats[0] & _         ", [1] = # Incoming ICMP Errors : " & $aICMPStats[1] & _         ", [2] = # Outgoing ICMP Messages : " & $aICMPStats[2] & _         ", [3] = # Outgoing ICMP Errors : " & $aICMPStats[3] & _         @CRLF)     ConsoleWrite($sSeparator & @CRLF) Next ; IPv4 Adapters Info (very basic info) _Network_IPv4AdaptersInfo() ConsoleWrite($sSeparator & @CRLF) ; IPv4 Adapters Info (comprehensive info) $aIPv4Adapters = _Network_IPv4AdaptersInfoEx() $nAdapters = @extended ConsoleWrite("# of Adapters: "&$nAdapters&@CRLF) For $i = 0 To $nAdapters - 1     ConsoleWrite("Adapter #"&$i+1&":" & _         "  [0] Index #"& $aIPv4Adapters[$i][0] & _         ", [1] Type = " & $aIPv4Adapters[$i][1] & _         ", [2] DHCP Enabled Flag = " & $aIPv4Adapters[$i][2] & _         ", [3] WINS Enabled Flag = " & $aIPv4Adapters[$i][3] & _         ", [4] Physical [MAC] Address: " & $aIPv4Adapters[$i][4] & _         ", [5] (0) =  " & $aIPv4Adapters[$i][5] & @CRLF & _         ", [6] Description: "& $aIPv4Adapters[$i][6] & _         ", [7] [Empty '']: " & $aIPv4Adapters[$i][7] & _         ", [8] Adapter/Service Name [GUID] = " & $aIPv4Adapters[$i][8] & _         ", [9]  [Empty] =  " & $aIPv4Adapters[$i][9] & _         ", [10] [Empty] =  " & $aIPv4Adapters[$i][10] & @CRLF & _         ", [11] IPv4 Address(es): "& $aIPv4Adapters[$i][11] & _         ", [12] IP Address Mask(s): "& $aIPv4Adapters[$i][12] & @CRLF & _         ", [13] Gateway IPv4 Address(es): "& $aIPv4Adapters[$i][13] & _         ", [14] Gateway Address Mask(s) : "& $aIPv4Adapters[$i][14] & @CRLF & _         ", [15] DHCP IPv4 Address(es) = " & $aIPv4Adapters[$i][15] & _         ", [16] DHCP Address Mask(s)  = " & $aIPv4Adapters[$i][16] & _         ", [17] DHCP LeaseObtained Time = " & $aIPv4Adapters[$i][17] & _         ", [18] DHCP LeaseExpires Time = " & $aIPv4Adapters[$i][18] & @CRLF & _         ", [19] Primary WINS Server IP = " & $aIPv4Adapters[$i][19] & _         ", [20] Primary WINS Server Address Mask = " & $aIPv4Adapters[$i][20] & _         ", [21] Secondary WINS Server IP(s) = " & $aIPv4Adapters[$i][21] & _         ", [22] Secondary WINS Server Address Mask(s) = " & $aIPv4Adapters[$i][22] & @CRLF)     ConsoleWrite($sSeparator & @CRLF) Next ; IPv4 Interface Info alt #2 $aIPv4AddrTable = _Network_IPv4AddressTable() $nInterfaces = @extended ConsoleWrite(@CRLF) For $i = 0 To $nInterfaces - 1     ConsoleWrite("Adapter #"&$i+1&": [0] Interface Index # = " & $aIPv4AddrTable[$i][0] & _         ", [1] IPv4 Address = " & $aIPv4AddrTable[$i][1] & _         ", [2] Subnet Mask = " & $aIPv4AddrTable[$i][2] & _         ", [3] Broadcast Address = " & $aIPv4AddrTable[$i][3] & @CRLF & _         "  [4] Max Reassembly Size = " & $aIPv4AddrTable[$i][4] & _         ", [5] Address Type/State = " & $aIPv4AddrTable[$i][5] & @CRLF) Next ConsoleWrite($sSeparator & @CRLF) ; IPv4 and IPv6 Interface Info (includes everything except Address Masks) ;  params: 0 (IPv4 AND IPv6), 0 (don't get all IP's), 0 (don't include down-status interfaces) $aIPAllAddrTable = _Network_IPAllAddressTable(0, 0, 0) $nInterfaces = @extended ConsoleWrite($sSeparator & @CRLF) For $i = 0 To $nInterfaces - 1     ConsoleWrite("Interface #"&$i+1&": [0] Index #"& $aIPAllAddrTable[$i][0] & _         ", [1] Type = " & $aIPAllAddrTable[$i][1] & _         ", [2] Operational Status = " & $aIPAllAddrTable[$i][2] & _         ", [3] Flags = 0x" & Hex($aIPAllAddrTable[$i][3], 8) & _         ", [4] Physical [MAC] Address: " & $aIPAllAddrTable[$i][4] & _         ", [5] MTU =  " & $aIPAllAddrTable[$i][5] & @CRLF & _         ", [6] Description: "& $aIPAllAddrTable[$i][6] & _         ", [7] Friendly Name: " & $aIPAllAddrTable[$i][7] & _         ", [8] Adapter/Service Name [GUID] = " & $aIPAllAddrTable[$i][8] & @CRLF & _         ", [9] Max Receive Speed [Vista+] = " & $aIPAllAddrTable[$i][9] & _         ", [10] Max Transmit Speed [Vista+] = " & $aIPAllAddrTable[$i][10] & @CRLF & _         ", [11] IPv4 Address(es): "& $aIPAllAddrTable[$i][11] & _         ", [12] IPv6 Address(es): "& $aIPAllAddrTable[$i][12] & @CRLF & _         ", [13] DNS IPv4 Address(es): "& $aIPAllAddrTable[$i][13] & _         ", [14] DNS IPv6 Address(es): "& $aIPAllAddrTable[$i][14] & @CRLF & _         ", [15] Gateway IPv4 Address(es) [Vista+]: "& $aIPAllAddrTable[$i][15] & _         ", [16] Gateway IPv6 Address(es) [Vista+]: "& $aIPAllAddrTable[$i][16] & @CRLF & _         ", [17] DHCP IPv4 Address(es) [Vista+]: "& $aIPAllAddrTable[$i][17] & _         ", [18] DHCP IPv6 Address(es) [Vista+]: "& $aIPAllAddrTable[$i][18] & @CRLF & _         ", [19] WINS IPv4 Address(es) [Vista+]: "& $aIPAllAddrTable[$i][19] & _         ", [20] WINS IPv6 Address(es) [Vista+]: "& $aIPAllAddrTable[$i][20] & @CRLF & _         ", [21] Connection Type [Vista+] = " & $aIPAllAddrTable[$i][21] & _         ", [22] Tunnel Type [Vista+] = " & $aIPAllAddrTable[$i][22] & @CRLF)     ; Interface Statistics & Info for Given index     $aNIEntryInfo = _Network_InterfaceEntryInfo($aIPAllAddrTable[$i][0]) ;~     ConsoleWrite("_Network_InterfaceEntryInfo return, @error = " & @error & ", @extended = " & @extended & @CRLF)     ConsoleWrite("Interface #"&$i+1&" Entry Info: [0] Interface Index = " & $aNIEntryInfo[0] & _         ", [1] Interface Type = " & $aNIEntryInfo[1] & _         ", [2] Operational Status = " & $aNIEntryInfo[2] & _         ", [3] Admin Status = " & $aNIEntryInfo[3] & _         ", [4] Physical Address = " & $aNIEntryInfo[4] & _         ", [5] MTU [Max Trans. Unit] in bytes = " & $aNIEntryInfo[5] & @CRLF & _         ", [6] Description = " & $aNIEntryInfo[6] & _         ", [7] Interface Name = " & $aNIEntryInfo[7] & @CRLF & _         ", [8] Last change [1/100th second] = " & $aNIEntryInfo[8] & _         ", [9] Interface Speed [bps] = " & $aNIEntryInfo[9] & @CRLF & _         ", [10] # Recvd Data [in Octets] = " & $aNIEntryInfo[10] & _         ", [11] # Recvd Unicast Packets = " & $aNIEntryInfo[11] & _         ", [12] # Recvd Non-Unicast Packets = " & $aNIEntryInfo[12] & _         ", [13] # Recvd Packets Discarded [no error] = " & $aNIEntryInfo[13] & _         ", [14] # Recvd Packets Discarded [error] = " & $aNIEntryInfo[14] & _         ", [15] # Recvd Packets Discarded [unk. protocol] = " & $aNIEntryInfo[15] & @CRLF & _         ", [16] # Sent Data [in Octets] = " & $aNIEntryInfo[16] & _         ", [17] # Sent Unicast Packets = " & $aNIEntryInfo[17] & _         ", [18] # Sent Non-Unicast Packets = " & $aNIEntryInfo[18] & _         ", [19] # Sent Packets Discarded [no error] = " & $aNIEntryInfo[19] & _         ", [20] # Sent Packets Discarded [error] = " & $aNIEntryInfo[20] & @CRLF & _         ", [21] Transmit Queue Length [n/a] = " & $aNIEntryInfo[21] & @CRLF)     ConsoleWrite($sSeparator & @CRLF) Next $hSplash=SplashTextOn("Network Usage Information", "", 520, 24 + (19 * 15) + ($nInterfaces * (5.5 * 15)), Default, Default, 16+4, "Lucida Console", 11) ; Start loop Do     $aIPStats   = _Network_IPStatistics()     $aTCPStats  = _Network_TCPStatistics()     $aUDPStats  = _Network_UDPStatistics()     $aICMPStats = _Network_ICMPStatistics()     $aIPv6Stats   = _Network_IPStatistics(1)     $aTCPv6Stats  = _Network_TCPStatistics(1)     $aUDPv6Stats  = _Network_UDPStatistics(1)     $aICMPv6Stats = _Network_ICMPStatistics(1)     $sSplashText  = StringFormat("%35s", "== TCP Stats ==") & @CRLF     $sSplashText &= StringFormat("IPv4: [Segments] Recvd   = %10u | Sent = %10u", $aTCPStats[9], $aTCPStats[10]) & @CRLF     $sSplashText &= StringFormat("IPv6: [Segments] Recvd   = %10u | Sent = %10u", $aTCPv6Stats[9], $aTCPv6Stats[10]) & @CRLF     $sSplashText &= StringFormat("<Total Connections> IPv4:  %10u | IPv6:  %10u", $aTCPStats[14], $aTCPv6Stats[14]) & @CRLF     $sSplashText &= @CRLF & StringFormat("%35s", "== UDP Stats ==") & @CRLF     $sSplashText &= StringFormat("IPv4: [Datagrams] Recvd  = %10u | Sent = %10u", $aUDPStats[0], $aUDPStats[3]) & @CRLF     $sSplashText &= StringFormat("IPv6: [Datagrams] Recvd  = %10u | Sent = %10u", $aUDPv6Stats[0], $aUDPv6Stats[3]) & @CRLF     $sSplashText &= StringFormat("<Total Listeners>   IPv4:  %10u | IPv6:  %10u", $aUDPStats[4], $aUDPv6Stats[4]) & @CRLF     $sSplashText &= @CRLF & StringFormat("%35s", "== IP Stats ==") & @CRLF     $sSplashText &= StringFormat("IPv4: [Datagrams] Recvd  = %10u | Sent = %10u", $aIPStats[2], $aIPStats[9]) & @CRLF     $sSplashText &= StringFormat("IPv6: [Datagrams] Recvd  = %10u | Sent = %10u", $aIPv6Stats[2], $aIPv6Stats[9]) & @CRLF     $sSplashText &= @CRLF & StringFormat("%35s", "== ICMP Stats ==") & @CRLF     $sSplashText &= StringFormat("IPv4: [Messages]  Recvd  = %10u | Sent = %10u", $aICMPStats[0], $aICMPStats[2]) & @CRLF     $sSplashText &= StringFormat("IPv6: [Messages]  Recvd  = %10u | Sent = %10u", $aICMPv6Stats[0], $aICMPv6Stats[2]) & @CRLF     For $i = 0 To $nInterfaces - 1 ;~         $aNIEntryInfo = _Network_InterfaceEntryInfo($aIPv4AddrTable[$i][0]) ;~         $sSplashText &= @CRLF & StringFormat("%35s", "== IP " & $aIPv4AddrTable[$i][1] & " ==" ) & @CRLF         $aNIEntryInfo = _Network_InterfaceEntryInfo($aIPAllAddrTable[$i][0])         If @error Then             ConsoleWrite("_Network_InterfaceEntryInfo return, @error = " & @error & ", @extended = " & @extended & @CRLF)             ExitLoop         EndIf         If $aIPAllAddrTable[$i][11] <> "" Then             $sSplashText &= @CRLF & StringFormat("%40s", "== IPv4 " & $aIPAllAddrTable[$i][11] & " ==" ) & @CRLF         Else             $sSplashText &= @CRLF & StringFormat("%52s", "== IPv6 " & $aIPAllAddrTable[$i][12] & " ==" ) & @CRLF         EndIf         $sSplashText &= StringFormat("%45.56s", $aNIEntryInfo[6]) & @CRLF         ; Octet *should* be the same as Bytes..         $sSplashText &= StringFormat("Data (Octets/Bytes): Recvd = %10u | Sent = %10u", $aNIEntryInfo[10], $aNIEntryInfo[16]) & @CRLF         $sSplashText &= StringFormat("Unicast Packets:     Recvd = %10u | Sent = %10u", $aNIEntryInfo[11], $aNIEntryInfo[17]) & @CRLF         $sSplashText &= StringFormat("Non-Unicast Packets: Recvd = %10u | Sent = %10u", $aNIEntryInfo[12], $aNIEntryInfo[18]) & @CRLF     Next     $sSplashText &= @CRLF & StringFormat("%35s", "[ESC] Exits") & @CRLF     ControlSetText($hSplash, "", "[CLASS:Static; INSTANCE:1]", $sSplashText)     Sleep(500) Until $bHotKeyPressed NetworkStatistics.zip ~prev version. downloads: >100
      Updates:
      2013-07-11:
       Changed: _Network_IPv4AdaptersInfoEx() now returns all IP's (if requested) and Address Masks
       Fixed: WSALastError call possible crash with non-array variable
       Changed: _Network_IPAllAddressTable() now allows 'down' status interfaces to be returned
       Added: Some comments on development, info on getting additional stats in the UDF
      2013-07-06:
       Added: Much more Adapter Information
       Changed: Example is now separate from the UDF
       Fixed some minor issues here and there
       Changed: Global Handle to IPHLPAPI.DLL is now contained in the UDF and used to speed up function calls
       Misc. Other fixes I didn't keep track of!
      2013-07-02:
       Hotfix: Ipv6 indexing error
       Fixed: indexing, updated and enhanced output
       Changed: Various functions return arrays even if failure - this is to make XP pre-SP1 and also collection of IPv6 less troublesome. @error should still be checked on return though!
       Added: Adapter and Interface information and statistics collection
      2013-06-20:
       Now covers all the 'p's - IP and ICMP now added