以下、本発明の実施の形態について図面を参照して説明する。以下の説明では同一の部品には同一の符号を付してある。それらの名称および機能も同じである。従ってそれらについての詳細な説明は繰り返さない。
図1は、本発明の実施の形態の一つにおける情報処理システムの全体概要の一例を示す図である。図1を参照して、情報処理システム1は、MFP(Multi Function Peripheral)100と、パーソナルコンピューター(以下「PC」という)300と、内部サーバー200と、検証サーバー500と、を含む。
MFP100は、画像形成装置の一例であり、処理対象となるデータを画像処理する画像処理機能、画像データに基づいて用紙などの記録媒体に画像を形成するための画像形成機能を少なくとも備えている。MFP100は、画像処理機能および画像形成機能に加えて、原稿を読み取るための原稿読取機能、およびファクシミリデータを送受信するファクシミリ送受信機能を備えてもよい。画像処理は、限定するものではないが、画像データを画像形成可能なラスターデータに変換する処理、画像中のエッジを強調する先鋭化処理、画像中の色の変化を滑らかにするスムージング処理、データをよりサイズの小さな符号化データに変換する符号化処理、符号化データを復号する復号処理、画像データのフォーマットを変換する変換処理を含む。
PC400および検証サーバー500は、一般的なコンピューターである。したがって、それらのハードウェア構成および機能については周知なので、ここでは説明を繰り返さない。
MFP100、内部サーバー200およびPC400それぞれは、ローカルエリアネットワーク(LAN)3に接続される。このため、MFP100、PC400および内部サーバー200それぞれは、LAN3を介してデータの送受信が可能である。LAN3は、それに接続される装置が限定された閉じた環境となるため、LAN3に接続される複数の装置間、ここではMFP100、PC400および内部サーバー200との間で送受信されるデータが外部に漏れないようにセキュリティが確保されている。なお、LAN3の接続形態は有線または無線を問わない。また、LAN3に代えて、セキュリティが確保されるのであれば、公衆交換電話網(Public Switched Telephone Networks)を用いたネットワーク、ワイドエリアネットワーク(WAN)を用いるようにしてもよい。
LAN3は、インターネット5に接続される。検証サーバー500は、インターネット5に接続されている。このため、MFP100、PC400および内部サーバー200それぞれは、LAN3を介してインターネット5に接続された検証サーバー500と互いに通信可能である。MFP100、PC400および内部サーバー200は内部に配置される装置であるのに対して、検証サーバー500は、MFP100、PC400および内部サーバー200に対して外部に配置される装置である。内部とは、セキュリティが確保されている領域を示し、外部とは内部で確保されているセキュリティが確保されていない領域を示す。
本実施の形態における情報処理システム1において、PC400からMFP100にデータを送信し、受信されたデータを処理するMFP100で不具合が発生する場合に、検証サーバー500で、MFP100において発生した不具合を検証する。ここでの検証は、MFP100で発生した不具合が次に発生しないように、MFP100またはPC400を設定することである。例えば、PC400からMFP100に送信されるデータが、MFP100で処理可能なデータとなるようにMFP100またはPC400のいずれかにインストールされているアプリケーションプログラムを更新する。検証サーバー500において、MFP100において発生した不具合を再現するために、不具合の原因となるデータ、ここでは、PC400からMFP100に送信されるデータが必要となるが、そのデータが機密性の高い機密情報を含んでいる場合がある。このため、PC400からMFP100に送信されたデータそのものを検証サーバー500に送信するのではなく、内部サーバー200において、PC400からMFP100に送信されたデータを、MFP100において発生した不具合と同じ不具合が再現される再現用データに変換し、再現用データを検証サーバー500に送信する。再現用データがLAN3に接続されたMFP100、PC400および内部サーバー200を含む閉じた環境の外部に配置された検証サーバー500に送信されるが、再現用データからデータに含まれる機密情報を再現できなければ機密情報が外部に漏洩するのを防止することができる。
図2は、本実施の形態における内部サーバーのハードウェア構成の概要の一例を示すブロック図である。図2を参照して、内部サーバー200は、内部サーバー200の全体を制御するための中央演算装置(CPU)201と、CPU201が実行するためのプログラムを記憶するROM(Read Only Memory)202と、CPU201の作業領域として使用されるRAM(Random Access Memory)203と、データを不揮発的に記憶するハードディスクドライブ(HDD)204と、CPU201をLAN3に接続する通信部205と、情報を表示する表示部206と、ユーザーの操作の入力を受け付ける操作部207と、外部記憶装置208と、を含む。
表示部206は、液晶表示装置(LCD)、有機ELD(Electro−Luminescence Display)等の表示装置である。操作部207は、キーボードなどのハードキーである。また、操作部207は、タッチパネルであってもよい。タッチパネルは、表示部206の上面または下面に表示部206に重畳して設けられる。タッチパネルは、表示部206の表示面中でユーザーにより指示された位置を検出する。
通信部205は、CPU201をLAN3に接続するためのインターフェースである。通信部205は、TCP(Transmission Control Protocol)またはUDP(User Datagram Protocol)等の通信プロトコルで、LAN3に接続されたMFP100またはPC400と通信する。なお、通信のためのプロトコルは、特に限定されることはなく、任意のプロトコルを用いることができる。内部サーバー200に、MFP100およびPC400それぞれのIP(Internet Protocol)アドレスを登録しておくことにより、内部サーバー200は、MFP100およびPC400それぞれと通信することができ、データの送受信が可能となる。
HDD204は、CPU201が実行するプログラム、またはそのプログラムを実行するために必要なデータを記憶する。CPU201は、HDD204に記録されたプログラムを、RAM203にロードして実行する。
外部記憶装置208は、プログラムを記憶したCD−ROM(Compact Disk ROM)209が装着される。CPU201は、外部記憶装置208を介してCD−ROM209にアクセス可能である。CPU201は、外部記憶装置208に装着されたCD−ROM209に記録されたプログラムをRAM203にロードして実行する。なお、CPU201が実行するプログラムを記憶する媒体としては、CD−ROM209に限られず、光ディスク(MO(Magnetic Optical Disc)/MD(Mini Disc)/DVD(Digital Versatile Disc))、ICカード、光カード、マスクROMまたはEPROM(Erasable Programmable ROM)などの半導体メモリであってもよい。
また、CPU201が実行するプログラムは、CD−ROM209に記録されたプログラムに限られず、HDD204に記憶されたプログラムをRAM203にロードして実行するようにしてもよい。この場合、LAN3に接続された他のコンピューターが、HDD204に記憶されたプログラムを書き換える、または、新たなプログラムを追加して書き込むようにしてもよい。さらに、内部サーバー200が、LAN3またはインターネット5に接続された他のコンピューターからプログラムをダウンロードして、そのプログラムをHDD204に記憶するようにしてもよい。ここでいうプログラムは、CPU201が直接実行可能なプログラムだけでなく、ソースプログラム、圧縮処理されたプログラム、暗号化されたプログラム等を含む。
図3は、本実施の形態におけるMFPのハードウェア構成の概要の一例を示すブロック図である。図3を参照して、MFP100は、メイン基板111と、原稿を読み取るための原稿読取部130と、原稿を原稿読取部130に搬送するための自動原稿搬送装置120と、原稿読取部130が原稿を読み取って出力する画像データに基づいて用紙等に画像を形成するための画像形成部140と、画像形成部140に用紙を供給するための給紙部150と、通信インターフェース(I/F)部160と、ファクシミリ部170と、外部記憶装置180と、大容量記憶装置としてのハードディスクドライブ(HDD)113と、ユーザーインターフェースとしての操作パネル115とを含む。
メイン基板111は、自動原稿搬送装置120、原稿読取部130、画像形成部140および給紙部150、通信I/F部160、ファクシミリ部170、外部記憶装置180、HDD113、および操作パネル115と接続され、MFP100の全体を制御する。
自動原稿搬送装置120は、原稿トレイ上にセットされた複数枚の原稿を1枚ずつ自動的に原稿読取部130のプラテンガラス上に設定された所定の原稿読み取り位置まで搬送し、原稿読取部130により原稿に形成された画像が読み取られた原稿を原稿排紙トレイに排出する。原稿読取部130は、原稿読取位置に搬送されてきた原稿に光を照射する光源と、原稿で反射した光を受光する光電変換素子とを含み、原稿のサイズに応じた原稿画像を走査する。光電変換素子は、受光した光を電気信号である画像データに変換して、画像形成部140に出力する。
給紙部150は、給紙トレイに収納された用紙を画像形成部140に搬送する。画像形成部140は、周知の電子写真方式により画像を形成するものであって、原稿読取部130から入力される画像データにシェーディング補正などの各種のデータ処理を施した、データ処理後の画像データまたは、外部から受信された画像データに基づいて、給紙部150により搬送される用紙に画像を形成し、画像を形成した用紙を排紙トレイに排出する。
通信I/F部160は、LAN3にMFP100を接続するためのインターフェースである。通信I/F部160は、TCPまたはUDP等の通信プロトコルで、ネットワークに接続された他のコンピューターと通信する。なお、通信のためのプロトコルは、特に限定されることはなく、任意のプロトコルを用いることができる。
通信I/F部160は、LAN3から受信されるデータをメイン基板111に出力し、メイン基板111から入力されるデータをLAN3に出力する。通信I/F部160は、LAN3から受信されるデータのうちMFP100宛てのデータのみを、メイン基板111に出力し、LAN3から受信されるデータのうちMFP100とは異なる装置宛てのデータを廃棄する。
ファクシミリ部170は、公衆交換電話網(PSTN)に接続され、ファクシミリデータを送受信する。外部記憶装置180は、CD−ROM181、または半導体メモリが装着される。外部記憶装置180は、CD−ROM181または半導体メモリに記憶されたデータを読み出す。外部記憶装置180は、CD−ROM181または半導体メモリにデータを記憶する。
操作パネル115は、MFP100の上面に設けられ、表示部118と操作部119とを含む。表示部118は、液晶表示装置(LCD)、有機ELD等の表示装置であり、ユーザーに対する指示メニューや取得した画像データに関する情報等を表示する。操作部119は、複数のハードキーと、タッチパネルと、を含む。タッチパネルは、表示部118の上面または下面に表示部に重畳して設けられたマルチタッチ対応のタッチパネルであり、表示部118の表示面中でユーザーにより指示された位置を検出する。
図4は、本実施の形態におけるメイン基板の詳細な構成の一例を示すブロック図である。図4を参照して、メイン基板111は、CPU171と、ROM173と、RAM175と、画像制御ASIC(Application Specific Integrated Circuit)177と、を含む。
CPU171、ROM173、RAM175および画像制御ASIC177それぞれは、バス179に接続されており、データの転送が可能である。CPU171は、MFP100の全体を制御する。ROM173は、CPU171が実行するプログラムを記憶する。RAM175は、CPU171の作業領域として用いられる揮発性の半導体メモリである。
CPU171は、HDD113に記憶されたプログラムをRAM175にロードして実行する。CPU171が実行するプログラムは、ハードウェア資源を制御するための制御プログラム、およびアプリケーションプログラムを含む。ハードウェア資源は、自動原稿搬送装置120、原稿読取部130、画像形成部140、給紙部150、の通信I/F部160、ファクシミリ部170、HDD113および操作パネル115を含む。アプリケーションプログラムは、例えば、ファクシミリ部170を制御してファクシミリデータを送信するファクシミリ送信プログラム、ファクシミリ部170を制御してファクシミリデータを受信するファクシミリ受信プログラム、通信I/F部160を制御してプリントジョブを受信し、画像形成部140および給紙部150を制御してプリントジョブに基づいて画像を形成するプリントプログラム、原稿読取部130を制御して原稿を読み取る原稿読取プログラムを含む。また、アプリケーションプログラムは、MFP100が備える消耗品を管理するメンテナンスプログラム、エラー状態を通知するエラー状態通知プログラムを、含んでもよい。なお、CPU171が実行するアプリケーションプログラムを、これらに限定するものではない。
画像制御ASIC177は、自動原稿搬送装置120、原稿読取部130、画像形成部140、および給紙部150と接続され、それらを制御する。また、画像制御ASIC177は、原稿読取部130が原稿を読み取って出力する画像データに所定の画像処理を実行する機能、画像データを画像形成部140がプリントするためのラスターデータに変換する機能を有する。
図5は、本実施の形態における内部サーバーが備えるシミュレータの概要の一例を示す図である。このシミュレータは、CPU201がシミュレートプログラムを実行することにより、CPU201に形成される。図5を参照して、シミュレータは、CPU周辺シミュレータ300と、ハードウェア(HW)シミュレータ320と、を含む。CPU周辺シミュレータ300は、MFP100が備えるCPU171をシミュレートする仮想CPU301と、ROM173およびRAM175をエミュレートする仮想メモリ303と、周辺モデル305と、同期設定モデル307と、割込制御部309と、を含む。仮想CPU301、仮想メモリ303、周辺モデル305および同期設定モデル307は、バス(Bus)311に接続されている。
周辺モデル305は、MFP100が備えるHDD113、操作パネル115、通信I/F部160および外部記憶装置180をそれぞれエミュレートするHDD113A、操作パネル115A、通信I/F部160Aおよび外部記憶装置180Aを含む。
同期設定モデル307は、仮想CPU301が、仮想メモリ303および周辺モデル305と同期するための設定をする。割込制御部309は、仮想CPU301が仮想メモリ303および周辺モデル305と同期するための設定時に、仮想CPU301に割り込みを発生させる。
HWシミュレータ320は、PCI−ExpressBusモデル321と、画像制御ASICモデル323と、ハードウェア資源モデル325と、を含む。PCI−ExpressBusモデル321は、バス311に接続され、PCI−Express規格に従った接続をエミュレートする。画像制御ASICモデル323は、MFP100が備える画像制御ASIC177をエミュレートする。ハードウェア資源モデル325は、MFP100が備えるハードウェア資源をエミュレートする。具体的には、ハードウェア資源モデル325は、MFP100が備える自動原稿搬送装置120、原稿読取部130、画像形成部140、給紙部150およびファクシミリ部170をそれぞれエミュレートする自動原稿搬送装置120A、原稿読取部130A、画像形成部140A、給紙部150Aおよびファクシミリ部170Aを含む。
図6は、本実施の形態におけるMFPが備えるCPUが有する機能の一例を示すブロック図である。図6に示す機能は、MFP100が備えるCPU171が、ROM173、HDD113またはCD−ROM181に記憶された検証依頼プログラムを実行することにより、CPU171により実現される機能である。検証依頼プログラムは、再現用データ生成プログラムの一部である。図6を参照して、CPU171は、通信I/F部160を制御する通信制御部51と、データに対して画像処理を実行する画像処理部53と、画像処理部53による画像処理の不具合を検出する不具合検出部55と、パケット記憶部57と、検証依頼部59と、を含む。
通信制御部51は、通信I/F部160を制御して、外部から複数の受信パケットを受信する。ここでは、PC400が送信する受信パケットを受信する場合を例に説明する。具体的には、通信制御部51は、通信I/F部160を制御してPC400が送信する複数の受信パケットを受信し、受信された複数の受信パケットを画像処理部53およびパケット記憶部57に出力する。受信パケットは、PC400との間で取り決められた通信プロトコルにより定められた情報がヘッダ部に設定されている。受信パケットのヘッダ部は、例えば、複数の受信パケットを受信するMFP100が、受信パケットのボディ部に格納された複数の分割部分から1つの処理データの再現を可能とする情報を含む。
複数の受信パケットは、1つの送信指令に対して複数の受信パケットが送信される場合があり、同じ組に含まれる複数の受信パケットそれぞれには、1つの送信指令に対して同じ組に含まれることを示す指令識別情報が含まれる。通信制御部51は、指令識別情報を複数の受信パケットそれぞれとともにパケット記憶部57に出力する。さらに、1つの処理データが単位部分の複数から構成される場合があり、受信パケットそれぞれには、そのボディ部に設定された分割部分が含まれる単位部分を識別するための部分識別情報が含まれる。通信制御部51は、部分識別情報を複数の受信パケットそれぞれとともにパケット記憶部57に出力する。単位部分は、例えば、処理データが複数ページからなる画像データの場合、1つのページの画像データを示し、部分識別情報は、ページ番号を示す。
パケット記憶部57は、通信制御部51から指令識別情報と受信パケットとが入力されることに応じて、受信パケットを指令識別情報と関連付けてHDD113に記憶する。この場合、パケット記憶部57は、通信制御部51から入力される指令識別情報と受信パケットとをHDD113に記憶する時点で、通信制御部51から入力される指令識別情報と異なる指令識別情報と、その指令識別情報に関連付けられた受信パケットとがHDD113に記憶されている場合には、それらをHDD113から消去するのが好ましい。これにより、HDD113の記憶容量が無駄に消費されるのを回避することができる。
また、パケット記憶部57は、通信制御部51から指令識別情報と部分識別情報と受信パケットとが入力される場合、受信パケットを指令識別情報および部分識別情報と関連付けてHDD113に記憶する。この場合、パケット記憶部57は、通信制御部51から入力される指令識別情報と部分識別情報と受信パケットとをHDD113に記憶する時点で、通信制御部51から入力される指令識別情報と部分識別情報との組と異なる組の指令識別情報と部分識別情報と、受信パケットとがHDD113に記憶されている場合には、それらをHDD113から消去するのが好ましい。これにより、HDD113の記憶容量を有効に利用することができる。
画像処理部53は、データを画像処理し、画像データを生成する。画像処理部53は、通信制御部51から複数の受信パケットが入力されることに応じて、複数の受信パケットから処理データを再現し、処理データを画像処理する。例えば、処理データがプリントデータの場合、プリントジョブによって定められた条件に従ってプリントデータを画像処理する。画像処理部53は、処理データがWebデータまたはHDD113に記憶されたデータの場合、ユーザーが操作部119に入力するプリント条件に従って処理データを画像処理する。
不具合検出部55は、画像処理部53が画像処理を実行中に発生する不具合を検出する。画像処理部53は、CPU171が画像処理プログラムを実行する画像処理タスクである。不具合検出部55は、画像処理タスクが、画像処理プログラムにより予め定められたエラーを検出する場合に、不具合を検出する。画像処理プログラムにより予め定められたエラーは、画像処理部53が画像処理を開始してから予め定められた時間が経過するタイムアウトエラーを含む。予め定められた時間は、例えば、画像処理の対象となるデータのデータ量に比例する時間としてもよい。不具合検出部55は、不具合を検出する場合、検出された不具合を特定するための不具合情報を検証依頼部59に出力する。不具合情報は、画像処理プログラムにより予め定められたエラーを識別するためのエラー識別情報を含む。
検証依頼部59は、不具合検出部55から不具合情報が入力されることに応じて、パケット記憶部57によりHDD113に記憶された受信パケットの全てを読出し、内部サーバー200に検証を依頼する。具体的には、検証依頼部59は、通信I/F部160を制御して、HDD113から読み出された複数の受信パケットと、不具合情報に含まれるエラー識別情報と、を内部サーバー200に送信する。受信パケットが部分識別情報と関連付けられている場合には、受信パケットと部分識別情報との組を、内部サーバー200に送信する。
図7は、本実施の形態における内部サーバーが備えるCPUが有する機能の一例を示すブロック図である。図7に示す機能は、内部サーバー200が備えるCPU201が、ROM202、HDD204またはCD−ROM209に記憶された再現用データ生成プログラムを実行することにより、CPU201により実現される機能である。
図7を参照して、内部サーバー200が備えるCPU201は、装置情報取得部251と、パケット取得部253と、エラー情報取得部255と、シミュレート部257と、仮想実行制御部259と、生成部261と、再現用パケット決定部263と、出力部265と、を含む。
装置情報取得部251は、MFP100が送信する装置情報を取得する。具体的には、装置情報取得部251は、通信部205がMFP100から装置識別情報を受信すると、受信された装置情報を取得する。装置情報取得部251は、装置情報を取得する場合、装置情報をシミュレート部257に出力する。装置情報は、MFP100に搭載されているCPU171に関する情報、MFP100にインストールされたハードウェア資源に関するハード情報と、MFP100にインストールされたソフトウェア資源に関するソフト情報と、を含む。CPU171に関する情報は、CPU171の機種名を含む。ハード情報は、ハードウェア資源を識別するためのハード識別情報と、ハードウェア資源を制御するために設定されているハードパラメータとを含む。ハード情報は、ハードウェア資源が複数の場合には、複数のハードウェア資源ごとに、ハード識別情報とハードパラメータとを含む。ソフト情報は、MFP100にインストールされているプログラムのプログラム名と、そのプログラムを実行するために設定されているソフトパラメータと、を含む。
パケット取得部253は、MFP100から送信される複数の受信パケットを取得する。パケット取得部253は、複数の受信パケットを受信すると、それらを生成部261に出力する。
エラー情報取得部255は、MFP100から送信されるエラー識別情報を取得する。エラー情報取得部255は、エラー識別情報を取得すると、エラー識別情報を再現用パケット決定部263に出力する。
生成部261は、パケット取得部253から入力される複数の受信パケットに基づいて、複数の受信パケットそれぞれの少なくとも一部を含む複数の変更パケットを生成する。具体的には、生成部261は、複数の受信パケットそれぞれのヘッダ部に記述されている情報に基づいて、複数の受信パケットそれぞれのボディを合成することにより、処理データを生成する。そして、生成部261は、処理データを分割し、複数の分割部分を生成する。例えば、分割部分のサイズを予め定めておき、処理データのサイズと分割部分のサイズとから分割数を決定すればよい。
生成部261は、複数の分割部分の少なくとも1つに基づいて変更パケットを生成する。具体的には、生成部261は、複数の分割部分から1以上の分割部分を処理対象に選択する。生成部261は、処理対象に選択された1以上の分割部分が、機密情報を含む場合、機密情報をダミー情報に変更する。機密情報は、機密性の高い情報として予め定められた情報である。機密情報は、例えば、個人情報、予め定められた単語等である。個人情報は、例えば、ユーザーアカウント、パスワード、電話番号、氏名等を含む。生成部261は、処理対象に選択された1以上の分割部分に基づいて変更パケットを生成する。生成部261は、複数の受信パケットを順に処理対象に選択し、処理対象に選択された受信パケットに対応する変更パケットを生成する。生成部261は、処理対象に選択された受信パケットのボディ部が、選択された1以上の分割部分のいずれかを含む場合、その分割部分を変更パケットのボディ部に設定し、受信パケットのヘッダ部を分割部分が設定されたボディ部に適合するように修正したヘッダ部を変更パケットのヘッダ部に設定する。生成部261は、処理対象に選択された受信パケットのボディ部が、選択された1以上の分割部分のいずれをも含まない場合、変更パケットのボディ部に何も設定することなく、受信パケットのヘッダ部を空のボディ部に適合するように修正したヘッダ部を変更パケットのヘッダ部に設定する。このように、生成部261は、複数の受信パケットにそれぞれ対応する複数の変更パケットを生成する。複数の変更パケットによって再生されるデータは、複数の分割部分から選択された1以上の分割部分を合成したデータとなる。生成部261は、生成された複数の変更パケットを仮想実行制御部259に出力する。
シミュレート部257は、装置情報取得部251から入力される装置情報に基づいてMFP100をシミュレートする。まず、シミュレート部257は、装置情報に基づいて、MFP100に装着されたハードウェア資源を設定し、ハードパラメータを設定する。
MFP100は、ハードウェア資源として、画像制御ASIC177、自動原稿搬送装置120、原稿読取部130、画像形成部140、給紙部150、通信I/F部160、ファクシミリ部170、外部記憶装置180、HDD113および操作パネル115を含む。このため、装置情報に含まれるハード情報は、画像制御ASIC177、自動原稿搬送装置120、原稿読取部130、画像形成部140、給紙部150、通信I/F部160、ファクシミリ部170、外部記憶装置180、HDD113および操作パネル115をハードウェア資源として定める。シミュレート部257は、装置情報に含まれるハード情報で定められた画像制御ASIC177、自動原稿搬送装置120、原稿読取部130、画像形成部140、給紙部150、通信I/F部160、ファクシミリ部170、外部記憶装置180、HDD113および操作パネル115それぞれをエミュレートするエミュレータを設定するとともに、ハード情報に含まれるハードパラメータを設定する。さらに、シミュレート部257は、エミュレートするハードウェア資源との同期を設定する。例えば、図5に示したCPU周辺シミュレータ300の同期設定モデル307に、仮想CPU301が、ハードウェア資源のエミュレータと同期するように仮想CPU301のレジスタ値を設定させるとともに、仮想メモリ303のメモリマップを書き換える。
また、シミュレート部257は、装置情報に含まれるソフト情報で定められたソフトウェア資源を仮想CPUが実行する状態に設定し、装置情報に含まれる設定値を設定する。具体的には、シミュレート部257は、装置情報に含まれるソフト情報で定められたソフトウェア資源をインストールし、装置情報に含まれる設定値を設定する。これにより、シミュレート部257において、MFP100をシミュレートした仮想装置が完成する。なお、MFP100のRAM175に記憶されたデータをスナップショットとして取得し、仮想メモリ303に記憶するようにしてもよい。
仮想実行制御部259は、生成部261から複数の変更パケットが入力されることに応じて、シミュレート部257を制御して、シミュレート部257がMFP100をシミュレートする仮想装置に、生成部261から入力される変更パケットを受信させる。
再現用パケット決定部263は、シミュレート部257がシミュレートする仮想装置において発生するエラーが、エラー情報取得部255から入力されるエラー識別情報で特定されるエラーと同じ場合、生成部261から入力される複数の変更パケットを再現用パケットに決定し、出力部265に出力指示を出力する。出力指示は、再現用パケットを含む。
再現用パケット決定部263は、シミュレート部257がシミュレートする仮想装置において発生するエラーが、エラー情報取得部255から入力されるエラー識別情報で特定されるエラーと異なる場合、または、シミュレート部257がシミュレートする仮想装置においてエラーが発生しない場合、出力部265に出力指示を出力することなく、生成部261に再生成指示を出力する。
生成部261は、再現用パケット決定部263から再生成指示が入力される場合、それまでに処理対象に選択した1以上の分割部分とは異なる1以上の分割部分を処理対象に選択し、新たに処理対象に選択された1以上の分割部分に基づいて変更パケットを生成する。
具体的には、生成部261は、選択数M(Mは正の整数)を決定し、複数の分割部分のうちM個の分割部分からなる分割部分組を、複数の分割部分のうちからM個を選択する組み合わせの数だけ生成する。選択数Mは、変更パケットを生成するために用いる分割部分の数である。生成部261は、生成された複数の分割部分組のうちから処理対象となる分割部分組を1つ選択することにより、処理対象となるM個の分割部分を決定する。生成部261は、処理対象に決定されたM個の分割部分に基づいて、複数の変更パケットを生成する。また、生成部261は、再現用パケット決定部263から再生成指示が入力される場合、複数の分割部分組のうち未選択の分割部分を1つ選択する。生成部261は、複数の分割部分組の全てを選択した場合には、選択数Mを変更し、複数の新たな分割部分組を生成する。例えば、選択数Mの初期値を1とし、選択数を1から順に増加するのが好ましい。
出力部265は、再現用パケット決定部263から出力指示が入力されることに応じて、出力指示に含まれる再現用パケットを、検証サーバー500に送信し、検証を依頼する。なお、再現用パケットをMFP100に送信し、MFP100が検証サーバー500に検証を依頼するようにしてもよいし、再現用パケットをPC400に送信し、PC400が検証サーバー500に検証を依頼するようにしてもよい。
図8は、再現用データ生成処理の流れの一例を示すフローチャートである。再現用データ生成処理は、内部サーバー200が備えるCPU201が、ROM202、HDD204またはCD−ROM209に記憶された再現用データ生成プログラムを実行することにより、CPU201により実現される機能である。
図8を参照して、CPU201は、検証依頼を受けたか否かを判断する(ステップS01)。通信部205がMFP100から検証依頼を受信したか否かを判断する。検証依頼を受信するまで待機状態となり、検証依頼を受信したならば処理をステップS02に進める。MFP100は、検証依頼とともに、装置情報と、複数の受信パケットと、エラー識別情報と、を送信するので、ステップS02においては、通信部205がMFP100から受信する、複数の受信パケットと、エラー情報とを取得する。次のステップS03においては、MFP100の装置情報を取得する。
次のステップS04においては、MFP100をシミュレートする仮想装置を設定する。具体的には、ステップS03において取得された装置情報に含まれるCPUに関する情報およびハード情報に基づいて、MFP100に装着されたCPU171およびハードウェア資源を仮想装置に設定し、仮想装置にハードパラメータを設定する。また、装置情報に含まれるソフト情報を用いて、MFP100のCPU171が実行するソフトウェア資源を仮想装置の仮想CPU301にインストールし、仮想装置にソフトパラメータを設定する。
次のステップS05においては、変数iに「1」を設定し、処理をステップS06に進める。変数iは、ステップS02において受信された複数の受信パケットのうち処理対象となる受信パケットを特定するための値である。具体的には、第i番目の受信パケットを処理対象に設定する。
ステップS06においては、第i番目の受信パケットのボディを処理データに追加する。処理データは、MFP100によってPC400への送信の対象とされたデータであり、複数の受信パケットそれぞれに分割して含まれている。次のステップS07においては、ステップS02において取得された複数の受信パケットのうちに第(i+1)番目の受信パケットが存在するか否かを判断する。そのような受信パケットが存在するならば処理をステップS08に進めるが、そうでなければ処理をステップS09に進める。ステップS05〜ステップS08のループを繰り返すことにより、処理データに複数の受信パケットにそれぞれ含まれる複数のボディが順に追加され、処理データが完成する。
ステップS09においては、処理データを分割する。分割数は予め定めておくようにすればよい。以下処理データを分割した複数の部分を、複数の分割部分という。次のステップS10においては、選択数Mを「1」を設定する。次のステップS11においては、選択数Mの分割部分組を決定する。選択数Mの分割部分組は、複数の分割部分のうちからM個を選択する組み合わせの数だけあり、それぞれの分割部分組はM個の分割部分を含む。選択数Mを「1」とする場合、複数の分割部分それぞれが1つの分割部分組に含まれるので、複数の分割部分と同じ数の分割部分組が決定される。
次のステップS12においては、ステップS11において決定された複数の分割部分組のうちから1つの分割部分組を処理対象に選択し、処理をステップS13に進める。ステップS13においては、変更パケット生成処理を実行し、処理をステップS15に進める。変更パケット生成処理の詳細は後述するが、処理対象に選択された分割部分組に含まれるM個の分割部分に基づいて、複数の受信パケットを変更した複数の変更パケットを生成する処理である。
ステップS15においては、変更パケット生成処理において生成された複数の変更パケットを、ステップS04において設定された仮想装置に受信させ、処理をステップS16に進める。ステップS16においては、仮想装置において複数の変更パケットのすべての受信が完了したか否かを判断する。複数の変更パケットのすべての送信が完了したならば処理をステップS17に進めるが、そうでなければ処理をステップS18に進める。複数の変更パケットのすべてが受信される前に、仮想装置においてエラーが発生する場合、複数の変更パケットのすべての送信が完了しないとして処理をステップS18に進める。
ステップS17においては、ステップS02において取得されたエラー識別情報で示されるエラーと同じエラーが仮想装置で発生したか否かを判断する。真ならば処理をステップS20に進めるが、偽ならば処理をステップS18に進める。
ステップS18においては、ステップS11において決定された1以上の分割部分組のうちに、ステップS12において処理対象に選択されていない分割部分組が存在するか否かを判断する。未選択の分割部分組が存在するならば処理をステップS12に戻し、未選択の組が存在しなければ処理をステップS19に進める。ステップS19においては、選択数Mをインクリメントし、処理をステップS11に戻す。
ステップS20においては、変更パケットを再現用パケットに決定し、処理をステップS21に進める。ステップS21においては、再現用パケットを検証サーバー500に送信し、処理を終了する。
図9は、変更パケット生成処理の流れの一例を示すフローチャートである。変更パケット生成処理は、図8のステップS13において実行される処理である。変更パケット生成処理が実行される前の段階で、処理対象の分割部分組が選択されている。処理対象の分割部分組には、選択数M個の分割部分を含む。ここで、処理対象の分割部分組に含まれる選択数M個の分割部分を、処理対象の分割部分という。
図9を参照して、CPU201は、ステップS31において、変数iに「1」を設定し、処理をステップS32に進める。変数iは、MFP100から受信された複数の受信パケットのうち処理対象となる受信パケットを特定するための値である。
次のステップS32においては、第i番目の受信パケットを処理対象に選択する。そして、第i番目の変更パケットに、第i番目の受信パケットのヘッダと同じヘッダを設定する。次のステップS34においては、第i番目の受信パケットのボディは、処理対象の分割部分の少なくとも1つを含むか否かを判断する。第i番目の受信パケットのボディが、分割部分組に含まれるM個の分割部分の少なくとも1つを含むならば処理をステップS35に進めるが、そうでなければ処理をステップS36に進める。ステップS35においては、第i番目の変更パケットに第i番目の受信パケットのボディに含まれる分割部分を設定し、処理をステップS37に進める。ステップS36においては、第i番目の変更パケットのボディを空に設定し、処理をステップS37に進める。例えば、第i番目の変更パケットのボディにNULLを設定する。
ステップS37においては、第i番目の変更パケットのボディに設定された分割部分が機密情報を含むか否かを判断する。分割部分が機密情報を含むならば処理をステップS38に進めるが、そうでなければ処理をステップS40に進める。機密情報は、機密性の高い情報として予め定められた情報である。機密情報の一例としては、例えば、ユーザーアカウント、パスワード、個人情報等である。ステップS38においては、機密情報をダミー情報に変更し、処理をステップS39に進める。これにより、変更パケットが機密情報を含まないようにすることができる。ステップS39においては、仮想装置にダミー情報を反映する。例えば、ユーザーアカウントおよびパスワードにより認証処理が実行されるが、仮想装置で、変更パケットに含まれるダミーのユーザーアカウントおよびパスワードにより認証が成功するように設定する。例えば、ダミーのユーザーアカウントおよびパスワードを、仮想装置が認証処理に用いるテーブルに追加する。また、仮想装置により認証処理でエラーが発生しないように設定する。
次のステップS40においては、第i番目の変更パケットのヘッダを修正し、処理をステップS41に進める。具体的には、第i番目の変更パケットのヘッダを分割部分が設定されたボディに適合するように修正する。ボディのサイズが変更されている場合には、ボディのサイズを示すフィールドを、ボディのサイズに合わせた値に変更する。
次のステップS41においては、第(i+1)番目の受信パケットが存在するか否かを判断する。複数の受信パケットのうちで、ステップS32において処理対象に選択されていない受信パケットが存在するならば処理をステップS42に進めるが、そうでなければ処理を検証データ生成処理に戻す。ステップS42においては、変数iをインクリメントし、処理をステップS32に戻す。
<実施例>
例えば、PC400が、SMB(Server Message Block)のプロトコルに基づいて、MFP100の共有フォルダに記憶されたデータを取得する場合を例に説明する。この場合、PC400はMFP100に対して能力交換するためのネゴシエーションするための第1のリクエストを送信する。MFP100は、PC400から第1のリクエストを受信し、続きの処理が必要であることを示すレスポンスとしてMORE_REQUIREDを返す。PC400はMFP100における認証に必要な情報を含んだ第2のリクエストを送信し、MFP100は認証に成功したことを示すレスポンスとしてLOGIN_SUCCESSを返す。
そして、PC400はMFP100が備えるHDD113が備える共有フォルダにアクセスするために、共有フォルダに記憶されたファイルのパスを指定した第3のリクエストとしてTree Connect Requestを送信する。MFP100において、Tree Connect Requestで特定されるファイルが存在しない場合、またはファイルが存在するにも関わらずMFP100がファイルを認識できない場合、MFP100において、エラーが発生する。この場合、MFP100は、Tree Connect Requestで特定されるファイルが存在しないことを示すレスポンスとしてPATH_NOT_FOUNDを返す。PC400は、PATH_NOT_FOUNDのレスポンスを受信すると、SMBの通信を終了するためのリクエストを送信し、MFP100はレスポンスを返して通信を終了する。
MFP100にエラーが発生するまでに、PC400から第1のリクエスト〜第3のリクエストを受信している。この場合、MFP100が、PC400から受信した第1のリクエスト〜第3のリクエストそれぞれのパケットと、発生したエラーのエラー識別情報とを、内部サーバー200に送信すれば、内部サーバー200が、第1のリクエスト〜第3のリクエストそれぞれに対する複数のパケットから第1の変更パケット〜第3の変更パケットを生成する。この場合、第2リクエストは、認証に必要な情報を含んでいるので、第2の変更パケットは、第2リクエストに含まれる認証に必要な情報をダミー情報変更する。内部サーバー200は、さらに、MFP100をシミュレートする仮想装置に第1の変更パケット〜第3の変更パケットを順に受信させ、仮想装置が第3の変更パケットを受信した後に、エラー識別情報で特定されるエラーと同じエラーが仮想装置で発生する場合に、それらの第1の変更パケット〜第3の変更パケットを、再現用パケットに決定する。ただし、内部サーバー200においては、第2の変更パケットに含まれるダミー情報を用いた認証ではエラーが発生しないように、認証用のテーブルを変更する。
また、PC400が、SMBのプロトコルに基づいて、MFP100の共有フォルダにデータを書き込みする場合を例に説明する。この場合、PC400はMFP100に対して能力交換するためのネゴシエーションするための第1のリクエストを送信する。MFP100は、PC400から第1のリクエストを受信し、続きの処理が必要であることを示すレスポンスとしてMORE_REQUIREDを返す。PC400はMFP100における認証に必要な情報を含んだ第2のリクエストを送信し、MFP100は認証に成功したことを示すレスポンスとしてLOGIN_SUCCESSを返す。
そして、PC400はMFP100が備えるHDD113が有する共有フォルダに記憶された情報を取得するために、共有フォルダのパスを指定した第4のリクエストを送信すると、MFP100は、共有フォルダに保存されているファイル等の情報をPC400に返す。
次に、PC400がファイルを共有フォルダに保存するために、ファイルを共有フォルダ内に生成するための第5のリクエストとしてCreate Requestを送信すると、MFP100がレスポンスを返す。
続いて、PC400はファイルデータを含む第6のリクエストとしてWrite Requestを送信する。ここで、MFP100においてHDD113の残容量が不足する場合、HDD113へのデータ書き込み失敗等により、ファイルを保存できない場合、MFP100はデータ書き込み中にエラーが発生した旨を表すレスポンスとして、DATA_ERRORを返す。PC400は、DATA_ERRORのレスポンスを受信すると、SMBの通信を終了するためのリクエストを送信し、MFP100はレスポンスを返して通信を終了する。
MFP100にエラーが発生するまでに、PC400から第1のリクエスト、第2のリクエスト、第4のリクエスト〜第6のリクエストを受信している。この場合、MFP100は、第1のリクエスト、第2のリクエスト、第4のリクエスト〜第6のリクエストそれぞれのパケットと、発生したエラーのエラー識別情報とを、内部サーバー200に送信すれば、内部サーバー200は、第1のリクエスト、第2のリクエスト、第4のリクエスト〜第6のリクエストそれぞれに対する複数のパケットから第1の変更パケット、第2の変更パケット、第4の変更パケット〜第6の変更パケットを生成し、MFP100をシミュレートする仮想装置に第1の変更パケット、第2の変更パケット、第4の変更パケット〜第6の変更パケットを順に受信させ、仮想装置が第6の変更パケットを受信した後に、エラー識別情報で特定されるエラーと同じエラーが仮想装置で発生する場合に、それらの第1の変更パケット、第2の変更パケット、第4の変更パケット〜第6の変更パケットを、再現用パケットに決定する。
以上説明したように本実施の形態における内部サーバー200は、PC400から複数のパケットを受信するMFP100においてエラーが発生する場合に、PC400からMFP100に送信された受信パケットから変更パケットを生成し、MFP100をシミュレートする仮想装置に変更パケットを受信させて、MFP100で発生したエラーと同じエラーが仮想装置で発生する場合における変更パケットを再現用パケットに決定する。このため、PC400からMFP100に送信される受信パケットの少なくとも一部を含み、MFP100が受信パケットを受信した場合と同じエラーが発生する変更パケットを生成することができる。したがって、PC400からMFP100にデータを送信する場合にMFP100で発生するエラーを再現可能で、かつ、サイズがより小さな再現用データを生成することができる。
また、内部サーバー200は、再現用パケットを検証サーバー500に送信するので、MFP100で発生したエラーを検証サーバー500で再現することができ、エラーを検証することができる。
また、内部サーバー200は、MFP100が処理対象とするデータの単位、または、MFP100がデータを処理する処理の単位で定まる1以上のパケットを、受信パケットとして取得する。データの単位は、データが複数ページからなる場合には、ページ単位であり、1ページのデータを含む。処理の単位は、1つの処理が開始してから終了するまでの送信されるデータを含む。例えば、複数のデータを送信するデータ送信処理に対しては複数のファイルを含む。受信パケットは、データの単位、または、処理の単位で定まる1以上のパケットなので、MFP100が送信したパケットの全てをHDD113に記憶する必要がなく、メモリ資源を有効に利用することができる。また、検証サーバー500で、検証の際に、1つのデータに対して実行する処理で発生するエラーまたは1つの処理で発生するエラーの再現が容易となる。
また、内部サーバー200は、受信パケットの機密情報をダミー情報に書き換えるので、変更パケットが機密性の高い情報を含まないようにすることができる。
また、内部サーバー200は、受信パケット中で予め定められた種類のデータを含む部分、および/または、予め定められた部分を、ダミー情報で書き換えるので、変更パケットが機密性の高い情報を含まないようにすることができる。特に、受信パケットに含まれる機密情報の種類または受信パケット中の位置が事前に判明している場合に、変更パケットが機密性の高い情報を含まないようにすることができる。
また、内部サーバー200は、処理データを複数の分割部分に分割し、複数の分割部分のうちから選択された1以上の分割部分から変更パケットを生成するので、変更パケットは、複数の分割部分のうちから選択された1以上の分割部分を含むので、受信パケットの一部を削除したものである。したがって、変更パケットのデータ量を受信パケットよりも小さくすることができる。
また、内部サーバー200は、受信パケットが複数の場合、複数の受信パケットにそれぞれ対応する複数の変更パケットを生成するので、再現用パケットを容易に決定することができる。
なお、上述した実施の形態においては、サーバーの一例として内部サーバー200を例に示したが、図6および図7に示した再現用データ生成処理を、内部サーバー200に実行させる再現用データ生成方法、また、その再現用データ生成方法を内部サーバー200が備えるCPU201に実行させる再現用データ生成プログラムとして発明を捉えることができるのは言うまでもない。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。