ИзползванС Π½Π° PowerShell Π·Π° ΡΡŠΠ±ΠΈΡ€Π°Π½Π΅ Π½Π° информация Π·Π° ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚ΠΈ

PowerShell Π΅ доста чСсто срСщан инструмСнт Π·Π° автоматизация, ΠΊΠΎΠΉΡ‚ΠΎ чСсто сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°ΠΊΡ‚ΠΎ ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ Π½Π° Π·Π»ΠΎΠ²Ρ€Π΅Π΄Π΅Π½ софтуСр, Ρ‚Π°ΠΊΠ° ΠΈ ΠΎΡ‚ спСциалисти ΠΏΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Π° сигурност.
Π’Π°Π·ΠΈ статия Ρ‰Π΅ Ρ€Π°Π·Π³Π»Π΅Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° PowerShell Π·Π° ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ΠΎ ΡΡŠΠ±ΠΈΡ€Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ ΠΊΡ€Π°ΠΉΠ½ΠΈ устройства ΠΏΡ€ΠΈ Ρ€Π΅Π°Π³ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚ΠΈ със сигурността Π½Π° информацията. Π—Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π°, трябва Π΄Π° Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ скрипт, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ сС изпълнява Π½Π° ΠΊΡ€Π°ΠΉΠ½ΠΎΡ‚ΠΎ устройство, слСд ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ ΠΈΠΌΠ° ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описаниС Π½Π° Ρ‚ΠΎΠ·ΠΈ скрипт.

function CSIRT{
param($path)
if ($psversiontable.psversion.major -ge 5)
	{
	$date = Get-Date -Format dd.MM.yyyy_hh_mm
	$Computer = $env:COMPUTERNAME
	New-Item -Path $path$computer$date -ItemType 'Directory' -Force | Out-Null
	$path = "$path$computer$date"

	$process = get-ciminstance -classname win32_process | Select-Object creationdate, processname,
	processid, commandline, parentprocessid

	$netTCP = Get-NetTCPConnection | select-object creationtime, localaddress,
	localport, remoteaddress, remoteport, owningprocess, state
	
	$netUDP = Get-NetUDPEndpoint | select-object creationtime, localaddress,
	localport, remoteaddress, remoteport, owningprocess, state

	$task = get-ScheduledTask | Select-Object author, actions, triggers, state, description, taskname|
	where author -notlike '*ΠœΠ°ΠΉΠΊΡ€ΠΎΡΠΎΡ„Ρ‚*' | where author -ne $null |
	where author -notlike '*@%systemroot%*' | where author -notlike '*microsoft*'

	$job = Get-ScheduledJob

	$ADS =  get-item * -stream * | where stream -ne ':$Data'

	$user = quser

	$runUser = Get-ItemProperty "HKCU:SoftwareMicrosoftWindowsCurrentVersionRun"

	$runMachine =  Get-ItemProperty "HKLM:SoftwareMicrosoftWindowsCurrentVersionRun"

	$array = $process, $netTCP, $netUDP, $task, $user, $runUser, $runMachine, $job, $ADS
	$arrayName = "Processes", "TCPConnect", "UDPConnect", "TaskScheduled", "Users", "RunUser", "RunMachine",
	"ScheduledJob", "AlternativeDataStream"


	for ($w = 0; $w -lt $array.count; $w++){
		$name = $arrayName[$w]
		$array[$w] >> $path$name.txt
		}

	}

}

Π—Π° Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅, ΡΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ функция CSIRT Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ - ΠΏΡŠΡ‚Ρ Π·Π° Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ. ΠŸΠΎΡ€Π°Π΄ΠΈ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚ΠΈ работят Π² Powershell v5, Π΅ Π½Π°ΠΏΡ€Π°Π²Π΅Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° вСрсията Π½Π° PowerShell Π·Π° ΠΏΡ€Π°Π²ΠΈΠ»Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°.

function CSIRT{
		
param($path)# ΠΏΡ€ΠΈ запускС скрипта Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ для сохранСния
if ($psversiontable.psversion.major -ge 5)

Π—Π° ΠΏΠΎ-лСсна навигация Π² ΡΡŠΠ·Π΄Π°Π΄Π΅Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ сС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚ Π΄Π²Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ: $date ΠΈ $Computer, Π½Π° ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ бъдС присвоСно ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€Π° ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° Π΄Π°Ρ‚Π°.

$date = Get-Date -Format dd.MM.yyyy_hh_mm
$Computer = $env:COMPUTERNAME
New-Item -Path $path$computer$date –ItemType 'Directory' -Force | Out-Null 
$path = "$path$computer$date"

ΠŸΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ списъка с изпълнявани процСси ΠΎΡ‚ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° тСкущия ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π», ΠΊΠ°ΠΊΡ‚ΠΎ слСдва: ΡΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°Ρ‚Π° $process, ΠΊΠ°Ρ‚ΠΎ ΠΉ присвоитС cmdlet get-ciminstance с класа win32_process. Π‘ ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° cmdlet Select-Object ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΈΠ·Ρ…ΠΎΠ΄Π½ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ, Π² нашия случай Ρ‚ΠΎΠ²Π° Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ parentprocessid (ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½Π° родитСлски процСс Π½Π° PPID), Π΄Π°Ρ‚Π° Π½Π° създаванС (Π΄Π°Ρ‚Π° Π½Π° създаванС Π½Π° процСса), ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π΅Π½ (ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½Π° процСс PID), ΠΈΠΌΠ΅ Π½Π° процСса (ΠΈΠΌΠ΅ Π½Π° процСс), ΠΊΠΎΠΌΠ°Π½Π΄Π΅Π½ Ρ€Π΅Π΄ (ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π° стартиранС).

$process = get-ciminstance -classname win32_process | Select-Object creationdate, processname, processid, commandline, parentprocessid

Π—Π° Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ списък Π½Π° всички TCP ΠΈ UDP Π²Ρ€ΡŠΠ·ΠΊΠΈ, ΡΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡ‚Π΅ $netTCP ΠΈ $netUDP, ΠΊΠ°Ρ‚ΠΎ ΠΈΠΌ присвоитС ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ ΠΊΡ€Π°Ρ‚ΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Get-NetTCPConnection ΠΈ Get-NetTCPConnection.

$netTCP = Get-NetTCPConnection | select-object creationtime, localaddress, localport, remoteaddress, remoteport, owningprocess, state

$netUDP = Get-NetUDPEndpoint | select-object creationtime, localaddress, localport, remoteaddress, remoteport, owningprocess, state

Π©Π΅ бъдС Π²Π°ΠΆΠ½ΠΎ Π΄Π° Π·Π½Π°Π΅Ρ‚Π΅ списъка с ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ. Π—Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ Ρ‚ΠΎΠ²Π°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΊΡ€Π°Ρ‚ΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ get-ScheduledTask ΠΈ Get-ScheduledJob. НСка ΠΈΠΌ присвоим ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡ‚Π΅ $task ΠΈ $job, Π·Π°Ρ‰ΠΎΡ‚ΠΎ ΠŸΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ Π² систСмата, слСд ΠΊΠΎΠ΅Ρ‚ΠΎ, Π·Π° Π΄Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Ρ‚Π΅ Π·Π»ΠΎΠ½Π°ΠΌΠ΅Ρ€Π΅Π½Π° дСйност, си струва Π΄Π° Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Ρ‚Π΅ Π·Π°ΠΊΠΎΠ½Π½ΠΈΡ‚Π΅ ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ. Cmdlet Select-Object Ρ‰Π΅ Π½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ с Ρ‚ΠΎΠ²Π°.

$task = get-ScheduledTask | Select-Object author, actions, triggers, state, description, taskname| where author -notlike '*ΠœΠ°ΠΉΠΊΡ€ΠΎΡΠΎΡ„Ρ‚*' | where author -ne $null | where author -notlike '*@%systemroot%*' | where author -notlike '*microsoft*' # $task ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π°Π²Ρ‚ΠΎΡ€ΠΎΠ², содСрТащих β€œΠœΠ°ΠΉΠΊΡ€ΠΎΡΠΎΡ„Ρ‚β€, β€œMicrosoft”, β€œ*@%systemroot%*”, Π° Ρ‚Π°ΠΊΠΆΠ΅ «пустых» Π°Π²Ρ‚ΠΎΡ€ΠΎΠ²
$job = Get-ScheduledJob

Π’ΡŠΠ² Ρ„Π°ΠΉΠ»ΠΎΠ²Π°Ρ‚Π° систСма NTFS ΠΈΠΌΠ° Ρ‚Π°ΠΊΠΎΠ²Π° Π½Π΅Ρ‰ΠΎ ΠΊΠ°Ρ‚ΠΎ Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΈ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ (Alternate Data Streams, ADS). Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ Ρ„Π°ΠΉΠ» Π² NTFS ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ ΡΠ²ΡŠΡ€Π·Π°Π½ с мноТСство ΠΏΠΎΡ‚ΠΎΡ†ΠΈ ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ Ρ€Π°Π·ΠΌΠ΅Ρ€. Π‘ ADS ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° скриСтС Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ няма Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π²ΠΈΠ΄ΠΈΠΌΠΈ Ρ‡Ρ€Π΅Π· стандартни систСмни ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ. Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ½ΠΆΠ΅ΠΊΡ‚ΠΈΡ€Π° Π·Π»ΠΎΠ²Ρ€Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄ ΠΈ/ΠΈΠ»ΠΈ Π΄Π° скриС Π΄Π°Π½Π½ΠΈ.

Π—Π° Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΈ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ Π² PowerShell, Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ cmdlet get-item ΠΈ вградСния инструмСнт Π·Π° ΠΏΠΎΡ‚ΠΎΡ†ΠΈ Π½Π° Windows със символа *, Π·Π° Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ всички възмоТни ΠΏΠΎΡ‚ΠΎΡ†ΠΈ, Π·Π° Ρ‚ΠΎΠ²Π° Ρ‰Π΅ създадСм ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°Ρ‚Π° $ADS.

$ADS = get-item * -stream * | where stream –ne ':$Data' 

Π©Π΅ бъдС ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π° Π·Π½Π°Π΅Ρ‚Π΅ списъка с ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ, Π²Π»Π΅Π·Π»ΠΈ Π² систСмата, Π·Π° Ρ‚ΠΎΠ²Π° Ρ‰Π΅ създадСм ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° $user ΠΈ Ρ‰Π΅ присвоим ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° quser към нСя.

$user = quser

Π—Π° Π΄Π° сС закрСпят Π² систСмата, Π½Π°ΠΏΠ°Π΄Π°Ρ‚Π΅Π»ΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° направят ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎΡ‚ΠΎ стартиранС. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ cmdlet Get-ItemProperty, Π·Π° Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅ Π² Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ пусканС.
НСка създадСм Π΄Π²Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ: $runUser - Π·Π° ΠΏΡ€Π΅Π³Π»Π΅Π΄ Π½Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎΡ‚ΠΎ Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ ΠΎΡ‚ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° потрСбитСля ΠΈ $runMachine - Π·Π° ΠΏΡ€Π΅Π³Π»Π΅Π΄ Π½Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎΡ‚ΠΎ Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ ΠΎΡ‚ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€Π°.

$runUser = Get-ItemProperty 
"HKCU:SoftwareMicrosoftWindowsCurrentVersionRun"
$runMachine = Get-ItemProperty 
"HKLM:SoftwareMicrosoftWindowsCurrentVersionRun"

Π—Π° Π΄Π° ΠΌΠΎΠΆΠ΅ цялата информация Π΄Π° бъдС записана Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, създавамС масив с ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΈ масив с ΠΈΠΌΠ΅Π½Π° Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅.


$array = $process, $netTCP, $netUDP, $task, $user, $runUser, $runMachine, $job, $ADS
$arrayName = "Processes", "TCPConnect", "UDPConnect" "TaskScheduled", "Users", "RunUser", "RunMachine",
"ScheduledJob", "Alternative Data Stream"

И с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° for Ρ†ΠΈΠΊΡŠΠ», ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ записани във Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅.

for ($w = 0; $w -lt $array.count; $w++){
	$name = $arrayName[$w]
	$array[$w] >> $path$name.txt

Π‘Π»Π΅Π΄ изпълнСниС Π½Π° скрипта Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ създадСни 9 тСкстови Ρ„Π°ΠΉΠ»Π°, ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‰ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ°Ρ‚Π° информация.

ДнСс профСсионалиститС ΠΏΠΎ кибСрсигурност ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ PowerShell, Π·Π° Π΄Π° обогатят информацията, която ΠΈΠΌ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° Π·Π° Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ Π² тяхната Ρ€Π°Π±ΠΎΡ‚Π°. ΠšΠ°Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ скрипт Π·Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ някаква информация Π±Π΅Π· дъмпинг, изобраТСния ΠΈ Ρ‚.Π½.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€