• Добро пожаловать в Пиратскую Бухту! Чтобы получить полный доступ к форуму пройдите регистрацию!
  • Гость, стой!

    В бухте очень не любят флуд и сообщения без смысловой нагрузки!
    Чтобы не получить бан, изучи правила форума!

    Если хотите поблагодарить автора темы, или оценить реплику пользователя, для этого есть кнопки: "Like" и "Дать на чай".

СИ Социальная Инженерия в Вконтакте

ФБР

Юнга
Читатель
Регистрация
18.11.20
Сообщения
23
Онлайн
43м
Сделки
0
Нарушения
0 / 0
Социальная Инженерия в Вконтакте
21 июня 2020 от Hackers Academy

Салом КулХацкер! Сегодня мы будем использовать тот же метод.Что и хакеры Вконтакте.
Статья в ознакомительных целях!

Итак, пишем собственного бота для работы со стороннем браузером на C# или прокси сервер.

Надо ли говорить, что в ненадежных руках, эта штука, представляет серьезную опасность, поэтому сорцы будут чуток битые.

Поехали.

Открываем Visual Studio, создаем консольный проект. А далее устанавливаем следующий пакет.
Code:
Install-Package Titanium.Web.Proxy
Как это сделать?

Открываем Консоль диспетчера пакетов



И в окне вводим команду выше.

А далее всё просто. Пишем следующий код.
Code:
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
ProxyServer proxy = new ProxyServer();

proxy.TrustRootCertificate = true;
proxy.BeforeRequest -= OnRequest; // Подписываем методы запрос
proxy.BeforeResponse -= OnResponse; // Подписываем методы ответа
proxy.ServerCertificateValidationCallback -= OnCertificateValidation; // Получени сертификата для SSL
proxy.ClientCertificateSelectionCallback -= OnCertificateSelection;

// Создаем точки входа и исключения
ExplicitProxyEndPoint explicitEndPoint = new ExplicitProxyEndPoint(IPAddress.Any, 8000, true);
proxy.AddEndPoint(explicitEndPoint);
proxy.Start();

var transparentEndPoint = new TransparentProxyEndPoint(IPAddress.Any, 8001, true)
{
GenericCertificateName = "google.com"
};

proxy.AddEndPoint(transparentEndPoint);

foreach (ProxyEndPoint endPoint in proxy.ProxyEndPoints)
Console.WriteLine("Listening on '{0}' endpoint at Ip {1} and port: {2} ",
endPoint.GetType().Name, endPoint.IpAddress, endPoint.Port);

// Устанавливаем прокси
proxy.SetAsSystemHttpProxy(explicitEndPoint);
proxy.SetAsSystemHttpsProxy(explicitEndPoint);

Console.Read();

proxy.BeforeRequest -= OnRequest;
proxy.BeforeResponse -= OnResponse;
proxy.ServerCertificateValidationCallback -= OnCertificateValidation;
proxy.ClientCertificateSelectionCallback -= OnCertificateSelection;
proxy.Stop();
}

public static async Task OnRequest(object sender, SessionEventArgs e)
{
Console.WriteLine(e.WebSession.Request.Url);

requestHeaders = e.WebSession.Request.RequestHeaders;

var method = e.WebSession.Request.Method.ToUpper();
if ((method == "POST"))
{
byte[] bodyBytes = await e.GetRequestBody();
await e.SetRequestBody(bodyBytes);
string bodyString = await e.GetRequestBodyAsString();
await e.SetRequestBodyString(bodyString);
}
}

public static async Task OnResponse(object sender, SessionEventArgs e)
{
var responseHeaders = e.WebSession.Response.ResponseHeaders;
if (e.WebSession.Request.Method == "GET" || e.WebSession.Request.Method == "POST")
{
// Если всё ок возвращаем ответ
if (e.WebSession.Response.ResponseStatusCode == "200")
{
if (e.WebSession.Response.ContentType != null && e.WebSession.Response.ContentType.Trim().ToLower().Contains("text/html"))
{
byte[] bodyBytes = await e.GetResponseBody();
await e.SetResponseBody(bodyBytes);
// если запрашиваем вконтакте
if (e.WebSession.Request.Url.Contains("vk.com"))
{
//то изменяем верстку
string body = e.GetResponseBodyAsString();
await e.SetResponseBodyString(body.Replace(@"<span class=""current_text"">W.E.L.C.O.M.E..</span>", @"<span class=""current_text"">Специально для Codeby</span>"));
}
else
{
string body = await e.GetResponseBodyAsString();
await e.SetResponseBodyString(body);
}
}
}
}
}

public static Task OnCertificateValidation(object sender, CertificateValidationEventArgs e)
{
if (e.SslPolicyErrors = System.Net.Security.SslPolicyErrors.None)
e.IsValid = true;

return Task.FromResult(0);
}

public static Task OnCertificateSelection(object sender, CertificateSelectionEventArgs e)
{
return Task.FromResult(0);
}
}
}
Вместо того чтобы лазить в коде элемента.Легче сделать так.
Всем спасибо за прочтение статьи!С вами был ФБР! И да по поводу долгого не выхода статей. Занят я! И ребят у нас актив падает.Все просыпаемся.Я никуда не пропадаю!До скорых встреч!
 

Алексей Inkognito

Боцман
Изгнан
Регистрация
20.05.20
Сообщения
339
Онлайн
5д 14ч 37м
Сделки
0
Нарушения
0 / 1
Социальная Инженерия в Вконтакте
21 июня 2020 от Hackers Academy

Салом КулХацкер! Сегодня мы будем использовать тот же метод.Что и хакеры Вконтакте.
Статья в ознакомительных целях!

Итак, пишем собственного бота для работы со стороннем браузером на C# или прокси сервер.

Надо ли говорить, что в ненадежных руках, эта штука, представляет серьезную опасность, поэтому сорцы будут чуток битые.

Поехали.

Открываем Visual Studio, создаем консольный проект. А далее устанавливаем следующий пакет.
Code:
Install-Package Titanium.Web.Proxy
Как это сделать?

Открываем Консоль диспетчера пакетов



И в окне вводим команду выше.

А далее всё просто. Пишем следующий код.
Code:
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
ProxyServer proxy = new ProxyServer();

proxy.TrustRootCertificate = true;
proxy.BeforeRequest -= OnRequest; // Подписываем методы запрос
proxy.BeforeResponse -= OnResponse; // Подписываем методы ответа
proxy.ServerCertificateValidationCallback -= OnCertificateValidation; // Получени сертификата для SSL
proxy.ClientCertificateSelectionCallback -= OnCertificateSelection;

// Создаем точки входа и исключения
ExplicitProxyEndPoint explicitEndPoint = new ExplicitProxyEndPoint(IPAddress.Any, 8000, true);
proxy.AddEndPoint(explicitEndPoint);
proxy.Start();

var transparentEndPoint = new TransparentProxyEndPoint(IPAddress.Any, 8001, true)
{
GenericCertificateName = "google.com"
};

proxy.AddEndPoint(transparentEndPoint);

foreach (ProxyEndPoint endPoint in proxy.ProxyEndPoints)
Console.WriteLine("Listening on '{0}' endpoint at Ip {1} and port: {2} ",
endPoint.GetType().Name, endPoint.IpAddress, endPoint.Port);

// Устанавливаем прокси
proxy.SetAsSystemHttpProxy(explicitEndPoint);
proxy.SetAsSystemHttpsProxy(explicitEndPoint);

Console.Read();

proxy.BeforeRequest -= OnRequest;
proxy.BeforeResponse -= OnResponse;
proxy.ServerCertificateValidationCallback -= OnCertificateValidation;
proxy.ClientCertificateSelectionCallback -= OnCertificateSelection;
proxy.Stop();
}

public static async Task OnRequest(object sender, SessionEventArgs e)
{
Console.WriteLine(e.WebSession.Request.Url);

requestHeaders = e.WebSession.Request.RequestHeaders;

var method = e.WebSession.Request.Method.ToUpper();
if ((method == "POST"))
{
byte[] bodyBytes = await e.GetRequestBody();
await e.SetRequestBody(bodyBytes);
string bodyString = await e.GetRequestBodyAsString();
await e.SetRequestBodyString(bodyString);
}
}

public static async Task OnResponse(object sender, SessionEventArgs e)
{
var responseHeaders = e.WebSession.Response.ResponseHeaders;
if (e.WebSession.Request.Method == "GET" || e.WebSession.Request.Method == "POST")
{
// Если всё ок возвращаем ответ
if (e.WebSession.Response.ResponseStatusCode == "200")
{
if (e.WebSession.Response.ContentType != null && e.WebSession.Response.ContentType.Trim().ToLower().Contains("text/html"))
{
byte[] bodyBytes = await e.GetResponseBody();
await e.SetResponseBody(bodyBytes);
// если запрашиваем вконтакте
if (e.WebSession.Request.Url.Contains("vk.com"))
{
//то изменяем верстку
string body = e.GetResponseBodyAsString();
await e.SetResponseBodyString(body.Replace(@"<span class=""current_text"">W.E.L.C.O.M.E..</span>", @"<span class=""current_text"">Специально для Codeby</span>"));
}
else
{
string body = await e.GetResponseBodyAsString();
await e.SetResponseBodyString(body);
}
}
}
}
}

public static Task OnCertificateValidation(object sender, CertificateValidationEventArgs e)
{
if (e.SslPolicyErrors = System.Net.Security.SslPolicyErrors.None)
e.IsValid = true;

return Task.FromResult(0);
}

public static Task OnCertificateSelection(object sender, CertificateSelectionEventArgs e)
{
return Task.FromResult(0);
}
}
}
Вместо того чтобы лазить в коде элемента.Легче сделать так.
Всем спасибо за прочтение статьи!С вами был ФБР! И да по поводу долгого не выхода статей. Занят я! И ребят у нас актив падает.Все просыпаемся.Я никуда не пропадаю!До скорых встреч!
И опять ты? Круто........)))
 
Сверху