0

特定のプロセスを強制終了するクライアントから送信された TCPListen によって特定のポートの IP と HWID を監視するプロジェクトに取り組んでいます。

モニターは完璧に動作し、ip と hwid を受け取り、.txt ファイルに保存することができますが、テキスト ファイルから hwid を読み取って IP をブロックする方法をサーバーに実装する必要があります。誰かが私を助けてくれれば、本当に感謝します。

これは client(send) 、 server (receive) のコードの一部です:

サーバ:

textFromClient = ("From:  " + tcpClient.Client.RemoteEndPoint + " HWID:" + encoder.GetString(message, 0, bytesRead));

クライアント:

byte[] outStream = System.Text.Encoding.ASCII.GetBytes(getUniqueID("C"));
serverStream.Write(outStream, 0, outStream.Length);
serverStream.Flush();

わかっていると思いますが、説明が正しくなかったのかもしれません。さて、私のサーバーはポート 8000 の任意の IP をリッスンします。クライアントは自動的にサーバーの IP とポートに接続します: 例: 127.0.0.1:8000。クライアントは次のように機能します。クライアントがサーバーに接続されると、アプリケーション「.exe」が実行されます。クライアントは、名前によっていくつかのアプリケーションのプロセスを強制終了するように作られています。クライアントが実行されている間は常にプロセスを強制終了するためのタイマーを作成しました。プロセスが強制終了されると、クライアントはプロセスが強制終了された PC からの IP と HWID コードをサーバーに送信し、サーバーbyte[] outStream = System.Text.Encoding.ASCII.GetBytes(getUniqueID("C")); serverStream.Write(outStream, 0, outStream.Length); serverStream.Flush();はリストボックスで IP と hwid を受け取ります。そうですね、そうしようと思っています。例: この受信メッセージ コードでは、クライアントから HWID を取得して次のencoder.GetString(message, 0, bytesRead)ようなことを行います。

if (encoder.GetString(message, 0, bytesRead) = LoadBlockHWID(new FileInfo(@"c:\testfileHWID.txt")));

{

// hwid で指定された IP からの接続をブロックするコード。

}

そのサーバーで、クライアントが HWID によってサーバーに接続できないようにする必要があります。サーバーを編集してIPとhwidが接続されていることを確認し、クライアントが接続時にhwidを送信する必要があると思います。

4

1 に答える 1

0

接続の受け入れを開始する前に、ファイルを読み取って HWID をリスト/辞書にロードします。

tcpClient.Client.RemoteEndPoint を取得するコードで、そこから IPAddress だけを抽出します。

次に、IPAddress をブロック リストと比較し、一致する場合は HWID が一致するかどうかを確認し、一致する場合はタスクを実行せず、それ以外の場合は実行します。

mBlockCheck = new SO15147104();

これがあなたのための例です。クラスをインスタンス化するだけで、リクエストをブロックしたい行で、

if (!mBlockCheck.BlockRequest(ip, hwid))
{
    //Do the operation
}

これは、これから理解できるはずのクラス コードです。

using System.Collections.Generic;
using System.IO;
using System.Net;

public class SO15147104
{
    private List<string> HWIDLookup;
    private List<IPAddress> IPAddressLookup;

    public SO15147104()
    {
        HWIDLookup = LoadBlockHWID(new FileInfo(@"c:\testfileHWID.txt"));
        IPAddressLookup = LoadBlockIPAddresses(new FileInfo(
                                               @"c:\testfileIPAddresses.txt"));
    }


    public bool BlockRequest(IPAddress ip, string HWIDtoCheck)
    {
        if (IPAddressLookup.Contains(ip) &&
            HWIDLookup.Contains(HWIDtoCheck.ToUpperInvariant().Trim()))
        {
            return true;
        }
        return false;
    }

    private List<IPAddress> LoadBlockIPAddresses(FileInfo fi)
    {
        List<IPAddress> result = new List<IPAddress>();

        using (StreamReader sr = fi.OpenText())
        {
            while (!sr.EndOfStream)
            {
                IPAddress theIP = IPAddress.Any;
                string thisLine = sr.ReadLine().Trim();
                //This should allow IPv6 and IPv4 to be listed 1IP per Line
                if (IPAddress.TryParse(thisLine, out theIP))
                {
                    result.Add(theIP);
                }
            }
        }
        return result;
    }



    private List<string> LoadBlockHWID(FileInfo fi)
    {
        List<string> result = new List<string>();

        using (StreamReader sr = fi.OpenText())
        {
            while (!sr.EndOfStream)
            {
                result.Add(sr.ReadLine().Trim().ToUpperInvariant());
            }
        }
        return result;
    }
于 2013-02-28T22:43:14.603 に答える