Текущий архив: 2003.03.03;
Скачать: CL | DM;
ВнизОтловить подключение к компьютеру по сети Найти похожие ветки
← →
sel (2002-12-19 08:50) [0]Здравствуйте, уважаемые мастера.
Сначала проблема: шеф не разрешает использование icq на работе, проверяет по radmin.
В связи с этим у меня такой вопрос:
Как можно отловить подключение к моему компу по радмину и если оно произошло, то найти и закрыть окно icq.
Если можно, напишите подробнее, так как тут, понимаю, всего несколько строк кода. Есть ли различия при использовании 2К и НТ?
Буду очень признателен за ответ, спасибо.
← →
Reindeer Moss Eater (2002-12-19 09:11) [1]Если шеф таким странным способом проверяет тратишь ли ты рабочее время на постороннее общение в сети, то надо просто не использовать традиционного icq клиента, а написать своего, похожего например на notepad.
А метод с детектом радмина и гашением icq такой же "странный" как и у шефа.
← →
sel (2002-12-19 09:21) [2]И все же, хотелось бы услышать ответ
← →
sel (2002-12-19 09:33) [3]Тем более, это нужно не мне
← →
Игорь Шевченко (2002-12-19 09:45) [4]А шеф потом по попе ремнем больно настучит.
Не надо страдать ерундой, плз.
← →
sel (2002-12-19 10:24) [5]понятно, внятного ответа не добиться, спасибо
← →
msts (2002-12-19 11:18) [6]чтото в тему
_________________________________________________________________________________________
Q: [API] Как узнать кто висит на моей (или не моей) машине?
A: Эта вещица написана на С++, но может сгодиться
_________________________________________________________________________________________
#define STRICT
#include <windows.h>
#include <lm.h>
#include <iostream.h>
#include <tchar.h>
void UserEnum()
{
BOOL keepGoing = TRUE ;
DWORD entriesRead, totalEntries ;
USER_INFO_2 * pInfo = NULL ;
DWORD resumeHandle = 0 ; // must be 0 to start with
char nameBuf[ UNLEN + 1 ] ; // constants defined in LMCONS.H
char commentBuf[ MAXCOMMENTSZ + 1 ] ;
WCHAR serverName[ 100 ] ;
lstrcpyW( serverName, L"\\\\PDC" ) ; //L"" ) ;
while ( keepGoing )
{
NET_API_STATUS ret = NetUserEnum(
serverName, //NULL,
2,
0, //FILTER_NORMAL_ACCOUNT,
(LPBYTE *)&pInfo, // Important: ADDRESS of POINTER
sizeof( USER_INFO_2 ) * 100, // requested buffer size; it may not
actually allocate this much
&entriesRead,
&totalEntries,
&resumeHandle ) ;
keepGoing = ( ret == ERROR_MORE_DATA ) ;
if ( ret == 0 || ret == ERROR_MORE_DATA )
{
DWORD i ;
for ( i = 0 ; i < entriesRead ; i++ )
{
// Note that strings in the INFO structures
// will ALWAYS be Unicode, regardless of
// your settings! Even though they"re declared
// as LPTSTR, they"re always LPWSTR.
// I"m compiling for non-Unicode, so I
// convert them to ANSI strings...
// Check for NULL pointers in the INFO structure
LPWSTR pName = (LPWSTR)pInfo[ i ].usri2_name ;
LPWSTR pComm = (LPWSTR)pInfo[ i ].usri2_comment ;
if ( pName == NULL )
{
lstrcpy( nameBuf, "(no name!)" ) ;
}
else if ( lstrlenW( pName ) == 0 )
{
lstrcpy( nameBuf, "(empty name!)" ) ;
}
else
{
WideCharToMultiByte( CP_ACP, 0,
pName, -1,
nameBuf, UNLEN,
NULL, NULL ) ;
}
if ( pComm == NULL )
{
lstrcpy( commentBuf, "(no comment!)" ) ;
}
else if ( lstrlenW( pComm ) == 0 )
{
lstrcpy( commentBuf, "(empty comment!)" ) ;
}
else
{
WideCharToMultiByte( CP_ACP, 0,
pComm, -1,
commentBuf, MAXCOMMENTSZ,
NULL, NULL ) ;
}
cout << nameBuf << ": " << commentBuf << endl ;
}
}
else
{
cout << "NetUserEnum error " << ret << endl ;
}
if ( pInfo )
{
NetApiBufferFree( pInfo ) ;
pInfo = NULL ;
}
}
}
← →
Reindeer Moss Eater (2002-12-19 11:27) [7]Фигня все это.
Sel хочет в рабочее время использовать ICQ.
Но его контролирует шеф с помошью RAdmina.
Sel подумал, что если сумеет определить момент подключения шефа к его машине и закрыть приложение, то наступит счастье, и задача будет решена (в рабочее время использовать ICQ)
Шеф подключился к машине sel"а, программа sel"а погасила icq.
Шеф ничего не увидел. Замечательно.
Но шеф не спешит отключаеться от машины sel"а, и sel не может пользоваться ICQ в рабочее время не рискуя быть пойманным.
Задача не решена.
← →
Digitman (2002-12-19 11:40) [8]>sel
Я так понимаю, что для шефа признак работы ICQ-клиента - это обнаружение с помощью RAdmin"а присутствия в системе на твоей машине среди прочих процессов процесса с именем ICQ.EXE ? Так ?
← →
Anatoly Podgoretsky (2002-12-19 11:49) [9]Шеф просто терпеливый, но я думаю на явные попытки саботаже отреагирует должным образом
← →
sel (2002-12-19 12:00) [10]На самом деле интересует принцип работы 2-х вещей:
1) получить хэндл окна icq (у меня не получилось), чтобы его закрыть
2) контролировать подключение к моему компу (конкретно использования программы радмин - когда remote administrator server говорит, что кто-то приконнектился).
2 digitman - мне нужно закрыть приложение, а не просто скрыть его. Хотя процессы смотреть вряд ли кто будет.
← →
Digitman (2002-12-19 12:06) [11]>sel
> получить хэндл окна icq
У клиента ICQ не одно окно. Какое ищешь, по каким признакам ?
> мне нужно закрыть приложение, а не просто скрыть его
А чем тебе сокрытие процесса не нравится ? Какие сомнения ?
← →
sel (2002-12-19 12:27) [12]Закрыть нужно главное окно, ест-но.
Как процесс в 2К скрыть? Не знаю.
И что это даст, само приложение не будет видно на панели задач, например? Как его потом искать.
← →
C2H5OH (2002-12-19 13:11) [13]а можно в аську через веб-интерфейс лазить http://go.icq.com
← →
Digitman (2002-12-19 13:25) [14]
> sel (19.12.02 12:27)
> Закрыть нужно главное окно, ест-но.
> Как процесс в 2К скрыть? Не знаю.
> И что это даст, само приложение не будет видно на панели
> задач, например? Как его потом искать.
Ну так как же ты ищешь гл.окно ? Поясни.
Как процесс в 2К скрыть ? Как минимум - перехватить snapshot
-вызовы и NtQuerySystemInformation() со стороны всех существующих и вновь стартующих процессов. Сложно, но - можно и решаемо в принципе.
Как искать ? Ну ты перехватил сист.вызовы и подставил, например, вместо ICQ.EXE какую-нибудь хрень наподобие MSIE8.EXE. В TaskManager"е будешь видеть свой процесс под этим именем
← →
sel (2002-12-19 13:41) [15]Ищу функцией FindWindow , а вот в качестве параметров перепробовал много разного, но не могу найти нужных.
← →
Digitman (2002-12-19 13:47) [16]а что пробовать-то ? запусти какой-нибудь SPYXX.EXE (MS Visual Studio) или WS32.EXE (Borland Delphi) да посмотри класс и имя гл.окна процесса ICQ.EXE.
То аськино окно, что ты видишь на экране, вовсе не обязательно д.б. гл.окном приложения
← →
sel (2002-12-19 14:27) [17]В том-то и дело, что не получается узнать в winsight32
← →
sel (2002-12-19 14:28) [18]В том-то и дело, что не получается узнать в winsight32, а кроме того, вопрос про радмин остается открытым
← →
sel (2002-12-19 15:20) [19]ПОлучив хэндл окна от класса окна на своей машине, не удается получить нужный хэндл от такого же окна на другой, хотя ws32 показывает, что класс тот же.
← →
msts (2002-12-19 16:00) [20]>Reindeer Moss Eater
Тогда только свою аську писать - для простых разговоров, без хистори, относительно просто, в инете есть апи с примерами ICQ2002 протокола.
Замаскировать под какой нибудь текстовый редактор - например ворд,
т.е. вызвать ворд как оле объект и в нем писать/читать сообщения - дешево и сердито :)
← →
[AsP]-UncoNNecteD (2002-12-21 17:14) [21]Не проще ли установит опцию в Р-Админе - Ask User Permission и просто отрубать асю и нажимать yes ?
← →
Dr.Dron (2003-01-16 08:54) [22]ShowWindow(FindWindow(nil,"Диспетчер задач Windows"),SW_HIDE);
Ето дело по таймеру....
И "Дспетчер задач Windows" в W2K отпадает...
Страницы: 1 вся ветка
Текущий архив: 2003.03.03;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.008 c