C# 通过hwid从文本文件中阻止ip
我正在进行一个项目,该项目通过TCPListen监控特定端口上的IP和HWID,TCPListen是从终止特定进程的客户端发送的 监视器工作正常,我接收ip和hwid并设法保存到.txt文件,但我想做的是在服务器中实现一种方法,通过从文本文件读取hwid来阻止ip。 如果有人能帮助我,我将非常感激 以下是客户端(发送)、服务器(接收)代码的一部分: 服务器:C# 通过hwid从文本文件中阻止ip,c#,.net,C#,.net,我正在进行一个项目,该项目通过TCPListen监控特定端口上的IP和HWID,TCPListen是从终止特定进程的客户端发送的 监视器工作正常,我接收ip和hwid并设法保存到.txt文件,但我想做的是在服务器中实现一种方法,通过从文本文件读取hwid来阻止ip。 如果有人能帮助我,我将非常感激 以下是客户端(发送)、服务器(接收)代码的一部分: 服务器: textFromClient = ("From: " + tcpClient.Client.RemoteEndPoint + " HWI
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代码中,我从clientencoder.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,这可以在文本文件中找到。嗨,如果可能的话,你能给我提供一些代码示例吗?谢谢!谢谢!我尽力了。你能给我一封电子邮件吗?如果可能的话,我可以把代码发送到哪里?我有一些问题。谢谢!