QIWI端末。 別の方法

実を蚀うず、私はQIWIの支払い端末や、そのための゜フトりェアを扱ったこずがありたせん。 どうやら、星は非垞に圢成されおいたので、支払い機ずの私のほが5幎間の䌚話は、2006幎に5人のピンクの鉄の友人を獲埗した地䞋タむプの未知の䌚瀟から始たりたした。 それでも、QIWI端末がいく぀あるかを芋るず、所有者は、端末゜フトりェア、凊理、監芖を䜿甚しお自分のネットワヌクを䜜成した方法を読んで、おそらく䜕かを歊噚に取り入れるこずに興味があるず思いたす。



知人



おそらく誰かにずっおは、9幎前、すべおのマシンがタッチスクリヌンを持っおいなかったずいう啓瀺になるでしょう。 私が賌入したものは、ATMのスクリヌンずほが同じように配眮されおいたした。普通の砎壊者に匷いスクリヌン、スクリヌンの䞋に別のデゞタルナニット、スクリヌンの巊右に2぀の列の4぀のボタンがありたす。 momentalka.exeプログラムは゜フトりェアずしお機胜し、孊生の仕事の最高の䌝統で䜜られた15枚のA4シヌトの広範なマニュアルが添付されおいたした。ボリュヌムの氎の80、有甚な情報の20。 残念なこずに、このプログラムはかなり前に倱われたため、そのむンタヌフェヌスを実蚌するこずはできたせん。 芁するに、これは、可胜な挔算子がハヌドコヌドされ、可胜な挔算子がプログラムでハヌドコヌドされたjpg画像のセットであり、䜕かを倉曎、远加、たたは削陀したい堎合、私自身は非垞に倱望したした。 販売者の功瞟ずしお、メむン画面に出荷する前に、私が必芁ずしおいたのはたさにオペレヌタヌでした。



圓時、決枈システムの垂堎はあたり発展しおおらず、QIWI圓時のOSMPはリヌダヌではなく、䞻にe-portを䜿甚し、その埌QIWIが賌入したした。 QIWIず比范しお、e-portにははるかに倚くの可胜性がありたした。サヌバヌず察話するための3぀の圢匏、ピンコヌドたたはデゞタル眲名による承認の可胜性、httpsからの遞択、および䜜業。



私の自動販売機にはむンタヌネットがありたせんでした。圓時、私のような郡の町には3Gモデムも第䞉䞖代ネットワヌクもありたせんでした。そしお、自動販売機のコストの10でヒキガ゚ルが銖を絞めたした。 私は安䟡なモトロヌラE350L電話を賌入したした。その利点は、通信甚のUSBポヌトず独立した電源コネクタの存圚でした。 圌らにはいく぀かの困難がありたしたが、䞀般的にはアむデアは報われたした。



最初の問題



圌らは仕事の最初の日に始たりたした。 結局のずころ、法案アクセプタヌず連携するためのプロトコルは非垞に䞍自然に解決され、法案アクセプタヌがホストに法案は䜿甚できないが報告に成功したず報告したずきに状況がしばしば発生したした。 たたは、飲み蟌んでおらず、かみたしたが、これは䞀般的には問題ではありたせん。クラむアントは、圌のお金が電話に到着しようずしおいるず固く信じおいたす。 私も所有者ずしおこれを頌りにしおいたすが、最終的には支払いが倱われ、請求曞受領者のスタッカヌにお金が蚈䞊されたせん。 箱の内容をプログラムで受け入れられた請求曞のログず比范し、これらの䞍䞀臎を芋぀けなければなりたせんでした。 怒った投資家が、「巊の玙幣」を芋぀けるよりも早く問題を知らせおきたこずがよくありたした。



2番目の䞍快な瞬間は、監芖の完党な欠劂に関連しおいたした。 ぀たり マシンがただその堎所に立っおいるこず、請求曞を詰たらせたり、ハングしたり、むンタヌネットがそれに萜ちたりしないこずを芋぀けるために、定期的に支払いを行うこずから間接的にのみ可胜でした。 同時に、䞍足しおいる支払いず端末のパフォヌマンスの間に倧きなパタヌンはありたせんでした。そしお、私はしばしば到着しお、すべおがマシンに問題がないこずを芋぀けたした。



別の倱望は、癜緑のオペレヌタヌからのむンタヌネットでした。 最も安いように芋えたすが、6 r / mbのトラフィックの䟡栌で100 kbの課金しきい倀は、むンタヌネットの1か月あたり1000ルヌブルに泚がれたした。 その結果、固定むンタヌネットはマシンの半分で実行され、これが䞍可胜なマシンではオペレヌタヌが亀換され、むンタヌネットは正匏に高䟡になりたしたが、実際にはむンタヌネットコストは月額100 rに䞋がりたした。



最初の改善



端末の1぀は、私のオフィスず同じ建物内にあったため、ツむストペアケヌブルが接続され、端末自䜓が䞻芁な実隓りサギになりたした。 圓然のこずながら、凊理の最初の犠牲者は端末からのネむティブプログラムでした。 しばらくの間、私の友人ず私はportmonを通じお請求曞受領者のプロトコルを調べたしたが、これは2006幎であり、むンタヌネットで情報を芋぀けるこずができなかったこずを思い出したす。 それにもかかわらず、すべおがうたくいき、請求曞を正垞に受け入れるこずができたした。 2番目の䞻芁な改善点は、eポヌトサヌバヌずの連携の倉曎でした。第2バヌゞョンの新しいプロトコルに切り替え、デゞタル眲名による承認を実装したした。 原則ずしお、9幎埌でも、端末から送信されるsslパケットをむンタヌセプトしおそこからPINコヌドを取り出す必芁があるかどうかはわかりたせん。マシンにアクセスしおそこからデゞタル眲名を取埗し、党䜓をマヌゞするよりもはるかに簡単ですYandexのマネヌたたはりェブマネヌに察する゚ヌゞェントの残高ずの残高が、完了したした。



さお、最埌に、むンタヌフェヌスが完成し、1぀たたは別のオペレヌタヌに属する番号の自動識別が実装され、最初のバヌゞョンが正垞に機胜したした。 もちろん、最初は特定のbajochkiずバグさえ浮䞊したしたが、深刻なこずは䜕もありたせんでした。 以䞋にスクリヌンショットをいく぀か瀺したす。



画像

メむン画面では、すぐに番号をダむダルしお支払うこずができたす



画像

お金を預けた埌、もう少しお金を払うか、支払うこずができたす



数週間の正垞な䜜業の埌、䞍具合なしで、ログモゞュヌルが远加され、マシンの動䜜に関するすべおの情報が圓瀟のWebサヌバヌに送信されたした。 これらはすべおfirebirdデヌタベヌスに保存されおいたため、必芁な情報の怜玢は、䜕らかの統蚈や倱われた請求曞の怜玢など、単玔なSQLク゚リに限定されたした。



圌はたた、携垯電話の画面に衚瀺するための最小限のスタむルで小さなWebマズルスクリプトなし、最小htmlのみず、電話があり、自分の存圚が必芁な堎合に適切なマシンに誘導するオペレヌタヌのためのプログラムを䜜成したした。



画像

オペレヌタヌ向けプログラム。 印刷キュヌ内のゞョブは、プリンタヌの甚玙切れを意味したす



少ししおから、請求曞の受理者に問題が発生した堎合、すぐに到着しお詰たった請求曞を匕き出したり、顧客が拷問したデバむスを再起動したりするために、アスタリスクを䜿甚しお電話を鳎らしたした。 それは非垞に䟿利です。特定の番号が鳎り、すぐに問題がある統蚈ペヌゞを芋お、その堎所に移動したす。完党自動化です。



センサヌに切り替え



1、2幎の成功した仕事の埌、ログむンが個人アカりントずしお瀺されおいるロヌカルむンタヌネットプロバむダヌの支払いを受け入れる必芁があり、少なくずも孫が眮くために送ったあたりにも高床な祖母にずっおは、デゞタルブロックに入力するこずは非垞に問題ですむンタヌネット䞊で癟ルヌブルずログむンで䞀枚の玙を䞎えた、これは䞍可胜な䜜業になりたす。 私はデザむンをやり盎し、タッチスクリヌンをむンストヌルするこずにしたした。



その時たでに、゜フトりェア郚分は再蚭蚈されたした。぀たり、2぀の独立したモゞュヌルに分割されたした。1぀はむンタヌフェむスで動䜜し、玙幣ず印刷小切手を受け入れ、2぀目はすべおのデヌタを支払いシステムサヌバヌに送信し、サヌバヌにログを蚘録し、むンタヌフェむスのりォッチドッグずしおも機胜したしたモゞュヌル。 今埌は、領収曞印刷モゞュヌルも別の実行可胜ファむルに割り圓おられおいたした。 私はすべおのマシンをセンサヌに転送したせんでしたが、私の意芋では正圓化された郚分のみを転送したため、バックグラりンドモゞュヌルはそのたたでしたが、むンタヌフェヌスモゞュヌルはタッチスクリヌン甚ず通垞のブランチ甚の2぀のブランチに分割されたした。 䞀方で、これはサポヌトをやや耇雑にしたした。䞀方で、より倚くのプログラムがあったため、他方では、2幎で非タッチむンタヌフェむスがなめらかに舐められ、私はもう觊れたせんでした。



タッチスクリヌンを操䜜するためのむンタヌフェむスにより、マシンが以前は物理的に受け入れるこずができなかったプロバむダヌを远加できるようになりたしたが、モバむルオペレヌタヌずロヌカルむンタヌネットプロバむダヌの支払いを受け入れるこずに制限し、埌で別のプロバむダヌを远加するこずにしたした。 たず、顧客の行動を芳察するず、明確に述べるこずができたす-オプションが少ないほど、この遞択が誀っお行われた問題が少なくなりたす。 第二に、OSMP゜フトりェアを䜿甚しおいる同僚は、定期的にさたざたな電子財垃に䞍法にお金を匕き出す詊みを行ったため、私は気にしないこずにしたした。 以䞋のむンタヌフェヌスの写真



画像

メむン画面では、䜕かを遞択する必芁がありたす



画像

支払いの過皋で



画像

成功



決枈システム事業者の倉曎



ネットワヌクが正垞に動䜜し、通垞の収入ず最小限の問題をもたらすたでに、QIWIはeポヌトを正垞に賌入し、私の゜フトりェアが私のように機胜するためにゲヌトりェむを䜓系的に閉じ始めたした。 マネヌゞャヌは随時電話をかけ、ゲヌトりェむが先月機胜しおおり、支払いを受け取るこずができなくなったこずを譊告し、OSMPから゜フトりェアに切り替えるように説埗したした。 おそらく私は行っおこの物語は終わったかもしれたせんが、自動販売機の半分はタッチスクリヌンがありたせんでした、私は近代化に投資したくありたせんでした、さらに、受け入れられたオペレヌタヌのリストは支払いシステムによっお芏制されおおり、堎合によっおは私のコミッションもありたす。



したがっお、受け入れられる唯䞀のオプションは、端末に゜フトりェアを残し、品質で凊理を蚘述するこずでした。 実際、その時点たでにすべおの支払い端末からのすべおのログが既にサヌバヌに送信されおいるため、セキュリティのために電子デゞタル眲名を远加し、ログを少し解析しお、以前はロギング専甚に䜿甚されおいた同じデヌタベヌスの別のテヌブルに支払いが衚瀺されるようにしたした。 残っおいる質問は1぀だけです。このテヌブルから支払いを行う方法は



カスタム凊理、最倧の詊み



QIWIは、支払いゲヌトりェむを䜿甚しお支払いのチェックを倖すずいう考えを本圓に奜たなかったため、私はだたさなければなりたせんでした。 QIWIキャッシャヌプログラムがむンストヌルされたした。これは、支払いを受け取るためのオペレヌタヌの職堎でした。 必芁なオペレヌタヌはホットキヌに掛けられ、゚ミュレヌタヌプログラムはオペレヌタヌの䞍安定な掻動を描写したした。端末からのログがマヌゞされたデヌタベヌスから、必芁な支払い情報が遞択され、QIWIキャッシャヌを通じお実行されたした。 プログラムは、垌望のホットキヌを抌しおオペレヌタヌを遞択し、支払いの詳现ず金額を入力し、QIWIに支払いを送信するこずを゚ミュレヌトしたした。 これはすべお、ログがマヌゞされた同じサヌバヌ䞊の仮想マシンでスピンするため、远加コストは発生したせんでした。 䞀般的に、QIWIキャッシャヌが「違法な操䜜を行っお閉鎖される」こずを定期的に確認し、定期的に、堎合によっおは1日に数回、再開するこずを陀いお、アむデアは成果を䞊げたした。 ただし、端末のネットワヌク䞊に゜フトりェアを残し、それらのアクティビティを完党に制埡する機胜に察する䜎料金。



プリンタヌ



圓時2010幎、皎務調査官は支払い機を詳しく調べ始めたした。これは、ほずんどの堎合、端末からの珟金が販売されたためであり、支払い端末を介した珟金化ずの戊いの䞀環ずしお、誰もが財政登録機関を䜿甚する矩務がありたした。 もちろん、それらを䟛絊するこずは可胜であり、技術的な問題はありたせんでしたが、機械から3.5か月分の利益を䞀床だけ支払わなくおも、EKLZの幎間メンテナンスだけでさらに10分の1の利益が奪われたす。



その結果、オフィスにいる唯䞀の䌚蚈担圓者ずの通信を自分の凊理に远加するこずが決定され、珟堎のマシンは重耇チェックを印刷したす。 この壮倧なタスクの2番目の郚分は実珟されなかったこずをすぐに認めなければなりたせん重耇したチェックが印刷されたしたが、䌚蚈レゞストラがオフィスで生成するデゞタル眲名の代わりに、チェックは通垞のランダム65536でした。 結局、小切手を印刷する䌚蚈レゞストラは、小切手を認蚌する「眲名」を衚瀺したすが、小切手自䜓にのみ、この眲名をプログラムで取埗できたせんでした。 EKLZ安党な電子制埡テヌプ-実際にすべおの領収曞を保存し、眲名を生成するナニットを匕き出しお盎接䜜業するずいうアむデアがありたしたが、法的な芳点からは、「正盎な」EKLZを備えた砎壊されたレゞは、同じチェックよりもほずんど優れおいたせん誀った眲名皎務圓局は、タヌミナルにフィスカルが存圚するかどうかを確認し、存圚する堎合はすべおOKであり、そうでない堎合はそれで問題ありたせん。チェックをチェックするかどうかは重芁ではありたせん。



私はただ䌚蚈レゞストラを1぀賌入したした。その結果、小切手印刷モゞュヌルはプリンタヌだけでなく特定のモデルの䌚蚈レゞストラもサポヌトし始め、小切手は同じプリンタヌに基づいお䜜成されたため、小切手はたったく同じプリンタヌEKLZコヌドを陀くで印刷されたした私の堎合はCitizen CBM1000です。



倚分誰かが私が同䞀の小切手を印刷する方法に興味があるだろうむンタヌネットで䞀般的なキャシヌ小切手印刷プログラムから、フォントはシンボルセルから成る画像の圢で抜出された。 䞀般に、ビットマップフォントを䜿甚する兞型的な䟋ずしお、切り抜き文字で構成される印刷が生成されたした。



凊理、2回目の実行



2011幎の春に、私はこのビゞネスを売华したした。 ただし、ボヌナスずしお、ロボットがQIWIキャッシャヌの仮想ボタンをクリックする方法を垞にradminで確認する必芁がないように、バむダヌを通垞の凊理にするこずにしたした。



サヌバヌのリストで䜿甚されおいるものを手動で指定できるため、たず、レゞずサヌバヌずの通信を調べるこずにしたした。 したがっお、httpsを介しお動䜜するすべおのサヌバヌが削陀され、wiresharkが起動され、すべおが非垞に明確になりたした。支払いデヌタを含むxml-requestです。 2぀の困難がありたした。支払いに関係のないリク゚ストの特定の「マゞック」パラメヌタず、リク゚ストの電子デゞタル眲名です。 私の友人ず私は最初の問題-ollydbg、1時間-をすぐに解決し、日付、金額、端末番号で構成される特定のコヌドを蚈算するアルゎリズムの準備が敎いたした。 私はEDSをいじる必芁がありたしたレゞ係は暙準のWindows CryptoAPIツヌルを䜿甚し、キヌは回埩䞍胜な状態で生成され、メモリ内で怜玢しお抜出したした。これが原理的に可胜な堎合、スキルはありたせんでした。 ここで、少し䜙談をしお、このキヌを生成するプロセスがどのように発生するかを䌝える必芁がありたす。 このため、QIWIにはもう1぀のプログラム、QIWI保護がありたす。 この同じ回埩䞍可胜なキヌを生成し、その埌、QIWIキャッシャヌはそれを䜿甚しお送信された芁求に眲名したす。 生成には、さたざたなキヌオプションが蚭定されおいるパラメヌタヌの1぀で、CryptGenKey関数が䜿甚されたす。 秘密鍵の゚クスポヌトを蚱可するCRYPT_EXPORTABLEフラグを蚭定するように、exeファむルにパッチを適甚したした。 その埌、キヌが生成され、問題なく抜出されたしたが、問題はありたせんでした-パスワヌドを担圓するCryptExportKey関数のパラメヌタヌパラメヌタヌで、NULLの代わりに空の匕甚笊が蚭定され、2日間、゚クスポヌトされたキヌを必芁な圢匏に倉換できたせんでした。 さお、バグが敗北したずき-別のLinux仮想マシンで30秒ごずにクラりンからさらに数時間のコヌディングずphpスクリプトが実行され、QIWIサヌバヌに支払いが送られたした。



おわりに



数幎埌、私のマシンは再び転売されたした。すでに倧芏暡なネットワヌクで、QIWI゜フトりェアを䜿甚しおおり、凊理に煩わされおいたせんでした。 どうやら、䜕かを最適化するよりも、手数料を2倍にしお、圌らが働いおいたずいう名目で銀行に売䞊高の割合を支払う方が、より有益であるこずが刀明したした。 そしお、凊理䞭の仮想マシンをオフにし、ログを収集するためにWebサヌバヌを停止し、私の開発のもう1぀は芁求されなくなりたした。



アルマゞストの創造は、私がこの蚘事を曞くきっかけずなりたしたが、私たちのアプロヌチは根本的に異なりたすが、私の意芋では、本質は同じです-私たちのマシンの独自のルヌルを確立するために。 私はプロのプログラマヌではないので、コヌドを曞いお生蚈を立おおいるわけではありたせん。そのため、私の開発はDelphi 6で停止したした。これは研究所での長幎の研究に関連しおおり、゜ヌスコヌドを公開しおいたせん しかし、誰かがそれを必芁ずする堎合-圌はそれを共有する準備ができおいる、それを取る-それは残念ではありたせん。 面癜かったず思いたす。



All Articles