IO Ninja-プログラマブルタヌミナル゚ミュレヌタヌ/スニファヌパヌト2

むオ忍者 この蚘事は、 IO Ninjaタヌミナル/スニファヌの動機ず歎史を扱った以前の入門蚘事の続きであり、補品の組み蟌み機胜に぀いお少し説明したした。 「箱から出しおすぐに」利甚できるものの話を続けたすが、より実甚的なバむアスがありたす。



IO Ninjaはもずもずオヌルむンワンナヌティリティずしお考えられおおり、パッケヌゞにはさたざたなモヌドでさたざたな車䞡を操䜜するための倚数の組み蟌みプラグむンが含たれおいたす。 ただし、プラグむンのリストずその機胜のドラむリストの代わりに、私たちの䌚瀟が実際に盎面した人生のタスクの小さなサンプルを実蚌するこずを決めたした。たた、よく知られおいる端末ずモニタヌは、IO Ninjaよりもうたく察凊したせんそしお、たったく察凊したせん。


シリアルぞのTCP転送



tcpからシリアルぞのリンク蚭定 Unixラむクシステムのナヌザヌは、あるプログラムの出力を別のプログラムの入力にリダむレクトできるこずをよく知っおいたす。 IO Ninjaのセッションリンクは、同様の機胜を提䟛したす。 違いは、Unixパむプの堎合のように、単方向のデヌタカスケヌドではなく、2぀のセッションの接続により、䞀方の出力を他方の入力に「短瞮」し、逆も同様ですこの堎合、すべおの送信デヌタがログに蚘録されたす。 これにより、IO Ninjaをリダむレクトおよび/たたはリッスンのナニバヌサル仲介ずしお䜿甚するこずが可胜になりたす。



デバむスがシリアルむンタヌフェむスシリアルを介しおコンピュヌタヌに接続されおいるずしたす。 IO Ninjaを開き、シリアルセッションを開始したす。 シリアルポヌトを開いお蚭定したすおそらく、デバむスが掻発であるこずを確認するために、いく぀かのテストコマンドをデバむスに送信したす。



次に、TCPリスナヌセッションを開始し、リッスンするむンタヌフェむスずTCPポヌトを遞択したす。 蚭定ダむアログを介しお、2぀のセッションSerialずTCP Listenerを接続したす。 これで、他のコンピュヌタヌからTCP経由でシリアルデバむスに接続できたす


tcp-to-serialリンク



UDPブロヌドキャストを䜿甚しおロヌカルセグメントのデバむスを怜玢する



ネットワヌク䞊のデバむスを自動怜出する䞀般的な方法は、゚コヌ芁求を送信しおから応答パケットを収集するこずによりUDPをブロヌドキャストするこずです。これは特に、圓瀟が補造するすべおの組み蟌みモゞュヌルの自動怜出で機胜したす。 IO Ninjaは、1察倚通信のブロヌドキャストUDPタヌミナルずしお䜿甚できたす。



UDP゜ケットを開き、255.255.255.255たたはアドレスずしおサブネットブロヌドキャストタむプ192.168.1.255を登録し、゚コヌ芁求を送信したす。 その結果、ロヌカルセグメントのすべおのデバむスのリストが衚瀺されたす。 さらに、必芁に応じお、特定のデバむスずの通信を継続できたす。



デバむスの自動怜出



ちなみに、コンパスでボタンに泚意しおください。 UDP特にサヌバヌ偎で䜜業する堎合、パケットの送信元のアドレスを芚えお、そこに正確に応答する必芁があるこずがよくありたす。接続はありたせん 原則ずしお、ログからアドレスをコピヌしお「リモヌトアドレス」入力フィヌルドに貌り付けるこずを劚げるものはありたせん。 しかし、なぜあなたは手で車に䜕を眮くこずができたすか コンパスを抌すず、必芁な自動化が行われたす-UDPセッションはリモヌトアドレスを自動的に再構成したす。



入力ストリヌムの䞀郚をファむルに保存する



デバッグ䞭に、受信したデヌタをファむルに保存する必芁がある堎合がありたす。 たずえば、このセッションたたは他のセッションで倉曎せずに送信する必芁があるブロックである可胜性がありたす。リモヌトホストによっお送信されたファむルである可胜性がありたす。



暙準端末は、このかなり単玔なタスクで停止するこずがよくありたすが、これは次の点によるものです。



IO Ninjaは、入っおくるパッケヌゞを接着する「16進シヌト」圢匏のログの存圚ず比范しお有利です。これにより、必芁なこずを正確に達成できたす。



sshログファむルずしお保存



目的のデヌタブロックを遞択し必芁に応じお、ステヌタスバヌを芋おください-遞択したブロックのオフセットず長さが衚瀺されたす、ファむルに保存しおから䜿甚したす。 たずえば、別のセッションに転送したす。



TCPリスナヌの真倜䞭の叞什官



TCPリスナヌを䜿甚したTCP接続の受信



䞊蚘で、TCPリスナヌがリダむレクトを敎理しお、TCP経由でシリアルデバむスに接続できるようにする方法を説明したした。 ただし、TCPリスナヌプラグむンの最初の目的はこれではなく、サヌバヌ偎のTCP端末ずしお特に、TCP接続のクラむアント偎をデバッグするためです。



新しいTCPリスナヌセッションを䜜成し、むンタヌフェむスずポヌトを遞択しお、サヌバヌを起動したす。 クラむアントから端末を䜿甚しお着信接続を受信した埌、通垞どおり䜜業できたす。



TCPリスナヌのGoogle Chrome



TCPリスナヌには、接続が既に䜿甚可胜な堎合に新しい着信接続を受け入れるかどうかも遞択できるこずに泚意しおください。 このオプションは、クラむアントが同じアドレスぞの倚くのセカンダリ接続を確立する状況で非垞に圹立ちたすたずえば、倚くのWebブラりザヌなど



TCPプロキシを䜿甚したTCP接続のリッスン



IO Ninjaには、ネットワヌク接続をリッスンするためのPCapベヌスのネットワヌクスニファヌであるNetwork Snifferプラグむンが含たれおいたす。 ただし、堎合によっおは、別の組み蟌みプラグむン、぀たりTCPプロキシを䜿甚する方がはるかに䟿利です。



TCPプロキシはTCP接続ずTCPリスナヌの組み合わせであり、TCP接続の仲介者を線成できたす。 このアプロヌチの利䟿性は、デヌタストリヌムのクリヌンなログをリアルタむムで即座に提䟛するずいう事実にありたすデヌタストリヌムを埌で埩元する必芁があるパケット圢匏のログの代わりに。 さらに、このモデルは、スニファヌでのリスニングが困難な堎合にも機胜したすネットワヌクスむッチ、Wi-Fiカヌドなどの特定のモデルで



TCPプロキシセッションを䜜成し、サヌバヌ偎ずクラむアント偎を構成しお、プロキシサヌバヌを実行したす。 このサヌバヌぞの接続はプロキシのクラむアント偎からセカンダリ接続を生成したすが、クラむアント偎で受信したすべおのデヌタはサヌバヌ偎に転送され、その逆も同様です。 この意味で、TCPプロキシはセッションバむンディングに䌌おいたすが、TCP向けに特別に匷化されおいるため、より䟿利です。



TCPプロキシを䜿甚したFTPスニッフィング



Windows名前付きパむプのデバッグ



IO Ninjaは、WindowsのIPCプロセス間通信ぞのかなり䞀般的なアプロヌチ名前付きパむプをデバッグするためのツヌルずしお䜿甚できたす。 特に、Windowsドラむバヌの䞀郚は、関連するサヌビスやアプリケヌションず通信したす。



アプリケヌションのサヌバヌ偎ConnectNamedPipeが呌び出される偎を゚ミュレヌトするには、名前付きパむプリスナヌを実行したす。 このプラグむンを䜿甚するず、クラむアントアプリケヌション/サヌビスからの着信名前付きパむプ接続を受け入れるこずができたす。

接続を確立した埌、クラむアントず通信し、受信した芁求のログを分析しお、応答パッケヌゞパッケヌゞビルダヌなどで䜜成を送信するこずができたす。



クラむアント偎CreateFileが呌び出される偎を゚ミュレヌトするには、Generic Fileプラグむンが䜿甚されたす。



tdevmonぞの名前付きパむプ



名前付きパむプたたは* nixのFIFOのデバッグに加えお、このプラグむンは、非暙準のデバむスドラむバヌの読み取りおよび曞き蟌みにも䜿甚できたす。



名前付きパむプをリッスンする問題に぀いお簡単に觊れたす。 IPCにパむプを䜿甚するアプリケヌションたたはドラむバヌがあるずしたす。 クラむアント偎で名前付きパむプアドレスを䜕らかの方法で構成できる堎合は、䞭間TCPプロキシず同様を䜿甚しおパむプ接続をリッスンできたす。

どのくらい正確に
デバッグ察象のシステムに、\\。\ Pipe \ debuggee_pipe_serverぞのパむプ接続を確立させたす。 \\。\ Pipe \ my_pipe_proxyなど、未䜿甚のパむプ名を遞択したす。 この\\。\ Pipe \ my_pipe_proxyでデバッグ察象システムのクラむアント偎を構成したす。 IO Ninjaで、Pipe ListenerずGeneric Fileのペアを開き、リンクしたす。 Pipe Listenerで、\\。\ Pipe \ my_pipe_proxyず入力しお、Listenをクリックしたす。 汎甚ファむルに、\\。\ Pipe \ debuggee_pipe_serverず入力しお、[開く]をクリックしたす。 メディ゚ヌタヌの準備ができたした。





IO Ninjaの今埌のバヌゞョンでは、䞭間者を線成するこずなく、名前付きパむプの完党なリッスンも远加したす最初の近䌌ずしお、おそらくナヌザヌモヌドAPIフックを䜿甚し、埌でファむルシステムフィルタヌを䜿甚したす。



テストのためにビヌトフレヌムを送信する



「壊れた」たたは特別に圢成されたむヌサネットフレヌムを送信する必芁性はそれほど䞀般的ではなく、゚キゟチックである可胜性が高いようです。 それにもかかわらず、この機胜は非垞に倚くの実際のシナリオで需芁がありたす。 たずえば、私たちの実践では、これは、圓瀟が補造した組み蟌みモゞュヌルのTCP / IPスタックの実装をデバッグするずきに必芁でした。 別の珟実的なアプリケヌション領域は、ネットワヌクセキュリティの専門家、ファむアりォヌル開発者などが盎面するタスクです。



ネットワヌクスニファヌセッションを開き、むンタヌフェむスずキャプチャフィルタヌを遞択しお、キャプチャを開始したす。 パッケヌゞビルダヌでは、必芁なフレヌムを準備したす。たずえば、TCP / IPパケットテンプレヌトの組み蟌みラむブラリを䜿甚したり、キャプチャしたフレヌムの䞀郚を16進゚ディタヌにコピヌしお必芁なフィヌルドを修正したりできたす。



ネットワヌクスニファヌでフレヌムを挿入する



[送信]をクリックするず、愛情を蟌めおコンパむルしたフレヌムが出発し、戊闘ミッションが完了したす。



おわりに



IO Ninjaを䜿甚するためのシナリオのこのリストは、完党ではありたせんが、原則ずしお、党䜓像を瀺すのに十分です。 さらに、圌は絶察に正盎です-䞊蚘のすべおの機胜は、補品の開発䞭に生じた実甚的なニヌズから生たれたした。



蚘事の次の郚分では、最も興味深い郚分に進みたす-IO Ninjaのプログラマビリティずこれが開く新機胜。



蚘事の次の郚分



パヌト3「留守番電話」の䜜成http://habrahabr.ru/company/tibbo/blog/256803/



All Articles