Retail products


Traffic interception SDK

Control every TCP/IP network connection

  • Route connections via proxy
  • Redirect connections and modify the data
  • Block connections and applications
SSL interception SDK

View SSL in plaintext and modify it

  • View the SSL stream decrypted in plaintext
  • Redirect SSL connection and modify decrypted data
  • Browser shows "SSL lock" without warnings

Documentation


prnpinfo.cpp File Reference

#include <winsock2.h>
#include <ws2spi.h>
#include <windows.h>
#include <objbase.h>
#include <stdio.h>
#include <stdlib.h>
#include <af_irda.h>
#include <wsrm.h>
#include <ws2atm.h>
#include <wsipx.h>
#include <atalkwsh.h>

Include dependency graph for prnpinfo.cpp:

Go to the source code of this file.


Functions

void PrintProtocolInfo (WSAPROTOCOL_INFOW *wsapi)

Function Documentation

void PrintProtocolInfo ( WSAPROTOCOL_INFOW *  wsapi  ) 

Definition at line 47 of file prnpinfo.cpp.

00050 {
00051     WCHAR       szGuidString[MAX_PATH],
00052                 wszProviderPath[MAX_PATH];
00053     INT         dwProviderPathLen=MAX_PATH-1;
00054     int         rc, error, i;
00055 
00056     rc = WSCGetProviderPath(
00057            &wsapi->ProviderId,
00058             wszProviderPath,
00059            &dwProviderPathLen,
00060            &error
00061             );
00062     if ( 0 != rc )
00063     {
00064         fprintf(stderr, "WSCGetProviderPath failed: %d\n", error);
00065         lstrcpyW(wszProviderPath, L"(error)");
00066     }
00067 
00068     //
00069     // Display address family and protocol information
00070     //
00071 
00072     printf("\nProtocol: %S\n", wsapi->szProtocol);
00073     printf("\n    Path: %S\n", wszProviderPath);
00074     printf("           Address Family: ");
00075     switch ( wsapi->iAddressFamily )
00076     {
00077         case AF_INET:
00078         case AF_INET6:
00079             printf("%s\n", (wsapi->iAddressFamily == AF_INET ? "AF_INET" : "AF_INET6"));
00080             printf("                 Protocol: ");      
00081             switch (wsapi->iProtocol)
00082             {
00083                 case IPPROTO_IP:
00084                     printf("IPROTO_IP\n");
00085                     break;
00086                 case IPPROTO_ICMP:
00087                     printf("IPROTO_ICMP\n");
00088                     break;
00089                 case IPPROTO_IGMP:
00090                     printf("IPROTO_IGMP\n");
00091                     break;
00092                 case IPPROTO_GGP:
00093                     printf("IPROTO_GGP\n");
00094                     break;
00095                 case IPPROTO_TCP:
00096                     printf("IPROTO_TCP\n");
00097                     break;
00098                 case IPPROTO_PUP:
00099                     printf("IPROTO_PUP\n");
00100                     break;
00101                 case IPPROTO_UDP:
00102                     printf("IPROTO_UDP\n");
00103                     break;
00104                 case IPPROTO_IDP:
00105                     printf("IPROTO_IDP\n");
00106                     break;
00107                 case IPPROTO_ND:
00108                     printf("IPROTO_ND\n");
00109                     break;
00110                 case IPPROTO_RM:
00111                     printf("IPPROTO_RM\n");
00112                     break;
00113                 case IPPROTO_RAW:
00114                     printf("IPROTO_RAW\n");
00115                     break;
00116             }
00117             break;
00118 
00119         case AF_UNSPEC:
00120             printf("AF_UNSPEC\n");
00121             printf("                 Protocol: UNKNOWN: %d", wsapi->iProtocol);      
00122             break;
00123 
00124         case AF_UNIX:
00125             printf("AF_UNIX\n");
00126             printf("                 Protocol: UNKNOWN: %d", wsapi->iProtocol);      
00127             break;
00128 
00129         case AF_IMPLINK:
00130             printf("AF_IMPLINK\n");
00131             printf("                 Protocol: UNKNOWN: %d", wsapi->iProtocol);      
00132             break;
00133 
00134         case AF_PUP:
00135             printf("AF_PUP\n");
00136             printf("                 Protocol: UNKNOWN: %d", wsapi->iProtocol);      
00137             break;
00138 
00139         case AF_CHAOS:
00140             printf("AF_CHAOS\n");
00141             printf("                 Protocol: UNKNOWN: %d", wsapi->iProtocol);      
00142             break;
00143 
00144         case AF_NS:
00145             printf("AF_NS or AF_IPX\n");
00146             printf("                 Protocol: ");      
00147 
00148             switch ( wsapi->iProtocol )
00149             {
00150                 case NSPROTO_IPX:
00151                     printf("NSPROTO_IPX\n");
00152                     break;
00153                 case NSPROTO_SPX:
00154                     printf("NSPROTO_SPX\n");
00155                     break;
00156                 case NSPROTO_SPXII:
00157                     printf("NSPROTO_SPXII\n");
00158                     break;
00159             }
00160             break;
00161 
00162         case AF_ISO:
00163             printf("AF_ISO or AF_OSI\n");
00164             printf("                 Protocol: UNKNOWN: %d", wsapi->iProtocol);      
00165             break;
00166 
00167         case AF_ECMA:
00168             printf("AF_ECMA\n");
00169             printf("                 Protocol: UNKNOWN: %d", wsapi->iProtocol);      
00170             break;
00171 
00172         case AF_DATAKIT:
00173             printf("AF_DATAKIT\n");
00174             printf("                 Protocol: UNKNOWN: %d", wsapi->iProtocol);      
00175             break;
00176 
00177         case AF_CCITT:
00178             printf("AF_CCITT\n");
00179             printf("                 Protocol: UNKNOWN: %d", wsapi->iProtocol);      
00180             break;
00181 
00182         case AF_SNA:
00183             printf("AF_SNA\n");
00184             printf("                 Protocol: UNKNOWN: %d", wsapi->iProtocol);      
00185             break;
00186 
00187         case AF_DECnet:
00188             printf("AF_DECnet\n");
00189             printf("                 Protocol: UNKNOWN: %d", wsapi->iProtocol);      
00190             break;
00191 
00192         case AF_DLI:
00193             printf("AF_DLI\n");
00194             printf("                 Protocol: UNKNOWN: %d", wsapi->iProtocol);      
00195             break;
00196 
00197         case AF_LAT:
00198             printf("AF_LAT\n");
00199             printf("                 Protocol: UNKNOWN: %d", wsapi->iProtocol);      
00200             break;
00201 
00202         case AF_HYLINK:
00203             printf("AF_HYLINK\n");
00204             printf("                 Protocol: UNKNOWN: %d", wsapi->iProtocol);      
00205             break;
00206 
00207         case AF_APPLETALK:
00208             printf("AF_APPLETALK\n");
00209             printf("                 Protocol: ");      
00210 
00211             switch ( wsapi->iProtocol )
00212             {
00213                 case DDPPROTO_RTMP:
00214                     printf("DDPPROTO_RTMP\n");
00215                     break;
00216                 case DDPPROTO_NBP:
00217                     printf("DDPPROTO_NBP\n");
00218                     break;
00219                 case DDPPROTO_ATP:
00220                     printf("DDPROTO_ATP\n");
00221                     break;
00222                 case DDPPROTO_AEP:
00223                     printf("DDPPROTO_AEP\n");
00224                     break;
00225                 case DDPPROTO_RTMPRQ:
00226                     printf("DDPPROTO_RTMPRQ\n");
00227                     break;
00228                 case DDPPROTO_ZIP:
00229                     printf("DDPPROTO_ZIP\n");
00230                     break;
00231                 case DDPPROTO_ADSP:
00232                     printf("DDPPROTO_ADSP\n");
00233                     break;
00234                 case ATPROTO_ADSP:
00235                     printf("ATPROTO_ADSP\n");
00236                     break;
00237                 case ATPROTO_ATP:
00238                     printf("ATPROTO_ATP\n");
00239                     break;
00240                 case ATPROTO_ASP:
00241                     printf("ATPROTO_ASP\n");
00242                     break;
00243                 case ATPROTO_PAP:
00244                     printf("ATPROTO_PAP\n");
00245                     break;
00246             }
00247             break;
00248 
00249         case AF_NETBIOS:
00250             printf("AF_NETBIOS\n");
00251             printf("                 Protocol: ");      
00252             printf("NetBIOS LANA %d\n", ((wsapi->iProtocol == 0x80000000) ? 0: abs(wsapi->iProtocol)));
00253             break;
00254 
00255         case AF_VOICEVIEW:
00256             printf("AF_VOICEVIEW\n");
00257             printf("                 Protocol: UNKNOWN: %d", wsapi->iProtocol);      
00258             break;
00259 
00260         case AF_FIREFOX:
00261             printf("AF_FIREFOX\n");
00262             printf("                 Protocol: UNKNOWN: %d", wsapi->iProtocol);      
00263             break;
00264 
00265         case AF_UNKNOWN1:
00266             printf("AF_UNKNOWN1\n");
00267             printf("                 Protocol: UNKNOWN: %d", wsapi->iProtocol);      
00268             break;
00269 
00270         case AF_BAN:
00271             printf("AF_BAN\n");
00272             printf("                 Protocol: UNKNOWN: %d", wsapi->iProtocol);      
00273             break;
00274 
00275         case AF_ATM:
00276             printf("AF_ATM\n");
00277             printf("                 Protocol: ");      
00278 
00279             switch ( wsapi->iProtocol )
00280             {
00281                 case ATMPROTO_AALUSER:
00282                     printf("ATMPROTO_AALUSER\n");
00283                     break;
00284                 case ATMPROTO_AAL1:
00285                     printf("ATMPROTO_AAL1\n");
00286                     break;
00287                 case ATMPROTO_AAL2:
00288                     printf("ATMPROTO_AAL2\n");
00289                     break;
00290                 case ATMPROTO_AAL34:
00291                     printf("ATMPROTO_AAL34\n");
00292                     break;
00293                 case ATMPROTO_AAL5:
00294                     printf("ATMPROTO_AAL5\n");
00295                     break;
00296             }
00297             break;
00298 
00299         case AF_CLUSTER:
00300             printf("AF_CLUSTER\n");
00301             printf("                 Protocol: UNKNOWN: %d", wsapi->iProtocol);      
00302             break;
00303         case AF_12844:
00304             printf("AF_12844\n");
00305             printf("                 Protocol: UNKNOWN: %d", wsapi->iProtocol);      
00306             break;
00307         case AF_IRDA:
00308             printf("AF_IRDA\n");
00309             printf("                 Protocol: ");      
00310 
00311             switch (wsapi->iProtocol)
00312             {
00313                 case IRDA_PROTO_SOCK_STREAM:
00314                     printf("IRDA_PROTO_SOCK_STREAM\n");
00315                     break;
00316             }
00317             break;
00318 
00319         default:
00320             printf("Unknown: %d\n", wsapi->iAddressFamily);
00321     }
00322 
00323     //
00324     // Display socket type information
00325     //
00326 
00327     printf("              Socket Type: ");
00328     switch (wsapi->iSocketType)
00329     {
00330         case SOCK_STREAM:
00331             printf("SOCK_STREAM\n");
00332             break;
00333         case SOCK_DGRAM:
00334             printf("SOCK_DGRAM\n");
00335             break;
00336         case SOCK_RAW:
00337             printf("SOCK_RAW\n");
00338             break;
00339         case SOCK_RDM:
00340             printf("SOCK_RDM\n");
00341             break;
00342         case SOCK_SEQPACKET:
00343             printf("SOCK_SEQPACKET\n");
00344             break;
00345     }
00346 
00347     //
00348     // Display the various provider flags for this entry
00349     //
00350 
00351     printf("           Connectionless: ");
00352     if (wsapi->dwServiceFlags1 & XP1_CONNECTIONLESS)
00353         printf("YES\n");
00354     else
00355         printf("NO\n");
00356     printf("      Guaranteed Delivery: ");
00357     if (wsapi->dwServiceFlags1 & XP1_GUARANTEED_DELIVERY)
00358         printf("YES\n");
00359     else
00360         printf("NO\n");
00361     printf("         Guaranteed Order: ");
00362     if (wsapi->dwServiceFlags1 & XP1_GUARANTEED_ORDER)
00363         printf("YES\n");
00364     else
00365         printf("NO\n");
00366     printf("         Message Oriented: ");
00367     if (wsapi->dwServiceFlags1 & XP1_MESSAGE_ORIENTED)
00368         printf("YES\n");
00369     else
00370         printf("NO\n");
00371     printf("            Pseudo Stream: ");
00372     if (wsapi->dwServiceFlags1 & XP1_PSEUDO_STREAM)
00373         printf("YES\n");
00374     else
00375         printf("NO\n");
00376     printf("           Graceful Close: ");
00377     if (wsapi->dwServiceFlags1 & XP1_GRACEFUL_CLOSE)
00378         printf("YES\n");
00379     else
00380         printf("NO\n");
00381     printf("           Expedited Data: ");
00382     if (wsapi->dwServiceFlags1 & XP1_EXPEDITED_DATA)
00383         printf("YES\n");
00384     else
00385         printf("NO\n");
00386     printf("             Connect Data: ");
00387     if (wsapi->dwServiceFlags1 & XP1_CONNECT_DATA)
00388         printf("YES\n");
00389     else
00390         printf("NO\n");
00391     printf("          Disconnect Data: ");
00392     if (wsapi->dwServiceFlags1 & XP1_DISCONNECT_DATA)
00393         printf("YES\n");
00394     else
00395         printf("NO\n");
00396     printf("       Supports Broadcast: ");
00397     if (wsapi->dwServiceFlags1 & XP1_SUPPORT_BROADCAST)
00398         printf("YES\n");
00399     else
00400         printf("NO\n");
00401     printf("      Supports Multipoint: ");
00402     if (wsapi->dwServiceFlags1 & XP1_SUPPORT_MULTIPOINT)
00403         printf("YES\n");
00404     else
00405         printf("NO\n");
00406     printf(" Multipoint Control Plane: ");
00407     if (wsapi->dwServiceFlags1 & XP1_MULTIPOINT_CONTROL_PLANE)
00408         printf("ROOTED\n");
00409     else
00410         printf("NON-ROOTED\n");
00411     printf("    Multipoint Data Plane: ");
00412     if (wsapi->dwServiceFlags1 & XP1_MULTIPOINT_DATA_PLANE)
00413         printf("ROOTED\n");
00414     else
00415         printf("NON-ROOTED\n");
00416     printf("            QoS Supported: ");
00417     if (wsapi->dwServiceFlags1 & XP1_QOS_SUPPORTED)
00418         printf("YES\n");
00419     else
00420         printf("NO\n");
00421     printf("     Unidirectional Sends: ");
00422     if (wsapi->dwServiceFlags1 & XP1_UNI_SEND)
00423         printf("YES\n");
00424     else
00425         printf("NO\n");
00426     printf("    Unidirection Receives: ");
00427     if (wsapi->dwServiceFlags1 & XP1_UNI_RECV)
00428         printf("YES\n");
00429     else
00430         printf("NO\n");
00431     printf("              IFS Handles: ");
00432     if (wsapi->dwServiceFlags1 & XP1_IFS_HANDLES)
00433         printf("YES\n");
00434     else
00435         printf("NO\n");
00436     printf("         Partial Messages: ");
00437     if (wsapi->dwServiceFlags1 & XP1_PARTIAL_MESSAGE)
00438         printf("YES\n");
00439     else
00440         printf("NO\n");
00441     printf("           Provider Flags: ");
00442     if (wsapi->dwProviderFlags & PFL_MULTIPLE_PROTO_ENTRIES)
00443     {
00444         printf("PFL_MULTIPLE_PROTO_ENTRIES ");
00445     }
00446     if (wsapi->dwProviderFlags & PFL_RECOMMENDED_PROTO_ENTRY)
00447     {
00448         printf("PFL_RECOMMENDED_PROT_ENTRY ");
00449     }
00450     if (wsapi->dwProviderFlags & PFL_HIDDEN)
00451     {
00452         printf("PFL_HIDDEN ");
00453     }
00454     if (wsapi->dwProviderFlags & PFL_MATCHES_PROTOCOL_ZERO)
00455     {
00456         printf("PFL_MATCHES_PROTOCOL_ZERO ");
00457     }
00458     if (wsapi->dwProviderFlags == 0)
00459     {
00460         printf("NONE");
00461     }
00462     printf("\n");
00463 
00464     //
00465     // Display provider ID and catalog ID as well as LSP chain information
00466     //
00467 
00468     StringFromGUID2( wsapi->ProviderId, szGuidString, MAX_PATH-1 );
00469 
00470     printf("              Provider Id: %S\n", szGuidString);
00471     printf("         Catalog Entry Id: %ld\n", wsapi->dwCatalogEntryId);
00472     printf("  Number of Chain Entries: %d   {", 
00473         wsapi->ProtocolChain.ChainLen);
00474 
00475     for(i=0; i < wsapi->ProtocolChain.ChainLen ;i++)
00476         printf("%ld ", wsapi->ProtocolChain.ChainEntries[i]);
00477 
00478     printf("}\n");
00479 
00480     //
00481     // Display the remaining information
00482     //
00483 
00484     printf("                  Version: %d\n", wsapi->iVersion);
00485     printf("Max Socket Address Length: %d\n", wsapi->iMaxSockAddr);
00486     printf("Min Socket Address Length: %d\n", wsapi->iMinSockAddr);
00487     printf("      Protocol Max Offset: %d\n", wsapi->iProtocolMaxOffset);
00488 
00489     printf("       Network Byte Order: ");
00490     if (wsapi->iNetworkByteOrder == 0)
00491         printf("BIG-ENDIAN\n");
00492     else
00493         printf("LITLE-ENDIAN\n");
00494 
00495     printf("          Security Scheme: ");
00496     if (wsapi->iSecurityScheme == SECURITY_PROTOCOL_NONE)
00497         printf("NONE\n");
00498     else
00499         printf("%d\n", wsapi->iSecurityScheme);
00500 
00501     printf("             Message Size: ");
00502     if (wsapi->dwMessageSize == 0)
00503         printf("N/A (Stream Oriented)\n");
00504     else if (wsapi->dwMessageSize == 1)
00505         printf("Depended on underlying MTU\n");
00506     else if (wsapi->dwMessageSize == 0xFFFFFFFF)
00507         printf("No limit\n");
00508     else
00509         printf("%ld\n", wsapi->dwMessageSize);
00510 
00511     printf("        Provider Reserved: %d\n", wsapi->dwProviderReserved);
00512 }