ブログ内検索

プログラミング教材開発
大阪府高槻市原地区で肥料教室を開いています
検索キーワード:「WiFi」
 

最高の開発環境を求めて2024

/** Geminiが自動生成した概要 **/
ChromebookとRaspberry Pi 5の組み合わせが最高の開発環境。ChromebookのLinux開発環境(Crostini)の制限をRaspberry Pi 5をサーバーにすることで回避。複数人でRaspberry Pi 5にアクセスし、Micro Editorを使って開発することで、小中学生でも容易にコーディングが可能に。ChromebookのSSH機能強化も貢献。Raspberry Pi 5のストレージはNVMeに換装することで信頼性向上。以前のRaspberry Pi 4B単体での開発環境に比べ、高速でストレスフリー。Chromebookはターミナルとして使用し、開発環境はRaspberry Pi 5に集約することで、ChromebookのPowerwashの影響も回避。

 

ChromecastでSteam Linkを試してみた

/** Geminiが自動生成した概要 **/
著者は、Chromecast with Google TVでSteam Linkを使ってゲームができるか検証しました。しかし、ゲーム動作がカクカクしてしまい、原因を調査。ネットワーク速度を向上させるためにイーサネットアダプターを導入しましたが改善されず、Chromecastのスペック不足が原因と推測しました。そこでRaspberry Pi 4Bで試したところ、スムーズに動作。Chromecastのメモリ容量が影響している可能性を指摘し、他のスペックのマシンでの検証を希望しています。 追記として、Chromecastの後継機であるGoogle TV Streamerでも同様の検証を行った記事へのリンクが掲載されています。

 

Ubuntu22.10でWiFiの接続に失敗する時の対処

/** Geminiが自動生成した概要 **/
Ubuntu 22.10 で WiFi 接続エラーが発生し、NetworkManager の再起動で解決する場合がある現象について記述されています。 エラー発生時には NetworkManager のログに "ip-config-unavailable" が記録され、IP アドレス取得のタイムアウトが原因と推測されます。 記事では、WiFi 接続時の IP アドレス取得が他のサービスの起動よりも早く行われることが原因の可能性を示唆しています。解決策として IP アドレス取得の時間を延長する方法があるようですが、記事では検証されていません。

 

ESP8266のUART

/** Geminiが自動生成した概要 **/
ESP8266のREPLは、シリアル接続を通じてMicroPythonと対話するためのコマンドラインインターフェースです。UART0がデフォルトで使用され、ボーレートは115200bpsです。REPLでは、コードの実行、変数の確認、関数の呼び出しなどが行えます。Ctrl-Aでプロンプトの先頭、Ctrl-Eで末尾に移動できます。Ctrl-Bで一文字戻り、Ctrl-Fで一文字進めます。Ctrl-DでREPLを終了し、プログラムの実行を再開します。REPLはMicroPythonの開発やデバッグに役立つ強力なツールです。

 

BBC Micro:bitのUART

/** Geminiが自動生成した概要 **/
BBC Micro:bit (microbit) の UART 通信では、microbit から Raspberry Pi へのデータ送信と、その逆の受信が可能。microbit は `uart.any()` 関数を使用して受信データを待ち受け、Raspberry Pi はシリアルポートを介して通信する。データの送受信を確実に行うには、microbit と Raspberry Pi 間の TX/RX ピンの正しい接続と、双方で一致するボーレートの設定が重要。また、microbit では `uart.init(115200)` を使用してシステムを初期化することも推奨される。これらの手順に従うことで、microbit と Raspberry Pi 間の双方向 UART 通信を実現できる。

 

ESP8266とRaspberry Piでソケット通信を試す

/** Geminiが自動生成した概要 **/
この記事では、ESP8266モジュールをクライアント、Raspberry Piをサーバーとしたソケット通信を試みています。 まず、ESP8266側でWiFi接続を行い、サーバー側のIPアドレスとポート番号を指定してソケット通信を行います。 記事では、ESP8266から"send socket from esp8266"というメッセージをサーバーに送信し、サーバー側で受信できていることを確認しています。 これにより、ローカルネットワーク内でESP8266からRaspberry Piにデータを送信できることが確認できました。今後は、温度などのデータを送受信する方法を検討していく予定です。

 

コンピュータ二台でソケット通信を試す

/** Geminiが自動生成した概要 **/
この記事は、二台のコンピュータ間でローカルネットワークを通じてソケット通信を行う方法を解説しています。 まず、Raspberry Piをサーバー側にして、そのローカルIPアドレスを調べます。次に、Pythonで記述したサーバープログラムを、調べたIPアドレスを使って修正します。クライアント側にはLinuxマシンを使用し、同様にローカルIPアドレスを調べます。 その後、クライアントプログラムを実行し、サーバープログラムが実行されているRaspberry PiのIPアドレスとポート番号を指定して接続します。 記事では、接続が成功したことを確認後、NodeMCUとRaspberry Piでのソケット通信に進むことを示唆しています。

 

コンピュータ一台でソケット通信を試す

/** Geminiが自動生成した概要 **/
この記事では、マイコンを用いたデータ送信システム構築に向けて、まずは一台のPCでのソケット通信を試行しています。 具体的には、Pythonを用いて、受信側(サーバー)と送信側(クライアント)のプログラムを作成し、同一PC上で動作させています。 サーバー側はポート番号12345で接続を待ち受け、クライアント側からの接続があると、入力されたデータを受信し、"Successed!"というメッセージを返信します。 記事では、それぞれのプログラムのコード例と実行結果を示し、実際にデータの送受信が成功していることを確認しています。 今後は、2台のPC間でのソケット通信に挑戦する予定です。

 

NodeMCUでHTTP GETリクエストを試してみた

/** Geminiが自動生成した概要 **/
NodeMCUを使ってHTTP GETリクエストを試行した記録です。 記事では、MicroPythonのソケット通信を使って"http://www.example.com/"にGETリクエストを送信し、"200 OK"レスポンスとHTMLを取得できました。 しかし、"https://saitodev.co/"のようにHTTPSのURLでは失敗しました。これは、HTTPS通信に対応するためにコードを修正する必要があるためです。 記事では、将来WiFi経由でデータ送信を行う際にHTTPS通信が必要になると述べています。

 

NodeMCUをWebサーバにしてみた

/** Geminiが自動生成した概要 **/
NodeMCU(ESP8266)をWebサーバにする実験。MicroPythonのサンプルコードを参考に、GPIOピンの状態をWebページに表示する仕組みを作成。NmapでNodeMCUのIPアドレスを特定しブラウザからアクセスした結果、GPIOピンの状態がリアルタイムに確認できた。HTTP通信の基礎を学ぶ良い機会となり、今後は外部からのリクエストに応じて処理を行う仕組みも試したい。

 

NodeMCUをWiFiのアクセスポイントにしてみる

/** Geminiが自動生成した概要 **/
この記事は、NodeMCU(ESP8266)をWiFiのアクセスポイントにする方法を解説しています。 筆者は、サンプルコードを参考に、NodeMCUにWiFi接続とアクセスポイント設定のコードを記述し実行しました。 その結果、コードに記述した「ESP-AP」という名前のアクセスポイントが作成されたことを確認しました。 しかし、パスワードが設定されていないため、現時点では接続できない状態です。 記事では、引き続きWiFi用語の解説や接続方法について掘り下げていくことを示唆しています。

 

ESP8266のWiFiモジュールを購入した

/** Geminiが自動生成した概要 **/
## ESP8266を使って、PicoからWebアプリにデータを送信する方法を探る 筆者は、pH測定データをWebアプリに送信するために、WiFiモジュール「ESP8266」を購入しました。 目的は、Raspberry Pi Picoなどのマイコンで取得したデータを、WiFi経由でWebアプリに送信することです。 ESP8266はTCP/IPスタックを搭載したWiFiモジュールで、GPIOピンも備えているため、単体でのデータ処理も期待できます。 今後の記事では、PicoからWiFiを介してWebアプリにデータを送信するために必要な手順を一つずつ解説していく予定です。

 

NmapでLAN内のRaspberry Piを探してみる

/** Geminiが自動生成した概要 **/
仮想化は、コンピュータリソースの抽象化を通じて、物理的な特性から独立した仮想的な環境を作り出す技術です。ハードウェア仮想化は、ハイパーバイザーを用いて複数のOSを同時実行可能にします。一方、OSレベル仮想化(コンテナ技術など)は単一のOSカーネル上で隔離されたユーザー空間を提供し、軽量かつ高速な仮想環境を実現します。仮想化はサーバー統合、災害復旧、開発環境の構築など、多様な用途で活用され、柔軟性と効率性の向上に貢献します。近年では、クラウドコンピューティングの基盤技術としても重要性を増しています。

 

【重要】SOY Shopでクレジットカード支払いが正常に終了しなかった注文を通知する機能を追加しました

/** Geminiが自動生成した概要 **/
SOY Shopで、クレジットカード決済は完了したのに注文が未完了となる問題が発生。原因はスマホのWiFiとセッションの喪失によるもので、決済モジュールのリダイレクト処理中に発生すると注文受付処理が失敗する。この問題に対処するため、決済成功&注文未完了の状態(仮登録&支払確認済)の注文を管理画面の新着ページにエラー通知として表示する機能を追加。通知機能は「新着注文一覧表示プラグイン」の一部として実装。この対応で、注文の見落としを防ぎ、問題発生時の早期発見を目指す。ただし、注文数の少ないサイトでは有効性低いため、更なる改善が必要。

 

Android版のChromeでアクセスした時にPHPのセッションが突然切れる症状で苦戦した

/** Geminiが自動生成した概要 **/
SOY Shopのカートで、Android Chrome利用時にセッションが突然切れ、カートの中身が消える問題が発生した。原因はCSRF対策で毎回`session_regenerate_id()`を実行していたこと。モバイルネットワークは不安定なため、`session_regenerate_id()`実行でセッション消失が起こる可能性があることがPHPマニュアルに記載されていた。対処として、スマホからのアクセス時は`session_regenerate_id()`を実行しないように変更した。 関連記事「SOY CMSでSameSite cookiesの対応を追加しました」では、SameSite属性を設定することで、クロスサイトリクエストフォージェリ(CSRF)攻撃への対策を強化している。具体的には、CookieにSameSite=Lax属性を設定することで、クロスサイトでのCookie送信を制限し、セキュリティを向上させている。これにより、SOY CMSを利用するサイトのセキュリティが強化され、ユーザーの情報がより安全に保護される。

 

続・Ideapad 720SにUbuntuを入れてWi-Fiを使用する

/** Geminiが自動生成した概要 **/
modprobeコマンドはLinuxカーネルモジュールを管理する。カーネルモジュールは、デバイスドライバやファイルシステムなど、カーネルの機能を拡張するコンポーネント。modprobeを用いて、これらのモジュールを動的にロードまたはアンロードできる。これは、システムリソースを効率的に使用し、必要に応じて機能を追加/削除する柔軟性を提供する。 ArchWikiのカーネルモジュールページでは、モジュールの種類、ロード方法、設定ファイル、トラブルシューティングなど、詳細な情報が提供されている。

 

Ideapad 720SにUbuntuを入れてWi-Fiを使用する

/** Geminiが自動生成した概要 **/
Lenovo Ideapad 720SにUbuntu 18.04β版をインストールしたが、内蔵Wi-Fiアダプタは使用できなかった。Wi-Fiアダプタ自体はRealtek製で物理的には動作しているものの、対応するドライバが見つからない。ArchWikiやRealtek、Githubのリポジトリを調査した結果、rtl8821ceドライバが必要だとわかったが、Ubuntuに導入できる形では提供されていない。そのため、現時点ではUSB接続のPocketWifiを利用してインターネットに接続している。

 

総当り攻撃を仕掛けられたので、接続元を調べてみたら

/** Geminiが自動生成した概要 **/
CMSへの不正ログイン後の攻撃者は、まず管理者権限の奪取を目指します。パスワード変更や新規管理者アカウント作成を通してシステムの完全掌握を図ります。その後、サイト改竄、マルウェア設置、情報窃取など多岐にわたる悪質な行為を行います。改竄ではサイトコンテンツの書き換えや、フィッシング詐欺サイトへの誘導などが行われ、マルウェア設置では訪問者への感染拡大を狙います。情報窃取は顧客情報やデータベース情報などを標的に、金銭目的や更なる攻撃への足掛かりとします。攻撃者はこれらの行為を迅速かつ隠密裏に行うため、早期発見と対策が重要です。

 

IP偽装をしてみた

/** Geminiが自動生成した概要 **/
IPアドレス隠蔽のため、StealthyというFirefoxアドオンでプロキシ接続を試した。結果、What Is My IP Address? で確認すると、所在地が隠蔽され「Hide IP」と表示された。仕組みは、プロキシサーバを中継することで、接続先サイトにはプロキシサーバのIPアドレスが表示されるというもの。体感として表示速度が遅くなったため、攻撃目的には不向きと感じた。また、海外のプロキシアクセスを禁止すればサイト攻撃のリスク軽減になる可能性も考えたが、企業のプロキシ利用も多いため、一概に禁止はできないと考察した。

 

IPアドレスで接続元の情報がどれだけわかるか調べてみた

/** Geminiが自動生成した概要 **/
IPアドレスから接続元の情報がどこまで特定できるか検証した結果、固定回線ではプロバイダと大まかな位置情報が判明し、身元の特定は容易であることが分かった。 Y!mobileのポケットWiFiを使用した場合、位置情報は偽装され東京と表示されたが、プロバイダ情報は依然として取得可能であり、プロバイダへの問い合わせで身元が特定される可能性は残る。 検証には「What Is My IP Address?」が使用され、プロバイダ情報に加え、地図上で位置情報まで表示された。OSやブラウザの種類も特定可能であると示唆されている。ポケットWiFiは位置情報の偽装に有効だが、プロバイダ情報から身元特定の可能性は排除できない。 筆者はプロバイダでの勤務経験がないため、詳細な情報提供はできないとしている。

 

接続元IPアドレスを知られたくない時にすること

/** Geminiが自動生成した概要 **/
SOY CMSで総当たり攻撃への対策として、ログイン試行回数制限とアカウントロック機能を実装する方法が解説されている。記事では、PHPでログイン処理をカスタマイズし、データベースにログイン試行回数を記録、一定回数を超えるとアカウントをロックする仕組みを構築している。具体的なコード例も示され、ログイン試行回数の記録方法、ロック時間の管理、管理画面からのロック解除方法などが説明されている。これにより、総当たり攻撃による不正ログインを防ぎ、サイトのセキュリティを高めることができる。さらに、ログイン画面にCAPTCHAを導入することで、ボットによる自動攻撃への対策も強化できる。

 

インターネット内に流れているパケットを傍受してみる

/** Geminiが自動生成した概要 **/
WordPressなどのCMSは総当り攻撃の標的になりやすく、特にログインページがhttpの場合、IDとパスワードが傍受されやすい。Wiresharkのようなツールを使えば、ネットワーク上のパケットを解析し、http通信のログイン情報を簡単に盗み見ることが可能。httpsは通信を暗号化するため、傍受されても内容は解読できない。カフェなどのフリーWi-Fiでhttpのログインページを使うのは危険。https化はセキュリティ対策だけでなく、HTTP/2.0による高速化にも繋がるため重要。また、メールもhttpと同様に暗号化されていないと傍受される可能性があるため注意が必要。


Powered by SOY CMS   ↑トップへ