UJP - 技術情報1

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

macos でtftpdサーバを稼働させる

macos でtftpdサーバを稼働させる



更新履歴

  • 2023/11/30 初版
  • 2023/12/16 説明追加

はじめに

 このドキュメントは.macOSに内蔵されているtftpdサーバを稼働させ,取得させるファイルを設置して接続テストまでの手順を示す.
 具体的には,PanasonicのL2スイッチPanasonic Switch-M8eG(PN28080)のファームウェアをアップデートする際に,スイッチのPanasonic Switch-M8eG(PN28080)からtftpdサーバに接続してファイルを取得する必要があり,そのために稼働させてみた.
 tftprootの存在を知らなかったので,Error code 512: Access violationが出たりしたが,その対処方法についても簡単に説明してある.

tftpdを稼働する

  • tftpdがmacosで動作しているか確認.


$ sudo lsof -i:69🆑
$

  • 稼働してない.
  • tftpdを起動して動作確認する.


$ sudo launchctl load -w /System/Library/LaunchDaemons/tftp.plist🆑
$ sudo lsof -i:69
COMMAND PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
launchd   1 root   43u  IPv6 0xf3a208ded70b20a7      0t0  UDP *:tftp
launchd   1 root   44u  IPv4 0xf3a208ded70b29d7      0t0  UDP *:tftp
launchd   1 root   50u  IPv6 0xf3a208ded70b20a7      0t0  UDP *:tftp
launchd   1 root   51u  IPv4 0xf3a208ded70b29d7      0t0  UDP *:tftp
$

  • 動作した.

tftpdサーバに接続してファイルの 取得をする(エラーで終わる)

  • 起動したtftpdに接続して転送モードをbinaryに設定.


$ tftp🆑
tftp> connect localhost🆑
tftp> status🆑
Connected to localhost.
Mode: netascii Verbose: off Tracing: off
Rexmt-interval: 5 seconds, Max-timeout: 25 seconds
tftp> ?🆑
Commands may be abbreviated.  Commands are:

connect     connect to remote tftp
mode        set file transfer mode
put         send file
get         receive file
quit        exit tftp
verbose     toggle verbose mode
blksize     set an alternative blocksize (def. 512)
tsize       toggle extended tsize option
trace       toggle packet tracing
status      show current status
binary      set mode to octet
ascii       set mode to netascii
rexmt       set per-packet retransmission timeout
timeout     set total retransmission timeout
tout        toggle extended timeout option
?           print help information
tftp> binary🆑
tftp> status🆑
Connected to localhost.
Mode: octet Verbose: off Tracing: off
Rexmt-interval: 5 seconds, Max-timeout: 25 seconds
tftp>

  • ファイルをgetしたりputしたりする.

tftp> get /tmp/bbb.txt
Error code 512: Access violation
tftp> put aaa.txt
Error code 256: File not found
tftp> put /tmp/bbb.txt
Error code 512: Access violation
tftp>

  • tftprootディレクトリへのアクセス権がない模様.

tftprootディレクトリにファイ ルを配置する

  • tftpdはtftprootディレクトリを起点にファイルのやり取りをする模様.
  • tftprootディレクトリがどこなのか,定義ファイルを確認する.


tftp> quit🆑
$ cat /System/Library/LaunchDaemons/tftp.plist🆑
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Disabled</key>
    <true/>
    <key>Label</key>
    <string>com.apple.tftpd</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/libexec/tftpd</string>
        <string>-i</string>
        <string>/private/tftpboot</string> 🈁
    </array>
    <key>inetdCompatibility</key>
    <dict>
        <key>Wait</key>
        <true/>
    </dict>
    <key>InitGroups</key>
    <true/>
    <key>Sockets</key>
    <dict>
        <key>Listeners</key>
        <dict>
            <key>SockServiceName</key>
            <string>tftp</string>
            <key>SockType</key>
            <string>dgram</string>
        </dict>
    </dict>
</dict>
</plist>
$

  • ディレクトリがわかったので存在と内容を確認.


$ ls -la /private/tftpboot🆑
total 0
drwxr-xr-x 2 root wheel  64 10 12 19:16 .
drwxr-xr-x 6 root wheel 192 11 26 03:28 ..
$

  • 何も入ってなかった.
  • ファームウェアファイルをtftprootディレクトリに配置する.


$ sudo mv ~/Downloads/pn28080_v100153.rom /private/tftpboot/.🆑
Password:🔑
$ ls -la /private/tftpboot🆑
total 2264
drwxr-xr-x 3 root    wheel      96 11 30 01:17 .
drwxr-xr-x 6 root    wheel     192 11 26 03:28 ..
-rw-r--r-- 1 ujpadmin staff 2314375 11 29 23:39 pn28080_v100153.rom🈁
$

tftprootディレクトリにおいた ファイルを取得する

  • tftpコマンドでtftprootディレクトリに配置したファイルを取得してみる.


$ tftp localhost🆑
tftp> mode binary🆑
tftp> status🆑
Connected to localhost.
Mode: octet Verbose: off Tracing: off
Rexmt-interval: 5 seconds, Max-timeout: 25 seconds
tftp> get pn28080_v100153.rom🆑
Received 2314375 bytes in 0.2 seconds
tftp> quit🆑
$ ls pn28080_v100153.rom🆑
pn28080_v100153.rom
$

  • 正しく取得できた.

作業が終了したらtftpdサーバを停 止する.


$ sudo launchctl unload -w /System/Library/LaunchDaemons/tftp.plist🆑
$ sudo lsof -i:69
$

  • 停止した後にtftpコマンドで接続しても接続エラーなどが出ないので,ポートがリッスンされているか否かで確認するのが良い.

広告スペース
Google