初心者のフリーカーの興亡

長い間、私はそのようなものをHabrに書くつもりでしたが、非常に賢いトピックに関するあらゆる種類の記事のアイデアを育みました。 しかし、代わりに、技術的な面では非常に誇りに思っている自伝的なエピソードについて説明しますが、道徳的には非常に残念です。



名前と詳細を非表示にしません。第一に、それはかなり前のことであり、第二に、私にとっては論理的に終了し、これらのイベントの参加者がまだそれらを有益なストーリーとして扱っているとは思わないからです若者との戦いから。 さらに、技術的な詳細は古くて時代遅れであり、誰にとっても有用とは考えられません(そして、実際、以下に説明する理由により、ソースも完成品も保存されていません)。



だから、私がサンクトペテルブルクの "船"(SPbGMTU)の2年生だったのは1997年でした。 私はすでに21歳のときに、それ以前は自分の人生をすべて過ごしていたカリーニングラード地域から意識的にピーターズバーグに来ていました。 私はすでに強力なITのバックグラウンドを持っています。なぜなら、 私は約13年以来、熱狂的にプログラミングを行ってきました(そのため、熱狂の規模を想像できるように、 UKSC用の2つのゲームとグラフィックエディターを、 プロセッサデバッガーのみを使用して8進数のマシンコードで記述しました)。



私は同じグループで、同じように熱狂的にエレクトロニクスに夢中になった男、はんだごての絶対的なマスターであるシリルと勉強しました。 どういうわけか私たちの努力の共同適用のポイントは、サンクトペテルブルク公衆電話の支払いシステムのリバースエンジニアリングであることがそれ自身で起こりました。 まあ、あなたは理解しています、両親は遠く離れている、あなたは電話する必要があり、お金はありませんが、自由な時間と2つの悪い頭があります。



当時、サンクトペテルブルクでは、公衆電話(そして今、しかし明らかな理由で、あまり成功していません)がSPT-サンクトペテルブルク公衆電話に参加していました。 市内全域に、これらの標準によるかなり近代的なデバイスがインストールされました。 その場でモデル番号を見つけられませんでした、彼らは次のように見えました(写真も最高品質ではありませんでした):



画像



25〜1000ユニット(1ユニット-1分間のローカル会話または数秒の長距離)の容量を持つ、これらの公衆電話用のチップカード規格ISO-7816-2受け入れました。 その時点でFIDOおよび希少なインターネットで利用可能なカードの種類とプロトコルに関するすべての情報を収集したので、作業を開始しました。 すぐに、コンピューターのLPTポートに接続するリーダーを組み立てました。 マップの内容を読み取るプログラムも作成されました。 カードは小さなメモリであり、その一部には残りのユニットに関する情報が含まれており、(縮小の方向にのみ)変更できます。2番目の部分には、製造元、シリアル番号、その他のサービス情報が含まれます。



公衆電話をカードと交換し、カードダンプの小さなコレクションを収集するためのプロトコルについて十分な知識を蓄積したので、最大のプログラムの実装を開始しました。つまり、通常のカードのように動作するカードエミュレーターの作成を開始しましたが、ユニットエリアには任意の番号を記録するためにアクセスできます。 PIC16F84aマイクロコントローラーはエミュレーターの頭脳として選ばれました;そのプログラムはBorland C 3.0の環境でCで書かれました。 私はソフトウェアの部分に従事していました。つまり、マイクロコントローラー用のプログラムとコンピューター用のユーティリティーを作成しました。Cyrilはマイクロコントローラーのマスターであり、はんだごての怪物でした。



エミュレーターの最初のバージョンを構築してデバッグするプロセスは地獄でした。 鉄の計画では、最初のバージョンは非常にいもので、ネイティブの頭脳が削り出されたカードで、そこからワイヤーハーネスが突き出ていて、そこにコントローラーとハーネスの付いたボードがぶら下がっていました。 もちろん、正方形のバッテリーが青い回路基板にねじ止めされました。 さらに、完全な情報が不足しているため、次のファームウェアアセンブリをチェックするプロセスを想像してください(プロトコルのタイミングは試行錯誤によって選択する必要がありました)。「ここで、10から12に変更しました。一番近くの公衆電話に霜が降りて、好奇心の強い市民が来るまで待って、デバイスを公衆電話に接続し、「エラー8」の表記を100回目に見て、静かに誓って戻ってください。 エミュレーターが最初の100回部分的に動作し、公衆電話が待望の「25ユニット」を示したときの喜びを想像してください。 この段階では約6か月かかりました。



その後、鉄部品の改良のためにさらに6か月が継続され、2つの中間バージョンのエミュレーターと無数のファームウェアアセンブリが作成されました。 鉄の最終バージョンは、エンジニアリングの高さのように思えました:ウィザードCyrilは外部電源を取り除くことができました(以前のバージョンには起動する時間がなく、データ交換が始まる直前に電源が供給されすぎたため、ファームウェアを根本的に最適化する必要がありました) SOIC上のDIPエンクロージャ。 その結果、エミュレーターは通常のカードとまったく同じように見え、公衆電話からはひげが出ていませんでした。 マイクロフォンのケースは、公衆電話のカードリーダーに指が入らない場所に、エポキシで覆われた小さな厚さで隠されていました。 残念ながら、当時は撮影するものがなかったため、エレクトロニクスの傑作は後世のために失われています。



エミュレーターがオンになるたびに、エミュレーターは、ファームウェア中に置かれた額面のバージンクリーンカードのように動作しました。 ここで初めて、公衆電話プログラムで定められた技術的な安全対策に直面しました。 対策は非常に弱いと言わざるを得ません。 エミュレータにつながれたダンプカードは、使用を開始してから数日後に動作を停止しました。 この数日間、私は何回かカードをリセットすることができました(言うまでもなく、エミュレータの最初の完全に機能するバージョンを受け取って以来、私はそれを使って家に電話をかけました)。 正確な実装の詳細はわかりませんが、センターがトラフィックを分析し、カード番号をブラックリストに入力して、すべての公衆電話に送信してローカルに保存したようです。 さらに、2〜3日の遅延は、これが手動で行われることを示唆しています。



2番目の保護対策は、カードのメモリの書き換え不可能な部分に、シリアル番号とカードの元の額面(場合によっては何か)に基づいて生成された特定のコードを保存することでした。 このコードを生成するアルゴリズムは謎のままです。 このコードでは、完全な完成度を達成することはできず、マイクロコントローラーでオンザフライで直接新しいダンプを生成するため、実際のカードからダンプをフラッシュする必要がありました。 次に、十分な数のカードメモリダンプを収集することで、ハッシュアルゴリズムを計算できることを望みました。 しかし、すでに書いたように、これらの希望は実現しませんでした。



寄付者を探して、偶然「コレクター」に会いました(カードは非常に異なるデザインのもので、休日やイベントに合わせて異なるシリーズが絶えず発行されていたため、使用済みのカードを集める人さえいました)。 トラムの停留所で、スタックのカードを手にした男が会話を始め、読者との訪問を求めたのを見ました。 約100枚の新しいカードダンプがありました。 「コレクター」が公衆電話会社のセキュリティサービスに接続されていることが判明したため、これが物語の終わりの始まりでした。 彼は、奇跡のデバイスを100ドルで購入する準備ができていると言われている特定の市民に私たちを紹介しました。 私たちは陰謀を忘れて、簡単なお金でお世辞になり、買い手に会い、エミュレータの非の打ちどころのない仕事を見せてくれました...詳細なし。



だから、私たちは捕まった、世紀のキャプチャはサンクトペテルブルクのテレビで示された、インターネットはまだ私たちについてのいくつかのニュースを保存します。 裁判所があり、私たちは2年の刑務所に入れられました。それは私を純粋にポジティブなITスペシャリストにするのに十分であることが判明しました。



All Articles