2012-04-24 2 views
2

다른 사람들에게 배포하려는 프로그램을 작성하고 있지만 소켓을 사용하며 대부분의 보안 소프트웨어는이를 맬웨어로 취급합니다. 사람들에게 방화벽을 낮추고 프로그램에서 검사를 면제하도록 말하지 않고이 프로그램을 어떻게 작동시킬 수 있습니까? 내 소켓에 문제가 있거나 프로그램에 디지털 인증서가없는 문제가 있습니까?보안 소프트웨어가 내 소켓을 싫어합니다

#include <stdio.h> 
#include <stdlib.h> 
#include <winsock2.h> 
int client(char *ip,int port,SOCKET *sock) 
{ 
    struct sockaddr_in addr; 
    *sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); 
    addr.sin_family = AF_INET; 
    addr.sin_addr.s_addr = inet_addr(ip); 
    addr.sin_port = htons(port); 
    connect(*sock,(SOCKADDR*)&addr,sizeof(addr)); 
    return 2; 
} 
void ssend(char *buffer,int len,SOCKET sock) 
{ 
    int sent; 
    int *tmp; 
    char head[4]; 
    sent=0; 
    tmp=(int*)&head; 
    *tmp=htonl(len); 
    while(sent<4) 
    { 
     sent+=send(sock,head,4-sent,0); 
    } 
    sent=0; 
    while(sent<len) 
    { 
     sent+=send(sock,buffer,len-sent,0); 
    } 
} 
void srecv(char *buffer,int *len,SOCKET sock) 
{ 
    char head[4]; 
    recv(sock,head,4,MSG_WAITALL); 
    *len=ntohl(*((int*)head)); 
    recv(sock,buffer,*len,MSG_WAITALL); 
} 
int main(int argc,char **argv) 
{ 
    WSADATA dat; 
    WSAStartup(MAKEWORD(2, 2),&dat); 
    SOCKET sock; 
    char ip[256]; 
    char msg[1024]; 
    int port; 
    scanf("%s",ip); 
    scanf("%d",&port); 
    printf("%d\n",client(ip,port,&sock)); 
    while(1) 
    { 
     scanf("%s",msg); 
     ssend(msg,strlen(msg),sock); 
    } 
} 

예쁜 코드는 아닙니다. 나는 C로 소켓에 걸음 걸이를 얻으려고하고있다.

+0

당신이하고있는 것을 볼 수 없으면 말하기 어렵습니다. –

+0

오, 물론 코드에 추가하겠습니다. –

+1

그 코드는 POSIX 소켓을 사용하고 있지만 대부분의 Linux 배포판에는 실행 파일을 맬웨어로 플래그 지정하는 "보안 소프트웨어"가 없습니다 ...이 프로그램이 실행해야하는 OS는 무엇입니까? – Borealid

답변

3

할 수있는 일은 아무것도 없다. 방화벽 소프트웨어가 "집 전화"인 멀웨어와 다른 컴퓨터 및 적법한 프로그램에 대한 공격을 구분하는 것은 불가능합니다. 사용자는이를 명시 적으로 예외 처리해야합니다.

글쎄, 당신이 할 수있는 한 가지가있다 : HTTP 포트 80 또는 443

규칙이,을입니다 도움이 될조차 확실하지 경우 SSL 대응처럼, 널리 사용되는 포트를 통해 프로그램 작업을 프로그램의 신원을 기반으로, 포트뿐만 아니라. 포트 80을 통해 HTTP 연결을 만들 수있는 응용 프로그램을 제한하는 아주 좋은 이유가 있습니다. 포트 80은 악성 프로그램이 가정에서 전화를 걸고 악성 코드를 다운로드하는 데 자주 사용됩니다.

+0

Minecraft 또는 다른 모든 게임과 같은 프로그램은 어떻게됩니까? 보안 소프트웨어는 결코 소켓을 사용하기 위해 파이썬을 사용하지 못했습니다. 파이썬과 자바 인터프리터가 디지털 인증서를 가지고 있기 때문입니까? –

+0

그것은 약간 명확하지 않았습니다. 나는 전문적으로 개발 된 프로그램이 필자가 작성한 프로그램과 달리 내 보안 소프트웨어에 의해 끊임없이 삭제되지 않을 것이라고 생각합니다. –

+0

아, 소프트웨어 설치 관리자가 프로그램을 레지스트리의 승인 된 응용 프로그램 목록에 추가하는 경우가 있습니다. 나는'HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ SharedAccess \ Parameters \ FirewallPolicy \ StandardProfile \ AuthorizedApplications \ List'라고 생각한다. – Kaz

관련 문제