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
870
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
64
pyconjp2024-wince
raspython3
0
16
seccamp2024-edictionary-python-TLS
raspython3
0
17
Other Decks in Technology
See All in Technology
BtoBプロダクト開発の深層
16bitidol
0
140
Railsアプリケーション開発者のためのブックガイド
takahashim
13
5.3k
非同期処理実行基盤 Delayed脱出 → Solid Queue完全移行への旅路。
srockstyle
3
1.4k
"複雑なデータ処理 × 静的サイト" を両立させる、楽をするRails運用 / A low-effort Rails workflow that combines “Complex Data Processing × Static Sites”
hogelog
3
1.4k
コンテキストエンジニアリングとは? 考え方と応用方法
findy_eventslides
4
830
LLMアプリケーション開発におけるセキュリティリスクと対策 / LLM Application Security
flatt_security
7
1.5k
Windows で省エネ
murachiakira
0
150
SOC2取得の全体像
shonansurvivors
1
340
BirdCLEF+2025 Noir 5位解法紹介
myso
0
170
AWSのProductのLifecycleについて
stknohg
PRO
0
300
Oracle Cloud Infrastructure:2025年9月度サービス・アップデート
oracle4engineer
PRO
0
320
あなたのWebサービスはAIに自動テストしてもらえる?アクセシビリティツリーで読み解く、AIの『視点』
yusukeiwaki
1
3.4k
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
56
14k
How STYLIGHT went responsive
nonsquared
100
5.8k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
32
2.2k
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.7k
Designing for humans not robots
tammielis
254
25k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
Balancing Empowerment & Direction
lara
4
670
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Practical Orchestrator
shlominoach
190
11k
Music & Morning Musume
bryan
46
6.8k
Optimising Largest Contentful Paint
csswizardry
37
3.4k
A Tale of Four Properties
chriscoyier
160
23k
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をぜひ覗きに来てください • ご清聴ありがとうございました