| 378 | | s = va_arg(vl, int); |
|---|
| 379 | | saddr = va_arg(vl, struct sockaddr *); |
|---|
| 380 | | |
|---|
| 381 | | if (opts.override.connect.host != NULL) { |
|---|
| 382 | | si = (struct sockaddr_in *) saddr; |
|---|
| 383 | | si->sin_addr.s_addr = inet_addr(opts.override.connect.host); |
|---|
| 384 | | } |
|---|
| 385 | | |
|---|
| 386 | | if (opts.override.connect.port > 0) { |
|---|
| 387 | | si = (struct sockaddr_in *) saddr; |
|---|
| 388 | | si->sin_port = htons(opts.override.connect.port); |
|---|
| 389 | | } |
|---|
| 390 | | |
|---|
| 391 | | saddrlen = va_arg(vl, socklen_t); |
|---|
| 392 | | |
|---|
| 393 | | va_end(vl); |
|---|
| 394 | | |
|---|
| 395 | | return connect(s, saddr, saddrlen); |
|---|
| | 375 | s = va_arg(vl, int); |
|---|
| | 376 | saddr = va_arg(vl, struct sockaddr *); |
|---|
| | 377 | saddrlen = va_arg(vl, socklen_t); |
|---|
| | 378 | |
|---|
| | 379 | va_end(vl); |
|---|
| | 380 | |
|---|
| | 381 | if (opts.override.connect.host != NULL) // override dst address? |
|---|
| | 382 | ((struct sockaddr_in *)saddr)->sin_addr.s_addr = inet_addr(opts.override.connect.host); |
|---|
| | 383 | |
|---|
| | 384 | if (opts.override.connect.port > 0) // override dst port? |
|---|
| | 385 | ((struct sockaddr_in *)saddr)->sin_port = htons(opts.override.connect.port); |
|---|
| | 386 | |
|---|
| | 387 | if ((sockfd = connect(s, saddr, saddrlen)) != -1) { |
|---|
| | 388 | daddrlen = sizeof(struct sockaddr); |
|---|
| | 389 | if (getsockname(sockfd, &daddr, &daddrlen) == -1) { |
|---|
| | 390 | logmsg(LOG_ERR, 1, "CPU Emulation Error - Unable to get peer information: %s.\n", strerror(errno)); |
|---|
| | 391 | exit(EXIT_FAILURE); |
|---|
| | 392 | } |
|---|
| | 393 | if (getpeername(sockfd, saddr, &saddrlen) == -1) { |
|---|
| | 394 | logmsg(LOG_ERR, 1, "CPU Emulation Error - Unable to get peer information: %s.\n", strerror(errno)); |
|---|
| | 395 | exit(EXIT_FAILURE); |
|---|
| | 396 | } |
|---|
| | 397 | |
|---|
| | 398 | if ((inet_ntop(AF_INET, &((struct sockaddr_in *)saddr)->sin_addr, shost, 16) == NULL) || |
|---|
| | 399 | (inet_ntop(AF_INET, &((struct sockaddr_in *)&daddr)->sin_addr, dhost, 16) == NULL)) { |
|---|
| | 400 | logmsg(LOG_ERR, 1, "CPU Emulation Error - Unable to convert IP address: %s.\n", strerror(errno)); |
|---|
| | 401 | exit(EXIT_FAILURE); |
|---|
| | 402 | } |
|---|
| | 403 | |
|---|
| | 404 | logmsg(LOG_NOISY, 1, "CPU Emulation - Connection established: %s:%u -> %s:%u.\n", |
|---|
| | 405 | shost, ntohs(((struct sockaddr_in *)saddr)->sin_port), |
|---|
| | 406 | dhost, ntohs(((struct sockaddr_in *)&daddr)->sin_port)); |
|---|
| | 407 | } |
|---|
| | 408 | |
|---|
| | 409 | return sockfd; |
|---|
| 506 | | if ((sockfd = accept(s, saddr, saddrlen)) == -1) { |
|---|
| 507 | | logmsg(LOG_ERR, 1, "CPU Emulation Error - Unable to accept incoming connection: %s.\n", strerror(errno)); |
|---|
| 508 | | exit(EXIT_FAILURE); |
|---|
| 509 | | } |
|---|
| 510 | | logmsg(LOG_NOISY, 1, "-------------------------------------\n"); |
|---|
| 511 | | |
|---|
| 512 | | socklen = sizeof(struct sockaddr); |
|---|
| 513 | | if (getsockname(sockfd,&daddr, &socklen) == -1) { |
|---|
| 514 | | logmsg(LOG_ERR, 1, "CPU Emulation Error - Unable to get peer information: %s.\n", strerror(errno)); |
|---|
| 515 | | exit(EXIT_FAILURE); |
|---|
| 516 | | } |
|---|
| 517 | | |
|---|
| 518 | | if ((inet_ntop(AF_INET, &((struct sockaddr_in *)saddr)->sin_addr, shost, 16) == NULL) || |
|---|
| 519 | | (inet_ntop(AF_INET, &((struct sockaddr_in *)&daddr)->sin_addr, dhost, 16) == NULL)) { |
|---|
| 520 | | logmsg(LOG_ERR, 1, "CPU Emulation Error - Unable to convert IP address: %s.\n", strerror(errno)); |
|---|
| 521 | | exit(EXIT_FAILURE); |
|---|
| 522 | | } |
|---|
| 523 | | |
|---|
| 524 | | logmsg(LOG_NOISY, 1, "CPU Emulation - Connection accepted: %s:%u <- %s:%u.\n", |
|---|
| 525 | | shost, ((struct sockaddr_in *)saddr)->sin_port, |
|---|
| 526 | | dhost, ((struct sockaddr_in *)&daddr)->sin_port); |
|---|
| 527 | | |
|---|
| 528 | | |
|---|
| 529 | | /* |
|---|
| 530 | | if ((a = new_virtattack(*(struct in_addr*) &, *(struct in_addr*) &a->m_action.m_connectback.m_remotehost, 0, a->m_action.m_connectback.m_remoteport, TCP)) == NULL) { |
|---|
| 531 | | logmsg(LOG_ERR, 1, "CSPM Error - Unable to create virtual attack for connectback session.\n"); |
|---|
| 532 | | exit(EXIT_FAILURE); |
|---|
| 533 | | } |
|---|
| 534 | | */ |
|---|
| 535 | | |
|---|
| 536 | | |
|---|
| | 527 | if ((sockfd = accept(s, saddr, saddrlen)) != -1) { |
|---|
| | 528 | daddrlen = sizeof(struct sockaddr); |
|---|
| | 529 | if (getsockname(sockfd,&daddr, &daddrlen) == -1) { |
|---|
| | 530 | logmsg(LOG_ERR, 1, "CPU Emulation Error - Unable to get peer information: %s.\n", strerror(errno)); |
|---|
| | 531 | exit(EXIT_FAILURE); |
|---|
| | 532 | } |
|---|
| | 533 | if (getpeername(sockfd,saddr, saddrlen) == -1) { |
|---|
| | 534 | logmsg(LOG_ERR, 1, "CPU Emulation Error - Unable to get peer information: %s.\n", strerror(errno)); |
|---|
| | 535 | exit(EXIT_FAILURE); |
|---|
| | 536 | } |
|---|
| | 537 | |
|---|
| | 538 | if ((inet_ntop(AF_INET, &((struct sockaddr_in *)saddr)->sin_addr, shost, 16) == NULL) || |
|---|
| | 539 | (inet_ntop(AF_INET, &((struct sockaddr_in *)&daddr)->sin_addr, dhost, 16) == NULL)) { |
|---|
| | 540 | logmsg(LOG_ERR, 1, "CPU Emulation Error - Unable to convert IP address: %s.\n", strerror(errno)); |
|---|
| | 541 | exit(EXIT_FAILURE); |
|---|
| | 542 | } |
|---|
| | 543 | |
|---|
| | 544 | logmsg(LOG_NOISY, 1, "CPU Emulation - Connection accepted: %s:%u <- %s:%u.\n", |
|---|
| | 545 | shost, ntohs(((struct sockaddr_in *)saddr)->sin_port), |
|---|
| | 546 | dhost, ntohs(((struct sockaddr_in *)&daddr)->sin_port)); |
|---|
| | 547 | } |
|---|