MacにTSharkを入れてTelnetのデータ部分だけを取り出したかったのでやってみました。備忘録で残しておきます。
TSharkのインストール
Homebrewでインストールしていきます。
brew install --cask wireshark
インストール途中でパスワードを聞かれるので、Macのログインパスワードを入力します。
インストールできたことを確認します。
tshark -v
TShark (Wireshark) 4.4.1 (v4.4.1-0-g575b2bf4746e).
Copyright 1998-2024 Gerald Combs <gerald@wireshark.org> and contributors.
Licensed under the terms of the GNU General Public License (version 2 or later).
This is free software; see the file named COPYING in the distribution. There is
NO WARRANTY; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Compiled (64-bit) using Clang 14.0.3 (clang-1403.0.22.14.1), with GLib 2.76.6,
with libpcap, without POSIX capabilities, with zlib 1.2.11, with zlib-ng 2.1.6,
with PCRE2, with Lua 5.4.6, with GnuTLS 3.8.4 and PKCS #11 support, with Gcrypt
1.10.2, with Kerberos (MIT), with MaxMind, with nghttp2 1.56.0, with nghttp3
0.15.0, with brotli, with LZ4, with Zstandard, with Snappy, with libxml2 2.11.9,
with libsmi 0.4.8, with binary plugins.
Running on macOS 15.0.1, build 24A348 (Darwin 24.0.0), with Apple M2, with 16384
MB of physical memory, with GLib 2.76.6, with libpcap 1.10.1, with zlib 1.2.12,
with PCRE2 10.39 2021-10-29, with c-ares 1.19.1, with GnuTLS 3.8.4, with Gcrypt
1.10.2, with nghttp2 1.56.0, with nghttp3 0.15.0, with brotli 1.0.9, with LZ4
1.9.4, with Zstandard 1.5.5, with libsmi 0.4.8, with LC_TYPE=UTF-8, binary
plugins supported.
取得するインタフェースを確認する
続いて取得するインタフェースを確認するコマンドを実行します。
tshark -D
1. ap1
2. en0 (Wi-Fi)
3. awdl0
4. llw0
5. utun0
6. utun1
7. utun2
8. utun3
9. utun4
10. utun5
11. utun6
12. utun7
13. bridge100
14. vmenet0
15. vmenet1
16. bridge101
17. lo0 (Loopback)
18. anpi0
19. anpi1
20. en3 (Ethernet Adapter (en3))
21. en4 (Ethernet Adapter (en4))
21. en5 (Ethernet Adapter (en5))
こんな感じで出てくるので取得するインタフェースを確認しましょう。
今回は「en5」を使います。
Telnetのパケットを取得する方法
次にTSharkでTelnetのパケットだけを取得する方法です。
プロトコルを指定してパケットを取得する
まずインタフェースを指定する場合は「-i インタフェース」を指定します。
そして、プロトコルを指定する場合は「-Y プロトコル」を指定します。
つまり今回の場合は以下のようになります。
tshark -i en5 -Y "telnet"
取得した状態だと次のようなパケットを取得できます。
tshark -i en5 -Y "telnet"
Capturing on 'USB 10/100/1000 LAN: en5'
322 33.319773 192.168.100.254 → 192.168.100.2 TELNET 81 Will Suppress Go Ahead, Do Echo, Do Negotiate About Window Size, Will Status, Do Remote Flow Control
324 33.321138 192.168.100.2 → 192.168.100.254 TELNET 93 Will Authentication Option, Do Suppress Go Ahead, Will Terminal Type, Will Negotiate About Window Size, Will Terminal Speed, …
325 33.321494 192.168.100.254 → 192.168.100.2 TELNET 81 Don't Authentication Option, Do Terminal Type, Do Terminal Speed, Don't Linemode, Don't New Environment Option
326 33.321617 192.168.100.2 → 192.168.100.254 TELNET 78 Won't Echo, Suboption Negotiate About Window Size
327 33.322017 192.168.100.254 → 192.168.100.2 TELNET 81 Will Echo, 12 bytes data
329 33.322267 192.168.100.2 → 192.168.100.254 TELNET 69 Do Echo
358 47.728030 192.168.100.2 → 192.168.100.254 TELNET 68 2 bytes data
359 47.728658 192.168.100.254 → 192.168.100.2 TELNET 78 12 bytes data
372 54.023539 192.168.100.2 → 192.168.100.254 TELNET 67 1 byte data
373 54.024094 192.168.100.254 → 192.168.100.2 TELNET 67 1 byte data
375 54.057295 192.168.100.2 → 192.168.100.254 TELNET 67 1 byte data
376 54.057730 192.168.100.254 → 192.168.100.2 TELNET 67 1 byte data
378 54.140202 192.168.100.2 → 192.168.100.254 TELNET 67 1 byte data
379 54.140591 192.168.100.254 → 192.168.100.2 TELNET 67 1 byte data
続いて、パケットのデータを含めたキャプチャを取得してみます。
データを含めたプロトコルを指定してパケットを取得する
データを含めたい場合は先程のコマンドに「-V」を追加します。
tshark -i en5 -Y "telnet" -V
そうすると次のようなデータが流れます。
tshark -i en5 -Y "telnet" -V
Capturing on 'USB 10/100/1000 LAN: en5'
Frame 47: 68 bytes on wire (544 bits), 68 bytes captured (544 bits) on interface en5, id 0
Section number: 1
Interface id: 0 (en5)
Interface name: en5
Interface description: USB 10/100/1000 LAN
省略
[Timestamps]
[Time since first frame in this TCP stream: 0.000000000 seconds]
[Time since previous frame in this TCP stream: 0.000000000 seconds]
[SEQ/ACK analysis]
[Bytes in flight: 2]
[Bytes sent since last PSH flag: 2]
TCP payload (2 bytes)
Telnet
Data: \r
データが長すぎるので省略しました。
さて、このデータからDataだけを抜き出します。
ちなみに、Dataを抜き出すときは宛先または送信元を指定しておくとデータが見やすくなります。
理由としては、データの送受信で同じデータを抽出するため、2回同じデータが表示されるためです。
Telnetのデータ部分だけを取得する
データ部分だけを取得したい場合は「-T fields -e 取得したいデータ」を入力します。
今回は送信元を絞っています。
tshark -i en5 -Y "telnet and ip.src==192.168.100.2" -T fields -e telnet.data
結果はこのようになります。
tshark -i en5 -Y "telnet and ip.src==192.168.100.2" -T fields -e telnet.data
Capturing on 'USB 10/100/1000 LAN: en5'
P
a
s
s
w
o
r
d
1
2
3
\r
\r
今回はRTX830にTelnetでログインしてパスワードを「Password123」エンターでログインしたデータが表示されました。
参考にさせて頂いたサイト
【Mac】TSharkのインストール方法と使い方を解説
https://qiita.com/yamaday0u/items/59f70af6f180e7c3eabe
以上です。ありがとうございました。
コメント