получить *экран* компа в сети в реальном времени

 
0
 
.NET
ava
Killhimself | 25.08.2007, 23:52
Если эта тема где-то уже была, извините, не заметил.
Вообщем цель: программа, отображающая экран (все происходящее) чужого компьютера в локальной сети, в реальном времени. Что-то типа с целью контроля начальства за удаленными компами своих сотрудников.
Кто чем может помочь, плз. Ссылки, советы, исходники (гы), всему буду рад=)
Comments (10)
ava
SpaceSpace | 27.08.2007, 15:10 #
На каждом компе в фирме установлена служба или демон.
который периодически делает принтскрин.
При обращении к этой службе - отдает принтскрин,
если нет обращений - ниче не делает.
smile
ava
Killhimself | 27.08.2007, 15:44 #
Ну так я уж думал,а что-то типа смареть за чужим скрином риал-тайм?
ava
Alexsar | 31.08.2007, 23:11 #
делаешь скриншот экрана (используй WinAPI функции, те которые к контексту имеют отношение) с какой-нить переодичностью и передавай картинку куда надо, хочешь через tcp или вообще через udp сделай групповую рассылку всем начальникам:)
подглядывать нехорошо, но очень интересно smile2
ava
Alexsar | 01.09.2007, 22:58 #
данный код позволяет получить картинку рабочего стола и сохранить её


using System;
using System.Runtime.InteropServices;
using System.Drawing;
using System.Drawing.Imaging;
using System.Windows.Forms;

namespace CaptureDesktop
{
class Class1
{
[DllImport("user32.dll")]
public extern static IntPtr GetDesktopWindow();

[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern IntPtr GetWindowDC(IntPtr hwnd);

[System.Runtime.InteropServices.DllImport("gdi32.dll")]
public static extern UInt64 BitBlt (IntPtr hDestDC, int x, int y, int nWidth, int nHeight, IntPtr hSrcDC, int xSrc, int ySrc, System.Int32 dwRop);

[STAThread]
static void Main(string[] args)
{
Image myImage = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
Graphics gr1 = Graphics.FromImage(myImage);

IntPtr dc1 = gr1.GetHdc();
IntPtr dc2 = GetWindowDC(GetDesktopWindow());

BitBlt(dc1, 0, 0, Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, dc2, 0, 0, 13369376);

gr1.ReleaseHdc(dc1);

myImage.Save("screenshot.png", ImageFormat.Png);

}
}
}



самый простой способ передачи, считать побайтно файл и отправить через сокет, например методом Send()
ava
Killhimself | 02.09.2007, 11:43 #
Ну ет то да, я спрашивал малось про другое, по-простому щас как-нить напишу =) Типа сморю в свой моник и вижу в проге чужой моник (риал тайм). Иль это анриал. Просто видел в инете проги, не качал, платные, но там как раз в описании то что я говорю.
ava
archeg | 03.09.2007, 19:19 #
Цитата (Killhimself @ 2.9.2007, 11:43 findReferencedText)
Ну ет то да, я спрашивал малось про другое, по-простому щас как-нить напишу =) Типа сморю в свой моник и вижу в проге чужой моник (риал тайм). Иль это анриал. Просто видел в инете проги, не качал, платные, но там как раз в описании то что я говорю.

Ну и? Скринишь чужой моник раз в 100 мс(при отображении выйдет чуть заторможено - 10 фпс. Можно пробовать и меньше), передаешь через DeflateStream. Там принимаешь и проигруешь - вот те и реалтайм
ava
SpaceSpace | 04.09.2007, 07:57 #
люди, вы всет не так поняли топикстартера.
вариант с программкой у потенциальной жертвы его не устраивает.

нужно либо запускать эту програмку удаленно - кстати тоже вариант(тоглько не знаю как его реализовать)
либо какими то неведомыми функциями получить скрин
ava
archeg | 05.09.2007, 19:09 #
Цитата (SpaceSpace @ 4.9.2007, 07:57 findReferencedText)
вариант с программкой у потенциальной жертвы его не устраивает.

:biggrin Не бывает такого. Если "троян" или "клиент ремоут-управления" стоит на клиенте, то сервер видит все. Если не стоит - то не видит. Ну не оддаст винда кому-то свои скрины так просто :biggrin :biggrin

Если бы все было бы так просто то не было бы такого понятия как "защита". Все бы мы дружно бы смотрели скрины у друг-друга, качали файлы один у одного и делали друг-другу гадости.

И тем более запустить удаленно что-то не так то просто. Нужно чтобы клиент либо сам запустил программу, либо искать уязвимости, но это уже тема не этого топика и даж навереое не этого форума smile
ava
zaver | 08.09.2007, 16:26 #
просто сделать принтскрин и передать его по сетке получится, а вот реалтайма нет - слишком большой поток данных.
один знакомый такое пробовал делать, выход придумал такой: делить экран на квадратики, и отслеживать (клиентом трояна) какие из них изменились после последней передачи. передавал только изменившиеся - так он снял нагрузку с сетки и получил реалтайм, нагрузка по сравнению изменившихся квадратиков небольшая. но имхо наилучший вариант - это найти где-нить алгоритм JPEG сжатия и сжиматть им картинки перед отправкой по сетке, если этот алгоритм будет жрать слишком много ресурсов компа-клиента, то можно попробовать методом половинного деления - делить экран пополам, пото делить пополам ту половинку, где были изменения, итд... передавать только изменвшиеся прямоугольники.
ava
Alexsar | 09.09.2007, 16:41 #
раз на то пошло, ищи дыры в защите и используй их
но это уже по-любому вторжение, атака или как хотите называйте
конторы разные бывают, где то тебя админ поругает, а где то и вообще никто не заметит, а где то и по зубам словить можно
я думаю у нас за такое и привлечь могут smile
короче, вали всё потом на начальника smile
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
advanced
Submit