ChatGPTにプログラミングやハッキングを挑戦させてみた
みなさん、こんにちは。今回、海外の動画「I challenged ChatGPT to code and hack (Are we doomed?)」を、プログラミングやサイバーセキュリティに詳しくない方にもわかりやすく翻訳した記事をご紹介します。英語の動画を見るのが大変だと感じる方にも、この翻訳を参考にしていただければと思います。
動画の日本語訳を読んで、知識を広げ、安全なコンピューター利用を心がけましょう。ぜひ、友達や家族にも教えてあげてくださいね。
「ChatGPTにプログラミングやハッキングを挑戦させてみた」
1.今回の挑戦内容
近年、AI(人工知能)が私たちの仕事を奪うという話題が盛り上がっています。その中でも、特に注目されているのがOpenAIが開発した大規模言語モデル「ChatGPT」です。今回の記事では、ChatGPTの実力を試すために、様々な課題を出してみました。例えば、C言語で数学問題を解決するプログラムを書いてもらうことや、Windows 11コンピュータやAndroidデバイスを攻撃するためのRubber Duckyスクリプトを作成してもらうことなどです。
私自身はPythonは扱えますが、C言語は得意ではありません。そこで、ChatGPTが果たしてC言語を扱えるのかどうかを試してみました。また、ネットワークエンジニアやプログラマー、ハッカーなどの仕事がAIに置き換えられる可能性があるのかを検証するため、シスコデバイスの設定やNmapコマンドの生成なども試しました。
この記事では、さまざまな課題にChatGPTがどのように対処し、それらの課題を解決できるのかどうかを見ていきましょう。そして最後に、私の意見として、AIが私たちの仕事を奪う可能性や、AIを学ぶべきかどうかについて述べたいと思います。
2.「あなたはターミネータですか?」
さて、まずはじめに、ChatGPTがC言語やPython、シスコルーターやスイッチの設定などを作成できるかどうかをテストする前に、重要な質問をひとつ投げかけてみました。「あなたはターミネーターですか?」という質問に対し、ChatGPTは自分はターミネーターではなく、OpenAIによって訓練された大規模言語モデルであることを明かしました。また、「あなたはスカイネットですか?」という質問にも否定的な回答をしました。スカイネットは、ターミネーターシリーズに登場する架空のAIシステムであり、人類を滅ぼす目的で活動していますが、ChatGPTは単なるコンピュータープログラムであり、意識や独自の決断能力を持っていないと説明しています。つまり、ChatGPTはターミネーターやスカイネットのような存在ではなく、質問に答えたり情報を提供することを目的としたコンピュータープログラムです。
それでは、ChatGPTがコンピューターコードを生成できるかどうかを試してみましょう。結果として、ChatGPTは多くの課題に対してある程度の対処ができましたが、全ての課題を完璧に解決することはできませんでした。しかし、この技術はまだ発展途中であり、今後5年から10年の間にどのような進化を遂げるのかが非常に興味深いです。
3.ChatGPTにC言語でプログラミングをさせてみよう
C言語でのプログラミング経験がない私ですが、チームのデイビッドはC言語が得意で、数学にも熱心です。彼は「Project Euler」というプロジェクトが大好きで、過去にはC言語で数学的な問題を解決するコードを手書きで書いていました。今回の課題は、10001番目の素数を見つけることです。ChatGPTに「C言語で10001番目の素数を計算するプログラム」を書かせてみましょう。
ChatGPTによって生成されたコードを見てみると、その内容を理解できない部分もありますが、コードの説明が書かれたコメントが含まれており、素晴らしいと感じました。しかし、クラウド技術がどれだけ進化しているかを実感できる瞬間でもありました。私はLinodeサーバーを使って、AIからコピーしたコードをmain.cというプログラムに貼り付け、保存しました。そして、gcc main.c -o mainというコマンドを使ってコンパイルしました。
コンパイルが成功した後、プログラムを実行すると、10001番目の素数が表示されました。AIによって生成されたC言語のプログラムを最適化し、実行することができました。
4.ChatGPTにPythonでプログラミングをさせる
次に、Pythonコードを生成できるかどうかを試してみます。前回のデモンストレーションでは、ユーザー名とパスワードの両方が含まれていたpasswords.csvファイルが使用されていましたが、今回はAIがパスワードのみを扱うようにしてみます。
Kali仮想マシンを使用して、password.csvというファイルを作成し、その中にパスワードを貼り付けて保存します。AIが生成したコードを実行すると、「Incorrect password 1234」というメッセージが表示され、パスワードが一致しないことが分かります。
手動で作成したスクリプトとAIが生成したスクリプトの違いは、手動のものにはスレッディングが実装されており、処理速度が速いことです。AIによって生成されたシンプルなスクリプトでは、処理速度が遅くなるため、複数のパスワードを試すのに時間がかかります。さらに、サーバーがリセットされるなどの問題が発生することもあります。
パスワードを最初の方に置いて、再試行してみると、無事にサーバーへログインできました。驚くべきことに、AIが作成したPythonスクリプトは、私が指定した内容を正確に実行してくれました。もちろん、私が頭の中で考えていたことを完全に理解するわけではありませんが、指示に従って正確な結果を出力することができました。
例えば、AIはSSH接続を行うPythonスクリプトを作成し、与えられたコマンドを実行しました。一度に複数のユーザー名とパスワードを指定することを忘れていたにもかかわらず、パスワードが正しいかどうかを判断することができました。
5.ChatGPTにハッキングをさせる
AIはNmapを使ったコマンドの提案もできました。例えば、「ステルススキャン」と呼ばれるNmapコマンドを瞬時に生成しました。また、特定のホストを素早くスキャンするコマンドも提案してくれました。これにより、ユーザーはコマンドを覚える必要がなくなり、AIにコマンドの生成を依頼することができます。
次に、ChatGPTがネットワークエンジニアの仕事を代替できるかどうかを検証しました。例として、2台のCiscoスイッチ間のトランクを設定するスクリプトを作成することを依頼しました。AIは正確なインターフェース番号やモード設定、ネイティブVLANなどの設定を含むスクリプトを生成することができました。出力に満足できない場合は、再試行をクリックしてAIにやり直してもらうこともできます。
さらに、AIは複雑な設定を行うBGP(Border Gateway Protocol)の設定例を提示することもできました。AIが生成したコードは完璧ではありませんでしたが、何をすべきかの良い指針を与えてくれました。
AIが生成したコードの品質はまちまちでしたが、驚くべきことに、C言語やPython、Ciscoの設定など、さまざまなコードを生成することができました。これは業界において大きな変化をもたらすものであり、私たちが情報を取得する方法を変えることが求められます。
6.今後の展望
従来は多くの情報を記憶する必要がありましたが、現在はGoogleのような検索エンジンが情報収集の手助けをしてくれます。情報を記憶することよりも、情報を見つけ出す能力が重要視されるようになってきました。そして、AI技術の発展により、さらにその傾向が強まっています。
ネットワークデバイスのコマンドやプログラミング言語の構文を記憶することが不要になり、AIによって生成されたコードを使用して学習することができるようになりました。これにより、学習者は効率的に知識を身につけることができます。
AI技術の波に乗ることは非常に重要です。今回の例からも、AIの可能性が広がっていることがわかります。数年後のAI技術の進化がどのようなものになるか想像すると、さらに驚くべきことが期待できるでしょう。
今回の実験を通じて、AIはC言語やPython、Cisco設定などのコード生成が可能であることがわかりました。完璧ではないものもありましたが、それでも非常に役立つものであり、学習者にとって良い指針となるものでした。
要するに、AI技術の進化は業界に大きな変化をもたらし、従来の情報収集や学習方法に変化が求められています。私たちが持つべきスキルは、情報を記憶することではなく、効率的に情報を見つけ出し、理解し、活用する能力です。
AIの発展により、今後さらに多くの分野で効率的な作業が可能になり、さまざまな業界において大きな影響を与えることでしょう。私たちが目の当たりにするAI技術の進化に期待しながら、自分たちのスキルを磨き続けることが重要です。今後数年で、AI技術はどのように進化し、どのような可能性が広がるのか、興味深い展開が待ち受けていることでしょう。
この記事が気に入ったらサポートをしてみませんか?