SlideShare a Scribd company logo
1 of 20
Download to read offline
RPiの見つけ方
Can you tell me how to get, How to get to RPi Street?
自己紹介
idkqh7
•  金沢大学プログラミングサークル(KUPCH)の人
•  専門はバイオインフォマティクス
→やんごとなき理由でセキュリティの研究室へ?
•  趣味でプログラミングや電子工作など	
アイダック
こんなとき困る
_人人人人人_	
> 突然のDHCP <	
 ̄Y^Y^Y^Y^Y ̄	
IPアドレス不明……
IPを特定する方法
Nmap scan report for 192.168.11.18
Host is up (0.0073s latency).
MAC Address: B8:27:EB:A1:B2:C3 (Raspberry Pi
Foundation)
$sudo nmap -sP 192.168.11.1-255 | grep -B 2 Pi
Raspberry Pi が接続されているネットワーク	
“Pi”が存在する行
+前2行表示	
Raspberry Pi の
アドレス特定!
特定したIPでssh接続
Sudoのパスワード入力など
いまいちイケてない感	
シェルスクリプト
改めて問題
【条件】
•  開発機とRaspberry Pi
が同じローカルネット
ワーク
•  IPは不明
DHCPでもSSH接続したい!!
コマンド手順を再確認
1.  ローカルネットワークを特定
2.  IPを指定してMACアドレス取得
3.  MACアドレスからベンダー名を取得
4.  Piの文字列があるか確認
5.  文字列があったらRaspberry Piと断定
6.  ユーザ名を指定しsshで接続
•  MACアドレスはIPからどうやって逆引き?
•  MACアドレスとベンダー名の関係は?
MACアドレスとは?
データリンクに接続された
ノードを識別するための
ユニークな識別番号
(ネットワーク上にあるハードウェアのユニークな識別番号
くらいの認識で良い)
MACアドレスをどんどん書き換えていくパケットの経路	
IPアドレス=住所
MACアドレス=道路案内標識	
MACアドレスの利点
00:00:00:00:00:00	
11:11:11:11:11:11	
22:22:22:22:22:22	
33:33:33:33:33:33	
11:11:11:11:11:11	
 22:22:22:22:22:22	
 33:33:33:33:33:33	
192.168.11.1	
 192.168.22.1	
192.168.11.1	
192.168.22.1	
IPアドレスを知っ
ていれば、どんな
ネットワーク経路
でも通信できる	
ホストA	
ホストB
IPアドレスからMACアドレスへ
②ARP要求パケット送信
•  ターゲットIP=192.168.22.1
•  MACアドレス=?	
④ARP応答パケット送信
•  ターゲットIP=192.168.22.1
•  MACアドレス=01:23:45:67:89:1A	
①192.168.22.1(ホストB)と通信したい	
③MACアドレスの送信
ARP(Address Resolution Protocol)	
ホストA	
ホストB
※ARP要求パケットは同一セグメント上にある全てのホスト・ルータに送信される
MACアドレスの書式
ローカルネットワークに繋がれたデバイスのARP応答パ
ケットにおいて、IPアドレスとMACアドレスは基本的に同じ
デバイスを指す。(同一セグメントにあるので)
B8:27:EB:A1:B2:C3	
ベンダ識別子(OUI)	
OUI
逆引き	
 Raspberry Pi Foundation	
ベンダ内の識別子
(機種ID・シリアルID)
どうやって実装する?	
MACアドレスからIP逆引き
•  MACアドレスからIPアドレスを逆引き=本来はRARP
サーバを用いる
※(Reverse Address Resolution Protocol)
•  そんな面倒くさいことしたくないし、RARPサーバは普通
指定されたMACアドレスがどのIPを使えば良いのかを問
い合わせるために使う
•  簡易版を自前で実装しちゃえYO
IPアドレスからMACアドレスへ
②ARP要求パケット送信
•  ターゲットIP=192.168.22.1
•  MACアドレス=?	
④ARP応答パケット送信
•  ターゲットIP=192.168.11.2
•  MACアドレス=01:23:45:67:89:1A	
①192.168.22.1(ホストB)と通信したい	
③MACアドレスの送信
ARP(Address Resolution Protocol)	
ホストA	
ホストB
※ARP送信ソケットは同一セグメント上にある全てのホスト・ルータに送信される
ARPをキャッシュする
仕組み
•  毎回MACアドレスの問い合わせをするとネットワークを
逼迫→ARPをキャッシュする仕組みが存在
•  ARPをキャッシュする仕組み=ARPテーブル→少しの間、
自前でIPアドレスとMACアドレスの対応リストを持つ(数
分で消える)
•  ARPテーブルの更新方法=実際に通信ができたらリスト
が更新される
具体的にどうする?
1.  Ping打つ
2.  「arp –a」でARPのキャッシュ情報を表示
3.  IPアドレスとMACアドレスの対応が分かる
4.  簡易逆引き機能(RARPサーバ)を実装
5.  ひっそりとssh接続する
	
Pythonで実装
衝撃の事実
• Rawソケットレイヤ(TCP/UDP
以外のパケット)を扱うときは、
Pythonでスクリプト書いても
sudoしないとダメ
Pythonる
if __name__ == '__main__':
my_ip = gethostbyname(gethostname())
network = my_ip[0:-1]
print('My local network is ' + network + '*')
ip = ''
FNULL = open(os.devnull, 'w')
print('Find Raspberry Pi ', end='')
stdout.flush()
for i in range(256):
ip = network + str(i)
subprocess.call(['ping', '-c 1', '-t 1', ip], stdout=FNULL)
print('.', end='')
stdout.flush()
if i % 5 == 0:
ip = get_rpi_ip(network)
if ip != '':
print('Correct?')
print('Try login via ssh on this. ' + '(IP:' + ip + ')')
stdout.flush()
try:
ssh(ip)
break;
except:
print('Cannot login via ssh.')
stdout.flush()
【コード概要】
コマンド直書き最強
•  Ping打ってARPキャシュ更新
•  「arp -a」でテーブルを表示
•  OUIで検索してRPiのIP逆引き
•  ssh接続
http://goo.gl/9XHYZP
https://gist.github.com/idkqh7/10467235
終わり
余談
•  Q. ローカルネットワーク内をブルートフォースでsshすれ
ば良いんじゃね?
•  A. そうとも言う。
•  Q. ローカルネットワークIP内の指定したベンダや機器
だけを狙うツールに転用可能?
•  A. そうとも言う。
•  Q. Raspberry Piに限った話ではないよね?
•  A. そうとも言う。

More Related Content

What's hot

メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発Shinya Takamaeda-Y
 
PYNQ 祭り: Pmod のプログラミング
PYNQ 祭り: Pmod のプログラミングPYNQ 祭り: Pmod のプログラミング
PYNQ 祭り: Pmod のプログラミングryos36
 
Bluetoothl-Low-Energy入門講座-part1
Bluetoothl-Low-Energy入門講座-part1Bluetoothl-Low-Energy入門講座-part1
Bluetoothl-Low-Energy入門講座-part1edy555
 
PyCoRAM: Python-Verilog高位合成とメモリ抽象化によるFPGAアクセラレータ向けIPコア開発フレームワーク (FPGAX #05)
PyCoRAM: Python-Verilog高位合成とメモリ抽象化によるFPGAアクセラレータ向けIPコア開発フレームワーク (FPGAX #05)PyCoRAM: Python-Verilog高位合成とメモリ抽象化によるFPGAアクセラレータ向けIPコア開発フレームワーク (FPGAX #05)
PyCoRAM: Python-Verilog高位合成とメモリ抽象化によるFPGAアクセラレータ向けIPコア開発フレームワーク (FPGAX #05)Shinya Takamaeda-Y
 
Rosserial無線化への招待 〜Invitation to wirelessization by rosserial〜
Rosserial無線化への招待 〜Invitation to wirelessization by rosserial〜Rosserial無線化への招待 〜Invitation to wirelessization by rosserial〜
Rosserial無線化への招待 〜Invitation to wirelessization by rosserial〜Tatsuya Fukuta
 

What's hot (6)

銀行ロビーアシスタント
銀行ロビーアシスタント銀行ロビーアシスタント
銀行ロビーアシスタント
 
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
 
PYNQ 祭り: Pmod のプログラミング
PYNQ 祭り: Pmod のプログラミングPYNQ 祭り: Pmod のプログラミング
PYNQ 祭り: Pmod のプログラミング
 
Bluetoothl-Low-Energy入門講座-part1
Bluetoothl-Low-Energy入門講座-part1Bluetoothl-Low-Energy入門講座-part1
Bluetoothl-Low-Energy入門講座-part1
 
PyCoRAM: Python-Verilog高位合成とメモリ抽象化によるFPGAアクセラレータ向けIPコア開発フレームワーク (FPGAX #05)
PyCoRAM: Python-Verilog高位合成とメモリ抽象化によるFPGAアクセラレータ向けIPコア開発フレームワーク (FPGAX #05)PyCoRAM: Python-Verilog高位合成とメモリ抽象化によるFPGAアクセラレータ向けIPコア開発フレームワーク (FPGAX #05)
PyCoRAM: Python-Verilog高位合成とメモリ抽象化によるFPGAアクセラレータ向けIPコア開発フレームワーク (FPGAX #05)
 
Rosserial無線化への招待 〜Invitation to wirelessization by rosserial〜
Rosserial無線化への招待 〜Invitation to wirelessization by rosserial〜Rosserial無線化への招待 〜Invitation to wirelessization by rosserial〜
Rosserial無線化への招待 〜Invitation to wirelessization by rosserial〜
 

Similar to RPiの見つけ方

Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステム
Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステムPython, RaspberryPi, Arduinoで作る消費電力モニタリングシステム
Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステムJunichi Kakisako
 
これからのアプリ開発はIPv6対応で行こう!(2014/09/20 OSC Hiroshima版)
これからのアプリ開発はIPv6対応で行こう!(2014/09/20 OSC Hiroshima版)これからのアプリ開発はIPv6対応で行こう!(2014/09/20 OSC Hiroshima版)
これからのアプリ開発はIPv6対応で行こう!(2014/09/20 OSC Hiroshima版)v6app
 
20141023 IPv6 Summit in FUKUOKA 2014 IPv6対応Webサービスの作り方
20141023 IPv6 Summit in FUKUOKA 2014 IPv6対応Webサービスの作り方20141023 IPv6 Summit in FUKUOKA 2014 IPv6対応Webサービスの作り方
20141023 IPv6 Summit in FUKUOKA 2014 IPv6対応Webサービスの作り方v6app
 
160531 IoT LT #15 @ 日本IBM
160531 IoT LT #15 @ 日本IBM160531 IoT LT #15 @ 日本IBM
160531 IoT LT #15 @ 日本IBMToshiki Tsuboi
 
I pv6 research_basical
I pv6 research_basicalI pv6 research_basical
I pv6 research_basicalkuni255
 
Rasbbery pi で遊ぼう
Rasbbery pi で遊ぼうRasbbery pi で遊ぼう
Rasbbery pi で遊ぼうTakumi Yoshida
 
IPv6 を始めてみた
IPv6 を始めてみたIPv6 を始めてみた
IPv6 を始めてみたmiki koganei
 
Internet Week 2018 知っておくべきIPv6とセキュリティの話
Internet Week 2018 知っておくべきIPv6とセキュリティの話Internet Week 2018 知っておくべきIPv6とセキュリティの話
Internet Week 2018 知っておくべきIPv6とセキュリティの話Akira Nakagawa
 
Raspberry Pi and WebIOPi
Raspberry Pi and WebIOPiRaspberry Pi and WebIOPi
Raspberry Pi and WebIOPihiro345
 
Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所
Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所
Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所Y Watanabe
 
04 citynet awsセミナー_クラウドでビックデータのスモールスタート
04 citynet awsセミナー_クラウドでビックデータのスモールスタート04 citynet awsセミナー_クラウドでビックデータのスモールスタート
04 citynet awsセミナー_クラウドでビックデータのスモールスタート充博 大崎
 
クラウドでビックデータのスモールスタート
クラウドでビックデータのスモールスタートクラウドでビックデータのスモールスタート
クラウドでビックデータのスモールスタートYukihito Kataoka
 
レベルを上げて物理で殴る 16x9
レベルを上げて物理で殴る 16x9レベルを上げて物理で殴る 16x9
レベルを上げて物理で殴る 16x9Knit Tiger
 
第4回 SoftLayer勉強会 資料
第4回 SoftLayer勉強会 資料第4回 SoftLayer勉強会 資料
第4回 SoftLayer勉強会 資料Naoki Shibata
 
ソフトウェア技術者から見たFPGAの魅力と可能性
ソフトウェア技術者から見たFPGAの魅力と可能性ソフトウェア技術者から見たFPGAの魅力と可能性
ソフトウェア技術者から見たFPGAの魅力と可能性Kenichiro MITSUDA
 
ロボットシステム学2015年第7回
ロボットシステム学2015年第7回ロボットシステム学2015年第7回
ロボットシステム学2015年第7回Ryuichi Ueda
 
Fast Sensing IoT LT スライド
Fast Sensing IoT LT スライドFast Sensing IoT LT スライド
Fast Sensing IoT LT スライドAkira Kashihara
 
131106 03 i-rex2013
131106 03 i-rex2013131106 03 i-rex2013
131106 03 i-rex2013openrtm
 

Similar to RPiの見つけ方 (20)

Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステム
Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステムPython, RaspberryPi, Arduinoで作る消費電力モニタリングシステム
Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステム
 
これからのアプリ開発はIPv6対応で行こう!(2014/09/20 OSC Hiroshima版)
これからのアプリ開発はIPv6対応で行こう!(2014/09/20 OSC Hiroshima版)これからのアプリ開発はIPv6対応で行こう!(2014/09/20 OSC Hiroshima版)
これからのアプリ開発はIPv6対応で行こう!(2014/09/20 OSC Hiroshima版)
 
20141023 IPv6 Summit in FUKUOKA 2014 IPv6対応Webサービスの作り方
20141023 IPv6 Summit in FUKUOKA 2014 IPv6対応Webサービスの作り方20141023 IPv6 Summit in FUKUOKA 2014 IPv6対応Webサービスの作り方
20141023 IPv6 Summit in FUKUOKA 2014 IPv6対応Webサービスの作り方
 
160531 IoT LT #15 @ 日本IBM
160531 IoT LT #15 @ 日本IBM160531 IoT LT #15 @ 日本IBM
160531 IoT LT #15 @ 日本IBM
 
I pv6 research_basical
I pv6 research_basicalI pv6 research_basical
I pv6 research_basical
 
rpi_handson_2
rpi_handson_2rpi_handson_2
rpi_handson_2
 
Rasbbery pi で遊ぼう
Rasbbery pi で遊ぼうRasbbery pi で遊ぼう
Rasbbery pi で遊ぼう
 
Mob no 1_lt
Mob no 1_ltMob no 1_lt
Mob no 1_lt
 
IPv6 を始めてみた
IPv6 を始めてみたIPv6 を始めてみた
IPv6 を始めてみた
 
Internet Week 2018 知っておくべきIPv6とセキュリティの話
Internet Week 2018 知っておくべきIPv6とセキュリティの話Internet Week 2018 知っておくべきIPv6とセキュリティの話
Internet Week 2018 知っておくべきIPv6とセキュリティの話
 
Raspberry Pi and WebIOPi
Raspberry Pi and WebIOPiRaspberry Pi and WebIOPi
Raspberry Pi and WebIOPi
 
Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所
Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所
Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所
 
04 citynet awsセミナー_クラウドでビックデータのスモールスタート
04 citynet awsセミナー_クラウドでビックデータのスモールスタート04 citynet awsセミナー_クラウドでビックデータのスモールスタート
04 citynet awsセミナー_クラウドでビックデータのスモールスタート
 
クラウドでビックデータのスモールスタート
クラウドでビックデータのスモールスタートクラウドでビックデータのスモールスタート
クラウドでビックデータのスモールスタート
 
レベルを上げて物理で殴る 16x9
レベルを上げて物理で殴る 16x9レベルを上げて物理で殴る 16x9
レベルを上げて物理で殴る 16x9
 
第4回 SoftLayer勉強会 資料
第4回 SoftLayer勉強会 資料第4回 SoftLayer勉強会 資料
第4回 SoftLayer勉強会 資料
 
ソフトウェア技術者から見たFPGAの魅力と可能性
ソフトウェア技術者から見たFPGAの魅力と可能性ソフトウェア技術者から見たFPGAの魅力と可能性
ソフトウェア技術者から見たFPGAの魅力と可能性
 
ロボットシステム学2015年第7回
ロボットシステム学2015年第7回ロボットシステム学2015年第7回
ロボットシステム学2015年第7回
 
Fast Sensing IoT LT スライド
Fast Sensing IoT LT スライドFast Sensing IoT LT スライド
Fast Sensing IoT LT スライド
 
131106 03 i-rex2013
131106 03 i-rex2013131106 03 i-rex2013
131106 03 i-rex2013
 

RPiの見つけ方