Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
kernelvm-brain-net
Search
らすぴー
May 11, 2025
Technology
0
850
kernelvm-brain-net
「電子辞書Brainをネットにつなげてみた」
らすぴー
May 11, 2025
Tweet
Share
More Decks by らすぴー
See All by らすぴー
限界環境CPython rev. seccamp2025
raspython3
0
21
kernel-vm-ittekita-yuukousai
raspython3
0
63
pyconjp2024-wince
raspython3
0
14
seccamp2024-edictionary-python-TLS
raspython3
0
17
Other Decks in Technology
See All in Technology
AIエージェントの活用に重要な「MCP (Model Context Protocol)」とは何か
masayamoriofficial
0
240
自社製CMSからmicroCMSへのリプレースがプロダクトグロースを加速させた話
nextbeatdev
0
420
ZOZOマッチのアーキテクチャと技術構成
zozotech
PRO
2
830
PRDの正しい使い方 ~AI時代にも効く思考・対話・成長ツールとして~
techtekt
PRO
0
220
トヨタ生産方式(TPS)入門
recruitengineers
PRO
5
1.4k
mruby(PicoRuby)で ファミコン音楽を奏でる
kishima
2
490
衝突して強くなる! BLUE GIANTと アジャイルチームの共通点とは ― いきいきと活気に満ちたグルーヴあるチームを作るコツ ― / BLUE GIANT and Agile Teams
naitosatoshi
0
280
VPC Latticeのサービスエンドポイント機能を使用した複数VPCアクセス
duelist2020jp
0
350
見てわかるテスト駆動開発
recruitengineers
PRO
6
2.3k
Webアクセシビリティ入門
recruitengineers
PRO
3
1.4k
20250903_1つのAWSアカウントに複数システムがある環境におけるアクセス制御をABACで実現.pdf
yhana
1
100
そのコンポーネント、サーバー?クライアント?App Router開発のモヤモヤを可視化する補助輪
makotot
4
780
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
GraphQLとの向き合い方2022年版
quramy
49
14k
Designing for humans not robots
tammielis
253
25k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
Java REST API Framework Comparison - PWX 2021
mraible
33
8.8k
Writing Fast Ruby
sferik
628
62k
Building Better People: How to give real-time feedback that sticks.
wjessup
368
19k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
284
13k
Testing 201, or: Great Expectations
jmmastey
45
7.6k
Into the Great Unknown - MozCon
thekraken
40
2k
Balancing Empowerment & Direction
lara
3
600
Transcript
@raspython3
活動名 RasPython3 / らすぴー X: @raspython3 普段やってること 各種ウェブツールづくり Discordのボットづくり Linuxいじり
電子辞書いじり ネットワーク関連 etc.
• 低レイヤー初心者 • 低レイヤーの祭典で発表する癖に低レイヤー初心者(オイ) • お手柔らかに… • 登壇初心者 • 軽いノリで登壇してるくせに発表慣れしていません(なぜ)
• 発表資料は多分読みにくいです(致命的) • 声も聞き取りづらいかもしれません(絶望的) • 盛り上げようとしてスベることが多々あります(悲惨) • 温かい目で見守ってくださると幸いです…
None
• SHARPの電子辞書シリーズ • Windows CE(WinCE)が動作 • 2021年以降のモデルは別OS • 2chなどで自作アプリやハックが 盛んだった
SHARP Brain SH-PW7-W 自分が持ってる機体の色違い
None
• 以前から「ネットに繋げたい」という 話題はあった • 2013年 Wi-Fi内蔵のmicroSDアダプタが発見される https://web.archive.org/web/20210128000211/https://awabi.5ch.net/test/ read.cgi/dgoods/1356628236/ >>41 •
2014年 Grain氏が前述アダプタを活用するツールの開発開始 https://web.archive.org/web/20210128233622/https://yomogi.5ch.net/test /read.cgi/dgoods/1407588165/ >>12 PQI Air Card
• 2015年 Grain氏のツール開発ペースがゆっくりだったためかアンチ出現 ネットの話題になるとスレが荒れるように • 以降、ネットの話題を出すとスレが激しく荒れる • Grain氏のツールも(調べた限り)現在まで公開されていない • 「ネット接続は不可能」とされ、ネットの話題はタブーに
• 2019年-2020年 puhitaku氏らがBrainで動作するLinux「Brainux」を開発 Brainuxの登場により、 USBでPCと接続することで Brainがインターネットに つながるように! Brainux
• RNDIS(Remote Network Driver Interface Specification) ↑重要(後で出てきます) • Microsoftが作ったプロトコル •
USBなどを仮想ネットワークアダプタ として扱う(のだと思う) https://learn.microsoft.com/ja-jp/windows-hardware/drivers/network/overview-of-remote-ndis--rndis-
None
遡ること1か月前… (kernelvmで発表するのにちょうどいいネタないかなぁ…) (…せや!) (Brain→)
を使わずにネットつなげてみよ!
『Brainux抜きの ── WinCEのBrainで ── ネットに接続する』 2008年にBrainが発売されてから数多くの先人が 挑戦し儚くも散っていった、いわば 「絶対に越えられない壁」であった
だから開始当初は 「どうせ無理だけどね」 ぐらいにしか思っていなかった
これがBrainの歴史を大きく変えることになるとは 夢にも思っていなかったのである────── (諸説あり)
None
• 作戦 Brainuxと同じ方法(RNDIS)でつなげよう! • 根拠 Brainuxが動いていても、ハード面での 違いはない →ソフト面をどうにかしたら 動くんじゃね?
• コントロールパネルにRNDISの項目あったはず… • RNDISに切り替えても何も起こらないけどね
• 切り替えた時にログが出てるぞ!?
• 以下の表のように対応してた IOCTL_UFN_CHANGE_CURRENT_CLIENT USBFN_1_0 -> ? コントロールパネルでの項目名 Serial_Class ActiveSync Mass_Storage_Class
MSC RNDIS RNDIS Personal_HealthCare_Class PHDC
• どこだったっけ… • レジストリだ!!!
• USBのファンクションドライバの項目がある • コントロールパネルで切り替えても うんともすんともな項目は、レジストリのキーが存在しない (RNDISやPersonal_HealthCare_Classが無いよね)
• ほかの項目のレジストリを見る限り、レジストリ設定と ドライバのDLL(動的リンクライブラリ)しか見つからなかった • レジストリ設定とドライバを用意したら動くのでは?
• 実験 ほかのドライバのレジストリ設定をコピペしてみる • 結果 コントロールパネルでRNDISを選択すると、コピペ元の ドライバが動作した(成功) • この方針でよさそう
• レジストリ設定とDLLはどうやって用意すれば…? • レジストリ設定のほうはネットで漁りまくってなんとなーく わかった • ドライバの書き方が… • 低レイヤーもっと早く入門しておけばよかった…
• 調べて分かったこと • Windows系OSのRNDISドライバはMicrosoftが用意しているらしい • WinCEもどうやら上に同じのよう • 自分で書くのはすぐには難しそう
• ん?待てよ • 「MicrosoftがRNDISドライバ用意してる」 • じゃあRNDIS有効化したWinCEをビルドできるのでは? • ビルドしたWinCEからRNDISのドライバを取り出せば勝ち
• WinCEはMicrosoft Visual Studio 2005/2008(VS2005/2008) でビルドできる • VS2005/2008の評価版なら何とか入手可能 • ビルドのやり方はこのページを参考に
https://brain.fandom.com/ja/wiki/CE%E3%82%92%E3%83%93%E3 %83%AB%E3%83%89%E3%81%99%E3%82%8B
None
• RNDISの項目を発見
• ビルド成功! • RNDISのドライバと、ついでにレジストリ設定も入手 • これで必要なものはそろった
• BrainにRNDISのあれこれを送り込んで、USBでPCと接続 • コントロールパネルでRNDISを選択すると…あれ?
• BrainがなぜかCOMポートとして認識される • 原因 レジストリに追加の設定が必要だった • レジストリを更新して再トライ
キタ━━━━━━━━!!
• Brainuxと同じようにPCの設定をしてやれば… • 作業開始から1週間で ネット接続に成功 • 無事kernelvmのネタ にできました
None
None
• 結構いろいろできる 実は本日の発表は… 電子辞書を使ってやってました。
• ウェブサイト閲覧 • Opera miniやその他ブラウザでサイト閲覧が可能 • HTML5対応のブラウザも存在 • リモートデスクトップ •
今使ってるやつ • WinCEで動作するVNCサーバーがある • マウスとキーボードが使えるのがすごくうれしい
• ファイルサーバー • FTPサーバーが動作する(Pythonのpyftpdlibなど) • リモートデスクトップと組み合わせて完全リモート開発も • その他 • オンラインゲーム
• Simutrans, etc. • サーバー運用 • Python3.10も動作する • というかほぼなんでもできると思う(プログラムを書けば)
None
• Chromebookとは • Google開発の「ChromeOS」搭載のノートPC • ICT教育推進で学校での導入が進む • らすぴー自身も高校で使ってた • これを使ってPythonをBrainに移植したり(?)
• 使わない授業で机の上に出していると 注意されることも(当たり前) NEC Chromebook Y2
• Chromebook+Brainでネットサーフィンがしたいじゃない? • 全学生の夢!(諸説あり) • 先生にとってはそれをされると嫌だとは思うけどね… • Brainuxでは駄目なのか? • 先生が近づいてきたときにとっさに言い訳できない
• 「今何やってたの?ちょっとそれ見せて」で詰む • WinCEならすぐに「ただの電子辞書」に偽装できる
• 実際に試してみた • 結果 • BrainとChromebookの接続は成功 • イーサネットとして認識された • Brainからインターネットには出られなかった
• Wi-Fiとイーサネットのブリッジのやり方が不明 • 誰か詳しい方~() • ちなみに悪用は防げる • 電子辞書にケーブル刺してる学生がいたら怪しいね • 良い子のみんなは真似しないでね
• リモートデスクトップはできた • Chormebookのほうに VNCサーバーを入れれば BrainからChromebookを 操作できるかも?
• まさか1週間で成功するとは思わなかったよね… • 現在進行形で状況が変化しているので興味ある方は Brain Hackersをぜひ覗きに来てください • ご清聴ありがとうございました