// exscan - version 0.4 - PolarRoot (pi9@hotmail.com
//      scan.c

#include "main.h"

void ScanPort (int port, char *service) {
	if (OPT_LIST_SERVICES==1) {
		fprintf(hOUTPUT_FILE, "Port: %i \tService: %s\n", port, service);
		return;
	}
	sock.sin_port=htons(port);
	s=socket(AF_INET,SOCK_STREAM,0);
	if (s<0) exit(fprintf(hOUTPUT_FILE, "Error creating socket.\n"));

	if (!connect(s,(struct sockaddr *)&sock, sizeof(sock))) {
		fprintf(hOUTPUT_FILE, "Port %4d Open: %s Service Running.\n", port, service);
		OPEN_PORT=port;
	}
	if (close(s)) exit(fprintf(hOUTPUT_FILE, "Error closing socket.\n"));
}

void ScanPortData (int port, char *service) {
	char data[65535] = "";
	unsigned int flags = 0;

	if (OPT_LIST_SERVICES==1) {
		fprintf(hOUTPUT_FILE, "Port: %i \tService: %s\n", port, service);
		return;
	}
	sock.sin_port=htons(port);
	s=socket(AF_INET,SOCK_STREAM,0);
	if (s<0) exit(fprintf(hOUTPUT_FILE, "Error creating socket.\n"));

	if (!connect(s,(struct sockaddr *)&sock, sizeof(sock))) {
		fprintf(hOUTPUT_FILE, "Port %4d Open: %s Service Running.\n", port, service);
		OPEN_PORT=port;
		if (OPT_VERBOSE_MODE==1)
		if (recv(s,data,65535,flags))
			fprintf(hOUTPUT_FILE, "Data Returned: \n%s\n\n", data);
	}
	if (close(s)) exit(fprintf(hOUTPUT_FILE, "Error closing socket.\n"));
}

void ScanPortQuery (int port, char *service, char *sendstr) {
	char data[65535] = "";
	unsigned int flags = 0;

	if (OPT_LIST_SERVICES==1) {
		fprintf(hOUTPUT_FILE, "Port: %i \tService: %s\n", port, service);
		return;
	}
	sock.sin_port=htons(port);
	s=socket(AF_INET,SOCK_STREAM,0);
	if (s<0) exit(fprintf(hOUTPUT_FILE, "Error creating socket.\n"));

	if (!connect(s,(struct sockaddr *)&sock, sizeof(sock))) {
		fprintf(hOUTPUT_FILE, "Port %4d Open: %s Service Running.\n", port, service);
		OPEN_PORT=port;
		if (OPT_VERBOSE_MODE==1)
		if (send(s, sendstr, strlen(sendstr), flags)) {
			if (recv(s,data,65535, flags))
				fprintf(hOUTPUT_FILE, "Data Returned: \n%s\n\n", data);
		}
	}
	if (close(s)) exit(fprintf(hOUTPUT_FILE, "Error closing socket.\n"));
}


