Created
April 13, 2019 05:31
-
-
Save Vitokhv/9d4c6feb3b47b8ea45581f52cc3e428b to your computer and use it in GitHub Desktop.
Защита через IPsec (в разработке)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private void WriteRegKey(string keyName, string ipm1, string ipm2, string p1, string p2) | |
{ | |
string value1 = p1; // Преобразование string в int | |
short i1 = Convert.ToInt16(value1); | |
int valueHex1 = IPAddress.NetworkToHostOrder(i1); | |
string h1 = valueHex1.ToString("X2"); | |
string value2 = p2; // Преобразование string в int | |
short i2 = Convert.ToInt16(value2); | |
int valueHex2 = IPAddress.NetworkToHostOrder(i2); | |
string h2 = valueHex2.ToString("X2"); | |
string str1 = ipm1; | |
var result1 = str1.Split('/'); | |
string input1 = result1[0]; | |
string hex3 = string.Concat(input1.Split('.').Select(x => int.Parse(x).ToString("X2").PadLeft(2, '0'))); | |
int cidr1 = int.Parse(result1[1]); | |
BitVector32 bits1 = new BitVector32(-1 << (32 - cidr1)); | |
string hex4 = bits1.Data.ToString("X2"); | |
string str2 = ipm2; | |
var result2 = str2.Split('/'); | |
string input3 = result2[0]; | |
string hex5 = string.Concat(input3.Split('.').Select(x => int.Parse(x).ToString("X2").PadLeft(2, '0'))); | |
int cidr2 = int.Parse(result2[1]); | |
BitVector32 bits2 = new BitVector32(-1 << (32 - cidr2)); | |
string hex6 = bits2.Data.ToString("X2"); | |
// Преобразование в IP | |
var bytes = BitConverter.GetBytes((uint)bits1.Data); | |
IPAddress netMask = new IPAddress(bytes.Reverse().ToArray()); | |
var IP1 = hex3; // Адрес 8.8.8.8 | |
var IPm1 = hex4; // Маска 255.255.255.255 | |
var IP2 = hex5; // Адрес2 9.9.9.9 | |
var IPm2 = hex6; // Маска 255.255.255.255 | |
var Type = "06"; // Тип протокола (6) он же TCP | |
var Port1 = h1; // Порт 1111 | |
var Port2 = h2; // Порт 2222 | |
var guidText = (Guid.NewGuid().ToString("B")); | |
RegistryKey lm = Registry.LocalMachine; | |
RegistryKey cs1 = lm.CreateSubKey("SOFTWARE\\002"); | |
RegistryKey cs2 = cs1.CreateSubKey("ipsecFilter" + guidText); | |
var hex2 = "B520DC80C82ED111A89E00A0248D30214600000001000000020000000000020000000000020000000000424899DBF729" + | |
"3E4B90A44D6BB8ACCB3001000000" + IP1 + IPm1 + IP2 + IPm2 + "00000000" + Type + "0000000000" + Port1 + Port2 + "00000000"; | |
var valueReg = StringToByteArray(hex2); | |
cs2.SetValue("className", "ipsecFilter"); | |
cs2.SetValue(keyName, valueReg, RegistryValueKind.Binary); | |
cs2.SetValue("ipsecDataType", "100", RegistryValueKind.DWord); | |
cs2.SetValue("ipsecID", guidText); | |
cs2.SetValue("ipsecName", "Белый список"); | |
cs2.SetValue("name", "ipsecFilter" + guidText); | |
cs2.SetValue("whenChanged", "00000000", RegistryValueKind.DWord); | |
// Сохранение ключа и его значения в config.ini (value имя ключа || guidText имя раздела) | |
//ini.Write("ipsecFilter" + guidText, ip1 + "/" + ipm1, "IPsec"); | |
ini.Write("ipsecFilter" + guidText, ipm1, "IPsec"); | |
textBoxHex.Text = hex2; | |
} | |
private void buttonHex_Click(object sender, EventArgs e) | |
{ | |
WriteRegKey("ipsecData", textBoxIPm1.Text, textBoxIPm2.Text, textBoxPort1.Text, textBoxPort2.Text); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment