Open Server a fake Port

要讓iptables可記錄下誰連來過

 iptables -I INPUT -p tcp -m tcp --dport 7777 -m state --state NEW -j LOG --log-level 1 --log-prefix "New Connection " 

 

加入後 誰連7777就可以被記錄  (in /var/log/message)

 

Server端使用c++ 編譯檔案內容使其成為a.out

=======================

/* A simple server in the internet domain using TCP

   The port number is passed as an argument */

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <unistd.h>

#include <sys/types.h> 

#include <sys/socket.h>

#include <netinet/in.h>



void error(const char *msg)

{

    perror(msg);

    exit(1);

}



int main(int argc, char *argv[])

{

     int sockfd, newsockfd, portno;

     socklen_t clilen;

     char buffer[256];

     struct sockaddr_in serv_addr, cli_addr;

     int n;

     if (argc < 2) {

         fprintf(stderr,"ERROR, no port provided\n");

         exit(1);

     }

     sockfd = socket(AF_INET, SOCK_STREAM, 0);

     if (sockfd < 0) 

        error("ERROR opening socket");

     bzero((char *) &serv_addr, sizeof(serv_addr));

     portno = atoi(argv[1]);

     serv_addr.sin_family = AF_INET;

     serv_addr.sin_addr.s_addr = INADDR_ANY;

     serv_addr.sin_port = htons(portno);

     if (bind(sockfd, (struct sockaddr *) &serv_addr,

              sizeof(serv_addr)) < 0) 

              error("ERROR on binding");

     listen(sockfd,5);

     clilen = sizeof(cli_addr);

     newsockfd = accept(sockfd, 

                 (struct sockaddr *) &cli_addr, 

                 &clilen);

     if (newsockfd < 0) 

          error("ERROR on accept");

     bzero(buffer,256);

     n = read(newsockfd,buffer,255);

     if (n < 0) error("ERROR reading from socket");

     printf("Here is the message: %s\n",buffer);

     n = write(newsockfd,"I got your message",18);

     if (n < 0) error("ERROR writing to socket");

     close(newsockfd);

     close(sockfd);

     return 0; 

}

 ==================================

 

開始編譯

gcc xxxx.c

 

./a.out  [port-name]

即可開啟一個虛擬埠

 

Client端

本次使用C#來做交握

Socket sk = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ipe = new IPEndPoint(IPAddress.Parse("你主機的ip"), 要連的port);
sk.Connect(ipe);   sk.Close();

 編譯完成後執行exe , 應該會出現連接的log在iptables

 

如果要常on 記得在shell裏做簡單的循環

count=`ps -fe |grep "a.out" | grep -v "grep" | wc -l`
if [ $count -lt 1 ]; then
./a.out 7795
fi
 

讓crontab 去一直try

 

 

 

← 回列表