我可以给出以下任何格式的字符串:
string:例如www.acme.com:456,www.acme.com 456,或www.acme.com
我想提取主机,如果有一个端口.如果端口值不存在,我希望它默认为80.
我已经尝试了urlparse,它适用于url,但不适用于其他格式.例如,当我在hostname:port上使用urlparse时,它将主机名放在scheme而不是netloc中.
我会很高兴使用urlparse和正则表达式的解决方案,或者可以处理这两种格式的单个正则表达式.
我目前有这个代码,它与服务器建立SSL连接:
using (client = new TcpClient())
{
client.Connect(Hostname, Port);
var callback = new RemoteCertificateValidationCallback(ValidateServerCertificate);
using (stream = new SslStream(client.GetStream(), false, callback))
{
stream.AuthenticateAsClient(Hostname);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我不认为它支持SNI,因为从SNI配置的服务器返回了错误的证书.无论如何使用SNI进行SSL连接?
我正在使用.NET 2(如果需要,愿意升级).我使用的是Windows 7,但是如果可能的话,希望该软件可以在其他平台上运行,例如Windows 2008.
我正在尝试使用c#发送IP数据包.
destAddress = IPAddress.Parse("192.168.0.198"),
destPort = 80;
// Create a raw socket to send this packet
rawSocket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);
// Bind the socket to the interface specified
IPEndPoint iep = new IPEndPoint(IPAddress.Parse("192.168.0.140"),0);
rawSocket.Bind(iep);
// Set the HeaderIncluded option since we include the IP header
rawSocket.SetSocketOption( socketLevel, SocketOptionName.HeaderIncluded, 1 );
// Send the packet!
int rc = rawSocket.SendTo(builtPacket, new IPEndPoint(destAddress, destPort));
Console.WriteLine("sent {0} bytes to {1}", rc, destAddress.ToString());
Run Code Online (Sandbox Code Playgroud)
builtPacket的内容如下所示.这是一个包含TCP SYN数据包的IP数据包(这就是我认为我创建的).
45 00 00 28 00 00 00 00 …
我有一个基于Django的网站。我想将其中包含模式的URL重定向servertest到相同的URL,但servertest应替换为server-test。
因此,例如,以下URL将被映射为重定向,如下所示:
http://acme.com/servertest/ => http://acme.com/server-test/
http://acme.com/servertest/www.example.com => http://acme.com/server-test/www.example.com
http://acme.com/servertest/www.example.com:8833 => http://acme.com/server-test/www.example.com:8833
Run Code Online (Sandbox Code Playgroud)
我可以使用urls.py中的以下行来获取第一个示例:
http://acme.com/servertest/ => http://acme.com/server-test/
http://acme.com/servertest/www.example.com => http://acme.com/server-test/www.example.com
http://acme.com/servertest/www.example.com:8833 => http://acme.com/server-test/www.example.com:8833
Run Code Online (Sandbox Code Playgroud)
不确定如何为其他用户执行此操作,因此仅替换了URL的servetest部分。
我想连接到在端口 1433 上配置 SSL 的 SQL Server 并获取其证书。我不需要执行任何 SQL,我只想设置 SSL 连接并获取 SQL Server 的证书。
以下代码可以获取 Web 服务器证书,但无法获取 SQL Server 证书 - 连接在超时后失败。
using (client = new TcpClient())
{
client.Connect(Hostname, Port);
var callback = new RemoteCertificateValidationCallback(ValidateServerCertificate);
using (stream = new SslStream(client.GetStream(), false, callback))
{
stream.AuthenticateAsClient(Hostname);
}
}
Run Code Online (Sandbox Code Playgroud)
SQL Server 客户端是否必须使用一些初始协商才能使服务器切换到 SSL?换句话说,SQL Server 是否执行类似于 STARTTLS 与 SMTP 配合使用的操作?
我需要对上面的代码执行什么操作才能让 SQL Server 返回其证书?
c# ×3
python ×2
ssl ×2
django ×1
django-urls ×1
parsing ×1
raw-sockets ×1
regex ×1
sni ×1
sockets ×1
sql-server ×1
tcp ×1