Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过hwid从文本文件中阻止ip_C#_.net - Fatal编程技术网

C# 通过hwid从文本文件中阻止ip

C# 通过hwid从文本文件中阻止ip,c#,.net,C#,.net,我正在进行一个项目,该项目通过TCPListen监控特定端口上的IP和HWID,TCPListen是从终止特定进程的客户端发送的 监视器工作正常,我接收ip和hwid并设法保存到.txt文件,但我想做的是在服务器中实现一种方法,通过从文本文件读取hwid来阻止ip。 如果有人能帮助我,我将非常感激 以下是客户端(发送)、服务器(接收)代码的一部分: 服务器: textFromClient = ("From: " + tcpClient.Client.RemoteEndPoint + " HWI

我正在进行一个项目,该项目通过TCPListen监控特定端口上的IP和HWID,TCPListen是从终止特定进程的客户端发送的

监视器工作正常,我接收ip和hwid并设法保存到.txt文件,但我想做的是在服务器中实现一种方法,通过从文本文件读取hwid来阻止ip。 如果有人能帮助我,我将非常感激

以下是客户端(发送)、服务器(接收)代码的一部分:

服务器:

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”);
Write(outStream,0,outStream.Length);
serverStream.Flush()和服务器在列表框上接收ip和hwid。嗯,我正在考虑这样做。示例:在这个recive message代码中,我从client
encoder.GetString(message,0,bytesRead)
获取HWID,执行如下操作:

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

//阻止hwid上指定IP连接的代码

}


我认为服务器不应该让客户端通过HWID连接到服务器。我想我必须编辑服务器以查看ip和hwid已连接,客户端在连接时发送hwid。

在开始接受连接之前,通过读取文件将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;
    }
使用System.Collections.Generic;
使用System.IO;
Net系统;
公共类SO15147104
{
私人名单HWIDLookup;
私有列表IPAddressLookup;
公共SO15147104()
{
HWIDLookup=LoadBlockHWID(新文件信息(@“c:\testfileHWID.txt”);
IPAddressLookup=LoadBlockIPAddresss(新文件信息(
@“c:\testfileipaddress.txt”);
}
公共布尔块请求(ip地址ip,字符串HWIDtoCheck)
{
if(IPAddressLookup.Contains)(ip)&&
包含(HWIDtoCheck.ToUpperInvariant().Trim())
{
返回true;
}
返回false;
}
私有列表加载块IP地址(FileInfo-fi)
{
列表结果=新列表();
使用(StreamReader sr=fi.OpenText())
{
而(!sr.EndOfStream)
{
IPAddress theIP=IPAddress.Any;
字符串thisLine=sr.ReadLine().Trim();
//这应该允许每行列出1IP的IPv6和IPv4
if(IPAddress.TryParse(此行,out theIP))
{
结果:添加(THIP);
}
}
}
返回结果;
}
私有列表LoadBlockHWID(FileInfo-fi)
{
列表结果=新列表();
使用(StreamReader sr=fi.OpenText())
{
而(!sr.EndOfStream)
{
添加(sr.ReadLine().Trim().toupper不变量());
}
}
返回结果;
}

我认为您需要展示更多关于此“块”的内容。您想保护某些HWID不被传入,还是阻止某些IP传入?不,我想阻止我通过HWID从客户端接收到的某些IP,该HWID同时从具有IP的客户端接收到。例如:我从客户端获取服务器上的消息:“来自IP:127.0.0.1:54137,HWID:3928824234AD”.现在我想通过HWID阻止ip:127.0.0.1,这可以在文本文件中找到。嗨,如果可能的话,你能给我提供一些代码示例吗?谢谢!谢谢!我尽力了。你能给我一封电子邮件吗?如果可能的话,我可以把代码发送到哪里?我有一些问题。谢谢!