コソッとメモ

男性が密かにメモを残しているイラスト画像

調べて分かったことや知った事などを、とりあえず備忘録的に自分用メモとして残しています。情報を整理できたら別途きちんと記事にするかも知れません。

Google検索で”Index of /”を検索する

LinuxのISOファイルなんかを探している場合で、旧バージョンをどうしても見つけたい場合がある。ミラーサーバーに残っていたりするのでファイル名がある程度分かっていればGoogle検索するのが手っ取り早い。

Google検索でIndexesが有効になっているWebサイトのファイルを検索した結果の画像。ちょっと裏技っぽい方法である。

この検索方法は裏技的な検索方法だったりする。この方法で検索するとWeb Serverの設定漏れでIndexesが有効になっていて、ディレクトリ内のファイルが丸見えになっているんじゃないかな?って場合も検索に引っかかってくる。本当は見えちゃいけないんじゃないか?ってファイルなんかも丸ごと見えることがある。

この方法で検索されたく無い場合は、Web Server(Apache,nginx)を適切に設定しておく必要がある。

この方法による検索目的としては、「公開されなくなったフリーウェアなどを使いたいけど現在は配布してない。しかしファイル名は覚えている。」という場合に有効だったりする。世界中のどこかのサーバーに保管されている場合があるかも知れないので、ダメ元で検索してみるのも奥の手かも知れない。

LinuxでWindows用アプリを使う(Wine)

ソフトウェアマネージャからWine関係をインストールすると、Windows用アプリを使用できる場合がある。LinuxでWindowsアプリが使える確率が高いのは.Net Frameworksなどを使ってない、シンプルなアプリであること。一応.Net Frameworkにも対応させるべくWineプロジェクトは活動してくれているけど中々難しいものがあるんじゃないかと思う。

個人的に、画像ファイルの解像度(サイズ)を縮小するだけのシンプルなアプリ「縮小専用」はとても重宝していて、これに類するアプリをLinux版で見つけ出せていないので、Wine環境下で動かす価値があると思っている。但しWindowsXP時代に開発されたアプリでその後更新されてないので、いつか入手出来なくなったり使えなくなってしまう可能性もある。

Linux MintのWine環境でWindowsアプリを動かしている様子のキャプチャ画像。「縮小専用」の様なコンパクトなアプリは大抵動作するのでWineは結構便利だ。

Amazonを活用するブックマークレット(Javascript)

Amazonはよく利用するので(商品・製品のリサーチとか)、商品コードASINやら商品ページのURLやらを抽出するブックマークレットを活用しています。ブックマークレットについて簡単に書いておくと、Webブラウザのお気に入りに登録するURL情報の代わりに、Javascriptで書かれたコードを登録しておくことで、特定のページでJavascriptを実行して実行結果が得られる小技。

ブックマークレット:商品コードASINを抽出

Amazonの商品ページにはASINという商品コードが割り振られているので、長ったらしいURLからそこを探すのが面倒な場合がある。そういう時に使うとすぐ抽出出来るので便利。

出力例:Amazon ASIN B08B3D7PDJ

javascript:var%20asin%20=%20document.getElementById('ASIN').value;%20prompt('Amazon%20ASIN',%20asin);
javascript:(function(){var asin = document.getElementById('ASIN').value;prompt('Amazon ASIN', asin);})();

function()と書く場合と省略する場合と書き方が2種類あるみたいだけど、Javascriptによるブックマークレットなので動けばどっちでも良いかなと思っている。ちなみに%20は半角スペースのことらしい。

ブックマークレット:Amazon商品ページのURLをシンプルに抽出

チャット等でAmazonの商品ページを人に伝えたりする場合、WebブラウザのURL欄からコピペすると長ったらしい商品名が含まれているので非常に煩わしい。そういう不要部分を除いたURLをサクッと抽出する目的で使用するブックマークレット。

出力例:Amazon URL https://www.amazon.co.jp/dp/B08B3D7PDJ

javascript:(function(){var asin = document.getElementById('ASIN').value;prompt('Amazon URL', 'https://www.amazon.co.jp/dp/' + asin);})();

YtDwonloaderで動画配信サイトからダウンロード(テスト)

YtDownloaderについてはブログ記事として記したが、そのテストの際にAV動画を配信している(海賊版)サイトからダウンロードテストしてみて分かったことがある。記事とは別にしておいた方が良いかなとメモとして残しておく。ストリーミング配信の仕組みはおそらく変わらないのだろうが、配信URLを難読化する仕組みはサイトでそれぞれ違っており、変更されることもあるみたいだ。まあ各サイトの運営者は広告に誘導するのが目的なので解析されたら対策する努力はしているみたいだ。

Jable.TVの攻略方法

ターゲットとする動画ページを表示した状態で、FirefoxでF12を押して開発者ツールを表示させる。コンソールを選びF5を押してリロードさせるとダラダラと表示される。
ここから目的の変数(hlsUrl)を探すのは手間なので、コンソールからJavascriptコマンドを入れる。(ブックマークレット化も可能)

console.log(hlsUrl)

URLが表示されるので、そのURLをコピーしてYtDownloaderに食わせるとダウンロード開始となる。(保存ファイル名は任意)

このサイトの構造は簡単なので、HTMLソースからも検索で簡単に探せる。サイトのソースを表示してから「hlsUrl」の値を検索しても特定できる。

AV01の攻略方法

1つめの方法

ターゲットとする動画ページを表示した状態で、FirefoxでF12を押して開発者ツールを表示させる。ネットワークを選びF5を押してリロードさせるとダラダラと表示される。フィルターに「cdn.av01.tv」を入力するとストリーミング動画のやり取りに絞れる。

ここでタイプ列に「vnd.apple.mpegurl」とある行のURLをコピーする。要求ヘッダー等細かい情報でやり取りしていることがわかる。WebブラウザでこのURLにアクセスするとm3u8ファイルの保存となる。

※ただし直接的なストリーミングのURLでは無さそうだ。VLCプレーヤーでそのまま再生することができない。このサイトの詳細な構造については更に解析しないと分からない。

2つめの方法

もしくは、FirefoxでF12を押して開発者ツールを表示させ、インスペクターで動画フレームを選択してソースを展開する。<video>タグの中に

<source src="data:application/x-mpegurl;charset=utf-8;base64,I0VYVE0zVQojRxxxxxxxxxxxxxxx省略xxxxxxxxxxxxx" type="application/x-mpegurl" data-vds="">Code language: HTML, XML (xml)

という部分があるので、base64の次の値をコピーして、BASE64デコード(文字コードはJISらしいので指定)をするとM3Uの情報が得られる。

#EXTM3U
#EXT-X-VERSION:3
https://cdn.av01.tv/v2/**************************省略******************************Code language: PHP (php)

CDNのURL情報が復元できたら、そのURLをYtDwonloaderにでも食わせるとダウンロード(ローカルに保存)できる。

MissAVの攻略方法

Firefoxで動画配信ページを表示しF12を押して開発者ツールのコンソールを開く
F5を押してリロード(コンソールにダラダラと表示される)
フィルターで「情報」のみを表示させる

URLがいくつかあるが、

  1. 末尾が「playlist.m3u8」ファイルを見つける。
  2. 末尾が「video.m3u8」を見つける。

playlist.m3u8には、配信している解像度のリストが記載されている。多分842×480、1280×720になっているはず。

video.m3u8には、動画の配信URLが記載されている。(こっちが本命)

(例)https://surrit.com/ea631004-8a4d-4f66-b133-fb02719e731e/842x480/video.m3u8Code language: JavaScript (javascript)

video.m3u8のフルURLをコピーして、YtDwonloaderにでも食わせたらダウンロード開始となる。

TKTubeの攻略方法

TKTubeで目的とする動画配信ページを表示して、ブラウザでソースを表示する。
検索で「mp4」を検索すると、「video_alt_url」というURL情報が見つかる。「video_alt_url」を検索しても良いと思う。

このURLはmp4となっているが動画ファイルでは無いので、URLをコピーして、ブラウザを新規TABで開いてこのURLを表示する。Webブラウザ内でプレーヤーが起動して動画を再生出来る状態になる。このまま視聴することも可能。

動画を右クリックで保存できそうだができない。この時のブラウザーのURLに注目するのがポイントで、先程コピペしたURLからクラウドフレアのURLにリダイレクトされていることがわかる。このURLをコピーする

(参考)F12で開発者ツールを起動し、フィルターで「要求」のみを表示させると様子がわかる。下記のような長いURLがgetされている。クラウドフレアを使って配信していると分かった。(このURLは時間制限があるみたい。TKTubeは配信の構造的に高度だとわかる。)

(例)https://eu3.a1e6a123561e5555ac4610a91560c3b5.r2.cloudflarestorage.com/40000/40246/40246_720p.mp4?X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=2a2a645851f2acf122c8bd4809ee7f5d%2F20250104%2Fauto%2Fs3%2Faws4_request&X-Amz-Date=20250104T035139Z&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Signature=5fb991edba1d066dcb21ceff8c0625f13789c80e4863e81a5b75c9fd57d28e40Code language: JavaScript (javascript)

上記でコピーしたURLを、YtDownloaderに食わせると動画が見つかるので、ファイル名を任意に指定してダウンロード開始すると保存出来た。

クラウドフレアからの動画配信なので驚くほど高速ダウンロードしていて笑ってしまう。配信サーバーの性能の違いは大きいということが実感できる。

VLC Media Playerで直に再生できる

上記4項目は、YtDwonloaderで保存する体で記したが、見つけたURLをVLC Media Playerに指定すると直でストリーミング再生できる。もちろんVLC Media Playerでストリーミング再生させた場合は煩わしい広告などは表示されない。

また、yt-dlp、ffmpegで.m3u8のURLを指定して配信サーバから直接ダウンロード保存することも可能。YtDownloaderを使ったのはGUI操作で簡単だから。

3つのアダルト動画配信サイトに共通しているのは、海賊版(違法コピー)動画を配信していることで、ページ内に色々なトラップ広告が紛れ込んでいること。アダルト動画を無料で観られるという餌でおびき寄せて、これらに誘導して何かしらの金銭を得ようとする意図が見える。

今回のテストにより、トラップ広告を回避して動画を視聴することは比較的容易だということと、高速配信が可能なクラウドフレアを使用している実例があることから、海賊版サイト運営側も設備投資をしている(運用経費がかかっている)ことが見える。トラップ広告に引っかかる人がゼロになればこういう海賊版配信サイトも採算が取れなくなり撲滅できると思うが事はそんなに簡単じゃないんだろうな。

AstalaVRの攻略方法

Oculus GoでVR動画コンテンツをテストする為に巡回していたところ、ストリーミング配信の方式がm3u8ではない配信になっているサイトに出くわして技術的に興味が湧いた。調べた結果、m3u8を使わずとも本当に配信が実現していた。シェルスクリプトを併用することでそれの細切れ動画をつなぎ合わせて1つの動画(mp4)にすることが出来たので備忘録しておく。

このサイトはちょっとユニークな配信方式を取っているので解析が面白かった。考え方の参考になったのは下記の投稿。最後のコメントで解決方法のヒントを書いてくれている(英文)。

AstalaVRを調べてみる

解析方法は、まず、任意のVR動画ページにアクセスし、Firefoxの開発者ツールを起動する。「ネットワーク」タブをクリックして待ち受け状態にする。「メディア」だけ表示にフィルターをかけておくと一目で理解しやすい。

その後動画ページの再生ボタンをクリックしたりスライダーを動かすとつらつらと動画配信のチャンク(5.24MB)が配信されて来る様子がわかる。一つクリックすると右ペインにヘッダー情報が表示されるので「応答ヘッダー」から情報を読み取る。下記2項目が鍵になるとわかった。

content-length:5242880
content-range:bytes 26214400-31457279/783418905

「content-length」は、チャンクと呼ばれる細切れにされた短い動画で、5242880(5.24MB)の根拠となる。ここのサイズは同じなので固定で良さそうだ。次に重要なのは全動画サイズが記された「content-range」で、一番最後の数字「783418905」がそれを示している。

つまり下記の様なイメージとなるはず。(Libre Calcで表として計算させてみた)

後は、Firefoxの開発者ツールでStreamを右クリックして「値をコピー」-「cURLとしてコピー」とすると、Curlコマンドでダウンロード出来る内容がクリップボードに入る。これをメモ帳などに貼り付けて、内容を見てみると「Range: byte=xxxxxx」という記述が肝となることがわかる。

curl 'https://cdn3.astalavr.com/xxyyzz/1440P.mp4?cb=3&token=1234567890-ABCDEFGHIJKLMNOPQRSTUVWXYZ' \
  -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:151.0) Gecko/20100101 Firefox/151.0' \
  -H 'Accept: video/webm,video/ogg,video/*;q=0.9,application/ogg;q=0.7,audio/*;q=0.6,*/*;q=0.5' \
  -H 'Accept-Language: ja,en-US;q=0.9,en;q=0.8' \
  -H 'Referer: https://astalavr.com/' \
  -H 'Range: bytes=20971520-' \
  -H 'Origin: https://astalavr.com' \
  -H 'DNT: 1' \
  -H 'Sec-GPC: 1' \
  -H 'Connection: keep-alive' \
  -H 'Sec-Fetch-Dest: video' \
  -H 'Sec-Fetch-Mode: cors' \
  -H 'Sec-Fetch-Site: same-site' \
  -H 'Accept-Encoding: identity' \
  -H 'Priority: u=4'Code language: JavaScript (javascript)

ストリーミング配信のURLの後ろにTokenの情報があるが、これは時間制限があるのでその都度cURLとしてコピーで取得する必要があると思われる。実際時間が経ってしまうとTokenが無効になってしまう。

Curlコマンドの-Hオプションがつらつらと列記されているわけだが、「Range:」の「スタート値」と「エンド値」を変数で変化させながら範囲を指定し、かつ動画のサイズを超えない限りループさせる方法を考えれば良いという考え方になる。

一応こんな感じでループ処理をやってみて、リダイレクト先に1つのmp4動画として連結できた。動画再生も問題無さそうだ。

!/bin/bash
CHUNK=5242880
TOTAL=751988269
OUT="astalavr_video.mp4"

for ((START=0; START<TOTAL; START+=CHUNK)); do
END=$((START + CHUNK - 1))
[ $END -ge $TOTAL ] && END=$((TOTAL - 1))
echo "Downloading: bytes ${START}-${END} / ${TOTAL}"

curl -H "Range: bytes=${START}-${END}" 'https://cdn3.astalavr.com/xxyyzz/1440P.mp4?cb=3&token=1234567890-ABCDEFGHIJKLMNOPQRSTUVWXYZ' \
  -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:151.0) Gecko/20100101 Firefox/151.0' \
  -H 'Accept: video/webm,video/ogg,video/*;q=0.9,application/ogg;q=0.7,audio/*;q=0.6,*/*;q=0.5' \
  -H 'Accept-Language: ja,en-US;q=0.9,en;q=0.8' \
  -H 'Referer: https://astalavr.com/' \
  -H 'Origin: https://astalavr.com' \
  -H 'DNT: 1' \
  -H 'Sec-GPC: 1' \
  -H 'Connection: keep-alive' \
  -H 'Sec-Fetch-Dest: video' \
  -H 'Sec-Fetch-Mode: cors' \
  -H 'Sec-Fetch-Site: same-site' \
  -H 'Accept-Encoding: identity' \
  -H 'Priority: u=4' \
 --compressed >> "$OUT"
done
echo "ダウンロードが完了しました:$OUT"Code language: PHP (php)

上手く保存できたら考え方として間違って無かったと裏付けが取れた。スクリプトを考えたり実験するのは楽しかったが成功したら興味がなくなったので終わりにする。

大枠はこれで行けるみたいだが、使い勝手を良くする改良を施してみるのもシェルスクリプトのスキルアップ素材としては面白いかも知れない。そういう発想力と改良が便利さにつながる。

CurlはWebの世界では便利なコマンドなので、ほとんどのディストリビューションで標準的に使用できるUNIX/Linuxはとても便利だと思う。WindowsだとCurlやWSLを追加インストールするなりしなくてはならないだろう。

FirefoxでTVer配信を保存する

Firefoxに「Video DownloadHelper」というアドオンをインストールすると、TVerで配信している番組をダウンロード(保存)することができる様になる。

但し、初回はコンパニオンのインストールが必要という表示がされるのでコンパニオン(vdhcoappやffmpegなど)を説明に従ってインストールすることになる。インストールは一発で終わるので簡単だ。ちなみにLinux Mintの場合は、/home/username/.local/share/vdhcoappにffmpeg等がインストールされたことが確認できる。

Video DownloadHelperによるダウンロードはffmpegが担うのでコンパニオンをインストールしないとアドオンだけでは機能しない。アドオン自体は動画配信のURL等を解析して、ffpmegにパラメータとして引き渡して実行させているだけだと思う。

Firefoxアドオン:Video DownloadHelperの使い方

動画を視聴できるページでアドンの操作パネルを表示させると操作ボタンが表示される。

Video DownloadHelperによるTver配信のダウンロード(保存)の様子をキャプチャした画像。

青いボタンの右側にある「…」が3つ縦に並んだボタンをクリックするとストリーミング動画配信の「詳細」を表示することができる。TVerの配信は結構複雑になっていて、映像と音声が別のURLで配信されていることが確認できる。

Video DownloadHelperによるTver配信の詳細を表示させた状態のキャプチャ画像。配信サーバーのURLなどが詳細に見て取れる。

これらの事を特に気にすることなく単に保存したいだけなら使い方は簡単だ。

青いボタンの左側(下向き矢印)をクリックするとPCローカルに保存する動作が走り出す(ffpmegがダウンロードを始める)。TVerからのダウンロードは結構高速なので速度はあんまり気にする必要は無いかも知れない。

最近のストリーミング動画ダウンロード界隈では高速で対応サイトが非常に多くて有名な、「yt-dlp」に比べるとダウンロード速度も遅いしかゆいところに手が届く的な仕組みでは無いが、Webブラウザ(Firefox)とコンパニオンだけで動作するシンプルさが逆に柔軟性を保っていると評価しておく。備えておくと結構便利なアドオンだと思うし、ストリーミング動画の構造も見えやすいツールだと思う。

ハッシュ(Hash)チェックのコマンド

OSのISOファイルなんかをダウンロードした際に、配布元でハッシュを公開しているので、改ざんされたり(ウィルスを仕込まれたり)してないかハッシュをチェックするのは習慣づけた方が良い。

Windowsでハッシュチェック

コマンドプロンプトかPowerShellでコマンドを投入

> certutil -hashfile [対象ファイルのPATH] [ハッシュアルゴリズム]
> certutil -hashfile c:\users\aoipuchu\desktop\Download.ISO SHA256

ハッシュアルゴリズムは下記リストから指定可能。端折るとSHA1で計算される。

  • MD2
  • MD4
  • MD5
  • SHA1
  • SHA256
  • SHA384
  • SHA512

Linuxでハッシュチェック

Linuxでもハッシュチェック(計算)はできる。Windowsの場合はオプションでアルゴリズムを指定していたが、Linuxの場合はコマンドそのものを使い分ける。

md5sum /home/aoipuchu/desktop/Download.ISO
sha1sum /home/aoipuchu/desktop/Download.ISO
sha256sum /home/aoipuchu/desktop/Download.ISO
sha384sum /home/aoipuchu/desktop/Download.ISO
sha512sum /home/aoipuchu/desktop/Download.ISO

感じ方は人それぞれだと思うが、個人的にはLinuxの方がシンプルで覚えやすいと感じる。Linuxの方はハッシュ値の比較も簡単で、配布サイトにあるハッシュ値ファイル(テキストファイル(sha256.txtとする))をダウンロードしておいて、コマンドで比較できる。

sha256sum --check sha256.txtCode language: CSS (css)

複数ファイルのハッシュ値をハッシュ値ファイルに列記しておけば、全部比較してくれるので、複数ファイルのやり取りなんかにも有効な手段。まあこれが本来の使い方だろう。

Linuxコマンドを使ってWindowsのプロダクトキーを抽出する

昔はPCハードウェアにWindowsのシリアル番号付きステッカーが貼り付けられていましたが、近年のWindowsではプロダクトキーがデジタル化され、UEFIに埋め込まれたキーが保存されているので、OSをLinuxに入れ替えた状態では簡単に調べられません。

LinuxでWindows 11のプロダクトキーを抽出する方法

下記のコマンドをLinuxのターミナルから実行(debian系では上手く抽出できた)

~$ sudo strings /sys/firmware/acpi/tables/MSDM | grep -E '[A-Z0-9]{5}(-[A-Z0-9]{5}){4}'Code language: JavaScript (javascript)

元ネタは下記

タイトルとURLをコピーしました