2012-04-24 9 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

何もできません。ファイアウォールソフトウェアでは、「電話をかける」マルウェアや、他のマシンや正規のプログラムに攻撃を開始するマルウェアを区別することは不可能です。ユーザーはこれに対して明示的な例外を指定する必要があります。ルールがある場合、それが役立つ443

をあなたのプログラムの仕事はHTTPポート80のように、広く使われているポートを介して行い、またはSSLの対応にもわからない:

さて、あなたが行うことができます一つのことがありますプログラムのアイデンティティに基づいて、ポートだけでなく。どのアプリケーションがポート80を介してHTTP接続を行うことができるかを制限する非常に良い理由があります。ポート80は、マルウェアが家に電話をかけ悪意のあるクラdをダウンロードするためによく使用されます。

+0

Minecraftや他のすべてのゲームのようなプログラムはどうですか?また、セキュリティソフトウェアは、ソケットを使用するためにPythonを使いこなすことはありませんでした。これはPythonとJavaのインタプリタにデジタル証明書などがあるためですか? –

+0

それは少し不明だった。私は専門的に開発されたプログラムのように、私が書いたプログラムとは違って、私のセキュリティソフトウェアによって何とか絶えず削除されないように管理しているようです。 –

+0

ああ、ソフトウェアのインストーラがレジストリ内の承認されたアプリケーションのリストにプログラムを追加するということが起こっているかもしれません。私は 'HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ SharedAccess \ Parameters \ FirewallPolicy \ StandardProfile \ AuthorizedApplications \ List'と思っています。 – Kaz

関連する問題