■
Wiresharkを用いたWi-fiスキャン
目的
パケットキャプチャツールであるWiresharkを用いて、無線LANを流れるパケットをキャプチャします。
準備
まずは下記のものを用意してください
- 無線LANに接続可能なLinuxマシン
インストール
Ubuntu
$ sudo apt-get install wireshark
ArchLinux
$ sudo pacman -Sy wireshark
設定
まずは、インターフェースの設定を行います。
無線LANカードには次のようなモードがあります。
- マネージモード:普段最も使う、アクセスポイントへ接続するモード
- アドホックモード:アクセスポイントを介さず端末同士で直接接続するモード 最近ではゲーム機の通信などに用いられる
- マスターモード:テザリングなど、自分がアクセスポイントとなり、クライアントを接続させて通信するモード
- モニターモード:今回使う、自分はデータの送信は行わず、ただ飛び交うパケットを受信し続けるモード
これらからわかるように普段は無線LANカードはマネージモードになっています。 このままでは、飛び交うパケットのキャプチャができないのでモニターモードに設定します。
iwconfigで確認してみましょう。
$ iwconfig
wlan0やlwp2s0などで表されるのが無線LANカードです。 Mode:のうしろにManagedと書いてある場合はマネージモードになっています。
設定
まずは、普段は無線LANカードは有効になっています。 設定を行うためにip linkを使ってdownにさせます。
wlp2s0はiwconfigで確認したデバイス名に各自置き換えてください。
# Ubuntuの場合 $ sudo iwconfig wlp2s0 down # ArchLinuxの場合 $ sudo ip link set down wlp2s0
この操作を行わないと、下記のように怒られます。
Error for wireless request "Set Mode" (8B06) : SET failed on device wlp2s0 : Device or resource busy.
ip linkでdownにさせたため、ifconfigで確認すると、wlp2s0(または任意のデバイス名)は見えなくなっています。
$ ifconfig
さて、これで設定を行うことができるようになりました。
無線LANカードのモードをモニターモードに設定します。
$ sudo iwconfig wlp2s0 mode monitor
これでモードがモニターモードに設定されました。 iwconfigで確認してみましょう。
$ iwconfig
Mode:Monitorとなっていると思います。 Managedに戻す場合は、monitorの部分をmanagedに変えてください。
次にさきほど、ip linkでdownにしたインターフェースをupにします。 これによってifconfigでも確認できるようになり、インターフェースが使えるように。
# Ubuntuの場合 $ sudo iwconfig wlp2s0 up # ArchLinuxの場合 $ sudo ip link set up wlp2s0 # 次にどちらの場合も $ ifconfig
これで設定は完了です。
もし、ビーコンパケットを読んでカレントチャンネルを得た場合は、チャンネルを変える必要が出てくるかもしれません。 チャンネルを変える場合は下記のように実行してください。
この場合はチャンネルを8に変えてください。
$ sudo iwconfig wlp2s0 channel 8
キャプチャ
設定を完了させたので、いよいよキャプチャを行います。
wiresharkを起動してください。
$ sudo wireshark
ここからはいつもどおりのパケットキャプチャです。 wiresharkの説明を見ながらインターフェースをwlp2s0など無線LANカードに設定して、キャプチャを行ってください。
おわりに
いかがでしたでしょうか。 わからないことなどがありましたら、ご質問だくさい。
2015/7/28
■
Linuxの固定IP設定
目的
今回はLinuxの固定IPの設定についてです。
サーバや組み込みなどではDHCPを用いたIPアドレスの割当ではなく、事前にデバイスとIPアドレスが関連付けられている固定IPの方が多く用いられます。
今回は、そんな任意のIPアドレスの割当方法をやっていきたいと思います。
方法
では、ここからはIPアドレスの設定を行っていきます。
Linuxの中でも、ディストリビューションによって採用するソフトが変わるため、今回はArchLinuxなどnetctlを使うOSをメインにやっていきます。
準備
まずは下記のものを用意してください
- ネットワークに接続したLinuxマシン
以上です。
一時的なIPアドレスの割当
この方法では、再起動すると設定が初期化されてしまうので、恒久的な設定をしたい場合は後述の方法で行ってください。
この方法は、接続したDHCP機能がないデバイスと通信がしたいときなどに一時的に使用します。
まずは、設定するデバイス名を調べてください。
$ ifconfig
ArchLinuxの場合
ipを使って一時的に設定します。
デバイス名がわかったら、下記のコマンドを実行します。IPアドレス、サブネットマスク、デバイス名は適宜設定してください。
$ sudo ip addr add 192.168.7.2/24 dev enp4s0"
もう一度ifconfigで確認して、IPアドレスが割り当てられていたら成功です。
恒久的なIPアドレスの割当
この方法で設定したIPアドレスは再起動しても設定が維持されます。
多くの場合はこちらの方法を使います。
まずは、設定するデバイス名を調べてください。
$ ifconfig
ArchLinuxの場合
ArchLinuxはnetctlを採用しているため、設定にはnetctlを使います。
特徴として、デバイスごとに設定ファイルを作成して有効にします。
まずは、設定ファイルのテンプレートをコピーします。
$ sudo cp /etc/netctl/examples/ethernet-static /etc/netctl/staticip
コピーしてきたファイルは下記のようなものになっています。
Description='A basic static ethernet connection' Interface=eth0 Connection=ethernet IP=static Address=('192.168.1.23/24' '192.168.1.87/24') #Routes=('192.168.0.0/24 via 192.168.1.2') Gateway='192.168.1.1' DNS=('192.168.1.1')
インターフェイスやIPアドレスなどは適宜設定してください。
私の環境では、下記のように設定ました。
Description='A basic static ethernet connection' Interface=enp4s0 Connection=ethernet IP=static Address=('192.168.1.23/24') Gateway='192.168.1.1' DNS=('8.8.8.8')
ファイルを保存したら次に、有効にします。
$ sudo netctl enable staticip
再起動後に固定IPが有効になります。
$ sudo reboot
2015/10/21追記
上記方法ではうまくいかない場合があります。 その場合は下記方法を試してみてください。
$ sudo systemctl stop netctl-ifplugd@eth0 $ sudo netctl stop-all $ sudo systemctl disable netctl-ifplugd@eth0.service $ sudo systemctl enable netctl@eth0 $ sudo netctl enable staticip
Ubuntu・Debianの場合
UbuntuやDebianでは、/etc/network/interfacesを編集することで実現します。
/etc/network/interfacesを開いてください。
ファイルには下記のようなものが書いてあると思います。
auto lo iface lo inet loopback
これはloの設定です。
今回は、さらにこれに設定したいデバイスの情報を追加していきます。
このファイルの下に下記の情報を追加してください。 デバイス名・アドレス・ネットマスクは適宜変更してください。
auto eth0 iface eth0 inet static address 192.168.1.200 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameservers 8.8.8.8
ファイルを保存し、再起動後に固定IPが有効になります。
$ sudo reboot
おわりに
わからないことなどがありましたら、ご質問だくさい。2015/7/02
■
pacmanの使い方
目的
ArchLinuxのパッケージ管理マネージャーpacmanの使い方メモです。
準備
まずは下記のものを用意してください
- ArchLinuxマシン
インストール
パッケージのインストール
$ sudo pacman -S パッケージ名
ローカルパッケージのインストール
$ sudo pacman -U パッケージ名
削除
パッケージのアンインストール
$ sudo pacman -Rns パッケージ名
孤立パッケージのアンインストール
$ sudo pacman -Rsn $(pacman -Qtdq)
アップデート
データベースの更新
$ sudo pacman -Sy
アップデート
$ sudo pacman -Syu
検索
パッケージの検索
$ sudo pacman -Ss パッケージ名
インストール済みパッケージの検索
$ sudo pacman -Qs パッケージ名
インストール済みパッケージ
インストール済みパッケージの表示
$ sudo pacman -Qqe
コマンドのパッケージのチェック
コマンドがどのパッケージでインストールされたのかを調べたい時には下記のように実行します。
この場合はifconfigを調べます。
$ pacman -Qo `which ifconfig`
おわりに
いかがでしたでしょうか。 わからないことなどがありましたら、ご質問だくさい。
2015/7/28
2015/8/10 追記
■
nmapの使い方
目的
便利なポーツスキャニングツールnmapの使い方を、必要に応じて追記しながら解説します。
準備
まずは下記のものを用意してください
- Linuxマシン
インストール
Ubuntu
$ sudo apt-get install nmap
ArchLinux
$ sudo pacman -Sy nmap
使い方
pingスキャン
pingを使ってネットワーク上のホストをスキャンします。
192.168.1.1から192.168.1.255までスキャンをしてみます。
$ nmap -sP 192.168.1.1-255
sshスキャン
sshが使用する22番ポートにパケットを送り、sshが起動しているかどうかをスキャンします。
これにより、ネットワーク上に存在するraspberrypiやbeagleboneblackのIPアドレスを推測することができます。
$ nmap -p22 192.168.1.1-255
開いているIPアドレスのみを表示する場合はgrepに流し込んでopenの文字を探します。
$ nmap -p22 192.168.1.1-255 | grep -i -n -B3 open
OSスキャン
-OオプションでOSの推定をすることができます。
$ sudo nmap -O 192.168.1.1-255
おわりに
いかがでしたでしょうか。 わからないことなどがありましたら、ご質問だくさい。
2015/7/28
■
LinuxでWi-Fiに接続する
目的
接続用アプリケーションをインストールしていないArchLinuxなど、GUIを使わない方法でWi-Fiに接続しなければならない場合があります。
今回はそんな時にwpa_supplicantを使ってWi-Fiに接続する方法についてです。
準備
まずは下記のものを用意してください
- 無線LANに接続できるLinuxマシン
インストール
ArchLinuxの場合は下記のようにしてインストールします。
$ sudo pacman -Sy net-tools wpa_supplicant iw iproute wireless_tools
チェック
現在のデバイスの状態をチェックします。
$ iw dev wlan link
スキャン
利用可能なアクセスポイントをスキャンします。
デバイス名はifconfigなどで調べておいてください。
$ sudo iw dev wlan0 scan # または $ sudo iwlist wlan0 scan
大量の情報が表示されるのでSSIDだけgrepで表示させましょう。
$ sudo iw dev wlan0 scan | grep -i -n ssid # または $ sudo iwlist wlan0 scan | grep -i -n ssid
接続
スキャンして得られたアクセスポイント名を用いて接続します。
wpa_supllicantを使って接続するので、設定ファイルを作成します。
まずは、wpa_passphraseを使って基本となるファイルを作成します。
$ wpa_passphrase your_essid your_password > wpa_supplicant_your.conf
WPA2の場合はこれで十分です。WPAの場合は下記のようにさらに追記します。
network={ proto=WPA key_mgmt=WPA-PSK pairwise=CCMP group=CCMP priority=2 ssid="your_essid" #psk="your_password" psk="**********your_number*************************" }
これを使って接続します。
$ sudo wpa_supplicant -c ./wpa_supplicant_your.conf -i wlan0
おわりに
いかがでしたでしょうか。 わからないことなどがありましたら、ご質問だくさい。
2015/7/30
■
Linux・Windowsでのテキスト変換
目的
今回はLinuxとWindowsのテキスト変換についてです。
LinuxとWindows間でソースコードなどテキストファイルをやりとりしたいことがあります。 その時、USBやクラウドなどを使って転送をすること自体はできますが、テキストエディタで開いてもうまく表示されないことがあります。
これはWindowsとLinuxでは改行コードが異なるためです。
Linuxの改行コードはLFのみです。\nのみで改行して行の頭まで移動します。
Windowsの改行コードはCR/LFの2つです。 \r\nで改行して行の頭まで移動します。
このため、LinuxのテキストファイルをWindowsで開くと改行がされておらず、WindowsのテキストファイルをLinuxで開くと開業されるときに最語に^Mがついてしまいます。
今回はこれらの相互変換をやっていきたいと思います。
方法
準備
まずは下記のものを用意してください
- ネットワークに接続したLinuxマシン
以上です。
チェック
文字コードのチェックはnkfにgオプションをつけて使用します。
$ nkf -g filename
変換
LinuxからWindowsへの変換
LinuxのファイルをWindowsのファイルへ変換します。
$ nkf -w -Lu filename
WindowsからLinuxへの変換
WindowsのファイルをLinuxのファイルへ変換します。
$ nkf -s -Lw filename
おわりに
わからないことなどがありましたら、ご質問だくさい。2015/7/03
■
Linux自動ログイン
目的
今回はLinuxの自動ログインについてです。 ユーザー名・パスワードを入力せずにログインをします。 Ubuntu(Upstart?) Archlinux(systemd)での方法を説明します。
方法
準備
設定したいLinuxマシンを用意してください。
Ubuntu(Raspbian)での方法
Ubuntu(Raspbian)での方法です。
まず、inittabファイルを開きます。
sudo vim /etc/inittab
開いたファイルの中から下の行を見つけ出して、行頭に#をつけてコメントアウトします。
1:2345:respawn:/sbin/getty 38400 tty1
そのすぐ下に下の行を追加します。 "username"は適宜存在するユーザー名に置き換えてください。
1:2345:respawn:/bin/login -f username tty1 /dev/tty1 2>&1
保存して再起動すると自動ログインになります。
ArchLinuxでの方法
ArchLinuxでの方法です。 ArchLinuxはinitデーモンにsystemdを使っています。
まず、systemdの設定ファイルを用意します。
cp /usr/lib/systemd/system/getty@.service /usr/lib/systemd/system/autologin@.service
次に、ファイルを開いて次の行を見つけ出して、行頭に#をつけてコメントアウトします。
ExecStart=-/sbin/agetty --noclear %I $TERM
そのすぐ下に下の行を追加します。 "username"は適宜存在するユーザー名に置き換えてください。
ExecStart=-/sbin/agetty --noclear -a username %I 38400 linux
変更したらファイルを保存して閉じてください。
最後に、systemdに登録して有効化してください。
systemctl disable getty@tty1 systemctl enable autologin@tty1
再起動すると自動ログインになります。
おわりに
いかがでしたでしょうか?
わからないことなどがありましたら、ご質問だくさい。
2015/6/29