44

ソース コードがなく、プログラムまたはブラック ボックスをリバース エンジニアリングする必要がある場合があります。面白い戦記は?

ここに私のものがあります:

数年前、ソース コードのないデバイス ドライバーを書き直す必要がありました。デバイス・ドライバーは古い CP/M マイクロコンピューターで実行され、シリアル・ポートを介して専用の写真植字機を駆動しました。写真植字機に関するドキュメントはほとんど入手できませんでした。

私は最終的に、写真植字機の応答を模倣するシリアル ポート モニターを DOS PC にハッキングしました。DOS PC を CP/M マシンにケーブルで接続し、CP/M マシンを介してデータをフィードしながら、デバイス ドライバーから出力されるデータのログを記録し始めました。これにより、デバイス ドライバーが使用するハンドシェイクとエンコーディングを把握し、DOS マシン用に同等のものを再作成することができました。

4

12 に答える 12

49

ここでC-64のFCopyの話を読んでください:

80年代に、コモドールC-64にはインテリジェントフロッピードライブ1541が搭載されていました。つまり、独自のCPUとすべてを備えた外部ユニットでした。

C-64はドライブにコマンドを送信し、ドライブはそれ自体でコマンドを実行してファイルなどを読み取り、専用のシリアルケーブルを介してデータをC-64に送信します。

1541のマニュアルには、ファイルの読み取りと書き込みのコマンドに加えて、内部メモリ空間の読み取りと書き込みが記載されています。さらにエキサイティングなのは、6502コードをドライブのメモリにダウンロードしてそこで実行できることでした。

これは私を夢中にさせ、私はそれで遊んでみたかった-ドライブでコードを実行する。もちろん、そこで実行できるコードや、使用できる関数についての文書はありませんでした。

私の友人はBASICで逆アセンブラを書いていました。それで私はそのROMの内容をすべて読み上げました。それは6502CPUコードの16KBであり、それが何をするのかを理解しようとしました。ドライブ上のOSは非常に素晴らしく、高度なIMOでした。コマンドが通信ユニットからディスクI / Oタスクハンドラーに送信される、一種のタスク管理がありました。

disk i/oコマンドを使用してディスクのセクターを読み取り/書き込みする方法を十分に理解しました。実際、ディスクフォーマットとアルゴのすべての動作を詳細に説明しているApple][のDOS3.3の本を読んだことは、すべてを理解する上で大きな助けになりました。

(後で、1541とほとんど同じように機能する、「ビジネス」コモドアモデル用の4032/4016ディスクドライブの予約情報も見つけることができたことがわかりましたが、それは私には利用できませんでした。当時はむしろ接続されていない趣味のプログラマー。)

最も重要なことは、シリアル通信がどのように機能するかについても学びました。私は、4回線、データ用に2つ、ハンドシェイク用に2つを使用するシリアル通信が、すべてソフトウェアで非常に非効率的にプログラムされていることに気付きました(ただし、従来のシリアルハンドシェイクを使用して適切に実行されました)。

したがって、データとデータ送信用のハンドシェイクラインの両方を使用して、固定タイミングの仮定を行う、はるかに高速な通信ルーチンを作成することができました。

これで、セクターの読み取りと書き込みが可能になり、データをこれまでになく高速に送信できるようになりました。

もちろん、通信を高速化するコードをドライブにロードし、通常のコマンドを使用してファイルを読み取ることができれば、それは素晴らしいことでした。ファイルは、より高速な通信を使用します。ただし、ドライブ上のOSはそのためのフックを提供していなかったため、これは不可能でした(すべてのOSがROMにあり、変更できないことに注意してください)。

したがって、私は自分のエキサイティングな発見をどのように有用なアプリケーションに変えることができるのか疑問に思いました。

すでにしばらくの間プログラマーであり、常にデータの損失に対処してきました(当時、音楽テープやフロッピーディスクはあまり現実的ではありませんでした)、私は考えました:バックアップ!

そこで、これまでにない速度でフロッピーディスクを複製できるバックアッププログラムを作成しました。最初のバージョンでは、170 KBのディスク全体をわずか8分(はい、分)でコピーし、2番目のバージョンでは約4.5分でコピーしました。私の前のアプリは25分以上かかりました。(AppleでディスクOSを直接実行し、高速の並列データアクセスを備えたApple] [は、これをすべて1分ほどで実行しました)。

そして、C-64用のFCopyが誕生しました。

すぐに大人気になりました。私が意図したようなバックアッププログラムとしてではなく、ゲームやその他のソフトウェアを友達のためにコピーしたい人のための第一の選択肢として。

私のコードを単純化すると、読み取り不可能なセクターをスキップし、CRCの悪いセクターをコピーに書き込むだけで、当時使用されていたコピー防止スキームのほとんどが回避され、以前はコピーできなかったディスクのほとんどをコピーできるようになりました。

私は自分のアプリを販売しようとしましたが、実際に70回販売しました。雑誌で宣伝されたとき、5分以内にディスクをコピーすると主張して、顧客はそれができないことを「よく知っている」と電話し、信じないでしょうが、それでも試してみてください。

その後、他の人が私のアプリをリバースエンジニアリングして最適化し、通信をさらに高速化し、1.5分でそれを実行したアプリをコピーするようになりました。1541とC-64で使用できるメモリの量が限られているため、170 KBの内容をすべてコピーするには、1台のディスクドライブでディスクを数回交換する必要があったため、高速化はほとんど不可能でした。

結局、FCopyとその最適化された後継ソフトウェアは、おそらく80年代のC-64でこれまでで最も人気のあるソフトウェアでした。そして、それは私にとって経済的には報われませんでしたが、それでも私は誇りに思い、リバースエンジニアリング、コピー防止の無益さ、そしてスターダムがどのように感じられるかについて多くを学びました。(実際、カナダのC-64マガジンの編集者であるJim Butterfieldは、読者に私の話をしました。すぐに、彼は私のために約1000CA$の小切手を受け取りました。 、それは当時私にとって大きなお金でした。)

于 2008-12-17T12:32:49.323 に答える
44

私は実際に別の話があります:

FCopyの「サクセス」ストーリーの数年後、スロットマシンのソフトウェアをクラックできるかどうかを尋ねられた人から連絡がありました。

これはドイツにあり、ほとんどすべてのパブに1つか2つありました。米国の4分の1程度の金額を投じると、3つの車輪が回転し、運が良ければ、そのパターンで運が良かったのです。次のプレイで勝利を「2倍にするか、何もしない」か、現在の勝利を獲得するかを選択できます。プレイの目標は、「シリーズ」モードに入るまで、勝利を2倍にすることでした。このモードでは、どんなに小さな勝利でも、多額の支払いが発生します(1人あたりの支出の約10倍)。ゲーム)。

難しいのは、いつ倍増するか、いつ倍増しないかを知ることでした。もちろん、「アウトサイダー」の場合、これは完全にランダムでした。しかし、これらのドイツ製のマシンは、ROMで単純な疑似ランダム化テーブルを使用していることが判明しました。さて、マシンが数ラウンドプレイするのを見ると、この「ランダムテーブルポインター」がどこにあるかを把握し、次の動きを予測することができます。そうすれば、プレイヤーはいつダブルするか、いつパスするかを知ることができ、最終的には「ビッグウィンシリーズ」につながります。

さて、この人が私に近づいたとき、これはすでに一般的なことでした。それらのマシンのROMにアクセスし、テーブルを見つけて、マシンの次の動きの予測に使用するC-64などのコンピューター用のソフトウェアを作成するアンダーグラウンドシーンがありました。

次に、別のアルゴリズムを使用する新しいタイプのマシンが登場しました。事前に計算されたテーブルを使用する代わりに、別のことを実行し、常駐クラッカーは誰もそれを理解できませんでした。それで、FCopyの名声以来、一種の天才として知られている私に近づきました。

だから私はROMを手に入れました。いつものように16KB。それが何をしたか、そしてそれがどのように機能したかについての情報はまったくありません。私は一人でした。コードでさえなじみのないように見えました(私はそれまでに6502と8080しか知りませんでした)。掘り下げて尋ねたところ、6809であることがわかりました(これは、存在する中で最も優れた8ビットCPUであり、x86ファミリの命令の混乱よりもはるかに直線的な680x0 CPU設計に類似しています)。

その時までに、私はすでに68000台のコンピューターを持っていて(私はそのようなマシンを独自の開発者OSで構築および販売している会社「GepardComputer」で働いていました)、Modula-2のプログラミングに夢中になりました。そこで、6809の逆アセンブラを作成しました。これは、サブルーチンやジャンプなどを見つけることでリバースエンジニアリングに役立ちました。ゆっくりと、スロットマシンのプログラムのフロー制御のアイデアが浮かびました。結局、数学的なアルゴリズムのように見えるコードを見つけ、これがランダムに生成されるコードである可能性があることに気づきました。

私はコンピュータサイエンスの正式な教育を受けたことがなかったので、それまでは、mul、add、modを使用した典型的なrandomgenがどのように機能するのかわかりませんでした。しかし、Modula-2の本で言及されているものを見て、それが何であるかを理解したことを覚えています。

これで、このrandomgenを呼び出すコードをすばやく見つけて、どの「イベント」がrandomgenの反復につながるかを知ることができました。つまり、ゲーム中に次の反復とその値を予測する方法を知っていました。

残されたのは、randomgenの現在の位置を把握することでした。私は代数のような抽象的なものが得意ではありませんでした。でも、数学を勉強していてプログラマーでもある人を知っていました。私が彼に電話したとき、彼は問題を解決する方法をすぐに知って、randomgenのシード値を決定することがどれほど簡単であるかについて多くのことを口論しました。私は何も理解していませんでした。そうですね、私は1つのことを理解しました。これを実現するためのコードには多くの時間がかかり、C-64やその他の8ビットコンピューターには数日ではないにしても数時間かかるということです。

したがって、彼が68000でアセンブラルーチンを記述できれば、1000 DM(当時は多額のお金でした)を提供することにしました。彼は長くはかからず、68000でテストできるコードを持っていました。コンピューター。通常は5分から8分かかりましたが、これは許容範囲内でした。だから私はほとんどそこにいました。

それでも、スロットマシンが立っているパブに携帯用の68000コンピューターを運ぶ必要がありました。私のGepardコンピューターは明らかにポータブルタイプではありませんでした。幸いなことに、私がドイツで知っていた他の誰かが、小さな回路基板上に68000台のコンピューター全体を製造しました。I / Oの場合、シリアル通信(RS-232)とパラレルポートしかありませんでした(当時はCentronicsが標準でした)。私はそれを機能させるためにいくつかの9Vブロック電池をそれに接続することができました。それから私は、ゴム製のキーボードと1行の32文字のディスプレイを備えたSharpポケットコンピューターを購入しました。私の端末だったバッテリーで走っています。それは私が68000ボードに接続したRS-232コネクタを持っていました。また、Sharpにはある種の不揮発性メモリがあり、68000ランダムクラッキングソフトウェアをSharpに保存し、オンデマンドで68000コンピュータに転送して、シード値を計算することができました。最後に、狭い感熱紙(レジがレシートを印刷するために使用するサイズ)に印刷する小さなセントロニクスプリンターを持っていました。したがって、68000が結果を取得すると、スロットマシンでの今後のゲームの結果の行がシャープに送信され、シャープはそれらを紙に印刷します。

したがって、これらのスロットマシンのいずれかを空にするには、2人で作業します。プレイを開始し、結果を書き留めます。シード計算に必要な最小ゲーム数が1つあり、1つは駐車した駐車場に行きます。外で、シャープの電源を入れ、結果を入力すると、68000コンピューターが8分間ガタガタ鳴り、今後のゲーム実行のリストが印刷されます。次に、必要なのはこの小さな紙だけでした。それをバディに戻し、マシンを占有したままにして、過去の結果をプリントアウトに合わせ、2分以内に「驚いた」ので史上最高の100を獲得しました。シリーズ。次に、これらの100のゲームをプレイし、実質的にマシンを空にします(100のゲームがプレイされる前にマシンが空だった場合は、補充されるのを待つ権利があり、翌日戻ってくることもあります。

これはラスベガスではなかったので、その方法でマシンから約400 DMしか得られませんでしたが、それは迅速かつ確実なお金であり、エキサイティングでした。一部の居酒屋のオーナーは私たちが浮気をしていると疑っていましたが、当時の法律のために私たちに何の反対もありませんでした。

もちろん、スロット製造会社はすぐにこれに気づき、新しいROMがインストールされるまでそれらの特定のマシンの電源を切り、対抗しようとしました。しかし、最初の数回は、randomgenの数を変更しただけでした。新しいROMを入手するだけで、新しい番号を見つけてソフトウェアに実装するのに数分かかりました。

それで、これはしばらく続きました。その間、私と友人はドイツのいくつかの町のパブを見て、私たちだけが割ることができるそれらの機械を探しました。

しかし、最終的には、機械メーカーはそれを「修正」する方法を学びました。それまで、randomgenは特定の予測可能な時間、たとえばプレイ中に4回、プレーヤーが「ダブルオアナッシング」を押すたびにもう一度進められました。ボタン。

しかし、その後、彼らは最終的にそれを変更して、randomgenが継続的にポーリングされるようにしました。つまり、ボタンを押すのに正確に次のシード値を予測することができなくなりました。

それで終わりです。それでも、この単一のクラックのためだけに逆アセンブラを作成する努力をし、16KBの8ビットCPUコードで主要なルーチンを見つけ、未知のアルゴリズムを理解し、私が理解していないコードを開発するために誰かにお金を払うためにかなりのお金を費やしました、Sharpを端末として使用する「ブラインド」68000 CPUと便利な出力用のプリンターを備えたポータブル高速コンピューターのアイテムを見つけて、実際に自分でマシンを空にすることは、私がこれまでに行った中で最もエキサイティングなことの1つでした。私のプログラミングスキルで。

于 2008-12-17T13:20:39.710 に答える
11

90 年代初頭にさかのぼりますが、Compuserve のパスワードを忘れてしまいました。私は暗号化されたバージョンを CIS.INI に持っていたので、暗号化アルゴリズムのリバース エンジニアリングを試みて、平文攻撃と分析を行う小さなプログラムを作成しました。24 時間後、私はそれがどのように機能し、自分のパスワードが何であるかを理解しました。

その後すぐに、Compuserve の顧客が失われたパスワードを回復できるように、クリーンアップを行い、プログラムをフリーウェアとして公開しました。会社のサポート スタッフは、これらの人々に私のプログラムを紹介することがよくありました。

最終的には、いくつかの掲示板 (覚えていますか?) やインターネット フォーラムに掲載され、Compuserve に関するドイツの書籍に掲載されました。今でもどこかで浮かんでいます。実際、Googleは私をまっすぐに連れて行ってくれます。

于 2008-10-17T11:42:10.013 に答える
10

一度、ダガーフォール II をプレイしていたとき、Daedric Dai-Katana を買う余裕がなかったので、セーブゲームを 16 進編集しました。

真面目な話ですが、私は何年も前に、SoftICE を使用して父の AutoCAD インストールのドングル チェックを削除することができました。これは、インターネットが普及する前のことです。彼はエンジニアとして働いているので、正規のコピーを持っていました。彼は仕事でドングルを忘れたばかりで、何かをする必要があり、楽しい挑戦になると思いました。後でとても誇りに思いました。

于 2008-10-10T21:28:28.117 に答える
10

わかりました、これはリバース エンジニアリング (かなり) ではなく、純粋なフラストレーションから生まれた単純なハードウェア ハッキングです。私は 1990 年代初頭、サウスウェスタン ベルの携帯電話サービスの地域の IT マネージャーでした。私の IT 部門は資金が劇的に不足していたため、設備よりも優秀な人材にお金を費やしていました。

重要な IP リンクを備えたカスタマー サービス専用の WAN を主要都市間に設置しました。私たちの会社の上司は、ネットワーク監視システムをインストールして、回線がダウンしたときに通知するようにしつこく要求しました (冗長性のためのお金はありませんが、障害の処理にお金を費やします. ため息)。

強く推奨されるソリューションは SPARC ワークステーションで実行され、3 万ドルと SPARC ステーションのコスト (当時は約 2 万ドル) から始まり、合計すると私の予算のかなりの部分でした。私はそれを見ることができませんでした - これは $$ の無駄でした。そこで、ちょっとしたハッキン​​グが必要だと判断しました。

私は破壊する予定の古い PC を取り、ProComm (ProComm を覚えていますか?) のコピーを置き、ルートに沿って必要なノードのそれぞれに ping を実行させました (これは、FTP とシリアル回線をスクリプト化した ProComm の新しいバージョンの 1 つでした。 KERMIT など) ノードに到達できなかったときに、コーディングの小さなロジックがページャー メッセージを起動しました。私はすでにそれを使用して技術者用のポケットベル システムを組み立てていたので、ポケットベルのコードを再利用しました。スクリプトは継続的に実行され、重要なリンクごとに 1 分に 1 回 ping を送信し、ping が返されなかったときにポケットベル コードに分岐しました。

このシステムを重要な場所ごとに 500 ドル未満のコストで複製し、リンクがダウンしたときに非常に迅速に通知されました。次の問題 - 最初のトラブルシューティング方法の 1 つは、ルーターやターミナル サーバーの電源を入れ直すことでした。ダイヤルアップ式の X10 コントローラーと、X10 オン/オフ アプライアンスの電源スイッチをいくつか入手しました。使用する正しい電話番号とプッシュする正しいトーンを知っている必要がありましたが、技術者ごとにチートカードを印刷し、ポケットベルと一緒に保管していました. いきなりの素早い対応!次に、私の技術者の 1 人が、各サイトの特定の機器を短縮ダイヤルとしてリセットする必要がある電話をプログラムしました。ワンテックでお悩み解決!

今、「そう言った」お披露目です。

私は、Sun ベースのネットワーク管理製品の購入を主張しているダラスの社内ネットワーク マネージャと昼食をとっています。リンクの 1 つがダウンしているページが表示され、次に 2 番目のページが表示されます。ポケットベル メッセージは 2 つの異なるサーバーから送信されているため、どのルーターが関与しているかが正確にわかります (これはセットアップでした。とにかく、私との会議の技術者は食事中に「ルーターをダウンさせる」ためにキューに入れられていたので、私たちはポケットベルのメッセージをマネージャーに見せて、この問題を解決するためにどうするか尋ねました。彼は、重要なリンクを追跡するはずの Solaris NMS システムからのページングにまだ成功していないため、私を怪訝な目で見ています。「まあ、技術者に電話してルーターをリセットしてもらい、それで問題が解決するかどうかを確認したほうがいいと思います。」私たちと一緒に昼食をとっていた技術者の方を向いて、彼にそれを処理するように頼みました. 彼は携帯電話を (今回はテーブルの上に) 取り出し、問題のルーターをリセットするためにプログラムした短縮ダイヤルを押しました。電話は X10 スイッチにダイヤルし、ルーターの電源を切るように指示し、5 秒間一時停止して、ルーターの電源を入れるように指示し、切断しました。私たちの ProComm スクリプトは、このルーチンから 3 分以内にリンクが復旧したことを知らせるページを送信してくれました。:-) 私たちの ProComm スクリプトは、このルーチンから 3 分以内にリンクが復旧したことを知らせるページを送信してくれました。:-) 私たちの ProComm スクリプトは、このルーチンから 3 分以内にリンクが復旧したことを知らせるページを送信してくれました。:-)

企業のネットワーク管理者は非常に感銘を受けました。彼は、私の新しいシステムの費用はいくらか尋ねました。私が彼に1000ドル未満だと言ったとき、彼は無気力になった。彼は、私が説明したタスクのためだけに Sun Solaris ネットワーク管理ソリューションの BIG セットを注文したところです。150万くらい使ったと思います。私は魔法がどのように行われたかを彼に話し、昼食代と引き換えに ProComm スクリプトを提供しました。タンスターフル。彼は口を閉ざしておくために昼食を買ってくると言った。

ディスクなどの古い引き出しを整理していると、コードのコピーを見つけました。「ピンガサウルス レックス」は私が付けた名前です。それは古き良き時代のハッキングでした。

于 2011-07-17T01:20:53.777 に答える
7

私にとって最も苦痛だったのは、Excelスプレッドシートに画像を含めたいというこの製品でした(オープンスタンダードの数年前)。そのため、ドキュメントの内部形式にもそのようなものが存在するかどうかを取得して「理解」する必要がありました。結局、画像のあるファイルとないファイルを16進数で比較して、そこに配置する方法を理解し、さらにエンディアンの数学に取り組みました。

于 2008-10-10T21:19:25.017 に答える
7

私はかつて、PCがネットワークにログインするときにPCからインベントリ情報を収集するツールに取り組んでいました。アイデアは、社内のすべてのPCを追跡することでした。

Banyan VINESネットワークシステムをサポートするための新しい要件がありました。これは、長い間忘れられていましたが、リリースされた時点ではかなりクールでした。これを行うための文書化されたAPIがなかったため、BanyanのアダプターからイーサネットMACアドレスを取得する方法を理解できませんでした。

オンラインで調べてみると、他のバニヤンオタクが投稿した、この正確なアクションを実行するプログラムを見つけました。(MACアドレスは環境変数に格納されるので、スクリプトで使用できると思います)。私は彼のプログラムがどのように機能するかを知るために著者に手紙を書いてみましたが、彼は私に伝えたくないか、情報のためにとんでもない金額を望んでいました(私は覚えていません)。

それで、私は単に逆アセンブラを起動して、彼のユーティリティを分解しました。彼はサーバーに対して1つの単純な呼び出しを行っていたことが判明しました。これは、BanyanAPIの文書化されていない関数コードでした。呼び出しの詳細は非常に簡単に理解できました。基本的に、RPCを介してこのワークステーションアドレスをサーバーに要求し、MACはBanyanネットワークアドレスの一部でした。

次に、Banyanのエンジニアにメールを送信して、何をする必要があるかを伝えました。「ねえ、RPC関数番号528(または何でも)は私が必要とするものを返すようです。それは安全に呼び出すことができますか?」

バニヤンのエンジニアはとてもクールで、私が見つけた機能が正しく、なくなる可能性はほとんどないことを確認しました。私はそれを呼び出すために自分の新しいコードを書きました、そして私はオフで走っていました。

数年後、私は基本的に同じ手法を使用して、文書化されていない圧縮スキームを、文書化されていないファイル形式でリバースエンジニアリングしました。これらのファイルを解凍し、リバースエンジニアリングする(現在は機能していない)会社が提供するあまり知られていないサポートツールを見つけました。これは、ファイル形式のブロック構造内に適用された非常に単純なLempel-Zivバリアントであることが判明しました。その作業の結果は、後世のためにWiresharkのソースコードに記録されます。私の名前を検索してください。

于 2008-10-10T21:20:24.513 に答える
6

ほぼ 10 年前、私は懐かしさから、地元の書店のバーゲン ビンで UFO/XCOM コレクターズ エディションを手に入れました。家に帰ったとき、Windowsに移植されたことにちょっと興奮しました(DOSバージョンはwin2kで動作しませんでした)...そして、グラフィックが文字化けしていることに失望しました。

私は肩をすくめようとしていましたが (バーゲン ビンなど)、友人が「前にソフトウェアのバグを修正したことはありませんか?」と言いました。友達と遊びながら。最終的に、ピッチと幅の問題を修正するバグ修正ローダーを作成し、古いハードウェアを起動せずに最初の 2 つの XCOM ゲームをプレイできるようになりました (DOSBOX はまだ存在せず、私のマシンは十分に強力ではありませんでした)。本格的な仮想化)。

ローダーはある程度の人気を得て、STEAM のゲームの再リリースでしばらくの間配布さえされていましたが、最近では dosbox に切り替えられたと思います。

于 2011-07-17T14:12:07.743 に答える
4

Wacom タブレットをサポートする Atari ST 用のドライバーを作成しました。一部の Wacom の情報は Web サイトで見つけることができましたが、それでも多くのことを自分で理解しなければなりませんでした。

次に、wacom テーブルにアクセスするためのライブラリ (および結果を表示するためのテスト アプリケーション) を作成すると、実際にマウス カーソルをどこかに配置するための OS (GEM ウィンドウ システム) 用の API がないことがわかりました。結局、VDI と呼ばれるもの (Windows の GDI など) にいくつかの割り込みをフックする必要があり、内部のコンピューターがクラッシュしないように非常に注意する必要がありました。VDI の高速化バージョン (NVDI) の開発者から (提案という形で) いくらかの助けがあり、すべてが PurePascal で書かれていました。GEM でマウス カーソルを移動する方法などについて尋ねられることがあります。

于 2008-11-11T08:24:56.817 に答える
2

ビデオ処理アプリをリバースエンジニアリングする必要がありましたが、ソースコードの一部しかありませんでした。CORBAを使用して自分自身を呼び出したり、アプリのアクセスできない部分でCORBAから呼び出されたりしたため、制御フローを理解するのに何週間もかかりました。

まったくのばか。

于 2008-10-10T21:23:22.543 に答える
2

最近、Curl を使用して、Domino Web メール サーバーからコンテンツ全体をダウンロードするアプリを作成しました。これは、サーバーを実行している下請け業者が、アーカイブ リクエストごとに数百ドルを要求するためです。

私が部門用のアプリをリリースしてから約 1 週間後に、彼らはウェブメールのバージョンを変更しましたが、正規表現と XML を大量に使用して、再び機能するように管理しました。

于 2008-10-10T21:44:12.003 に答える
2

私が高校生だったとき、彼らは毎週特別な時間を導入しました (私の記憶が正しければ 3 時間ありました)。そこでは、教科に関する質問を手伝ってくれる教師がいる教室を選ばなければなりませんでした。もちろん、誰もがコンピューター室で時間を過ごして、そこでコンピューターをいじりたいといつも思っていました。

部屋を選択するには、特定の部屋に何人の学生が行くかを監視するアプリケーションがあったため、時間通りにスロットを予約するか、どこに行くかの選択肢があまりありませんでした。

当時、私はいつもそこのコンピューターで遊ぶのが好きで、管理者アクセスを既に取得していましたが、このアプリケーションだけではあまり役に立ちませんでした。そこで、管理者アクセスを使用してアプリケーションのコピーを作成し、家に持ち帰って調べました。すべての詳細を覚えているわけではありませんが、このアプリケーションが非表示のネットワーク共有にあるアクセス データベース ファイルを使用していることを発見しました。次に、このデータベース ファイルのコピーを取得した後、データベースにパスワードが存在することがわかりました。いくつかの Linux アクセス データベース ツールを使用すると、簡単に回避でき、その後、このデータベースを自分の mysql サーバーに簡単にインポートできました。次に、シンプルな Web インターフェイスを使用して、学校のすべての生徒の詳細を見つけて、スロットを変更し、自分が選んだ部屋に毎回座るように宣伝することができました。

次のステップは、リストから学生を選択するだけで、パスワードを調べることなく何も変更できる独自のアプリケーションを作成することでした。これは、わずか数時間で実装されました。

このスレッドの他のいくつかの話ほど印象的な話ではありませんが、当時の高校生にとってとても楽しかったことを今でも覚えています.

于 2011-07-17T13:00:25.323 に答える