Changeset 39310
- Timestamp:
- 10/30/16 07:59:56 (7 years ago)
- Location:
- titan/plugins/networkbrowser
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
titan/plugins/networkbrowser/netlib/nbtscan.c
r22765 r39310 51 51 52 52 int print_header() { 53 printf("%-17s%-17s%-10s%-17s%-17s\n", "IP address", "NetBIOS Name", 53 printf("%-17s%-17s%-10s%-17s%-17s\n", "IP address", "NetBIOS Name", 54 54 "Server", "User", "MAC address"); 55 55 printf("------------------------------------------------------------------------------\n"); … … 85 85 netinfo *nInfo = malloc(sizeof(netinfo)*255); 86 86 if(!nInfo) 87 return(NULL); // TODO: besser machen 87 return(NULL); // TODO: besser machen 88 88 memset(nInfo,0,sizeof(netinfo)*255); 89 89 return nInfo; … … 92 92 void freeNetInfo(netinfo *nInfo) 93 93 { 94 free(nInfo); 94 free(nInfo); 95 95 } 96 96 … … 101 101 int netzInfo(char *pythonIp, netinfo *nInfo) { 102 102 int timeout=10000, use137=0, bandwidth=0, send_ok=0; 103 extern char *optarg;104 extern int optind; 103 /*extern char *optarg; 104 extern int optind;*/ /*unused*/ 105 105 char* target_string=NULL; 106 106 char* filename =NULL; … … 123 123 float rtt; /* most recent measured RTT, seconds */ 124 124 float srtt=0; /* smoothed rtt estimator, seconds */ 125 float rttvar=0.75; /* smoothed mean deviation, seconds */ 125 float rttvar=0.75; /* smoothed mean deviation, seconds */ 126 126 double delta; /* used in retransmit timeout calculations */ 127 127 int rto, retransmits=0, more_to_send=1, i; … … 131 131 132 132 if((target_string=strdup(pythonIp))==NULL) 133 { 133 { 134 134 err_die("Malloc failed.\n", quiet); 135 135 } … … 144 144 /*****************************************/ 145 145 sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); 146 if (sock < 0) 146 if (sock < 0) 147 147 err_die("Failed to create socket", quiet); 148 148 … … 150 150 src_sockaddr.sin_family = AF_INET; 151 151 if(use137) src_sockaddr.sin_port = htons(NB_DGRAM); 152 if (bind(sock, (struct sockaddr *)&src_sockaddr, sizeof(src_sockaddr)) == -1) 152 if (bind(sock, (struct sockaddr *)&src_sockaddr, sizeof(src_sockaddr)) == -1) 153 153 err_die("Failed to bind", quiet); 154 154 155 155 fdsr=malloc(sizeof(fd_set)); 156 156 if(!fdsr) err_die("Malloc failed", quiet); 157 157 FD_ZERO(fdsr); 158 158 FD_SET(sock, fdsr); 159 159 160 160 fdsw=malloc(sizeof(fd_set)); 161 161 if(!fdsw) … … 185 185 buff=malloc(BUFFSIZE); 186 186 if(!buff) 187 { 187 { 188 188 free(fdsw); fdsw = NULL; 189 189 free(fdsr); fdsr = NULL; … … 191 191 err_die("Malloc failed", quiet); 192 192 } 193 193 194 194 /* Calculate interval between subsequent sends */ 195 195 196 196 timerclear(&send_interval); 197 if(bandwidth) send_interval.tv_usec = 197 if(bandwidth) send_interval.tv_usec = 198 198 (NBNAME_REQUEST_SIZE + UDP_HEADER_SIZE + IP_HEADER_SIZE)*8*1000000 / 199 199 bandwidth; /* Send interval in microseconds */ … … 204 204 send_interval.tv_usec = send_interval.tv_usec % 1000000; 205 205 } 206 206 207 207 gettimeofday(&last_send_time, NULL); /* Get current time */ 208 208 209 rtt_base = last_send_time.tv_sec; 209 rtt_base = last_send_time.tv_sec; 210 210 211 211 /* Send queries, receive answers and print results */ 212 212 /***************************************************/ 213 213 214 214 scanned = new_list(); 215 215 … … 233 233 /* If this packet isn't a duplicate */ 234 234 if(insert(scanned, ntohl(dest_sockaddr.sin_addr.s_addr))) { 235 rtt = recv_time.tv_sec + 236 recv_time.tv_usec/1000000 - rtt_base - 235 rtt = recv_time.tv_sec + 236 recv_time.tv_usec/1000000 - rtt_base - 237 237 hostinfo->header->transaction_id/1000; 238 /* Using algorithm described in Stevens' 238 /* Using algorithm described in Stevens' 239 239 Unix Network Programming */ 240 240 delta = rtt - srtt; … … 256 256 257 257 FD_ZERO(fdsr); 258 FD_SET(sock, fdsr); 258 FD_SET(sock, fdsr); 259 259 260 260 /* check if send_interval time passed since last send */ … … 262 262 timersub(¤t_time, &last_send_time, &diff_time); 263 263 send_ok = timercmp(&diff_time, &send_interval, >=); 264 265 264 265 266 266 if(more_to_send && FD_ISSET(sock, fdsw) && send_ok) { 267 267 if(targetlist) { … … 271 271 fprintf(stderr,"%s - bad IP address\n", str); 272 272 } else { 273 if(!in_list(scanned, ntohl(next_in_addr->s_addr))) 273 if(!in_list(scanned, ntohl(next_in_addr->s_addr))) 274 274 send_query(sock, *next_in_addr, rtt_base); 275 275 } 276 276 } else { 277 277 if(feof(targetlist)) { 278 more_to_send=0; 278 more_to_send=0; 279 279 FD_ZERO(fdsw); 280 280 /* timeout is in milliseconds */ … … 292 292 } 293 293 } else if(next_address(&range, prev_in_addr, next_in_addr) ) { 294 if(!in_list(scanned, ntohl(next_in_addr->s_addr))) 294 if(!in_list(scanned, ntohl(next_in_addr->s_addr))) 295 295 send_query(sock, *next_in_addr, rtt_base); 296 296 prev_in_addr=next_in_addr; 297 297 /* Update last send time */ 298 gettimeofday(&last_send_time, NULL); 298 gettimeofday(&last_send_time, NULL); 299 299 } else { /* No more queries to send */ 300 more_to_send=0; 300 more_to_send=0; 301 301 FD_ZERO(fdsw); 302 302 /* timeout is in milliseconds */ … … 305 305 continue; 306 306 }; 307 }; 307 }; 308 308 if(more_to_send) { 309 309 FD_ZERO(fdsw); … … 320 320 if ( rto > 60.0 ) rto = 60.0; 321 321 gettimeofday(&now, NULL); 322 323 if(now.tv_sec < (transmit_started.tv_sec+rto)) 322 323 if(now.tv_sec < (transmit_started.tv_sec+rto)) 324 324 sleep((transmit_started.tv_sec+rto)-now.tv_sec); 325 325 prev_in_addr = NULL ; -
titan/plugins/networkbrowser/networkbrowser.c
r39304 r39310 6 6 #include "netlib/smbinfo.h" 7 7 #include "networkbrowser.h" 8 #define INLINE9 8 10 9 char pluginname[] = "Networkbrowser";
Note: See TracChangeset
for help on using the changeset viewer.