【覚書】ロリポップ付属のphpmyadminにsshから接続するため悪魔の力を手に入れた話

スポンサードリンク

こんにちは。ふぁんたです。

 

前回の記事で、このWebページが有るサーバー「ロリポップ」付属のデータベースに無理やりつなげようとして全滅した、という話をしました。

 

今回は、悪魔に魂を売り、データベース接続に成功しましたので、そのやり方を書こうと思います。


前回もやったSSHポートフォワーディング

1.SSH接続する

2.MySQLでログインする

3.すっごーい!

 

という方法は、前回試しましたが、だめでした。

MySQL接続をするためのstring _conというコネクション情報を色々に弄り倒してみたんですけど、びくともしませんでした。

手入力で成功

しかしながら、手入力すると成功してしまいました。解せぬ。

 

まず、コマンドプロンプトで

ssh ユーザー名@サーバーのホスト -p 2222

とすると、パスワードを聞かれるので、入れます。

 

そしたら、mysqlのCUIが出てくるので、

mysql -u データベースにおけるユーザー名 -h データベースがあるサーバー -p

とすると、パスワードを聞かれるので、今度はデータベースのパスワードを入れます。

 

なんと、接続できてしまいます。(ポートフォワーディングとは違うのかも?)

で、どのデータベースを使いたいかを指定するために、

use データベースの名前;

すると、SQL文でテーブルが操作できるようになります。

 

手作業の勝利。 プログラムの敗北。

 

そして知る絶望

 

 

できないんだそうです。なんてこった…

悪魔との契約

手入力では、できた。

プログラムでは、できなかった。

 

 

…「コマンドプロンプトにコマンドを入力するプログラム」にしてしまえばいいんじゃないか…?

 

闇営業簡易版

C#のコードで、キーボードを叩くことを考えました。

これができれば、手入力と変わりない。

 

VBA(Excelのマクロとかのやつ)のdllを参照から読み込んで、キーボードを操作できるようにします。

 

それによって使える、SendKeysステートメント、というのがあります。

 

これは、引数にとったstringをキーボードで打ち込んだのと同じとみなせるような、そんな効果があります。

 

 

…それでも、パスワードを求められたときの入力ではうまくいきませんでした。

 

Sendkeysの力では、乗り越えられない困難があるようです。

闇営業複雑版

もっと難しいのがありました。

 

keybd_eventというものです。

 

(キーをどのタイミングで押して、どのタイミングで離すか、というレベルまで指定することができる代わりに、めっちゃくちゃ操作が難解なやつです。)

 

これに手を出すことにしました。

 

(必要に応じて、プロジェクトを右クリック→追加→参照、として、必要なdllを参照してください)

 

 

使い方としては、KeyboardHandleクラスのインスタンスを作って、(new)

そのインスタンスを keyboardとすると、keyboard.input()の引数に、入力したい文字列を入れておくと、文字列の各文字に対して、キーボードをバーチャルで叩いて72ミリ秒待つ、というような使い方を想定しています。

 

今回、このコードに実装されてるのは、MySQLのCRUDで使いそうな文字だけとなってますので、例えば { とか、<とかを入力されると動きません。

 

普通はできないはずのところを、キーボードをシミュレートする という邪道な方法で、どうにか接続、SELECT * FROM table;を実行することができました。

 

あとは、tableの属性を変更して、それに合うようなInsert文をキーボードで入力させ、必要に応じてメニューから貼り付け機能を使えば、

「今日買うべき銘柄を毎日自動更新して教えてくれる」

ぜかましプロジェクトの集大成が出来上がると思うんです。

 

苦節1年2ヶ月、到達すべき点が見えてきました。

ラストスパート、がんばります。

スポンサードリンク