home *** CD-ROM | disk | FTP | other *** search
/ Steganos Hacker Tools / SHT151.iso / programme / scanner / nmapNTsp1 / Win_2000.exe / nmapNT-src / rpc.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-07-14  |  3.4 KB  |  100 lines

  1. #ifndef RPC_H
  2. #define RPC_H
  3.  
  4. #include "nmap.h"
  5. #include "global_structures.h"
  6. #include "charpool.h"
  7. #include "error.h"
  8. #include "utils.h"
  9.  
  10. /* rpc related #defines */
  11. #define RECORD_MARKING 4        /* length of recoder marking (bytes)     */
  12.  
  13. /* defines used to check RPC answers */
  14.  
  15. #define RPC_MSG_CALL           0        /* RPC request                           */
  16. #define RPC_MSG_REPLY          1        /* RPC answer                            */
  17.  
  18. #define MSG_ACCEPTED   0        /* RPC request was accepted              */
  19. #define MSG_DENIED     1        /* RPC request was denied                */
  20.  
  21. #define SUCCESS        0        /* RPC proc_null request was a success   */
  22. #define PROG_UNAVAIL   1        /* RPC prog not on this port             */
  23. #define PROG_MISMATCH  2        /* RPC prog here but wrong version       */
  24.  
  25. /* structure used for RPC calls */
  26. struct rpc_hdr                          
  27. {       u_long  xid;                    /* xid number                    */
  28.         u_long  type_msg;               /* request or answer             */
  29.         u_long  version_rpc;            /* portmapper/rpcbind version    */
  30.         u_long  prog_id;                /* rpc program id                */
  31.         u_long  prog_ver;               /* rpc program version           */
  32.         u_long  prog_proc;              /* remote procedure call number  */
  33.         u_long  authcred_flavor;        /* credentials field             */
  34.         u_long  authcred_length;
  35.         u_long  authveri_flavor;        /* verification field            */
  36.         u_long  authveri_length;
  37. };
  38.  
  39. struct rpc_hdr_rcv {
  40.   unsigned long xid;
  41.   unsigned long type_msg;
  42.   unsigned long rp_stat;
  43.   unsigned long auth_flavor;
  44.   unsigned long opaque_length;
  45.   unsigned long accept_stat;
  46.   unsigned long low_version;
  47.   unsigned long high_version;
  48. };
  49.  
  50. struct rpc_info {
  51.   char **names;
  52.   unsigned long *numbers;
  53.   int num_used;
  54.   int num_alloc;
  55. };
  56.  
  57. struct rpcscaninfo {
  58.   struct port *rpc_current_port;
  59.   unsigned long *rpc_progs;
  60.   int rpc_number;
  61.   int valid_responses_this_port; /* Number of valid (RPC wise) responses we
  62.                     have received on this particular port */
  63. #define RPC_STATUS_UNTESTED 0
  64. #define RPC_STATUS_UNKNOWN 1   /* Don't know yet */
  65. #define RPC_STATUS_GOOD_PROG 2 /* the prog # specified in rpc_status_info and
  66.                                   the version info is
  67.                   valid for the rpc_current_port */
  68. #define RPC_STATUS_NOT_RPC 4   /* This doesn't even seem to be an RPC port */
  69.   int rpc_status;
  70.   unsigned long rpc_program;
  71.   unsigned long rpc_lowver; /* Lowest version number of program supported */
  72.   unsigned long rpc_highver; /* Highest version supported */
  73. };
  74.  
  75.  
  76. int get_rpc_procs(unsigned long **programs, int *num_programs);
  77. char *nmap_getrpcnamebynum(unsigned long num);
  78. #ifdef WIN32
  79. int send_rpc_query(struct in_addr *target_host, unsigned short portno,
  80.            int ipproto, unsigned long program, int scan_offset, 
  81.            int trynum,struct interface_info *ainfo);
  82. #else
  83. int send_rpc_query(struct in_addr *target_host, unsigned short portno,
  84.            int ipproto, unsigned long program, int scan_offset, 
  85.            int trynum);
  86. #endif
  87. void get_rpc_results(struct hoststruct *target, struct portinfo *scan,
  88.              struct scanstats *ss, struct portinfolist *pil, 
  89.              struct rpcscaninfo *rsi);
  90. void close_rpc_query_sockets();
  91.  
  92. #endif
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.