WSL2

Table of Contents

msfconsole

FreeBSDは4月、7月のように年に4回、pkgが更新される。新しいパッケージに なって、前回失敗してたアプリが動作する様になった。

sakae@slfb:~ $ msfdb init & msfconsole
[!] You need to have postgres installed or specify a database with --connection-string
Metasploit tip: Network adapter names can be used for IP options set LHOST
eth0

                                   ____________
 [%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%| $a,        |%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%]
 [%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%| $S`?a,     |%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%]
 [%%%%%%%%%%%%%%%%%%%%__%%%%%%%%%%|       `?a, |%%%%%%%%__%%%%%%%%%__%%__ %%%%]
 [% .--------..-----.|  |_ .---.-.|       .,a$%|.-----.|  |.-----.|__||  |_ %%]
 [% |        ||  -__||   _||  _  ||  ,,aS$""`  ||  _  ||  ||  _  ||  ||   _|%%]
 [% |__|__|__||_____||____||___._||%$P"`       ||   __||__||_____||__||____|%%]
 [%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%| `"a,       ||__|%%%%%%%%%%%%%%%%%%%%%%%%%%]
 [%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%|____`"a,$$__|%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%]
 [%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%        `"$   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%]
 [%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%]


       =[ metasploit v6.4.7-dev                           ]
+ -- --=[ 2418 exploits - 1244 auxiliary - 423 post       ]
+ -- --=[ 1465 payloads - 47 encoders - 11 nops           ]
+ -- --=[ 9 evasion                                       ]

Metasploit Documentation: https://docs.metasploit.com/

msf6 >
sakae@slfb:~ $ ps awxl
 UID  PID PPID C PRI NI    VSZ    RSS MWCHAN   STAT TT      TIME COMMAND
  :
1001 8719 1026 0  31  0 205636 154084 ttyin    I+    2   0:49.88 ruby /usr/local/bin/msfconsole (ruby32)

コテコテのrubyで出来ています。railsも一枚噛んでいるようです(メモリーを 沢山使うのがrailsの特徴です)。まあ postgressとかを使うなら、当然なのかな。

Metasploitの基本的な使い方を解説

msf6 > search type:exploit php
Matching Modules
================                                                                                                              
   #    Name                                                                                                    Disclosure Date  Rank       Check  Description
   -    ----                                                                                                    ---------------  ----       -----  -----------
   0    exploit/windows/ftp/32bitftp_list_reply                                                                 2010-10-12       good       No     32bit FTP Client Stack Buffer Overflow
   1    exploit/windows/ftp/aasync_list_reply                                                                   2010-10-12       good       No     AASync v2.2.1.0 (Win32) Stack Buffer Overflow (LIST)
   2    exploit/aix/rpc_cmsd_opcode21
   :

どんな欠点を突けるか、リストアップしてみた。山程有るぞ。

qemu

前回、愚問をやった。2つのqemuで、同一portをフォワードするのは、許され ない。

/qemu/net/slirp.c

static int slirp_hostfwd(SlirpState *s, const char *redir_str, Error **errp) {
 :
#if SLIRP_CHECK_VERSION(4, 5, 0)
    err = slirp_add_hostxfwd(s->slirp,
            (struct sockaddr *) &host_addr, sizeof(host_addr),
            (struct sockaddr *) &guest_addr, sizeof(guest_addr),
            is_udp ? SLIRP_HOSTFWD_UDP : 0);
#else
    err = slirp_add_hostfwd(s->slirp, is_udp,
            host_addr.sin_addr, host_port,
            guest_addr.sin_addr, guest_port);
#endif

    if (err < 0) {
        error_setg(errp, "Could not set up host forwarding rule '%s'",
                   redir_str);
        return -1;
    }

slirp_add_hostfwd は、どこに定義されているのだろう? 山のようにライ ブラリィーを抱えているからなあ。探すのは面倒。

ob$ nm qemu-system-i386 | grep slirp_add_hostfwd
         U slirp_add_hostfwd

まあいいか、深入りは、佳子ちゃん。いや、自分でヒントを出してるじゃん。

ob$ ldd qemu-system-i386 | cut -b40- | grep local >/tmp/SLIST
ob$ for f in `cat /tmp/SLIST`
> do
> echo $f
> nm $f | grep slirp_add_hostfwd
> done
/usr/local/lib/libcapstone.so.3.0
  :
/usr/local/lib/libslirp.so.0.1
00011830 T slirp_add_hostfwd

何の事は無い。同名のライブラリィーになってるじゃん。

ならば、2022と3322とかだと大丈夫? forwarding先はsshの22なんだけど。。 NATの中ってか、全く別マシンなので問題無しなんだな(いわゆる、port already in useは発生しない。だって、これを検出するのは、ホストOSですか ら)。

で、こんな戯れをやってたら、qemuのNATを止めてホスト側のネットワークに ゲストを参加させるには、どうしたら良いのって疑問が出てきた。ぐぐると、 答一発であった(但し、リナの雑音が、相変わらず、すさまじい)。

FreeBSD 上で Qemu を母艦と同じネットワークに置く

host$ kldload if_bridge
host$ sysctl net.link.tap.user_open=1
host$ ifconfig tap0 create
host$ ifconfig tap0 up
host$ chown sakae:sakae /dev/tap0

host$ ifconfig bridge  create
bridge0
host$ ifconfig bridge0 addm em0 addm tap0 up

bridgeはもっと分かり易いhubとかにしようとしたら駄目だった。あくまで、 橋と名乗りたいわけね。

qemu-system-x86_64 -m 256 -nographic -no-fd-bootchk \
  -net nic -net tap,ifname=tap0 \
  -hda disk

これでゲスト側は、dhclientでホスト側のdhcpdにリレーしてくれた。

母艦がLinuxだと、 QEMU Tips こういう事をやるのかな。ゴチャゴチャだなあ。

OpenBSDが母艦なら、tap0は既に用意されてる。

ob$ ls -l /dev/tap0
crw-------  1 root  wheel  94, 0 Apr 13 06:26 /dev/tap0
ob$ doas chmod 660 /dev/tap0
ob$ ls -l /dev/tap0
crw-rw----  1 root  wheel  94, 0 Apr 13 06:26 /dev/tap0
doas ifconfig tap0 up
doas ifconfig bridge0 add tap0 add iwn0 up
ob$ cat tap-boot.sh
doas sh -c "doas -u $USER qemu-system-i386 -nographic -net nic \
    -net tap,fd=3 -no-fd-bootchk -hda disk 3<>/dev/tap0"

これで良いはずなんだけど、IPが取得できないなあ。

forwading

この際だから、qemuのフォワーディングを見ておく。

qemu-system-i386 -m 96 -nographic -no-fd-bootchk -s \
  -net nic -net user,hostfwd=tcp::2022-:22  \
  -hda disk

こんな起動スクリプトでゲストを起動してる。母艦側からゲストに接続するに は、 ob$ ssh -p2022 localhost とする。

qemu$ netstat -f inet
Active Internet connections
Proto   Recv-Q Send-Q  Local Address          Foreign Address        TCP-State
tcp          0     36  10.0.2.15.ssh          10.0.2.2.9698          ESTABLISHED

ゲスト側での結果。ssh(22)のポートに、ホスト側から9698ポートで接続して きた。10.0.2.2は、ゲスト側ってかqemu-system-i386が用意したデフォルト・ ゲートウェイになる。

ob$ netstat -f inet
Active Internet connections
Proto   Recv-Q Send-Q  Local Address          Foreign Address        TCP-State
tcp          0      0  localhost.9698         localhost.2022         ESTABLISHED
tcp          0      0  localhost.2022         localhost.9698         ESTABLISHED

こちらは、母艦側。2022ポートが対向する9698に接続されて、ゲストと疎通が できるんだな。9698は接続の度に異なる。こやつは、qemuが勝手に用意したも のだ。この9698が仲介役となって、母艦側の2022とゲスト側の22を結びつける んだな。

WSL2

これまた、前回の話になるけど、real speedって事で、ファイルへの書き込み スピードをチェックした。Debian/wsl2が断トツに速い。Windows10とDebianが、 それぞれのcpuで動作するからだ。ならば、qemuを入れてみるか。

その前に、対比としてOpenBSD(32Bit)/VMWareを入れてみようとしたんだけど、 インストール中のファイル展開に膨大な時間がかかってしまった。これはもう、 比較をするまでもなく、性能が悪い事を自ら晒しているな。

sakae@atom:~$ sudo apt install qemu-system-x86
   :
  ovmf pocketsphinx-en-us qemu-block-extra qemu-system-common qemu-system-data
  qemu-system-gui qemu-system-x86 qemu-utils seabios va-driver-all
  vdpau-driver-all
0 upgraded, 200 newly installed, 0 to remove and 0 not upgraded.
Need to get 193 MB of archives.
After this operation, 651 MB of additional disk space will be used.

やはり、付属品を多数従えてやってきた。

qemu-kvmが利用可能かと調べてみたが、サポートされてなかった。石が古いの で駄目なのか。

Windows Subsystem for Linuxガイド 第26回 WSLで仮想環境を使う - 後編

Windows 10の最新ビルドを用い、WSL2で仮想マシン環境を使う

WSL での詳細設定の構成 これを見ると、Windows 11 からか。– nestedVirtualization

ob$ dd if=/dev/zero of=zz bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes transferred in 27.188 secs (38566804 bytes/sec)

これ、OpenBSD(32Bit)の結果。前回は、FreeBSD/VMWareでOpenBSDした時、34 秒だったから、若干は速いのか。

なお、上記MSのURLで紹介されてた設定を施してみた。

sakae@atom:/mnt/c/Users/sakae$ cat .wslconfig
[wsl2]
memory=3G
[experimental]
autoMemoryReclaim=gradual

メモリーのリミットは3Gまでね。キャッシュは適当なタイミングで開放してねっ て設定。だってデフォでWindowsは3Gも使っているから。firefoxとかのブラウ ザー系が使うエリアの確保の為だ。

sakae@atom:~$ cat /etc/wsl.conf
[network]
generateResolvConf = false
#[boot]
#systemd=true

systemdを試しに有効にしてみたら、余計なダエモン君が活動を始めてしまっ たので、使うのを止めた。古風なLinuxであります。

sshd

そんな訳なんで、sshdを起動/停止するスクリプトを作成してみた。最初は、 スクリプトじゃなくて、aliasだけで済むだろうと思っていたんだけど、正体 不明なエラーが発生したので、スクリプトを一本作成した。

sshdが起動したままWSLを終了しても、ダエモンになってて、ずっと動作した ままになる。んで、ついでに停止機能もつけた。 このスクリプトをsudoで起動する様にaliasに登録しておけばよい。

sakae@atom:~$ cat .runSSHD
#! /bin/sh
# Usage: sshd [stop]    # alias sshd='sudo /path/to/.runSSHD'

if [ x$1 = x"stop" ]
then
  if [ -r /run/sshd.pid ]
  then
    kill `cat /run/sshd.pid`
  fi
  exit
fi

if [ ! -d /run/sshd ]
then
  mkdir /run/sshd
fi
/usr/sbin/sshd

使用方法は、こんな感じ。

sakae@atom:~$ sshd
[sudo] password for sakae:
sakae@atom:~$ ps awx | grep sshd
   27 ?        Ss     0:00 sshd: /usr/sbin/sshd [listener] 0 of 10-100 startups
   29 pts/2    S+     0:00 grep sshd
sakae@atom:~$ sshd stop
sakae@atom:~$ ps awx | grep sshd
   35 pts/2    S+     0:00 grep sshd

飯、風呂、寝る みたいに昭和の親父のような朴訥なインターフェースだなあ。 最近のコマンドはスイッチが長すぎて嫌いだ。コマンドの対称性から言ったら、 sshd startとするのが正しいんだろうけど、そんなの無駄。sshdを起動すると 意思が有るなら、sshdだけで十分(stop以外は、わざと無視するのがオイラー 流)です。

many linx

C:\Users\sakae>wsl.exe -l -o
インストールできる有効なディストリビューションの一覧を次に示します。
'wsl.exe --install <Distro>' を使用してインストールします。

NAME                                   FRIENDLY NAME
Ubuntu                                 Ubuntu
Debian                                 Debian GNU/Linux
kali-linux                             Kali Linux Rolling
Ubuntu-18.04                           Ubuntu 18.04 LTS
Ubuntu-20.04                           Ubuntu 20.04 LTS
Ubuntu-22.04                           Ubuntu 22.04 LTS
Ubuntu-24.04                           Ubuntu 24.04 LTS
OracleLinux_7_9                        Oracle Linux 7.9
OracleLinux_8_7                        Oracle Linux 8.7
OracleLinux_9_1                        Oracle Linux 9.1
openSUSE-Leap-15.5                     openSUSE Leap 15.5
SUSE-Linux-Enterprise-Server-15-SP4    SUSE Linux Enterprise Server 15 SP4
SUSE-Linux-Enterprise-15-SP5           SUSE Linux Enterprise 15 SP5
openSUSE-Tumbleweed                    openSUSE Tumbleweed

なんと、あのkaliがインストール出来るのか。ローリングって事は、五月雨で 更新されてるんだな。

Windows10は、インテル入ってるなんだけど、Debian/WSL2には、 kvm_intel が入っていない。これは、ひょっとしてパッケージングのミスかと思って、 Ubuntuを入れてみた。22.04がやってきたぞ。なめられたものである。それは そうと、相変わらず、インテルはやってこない。もう石が古すぎるって結論だ な。

Perplexity

AI検索エンジン「Perplexity」でネット検索はどう変わるのか

Perplexity <– Entry Here

Q: 炎天下の車内を効率よく冷やす、カークーラーの使用方法を教えてくださ い

A: 炎天下の車内を効率よく冷やすためのカークーラーの使用方法について、以下の手順を実践することをおすすめします:

  1. 乗車前に車内の熱気を逃がす:

ドアを3〜5回あおぐように開閉し、対角線上のドアの窓を全開にして空気の通り道を作ります。これにより車内温度を5〜8°C程度下げることができます[2]。

  1. エアコンの設定を最強にする:

乗車後すぐに、エアコンを最も低い温度設定にし、風量を最大にします[2]。

  1. 外気導入から内気循環へ切り替える:

最初の5分ほどは外気導入にして車内の暑い空気を入れ替え、その後内気循環に切り替えます。これにより、すでに冷えた空気を効率的に循環させることができます[2]。

  1. 走行中の窓開け:

走り始めのうちは、運転席の窓と左後ろの窓を開けて空気の通り道を作ります。これにより効率よく車内の空気を入れ替えることができます[4]。

  1. エアコンコンデンサーに水をかける:

可能であれば、エアコンコンデンサー(通常フロントグリルの裏にあります)に水をかけることで、冷却効率を上げることができます。これにより、エアコンの効き始めを3〜4分程度に短縮できる場合があります[4]。

  1. 車体全体の温度を下げる:

エアコンコンデンサーに水をかけるついでに、車体全体にも水をかけることで、車内の温度をさらに下げることができます[4]。

これらの方法を組み合わせることで、炎天下で50°Cを超えることもある車内温度を、より効率的に快適な温度まで下げることができます[1][2]。また、エアコンを効率よく使用することで燃費の改善にもつながります[1]。

Citations: [1] https://www.youtube.com/watch?v=Obfa2fVw47E [2] https://221616.com/norico/car-air-conditioner/ [3] https://mykobac.jp/news/20240517-1213/ [4] https://www.tax-kyowa.com/syuri_157.html [5] https://www.goo-net.com/magazine/carmaintenance/repair/213419/

エッジのごとく、回答の根拠が出てくるのが◯。


同じ質問をChatGPTにしてみる。

A: 炎天下の車内を効率よく冷やすために、カークーラーの使用方法を以下のステップで説明します。

### 1. 車の換気 まず、車内の熱気を逃がすために、全ての窓を開けて車を走らせます。これにより、車内の高温の空気が排出され、新鮮な空気が入ります。1〜2分程度走行するか、扇風機を利用して空気を循環させるのも効果的です。

### 2. エンジンの始動とエアコンの起動 エンジンを始動し、エアコン(カークーラー)を最大出力に設定します。温度設定を最低温度にし、ファンスピードを最大に設定します。この時、窓はまだ開けたままにしておきます。

### 3. 内気循環モードに切り替え 窓を閉め、エアコンのモードを「内気循環」に切り替えます。これにより、車内の冷えた空気を再循環させ、効率的に車内を冷やすことができます。

### 4. 温度とファンスピードの調整 車内が冷え始めたら、温度設定とファンスピードを適切なレベルに調整します。内気循環モードのままにしておくと、エアコンの効率が上がります。

### 5. 遮光対策 車内の温度上昇を防ぐために、サンシェードやカーテンを利用して直射日光を遮ることも効果的です。

### 6. 駐車場所の選択 駐車する際は、可能な限り日陰や地下駐車場を選びます。直射日光を避けることで、車内温度の上昇を防げます。

これらのステップを踏むことで、炎天下でも効率よく車内を冷やすことができます。

README

おうちで学べる Pythonのきほん

Colaboratory へようこそ を利用して、リカレント教育に。

Janomeを使ってPythonで形態素解析 こういうのも紹介されてた。たまにはパ イするかな。


This year's Index

Home