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
790
kernelvm-brain-net
「電子辞書Brainをネットにつなげてみた」
らすぴー
May 11, 2025
Tweet
Share
More Decks by らすぴー
See All by らすぴー
kernel-vm-ittekita-yuukousai
raspython3
0
58
pyconjp2024-wince
raspython3
0
13
seccamp2024-edictionary-python-TLS
raspython3
0
15
Other Decks in Technology
See All in Technology
AWS 怖い話 WAF編 @fillz_noh #AWSStartup #AWSStartup_Kansai
fillznoh
0
140
ClaudeCodeにキレない技術
gtnao
1
930
MCP とマネージド PaaS で実現する大規模 AI アプリケーションの高速開発
nahokoxxx
1
1.1k
AI時代にも変わらぬ価値を発揮したい: インフラ・クラウドを切り口にユーザー価値と非機能要件に向き合ってエンジニアとしての地力を培う
netmarkjp
0
180
スプリントレビューを効果的にするために
miholovesq
5
1.2k
室長の逆襲 :データ活用の陣地を増やすためのヒント
masatoshi0205
0
140
P2P通信の標準化 WebRTCを知ろう
faithandbrave
6
1.9k
組織内、組織間の資産保護に必要なアイデンティティ基盤と関連技術の最新動向
fujie
0
460
ゼロから始めるSREの事業貢献 - 生成AI時代のSRE成長戦略と実践 / Starting SRE from Day One
shinyorke
PRO
0
200
機械学習を「社会実装」するということ 2025年夏版 / Social Implementation of Machine Learning July 2025 Version
moepy_stats
1
120
研究開発部メンバーの働き⽅ / Sansan R&D Profile
sansan33
PRO
3
18k
AWS Well-Architected から考えるオブザーバビリティの勘所 / Considering the Essentials of Observability from AWS Well-Architected
sms_tech
1
770
Featured
See All Featured
What's in a price? How to price your products and services
michaelherold
246
12k
BBQ
matthewcrist
89
9.7k
Optimizing for Happiness
mojombo
379
70k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
Become a Pro
speakerdeck
PRO
29
5.4k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.7k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
Docker and Python
trallard
45
3.5k
Agile that works and the tools we love
rasmusluckow
329
21k
Designing Experiences People Love
moore
142
24k
Speed Design
sergeychernyshev
32
1k
4 Signs Your Business is Dying
shpigford
184
22k
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をぜひ覗きに来てください • ご清聴ありがとうございました