首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从文本文件中通过hwid阻止ip

从文本文件中通过hwid阻止ip
EN

Stack Overflow用户
提问于 2013-02-28 06:01:57
回答 1查看 583关注 0票数 0

我正在处理一个项目,该项目监视TCPListen从客户端发送的特定端口上的IP和HWID,该客户端杀死了特定的进程。

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

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

服务器:

代码语言:javascript
复制
textFromClient = ("From:  " + tcpClient.Client.RemoteEndPoint + " HWID:" + encoder.GetString(message, 0, bytesRead));

客户端:

代码语言:javascript
复制
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。我正考虑这么做。示例:在这个增强消息代码中,我从客户端encoder.GetString(message, 0, bytesRead)获得HWID来执行以下操作:

代码语言:javascript
复制
if (encoder.GetString(message, 0, bytesRead) = LoadBlockHWID(new FileInfo(@"c:\testfileHWID.txt")));

{

//Code阻止hwid上指定IP的连接。

}

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-28 22:43:14

在开始接受连接之前,通过读取文件,将HWID加载到列表/字典中。

在获得tcpClient.Client.RemoteEndPoint的代码中,只从其中提取IPAddress。

然后将IPAddress与块列表进行比较,如果匹配,则查看HWID是否匹配,如果匹配,则不执行任务,否则只需执行它。

代码语言:javascript
复制
mBlockCheck = new SO15147104();

这是你的一个例子。只需实例化类,并在您可能要阻止请求的行中,只需

代码语言:javascript
复制
if (!mBlockCheck.BlockRequest(ip, hwid))
{
    //Do the operation
}

这是您应该能够从中找出的类代码。

代码语言:javascript
复制
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;
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15128546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档