Войти

Показать полную графическую версию : [решено] Расшифровка коротких ссылок


Страниц : [1] 2

Uragan66
13-09-2020, 15:14
Всем доброго времени суток!
Может кто подскажет, есть ли возможность посредством Powershell расшифровать короткие ссылки ?
Например, такие:
http://tinyurl.com/yytmg75x/239.195.57.14:1234
В браузере то это без проблем, но нужно расшифровать несколько десятков ссылок.
Можно это сделать через curl.exe (прописана в системной Path)
Get-Content J:\Download\123.m3u | ForEach {
(curl.exe -sL --head $_ | Select-String -Pattern 'Location: ([^"]+)' -AllMatches).Matches|
ForEach-Object {"$($_.Groups[1].Value)"}
}
Но так получаем только ссылки, которые есть в заголовке. На других ошибка.

С помощью чистого Powershell не получится решить такую задачу ?

greg zakharov
13-09-2020, 16:00
Uragan66, в curl предусмотрена возможность извлечения так называемого эффективного URL (конечной точки запроса). Выглядит это примерно так:
curl -w "%{url_effective}" -o nul -sIL https://goo.gl/q76cgB
Что касается PowerShell, в разных версиях модель запросов может различаться. В седьмой версии, например, получить URL из пожатой ссылки можно следующим образом:
"$((Invoke-WebRequest https://goo.gl/q76cgB).BaseResponse.RequestMessage.RequestUri)"
nmap, к слову, также способен "извлечь" эффективный URL из пожатой ссылки.
Но так получаем только ссылки, которые есть в заголовке. На других ошибка.
Покажите сам текстовик.

Foreigner
13-09-2020, 17:46
Антивирус взбунтовался против любых коротких ссылок )))

7.0.3

> $a = Invoke-WebRequest https://goo-gl.ru/6zTJ
ParserError:
Line |
1 | $a = Invoke-WebRequest https://goo-gl.ru/6zTJ
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| This script contains malicious content and has been blocked by your antivirus software.


5.1.19041.1

> $a = Invoke-WebRequest https://goo-gl.ru/6zTJ
At line:1 char:1
+ $a = Invoke-WebRequest https://goo-gl.ru/6zTJ
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This script contains malicious content and has been blocked by your antivirus software.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : ScriptContainedMaliciousContent

greg zakharov
13-09-2020, 18:08
Антивирус взбунтовался против любых коротких ссылок
Скриншоты? АВ обычно не бунтуют против "коротышек", они болезненно воспринимают лишь конечные точки таких ссылок, если на таковых была замечена подозрительная активность или сам сервис сжатия ссылок представляет собой нечто сортирное. Так что можно обезопасить себя, отправляя ссылки на сканирование в VirusTotal или тем же nmap (есть соответствующие сценарии) прочекать хосты.

Uragan66
13-09-2020, 18:35
Покажите сам текстовик »
ссылки могут быть разные, это тв потоки с различных сервисов.
Пример:
https://rebrand.ly/deo_/OLEG/2
http://rebrand.ly/deooleg/352
http://tinyurl.com/y3ks3hy8
http://zigfreed.ru/Sv2/741.m3u8
http://zigfreed.ru/Sv2/4.m3u8
http://zigfreed.ru/Sv2/18.m3u8
На двух первых ссылках мой код "спотыкается"
Ваш код с curl их тоже не расшифровывает.
А код для седьмой версии PowerShell срабатывает отлично со всеми ссылками. За что Вам огромное спасибо. Этот код работает на 6-й и 7-й версиях. На 5.1 срабатывает, ошибок нет, но вывод пустой.
Для 5.1 получится подобная модель запроса ?

Антивирус взбунтовался против любых коротких ссылок »
у меня нормально по этому поводу...
Но чисто Invoke-WebRequest для моей задачи не подходит. По некоторым ссылкам он просто возвращает развёрнутый плейлист, а не одну ссылку.

Foreigner
13-09-2020, 18:45
Скриншоты? »

greg zakharov
13-09-2020, 18:53
Foreigner, Windows Defender? А вы не пробовали задавать запрос так:
Invoke-WebRequest -Uri https://goo-gl.ru/6zTJ
?

Для 5.1 получится подобная модель запроса ?
Да. По крайней мере насколько помню, Invoke-WebRequest в 5.1 также работал.

Ваш код с curl их тоже не расшифровывает.
Код с curl ничего не расшифровывает. Это называется получение эффективного адреса. Виндовый curl сильно кастрирован по части функциональности.

Fors1k
13-09-2020, 18:54
Для 5.1 получится подобная модель запроса ? »
"$((iwr tinyurl.com/anf54v).BaseResponse.ResponseUri)"

Uragan66
13-09-2020, 19:00
Fors1k, работает отлично. Спасибо большое!

Uragan66
13-09-2020, 20:29
Оказалось не всё так просто...
К примеру, ссылка:
http://zigfreed.ru/Sv2/62.m3u8
в реальности udp поток
http://85.14.32.3:8800/udp/239.10.10.130:5000
и что в браузере, что скриптом идёт бесконечное скачивание потока...
Как такие короткие ссылки отличить от других, непонятно...

Fors1k
13-09-2020, 21:00
$link = 'http://zigfreed.ru/Sv2/62.m3u8'
"$((Iwr -me h $link).BaseResponse.ResponseUri)"

Uragan66
13-09-2020, 22:16
Fors1k, да, вроде нормально, проверю ещё на других ссылках...
Спасибо!

Fors1k
14-09-2020, 15:31
Антивирус взбунтовался против любых коротких ссылок ))) »
function Get-TargetLink($url){
add-MpPreference -ExclusionProcess ($p=(ps -id $Pid).path)
$r = (Iwr $url).BaseResponse.ResponseUri
Remove-MpPreference -ExclusionProcess $p
return "$r"
}cls

Get-TargetLink 'tinyurl.com/anf54v'

Foreigner
14-09-2020, 16:28
Fors1k, Ну я не знаю, какие-то ссылки открывает, какие-то ни в какую, наверное зависит от провайдера ссылок. Под линукс вообще без проблем, под виндой такой вот stderr, Зависит наверное от многого, от винды, от настроек, от хостинга коротких ссылок -- причем странно все, видимо у дефендера особый алгоритм, какие-то ссылки обрабатываются, потом, при повторе выскакивает ошибка, потом снова отрабатывается. Я вот попытался загнать в переменную, чтобы уже локально просмотреть все дерево методов и свойств, но как-то не сложилось. Ну и времени, если честно, вникать не было.

greg zakharov
15-09-2020, 10:10
Foreigner, все же Windows Defender, угу. В десятке реализуется "общий" интерфейс, используемый приложениями и службами для перенаправления потока байтов поставщику антивирусного обеспечения (сам интерфейс реализован в amsi.dll, а подсмотреть его реализацию можно в amsi.(lib|h) из SDK пакета). Так вот, amsi "лапает" PowerShell для анализа выполняемого содержимого, при этом последнее перехватывается и отправляется в Defender до непосредственного исполнения. Это - в целом. В чём прикол? А прикол в отсутствии прикола, ибо зная "устройство" amsi можно "тушить" Defender прямо из PowerShell по необходимости, меняя первые три байта, скажем, AmsiScanBuffer на нечто вроде ксора 32-битного аккумулятора с последующим ретом или просто перехватив инициализируемую amsi сессию, - техник обхода много. Да и тема по сути внефорумная.

Uragan66
15-09-2020, 10:34
проверю ещё на других ссылках... »
Всё-таки Invoke-WebRequest с параметрами -me h не работает корректно со всеми ссылками, к примеру, по ссылке
http://rebrand.ly/deo_oleg/467
в ответ получаем ошибку 404, тогда, как просто:
$link = 'http://rebrand.ly/deo_oleg/467'
"$((Invoke-WebRequest $link).BaseResponse.ResponseUri)"
отдаёт нормальную расшифрованную ссылку:
http://clients.apsny.camera/tv_gal_tv_hd_online/playlist.m3u8
Но этот код не подойдёт для укороченных ссылок, по которым идёт скачивание потока.
http://rebrand.ly/d_e_o_0_l_e_g/2
И условие здесь на ошибку не поставишь, так как идёт просто бесконечное скачивание потока, без ошибки...

Foreigner
15-09-2020, 10:35
greg zakharov, Ну и бог с ним, с дефендером, да и с короткими ссылками тоже.

Fors1k
15-09-2020, 11:19
:nunchaku:$link = 'http://rebrand.ly/d_e_o_0_l_e_g/2',
'http://rebrand.ly/deo_oleg/467'
cls
function Get-TargetLink($url){
$ErrorActionPreference="stop"
try{
$webRequest = [net.WebRequest]::Create($url)
$webRequest.Timeout = 4096
$res = $webRequest.GetResponse().ResponseUri
}catch{ $res = $Error[0] } ; $webRequest.Abort()

return "$res"
}
$link|%{Get-TargetLink $_}http://iptv.rubintele.com:8552/play/a001
http://clients.apsny.camera/tv_gal_tv_hd_online/playlist.m3u8

птичка0001
15-09-2020, 12:55
greg zakharov, Простите за нескромный вопрос, а что у Вас случилось с "Археология Windows\UNIX, хаконавтика"? Если ничего не случилось, то можете не отвечать :) Просто раньше ссылка была доступна в Вашей подписи. Не то чтобы я уж так все читала, но некоторые посты были интересны

Foreigner
15-09-2020, 15:39
К вопросу об антивирусе. Можно временно отключить блокировку антивирусом скрипта, выполнив с повышенными привилегиями:


Set-MpPreference -DisableRealtimeMonitoring $true




© OSzone.net 2001-2012