从文本文件中通过hwid阻止IP
本文关键字:hwid 阻止 IP 文本 文件 | 更新日期: 2023-09-27 18:01:26
我正在做一个项目,该项目通过客户端发送的tcpllisten来监视特定端口上的IP和HWID,该项目会杀死特定的进程。
监视器工作完美,我收到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"));
serverStream.Write(outStream, 0, outStream.Length);
serverStream.Flush();
,服务器在列表框上接收IP和HWID。嗯,我正在考虑这么做。示例:在此接收消息代码中,我从客户端encoder.GetString(message, 0, bytesRead)
获得HWID,以执行以下操作:
if (encoder.GetString(message, 0, bytesRead) = LoadBlockHWID(new FileInfo(@"c:'testfileHWID.txt")));
{
//代码阻止来自指定IP的连接。
}
我希望服务器不应该让客户端通过HWID连接到服务器。我想我必须编辑服务器看到ip和hwid连接和客户端发送hwid连接时。
在开始接受连接之前,通过读取文件将HWID加载到List/Dictionary中。
在你的代码中,你得到tcpClient.Client。RemoteEndPoint,从中提取IPAddress。
然后将IPAddress与block list进行比较,如果匹配,然后查看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;
}