簡単にできてしまうということを実感できるかと思います。通信中のパケットを見てしまえば、MACアドレスが他の人にバレバレです。書き換えができてしまうため、MACアドレスだけを認証に使うのは、セキュリティ面では不十分だということが今回のことでよく分かります。※MACアドレスの書き換えを試すだけ、であれば、仮想環境でやりましょう。Box上で使用しました。MACアドレスを表示させるコードの解説はこちらにまとめました。https://wireless-network.net/macaddress-viewer/↑を読んでからだと理解しやすいかもです。MACアドレスを書き換えるコードは、これに少し追記しただけです。0;}実行する前にまずは、MACアドレスを確認します。以下の画像は、インタフェース名も指定してあります。上記のコードを実行してみます。期待通りにMACアドレスの値が書き換わっていることが分かります。このときにifconfigで再度確認しても書き換えた値が表示されます。下位3バイトのみを書き換えました。ここで全6バイトを書き換えるとどうなるのでしょうか。試しにやってみました。MACアドレスをインタフェースにセットするioctl(SIOCSIFHWADDR)でエラーが発生しました。OUIまで書き換えると上手くいかないみたいですね。これも上手く書き換える方法はあるのでしょうか。実は書き換えたMACアドレスでは、インターネットにつながりません。これには以下の原因が考えれます。Boxのサイトで確認はしていないので、ここからは私の憶測が少し混じります。Boxの画面上でMACアドレスを確認してみましょう。すると以下の画面になります。左のネットワーク欄をクリックします。すると、自分が設定しているアダプターリストが開きます。デフォルトではアダプター1に「NAT」が割り当てられています。ホストオンリーアダプター以外であれば、どのアダプターでも良いのですが、アダプター欄の下にMACアドレスが表示されています。これがインタフェースに割り当てられたMACアドレスになります。ちなみに右の緑枠を押すと、MACアドレスを変更することが出来ます。次に仮想環境の内部構造についてもう少し考えてみたいと思います。仮想環境と実環境のイメージです。仮想的なMACアドレスです。物理MACアドレスと仮想MACアドレスが対応づけられることになります。仮想スイッチは以下の目的があります。PC内部にいる複数の仮想OS同士をつなげて、ネットワーク構築する。物理NICと仮想NICを対応付け、仮想OSが外部ネットワークに出られるようにする。Box上の画面でMACアドレスを確認することが出来ます。表示されたこのMACアドレスが仮想スイッチに登録されることになります。仮想OSを使用しているユーザが勝手にMACアドレスの変更をしても仮想スイッチは登録していないアドレスをフィルタリングするようになっています。これは正規の通信と見せかけた、なりすまし防止の効果があります。外部ネットワークに出ようとしたところ仮想スイッチによってパケット破棄されたと考えることができるかと思います。仮想ではなく実環境であれば上手く書き換えられるかと思います。最後まで読んでいただきありがとうございました。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。date*日本語が含まれない投稿は無視されますのでご注意ください。MACアドレスを取得してみました。ARPエントリーを取得して表示させてみました。そのままCで実装したいと思いまいした。...ioctlでインターフェースの状態を取得し表示させてみた(ソケットプログラミング)ifconfigコマンドでインターフェースの状態などが確認できます。そこで今回、プログラムを通してインターフェースの状態を取得してみます。...Cで見るメモリ領域のあれこれ!【text/data/bss/heap/stackセグメントとは?】メモリ領域の勉強をしましょう。プログラムを作るとメモリに格納されます。○○セッションとかセグメントと言います。...PREVpHが微生物燃料電池の発電能力に与える影響を実験してみたNEXT【C++】推論エンジンとエキスパートシステムの実装してみるプロフィール某名門大の大学院生です。IoT、人口知能、ネットワークインフラ系まで幅広く興味があります。いう方のために簡単にまとめてみました。IPv6を取得して標準出力させてみます。自分の目で調査したのでまとめます。変更までする方法をご紹介します。ioctlシステムコールを使います。フラグを引数に指定します。一度まとめておこうと思います。以下が思いつくかと思います。全て"stdio.h"に定義されています。