IPAMon (мониторинг доступности сетевого ресурса (хоста))

Обсуждение авторских утилит под ОС Microsoft Windows.

IPAMon (мониторинг доступности сетевого ресурса (хоста))

Сообщение DmitryS » 20 июля 2014, 14:19

[RUSSIAN]
Утилита IPAMon предназначена для визуального мониторинга (контроля) доступности хоста (сетевого ресурса) в локальной вычислительной сети, сети Интернет и т.п. по его IPv4-адресу, путём периодической отправки ему запросов по ICMP-протоколу. В процессе работы постоянно ведётся LOG-файл, содержащий подробную информацию об изменении статуса доступности контролируемого хоста.


[ENGLISH]
The utility of IPAMon is intended for visual monitoring (control) of availability of a host (a network resource) in the local computer network, the Internet, etc. to its IPv4-address, by a periodic parcel to it inquiries under the ICMP protocol. In the course of work the LOG file containing detailed information on change of the status of availability of a controlled host is constantly kept.


Возможности:
- постоянный мониторинг доступности заданного хоста по его IPv4-адресу;
- визуальная (цветовая и текстовая) индикация текущей доступности хоста;
- визуальная (цветовая и текстовая) индикация доступности узла за период;
- отображение процента доступности и недоступности хоста за период;
- отображение количества успешных и потерянных запросов хоста за период;
- отображение текущего времени отклика (RTT) хоста и его default-TTL;
- отображение минимального, максимального и среднего RTT и default-TTL;
- отображение времени начала и продолжительности мониторинга хоста;
- создание контрольных отметок о статусе доступности хоста (раз в час);
- воспроизведение звукового сигнала при изменении статуса доступа к хосту;
- запуск стороннего приложения при изменении статуса доступа к хосту;
  (имеется возможность передать IP-адрес хоста в качества параметра,
   а также указать количество событий (ошибок/успехов) для его запуска)
- запись в LOG-файл информации об изменении статуса доступности хоста;
- возможность автозапуска утилиты вместе с загрузкой операционной системы;
- возможность отображения окна утилиты поверх окон других приложений;
- автоматическое сохранение и восстановление всех настроек утилиты.

Параметры запуска:
IPAMon.exe t - запуск утилиты со значком в системном трее (по умолчанию)
IPAMon.exe tray - запуск утилиты со значком в системном трее (по умолчанию)
IPAMon.exe h - запуск утилиты без значка в системном трее (скрытая работа)
IPAMon.exe hide - запуск утилиты без значка в системном трее (скрытая работа)
IPAMon.exe o - запуск утилиты с автоматическим отображением окна статуса
IPAMon.exe open - запуск утилиты с автоматическим отображением окна статуса
IPAMon.exe a - учёт успехов вместо ошибок доступа к хосту (инверсия)
IPAMon.exe access - учёт успехов вместо ошибок доступа к хосту (инверсия)

Скриншоты:

Изображение

Изображение

Изображение

Изображение

Изображение

Изображение

Изображение

Изображение

Изображение

Пример LOG-файла:
IPAMon.txt

PAD-файл, Portable Application Description:
IPAMon.xml

Лицензионное соглашение:
License.txt



Внимание! Утилита IPAMon представляет собой программное обеспечение с закрытым исходным кодом, которое не имеет сертификатов и свидетельств о государственной регистрации, а также не содержит в себе электронных цифровых подписей. Исполняемые программные модули скомпилированы с учётом получения максимальной производительности и упакованы с максимальным сжатием архиватором исполняемых файлов (с открытым исходным кодом) для получения малых размеров файлов, а также ускорения загрузки их в оперативную память при запуске. Все компоненты программы упакованы с максимальным сжатием инсталлятором с закрытым исходным кодом в один самораспаковывающийся архив. Учитывая перечисленное, данное программное обеспечение, в некоторых случаях, при проведении параноидальных эвристических, поведенческих, сигнатурных и иных анализов может ошибочно детектироваться некоторыми версиями антивирусных средств как программное обеспечение, включающее в себя код, который предположительно может нанести тот или иной вред системе (в зависимости от его версии, а также версий антивирусных баз и методов проведения анализа). Если по каким-либо причинам содержимое данного программного обеспечения не вызывает у вас доверия либо имеются сомнения в безопасности его использования - просто не используйте его.



Файл: IPAMon.zip
Размер: 2.01 мб
Язык: Русский
Тип: Бесплатная (Freeware)
Автор: © Dmitry Saltykov (ZXDemon)
Запуск: Установка (Install & Uninstall)
ОС: Microsoft Windows 95/98/Me/NT/2000/XP/2003/Vista/2008/7/8/8.1/2012/10* (x32/x64)
Домашняя страница программы: https://vrcp.ru/ipamon.html

Изображение СКАЧАТЬ



Дополнительные материалы:
1. Отправка сообщения на E-Mail по тревоге
2. Запись LOG'а на WEB-страницу по тревоге

Аватара пользователя
DmitryS
 
Основатель
Основатель
 
Сообщения: 248
Зарегистрирован: 10 октября 2011, 14:53
Откуда: Russia, Moscow
Возраст: 38
Пол: муж.
 
Контакты:

Re: IPAMon (мониторинг доступности сетевого ресурса (хоста))

Сообщение DmitryS » 28 июля 2014, 20:40

Пример использования утилиты - ОТПРАВКА СООБЩЕНИЯ НА E-Mail ПО ТРЕВОГЕ:

Задача: Отправлять сообщение на электронную почту при длительном отсутствии доступа к хосту (сетевому ресурсу).

Описание: Для наглядности, в данном примере интервал отправки сообщений на электронную почту, в случае обнаружения недоступности хоста, равен 60 сек. Для более точного срабатывания "тревоги" необходимо подобрать оптимальные значения параметров: "количество ошибок для запуска файла" и "период запросов".


Общие настройки утилиты:
Изображение


Вариант решения № 1 (через VBS-скрипт):


Указываем какой файл запускать:
Изображение

Создаём файл email2.vbs (в папке с утилитой) со следующим содержимым:
Option Explicit
On Error Resume Next
Dim WSHShell, objArgs, iCnt, strIP
iCnt = 0
strIP = ""
Err.Clear
Set objArgs = WScript.Arguments
If Err.Number = 0 Then
For iCnt = 0 to objArgs.Count - 1
If Len(Trim(objArgs(iCnt))) > 0 Then
strIP = Trim(objArgs(iCnt))
Exit For
End If
Next
Err.Clear
If Len(strIP) > 0 Then
Set WSHShell = WScript.CreateObject("WScript.Shell")
If Err.Number = 0 Then

' ПОЧТОВЫЙ СЕРВЕР (25 порт - SMTP):
WSHShell.Run "telnet.exe smtp.server.xx 25"

' ЗАДЕРЖКА ПОДКЛЮЧЕНИЯ к почтовому серверу (в миллисекундах):
WScript.Sleep 5000

If Err.Number = 0 Then
WSHShell.SendKeys "helo alarm" & chr(13)
WScript.Sleep 1000

WSHShell.SendKeys "auth login" & chr(13)
WScript.Sleep 1000

' ЛОГИН:
WSHShell.SendKeys Base64Encode("login") & chr(13)
WScript.Sleep 1000

' ПАРОЛЬ:
WSHShell.SendKeys Base64Encode("password") & chr(13)
WScript.Sleep 1000

' E-Mail ОТПРАВИТЕЛЯ
WSHShell.SendKeys "mail from:<agentsmith@server.xx>" & chr(13)
WScript.Sleep 1000

' E-Mail ПОЛУЧАТЕЛЯ:
WSHShell.SendKeys "rcpt to:<jonsmith@server.xx>" & chr(13)
WScript.Sleep 1000

WSHShell.SendKeys "data" & chr(13)
WScript.Sleep 1000

' ТЕМА СООБЩЕНИЯ:
WSHShell.SendKeys "subject:TOP SECRET" & chr(13)
WScript.Sleep 1000

' ИМЯ ОТПРАВИТЕЛЯ:
WSHShell.SendKeys "from:Agent Smith" & chr(13)
WScript.Sleep 1000

' ИМЯ ПОЛУЧАТЕЛЯ:
WSHShell.SendKeys "to:Jon Smith" & chr(13)
WScript.Sleep 1000

' ТЕКСТ СООБЩЕНИЯ:
WSHShell.SendKeys "Hello Jon!" & chr(13)
WSHShell.SendKeys "IP-address: " & strIP & " it isn't available!" & chr(13)
WScript.Sleep 1000

WSHShell.SendKeys "." & chr(13)
WScript.Sleep 1000
WSHShell.SendKeys "quit" & chr(13)
WScript.Sleep 1000
End If
End If
Set WSHShell = Nothing
End If
End If
Set objArgs = Nothing
Err.Clear
WScript.Quit 0

Function Base64Encode(inData)
On Error Resume Next
Base64Encode = ""
Const Base64 = _
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
Dim cOut, sOut, nCnt
For nCnt = 1 To Len(inData) Step 3
Dim nGroup, pOut, sGroup
nGroup = _
&H10000 * Asc(Mid(inData, nCnt, 1)) + _
&H100 * MyASC(Mid(inData, nCnt + 1, 1)) + _
MyASC(Mid(inData, nCnt + 2, 1))
nGroup = Oct(nGroup)
nGroup = String(8 - Len(nGroup), "0") & nGroup
pOut = _
Mid(Base64, CLng("&o" & Mid(nGroup, 1, 2)) + 1, 1) + _
Mid(Base64, CLng("&o" & Mid(nGroup, 3, 2)) + 1, 1) + _
Mid(Base64, CLng("&o" & Mid(nGroup, 5, 2)) + 1, 1) + _
Mid(Base64, CLng("&o" & Mid(nGroup, 7, 2)) + 1, 1)
sOut = sOut + pOut
Next
Select Case Len(inData) Mod 3
Case 1:
sOut = Left(sOut, Len(sOut) - 2) + "=="
Case 2:
sOut = Left(sOut, Len(sOut) - 1) + "="
End Select
Base64Encode = sOut
End Function

Function MyASC(OneChar)
On Error Resume Next
MyASC = 0
If OneChar <> "" Then MyASC = Asc(OneChar)
End Function


Если на почтовом сервере не требуется авторизация, то содержимое файла будет такое:
Option Explicit
On Error Resume Next
Dim WSHShell, objArgs, iCnt, strIP
iCnt = 0
strIP = ""
Err.Clear
Set objArgs = WScript.Arguments
If Err.Number = 0 Then
For iCnt = 0 to objArgs.Count - 1
If Len(Trim(objArgs(iCnt))) > 0 Then
strIP = Trim(objArgs(iCnt))
Exit For
End If
Next
Err.Clear
If Len(strIP) > 0 Then
Set WSHShell = WScript.CreateObject("WScript.Shell")
If Err.Number = 0 Then

' ПОЧТОВЫЙ СЕРВЕР (25 порт - SMTP):
WSHShell.Run "telnet.exe smtp.server.xx 25"

' ЗАДЕРЖКА ПОДКЛЮЧЕНИЯ к почтовому серверу (в миллисекундах):
WScript.Sleep 5000

If Err.Number = 0 Then
WSHShell.SendKeys "helo alarm" & chr(13)
WScript.Sleep 1000

' E-Mail ОТПРАВИТЕЛЯ
WSHShell.SendKeys "mail from:<agentsmith@server.xx>" & chr(13)
WScript.Sleep 1000

' E-Mail ПОЛУЧАТЕЛЯ:
WSHShell.SendKeys "rcpt to:<jonsmith@server.xx>" & chr(13)
WScript.Sleep 1000

WSHShell.SendKeys "data" & chr(13)
WScript.Sleep 1000

' ТЕМА СООБЩЕНИЯ:
WSHShell.SendKeys "subject:TOP SECRET" & chr(13)
WScript.Sleep 1000

' ИМЯ ОТПРАВИТЕЛЯ:
WSHShell.SendKeys "from:Agent Smith" & chr(13)
WScript.Sleep 1000

' ИМЯ ПОЛУЧАТЕЛЯ:
WSHShell.SendKeys "to:Jon Smith" & chr(13)
WScript.Sleep 1000

' ТЕКСТ СООБЩЕНИЯ:
WSHShell.SendKeys "Hello Jon!" & chr(13)
WSHShell.SendKeys "IP-address: " & strIP & " it isn't available!" & chr(13)
WScript.Sleep 1000

WSHShell.SendKeys "." & chr(13)
WScript.Sleep 1000
WSHShell.SendKeys "quit" & chr(13)
WScript.Sleep 1000
End If
End If
Set WSHShell = Nothing
End If
End If
Set objArgs = Nothing
Err.Clear
WScript.Quit 0



Вариант решения № 2 (через BAT/CMD-файл):


Указываем какой файл запускать:
Изображение

Создаём файл email2.bat (в папке с утилитой) со следующим содержимым:
Код: Выделить всё
@echo off
setlocal ENABLEDELAYEDEXPANSION
if "%1" NEQ "" (
set "msg=Hello Jon^! IP-address: %1 it isn't available^!"
sendEmail.exe -f agentsmith@server.xx -t jonsmith@server.xx -s smtp.server.xx:25 -xu login -xp password -u "TOP SECRET" -m "!msg!"
)


Если на почтовом сервере не требуется авторизация, то содержимое файла будет такое:
Код: Выделить всё
@echo off
setlocal ENABLEDELAYEDEXPANSION
if "%1" NEQ "" (
set "msg=Hello Jon^! IP-address: %1 it isn't available^!"
sendEmail.exe -f agentsmith@server.xx -t jonsmith@server.xx -s smtp.server.xx:25 -u "TOP SECRET" -m "!msg!"
)


Файл "sendEmail.exe" так же кладём в папку с утилитой!




Пояснение: Вместо доменного имени почтового сервера, например "smtp.server.xx", можно указывать его IP-адрес, например "192.168.0.1", если он выделенный или находится внутри локальной сети. Вместо SMTP-порта "25" можно указать тот порт, через который осуществляется отправка почты на сервере, например "465".



Готовые файлы email2.vbs, email1.vbs и email2.bat, email1.bat, а также утилита sendEmail.exe, предназначенная для отправки почты из командной строки, можно взять ниже:
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
DmitryS
 
Основатель
Основатель
 
Сообщения: 248
Зарегистрирован: 10 октября 2011, 14:53
Откуда: Russia, Moscow
Возраст: 38
Пол: муж.
 
Контакты:

Re: IPAMon (мониторинг доступности сетевого ресурса (хоста))

Сообщение DmitryS » 30 июля 2014, 12:09

Ещё один пример - ЗАПИСЬ LOG'а НА WEB-СТРАНИЦУ ПО ТРЕВОГЕ:

Задача: Отправлять строки, аналогичные строкам из LOG-файла, на страницу WEB-сайта при длительном отсутствии доступа к хосту (сетевому ресурсу). Одновременно необходимо в режиме реального времени просматривать изменения, происходящие на странице, из любого интернет-браузера, с любого устройства, имеющего доступ к этой странице (сайту).

Описание: Как и в предыдущем примере интервал отправки сообщений на электронную почту, в случае обнаружения недоступности хоста, равен 60 сек. Для более точного срабатывания "тревоги" также необходимо подобрать оптимальные значения параметров: "количество ошибок для запуска файла" и "период запросов".


Общие настройки утилиты:
Изображение


Вариант решения (через VBS и PHP скрипты):


Указываем какой файл запускать:
Изображение

Создаём файл error.vbs (в папке с утилитой) со следующим содержимым:
Option Explicit
On Error Resume Next
Dim WSHShell, objArgs, objWEB, objFile, txtFile
Dim isWD(8), isMY(13)
Dim iCnt, nCnt, nSec, nErr
Dim strIP, strTXT, strWait, strFile
Dim zRd, zRh, zRm, zRs
Dim sRd, sRh, sRm, sRs
iCnt = 0
nCnt = 0
nSec = 0
nErr = 0
zRd = 0
zRh = 0
zRm = 0
zRs = 0
sRd = "00000"
sRh = "00"
sRm = "00"
sRs = "00"
strIP = ""
strTXT = ""
strFile = ""
strWait = "00000-00:00:00"
isWD(0) = "Воскресенье"
isWD(1) = "Понедельник"
isWD(2) = "Вторник"
isWD(3) = "Среда"
isWD(4) = "Четверг"
isWD(5) = "Пятница"
isWD(6) = "Суббота"
isWD(7) = "Воскресенье"
isMY(0) = "Декабрь"
isMY(1) = "Январь"
isMY(2) = "Февраль"
isMY(3) = "Март"
isMY(4) = "Апрель"
isMY(5) = "Май"
isMY(6) = "Июнь"
isMY(7) = "Июль"
isMY(8) = "Август"
isMY(9) = "Сентябрь"
isMY(10) = "Октябрь"
isMY(11) = "Ноябрь"
isMY(12) = "Декабрь"
Set objFile = CreateObject("Scripting.FileSystemObject")
If objFile.FileExists("cfgs.res") Then
Set txtFile = objFile.OpenTextFile("cfgs.res", 1)
Do While txtFile.AtEndOfStream <> True
strFile = txtFile.ReadLine
If Len(Trim(CStr(strFile))) > 0 Then nCnt = nCnt + 1
If nCnt = 5 Then nSec = Abs(Int(Trim(CStr(strFile))))
If nCnt = 6 Then nErr = Abs(Int(Trim(CStr(strFile))))
Loop
txtFile.Close
Set txtFile = Nothing
End If
Set objFile = Nothing
If nErr < 2 Then nErr = 1
If nSec < 2 Then nSec = 1
If nErr > 86399 Then nErr = 86400
If nSec > 3599 Then nSec = 3600
nCnt = nSec * nErr
zRd = Abs(Int(nCnt / 86400))
zRh = Abs(Int((nCnt - zRd * 86400) / 3600))
zRm = Abs(Int((nCnt - zRd * 86400 - zRh * 3600) / 60))
zRs = Abs(Int((nCnt - zRd * 86400 - zRh * 3600 - zRm * 60)))
sRd = Trim(CStr(zRd))
sRh = Trim(CStr(zRh))
If Len(sRh) < 2 Then sRh = "0" + sRh
sRm = Trim(CStr(zRm))
If Len(sRm) < 2 Then sRm = "0" + sRm
sRs = Trim(CStr(zRs))
If Len(sRs) < 2 Then sRs = "0" + sRs
strWait = StrReverse(Left(StrReverse(sRd & "-" & sRh & ":" & sRm & ":" & sRs) + "00000", 14))
Err.Clear
Set objArgs = WScript.Arguments
If Err.Number = 0 Then
For iCnt = 0 to objArgs.Count - 1
If Len(Trim(objArgs(iCnt))) > 0 Then
strIP = Trim(objArgs(iCnt))
Exit For
End If
Next
strTXT = "[ " + Left(strIP + " ", 15) + _
" ] [ ОШИБКА ] [ " + strWait + " ] [ " + _
Trim(CStr(Date())) + " / " + Trim(CStr(Time())) + " / " + _
Trim(CStr(isWD(Weekday(Now, vbMonday))))+ " / " + _
Trim(CStr(isMY(Month(Now)))) + " ]"
Err.Clear
If Len(strIP) > 0 Then
Set WSHShell = WScript.CreateObject("WScript.Shell")
If Err.Number = 0 Then
Set objWEB = CreateObject("MSXML2.XMLHTTP.3.0")
If Err.Number = 0 Then
Randomize()
objWEB.Open "GET", _
"https://server.xx/write.php?log=00000000&txt=" & _
strTXT & "&rnd=" & Rnd(), False
objWEB.Send
End If
Set objWEB = Nothing
End If
End If
Set WSHShell = Nothing
End If
Set objArgs = Nothing
Err.Clear
WScript.Quit 0


Создаём файл write.php со следующим содержимым:
<?php
header('expires: Sat, 01 Jan 2000 00:00:00 GMT');
header('cache-control: no-cache, no-store, max-age=0, post-check=0, pre-check=0, must-revalidate', FALSE);
header('pragma: no-cache');
header("last-modified: ".gmdate("D, d M Y H:i:s ")."GMT");
?>
<?php
$log='';
$txt='';
if(isset($_GET['log']))
{
$log=$_GET['log'];
if($log=='00000000')
{
if(isset($_GET['txt']))
{
$txt=$_GET['txt'];
$txt=trim(strip_tags(trim($txt)));
if(strlen(strval($txt))>0)
{
if(file_exists("./".$log.".txt"))
{
$file=fopen("./".$log.".txt","a");
flock($file,2);
if($file)
{
fwrite($file," ".$txt." ".chr(13).chr(10));
}
}
}
flock($file,3);
fclose($file);
}
}
}
print(" ");
?>


Создаём файл read.php со следующим содержимым:
<?php
header('expires: Sat, 01 Jan 2000 00:00:00 GMT');
header('cache-control: no-cache, no-store, max-age=0, post-check=0, pre-check=0, must-revalidate', FALSE);
header('pragma: no-cache');
header("last-modified: ".gmdate("D, d M Y H:i:s ")."GMT");
$rnd="0.".substr(strval(rand()).strval(rand())."0000000000000000", 0, 16);
?>
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
<title>IPAMon</title>
<meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no' />
<meta name='language' content='russian, english' />
<meta http-equiv='content-language' content='ru-ru' />
<meta http-equiv='content-script-type' content='text/javascript' />
<meta http-equiv='content-style-type' content='text/css' />
<meta http-equiv='content-type' content='text/html; charset=windows-1251' />
<meta http-equiv='expires' content='Sat, 01 Jan 2000 00:00:00 GMT' />
<meta http-equiv='cache-control' content='no-cache, no-store, max-age=0, post-check=0, pre-check=0, must-revalidate' />
<meta http-equiv='pragma' content='no-cache' />
<meta http-equiv='imagetoolbar' content='no' />
<meta http-equiv='refresh' content='60' />
<meta http-equiv='window-target' content='_top' />
<meta http-equiv='X-UA-Compatible' content='IE=edge' />
<style type='text/css'>
<!--
* {
top: 0px;
left: 0px;
margin: 0px;
padding: 0px;
border: 0px solid #ffffff;
color: #000000;
visibility: visible;
direction: ltr;
font-family: monospace;
font-size: 12px;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-decoration: none;
text-transform: none;
text-align: left;
line-height: 20px;
letter-spacing: normal;
word-spacing: normal;
white-space: normal;
text-indent: 0px;
text-decoration: none;
text-transform: none;
list-style: none;
outline: hidden;
outline-style: hidden;
outline-width: 0px;
table-layout: auto;
empty-cells: show;
caption-side: top;
float: none;
clear: none;
}
html {
width: 100%;
height: 101%;
overflow: auto;
overflow-x: hidden;
overflow-y: auto;
z-index: 0;
}
body {
overflow: hidden;
z-index: 1;
}
pre {
display: block;
white-space: pre;
z-index: 2;
}
-->
</style>
<script language='JavaScript' type='text/javascript'>
<!--
function isRedirect() {
<?php
print("top.location.href='https://server.xx/read.php?log=00000000&rnd=".$rnd."';\n");
?>
};
window.setInterval('isRedirect();', 60000);
//-->
</script>
</head>
<body>
<?php
$log='';
if(isset($_GET['log']))
{
$log=$_GET['log'];
if($log=='00000000')
{
if(file_exists("./".$log.".txt"))
{
print("<pre>\n");
include($log.".txt");
print("\n</pre>\n");
}
}
}
?>
</body>
</html>



Настройка:


1. Кладём файлы "write.php" и "read.php" на свой сайт, например:
    https://server.xx/write.php
    https://server.xx/read.php

2. Создаём пустой текстовый файл "00000000.txt" и кладём его туда же:
    https://server.xx/00000000.txt

3. В файле "read.php" можно задать частоту обновления страницы:
    а) <meta http-equiv='refresh' content='60' /> - в данном примере =60 сек.
    б) window.setInterval('isRedirect();', 60000); - тоже =60 сек.

4. В файлах "read.php" и "error.vbs" изменяем домен "server.xx" на свой!
    

Мониторинг:


Открываем в любом браузере ссылку https://server.xx/read.php?log=00000000 и смотрим записи. Обновление страницы будет происходить автоматически каждые 60 сек., если это значение не было изменено (см. п. 3 выше).

Image




P.S.: В целях безопасности, можно изменить название LOG-файла "00000000" и его расширение ".txt" на другие. Файлы "read.php" и "write.php" можно также переименовать. Дополнительно можно все три файла положить во вложенную папку на сайте и ограничить доступ к LOG-файлу (00000000.txt), чтобы его невозможно было просмотреть напрямую.




Готовые файлы write.php, read.php, 00000000.txt и error.vbs можно взять ниже:
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
DmitryS
 
Основатель
Основатель
 
Сообщения: 248
Зарегистрирован: 10 октября 2011, 14:53
Откуда: Russia, Moscow
Возраст: 38
Пол: муж.
 
Контакты:


Вернуться в Утилиты от VRCP Soft

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3