図1.OpenDolphinログイン画面 |
図2.ログイン後に表示される受付リストとスタンプボックス |
図3 Wiresharkでログイン時に流れていたパケットをキャプチャ |
保存したパケットを開くと、下記の図4のようなテキストが表示された。
図4 再構築したパケット |
1行目のGET~から始まるHTTPリクエストメッセージは、クライアントがどういったデータを要求しているのかを読み取ることが出来る。HTTPリクエストメッセージはリクエスト行とヘッダから構成されている(参考:HTTP入門)。図4では、リクエスト行が次のようになっている。
GET /dolphin/openSource/user/1.3.6.1.4.1.9414.70.1:w3415016 HTTP/1.1これはHTTPのGETメソッドを使ってユーザ情報を要求しているものと思われる。その際のRESTful APIが次のようになっている。
http://[ホスト名]:8080/dolphin/openSource/user/[ユーザID]2行目以降はリクエストヘッダで、その中には認証用のパスワードとユーザ名が含まれている。
Accept: application/jsonパスワードはMD5ハッシュ関数でダイジェストに置き換えられている。ユーザ名は[医療機関コード:ユーザID]になっている。
Accept-Encoding: gzip, deflate
password: 6f8e646f95af8e79096477e877245664
userName: 1.3.6.1.4.1.9414.70.1:w3415039
Host: 172.16.108.251:8080
Connection: Keep-Alive
次にHTTPレスポンスを見ると次のようになっている。
HTTP/1.1 200 OKしかし、userIdから始まるJSON形式のボディ部は改行されていないため、大変わかりにくいので、JSON Pretty Printというサイトを用いて、データの整形を行った。まずWiresharkのHTTPストリームからHTTPレスポンスのボディ部にあるJSONデータをコピーし、左のテキストボックスにペーストする。そして中央のメニューにある「Make pretty」というボタンを押下することで、右のテキストボックスに整形されたJSONデータが出力される。以下の図5がその出力結果である。
Connection: keep-alive
X-Powered-By: Undertow/1
Server: WildFly/9
Content-Type: application/json
Content-Length: 821
Date: Thu, 31 May 2018 05:49:22 GMT
JSON形式のボディ部
図5 JSON Pretty Printによって整形されたJSONデータ |
図6 JSONデータを整形したHTTPパケット |
- GET /dolphin/openSource/user/1.3.6.1.4.1.9414.70.1:w3415016 HTTP/1.1
- GET /dolphin/openSource/serverinfo/cloud/zero HTTP/1.1
- GET /dolphin/openSource/chartEvent/subscribe HTTP/1.1
- GET /dolphin/openSource/stamp/tree/13 HTTP/1.1
- GET /dolphin/openSource/pvt2/pvtList HTTP/1.1
- GET /dolphin/openSource/pvt2/pvtList HTTP/1.1
4番目のHTTPレスポンスのボディ部に図7のようなBASE64エンコードされているデータpersonalTree.treeBytesが含まれているのが分かった。
図7 受付リストに含まれるBASE64エンコード文字列() |
以下の図7がそのデコード結果である。
図8 treeBytesのデコード結果 |
<stampTree project="open.dolphin" version="1.0"> <root name="傷病名" entity="diagnosis"> <stampInfo name="エディタから発行..." role="diagnosis" entity="diagnosis" editable="false" memo="傷病名エディタ"/> </root> <root name="テキスト" entity="text"> </root> <root name="パ ス" entity="path"> </root> <root name="汎 用" entity="generalOrder"> <stampInfo name="エディタから発行..." role="p" entity="generalOrder" editable="false" memo="汎用エディタ"/> </root> <root name="その他" entity="otherOrder"> <stampInfo name="エディタから発行..." role="p" entity="otherOrder" editable="false" memo="その他エディタ"/> </root> <root name="処 置" entity="treatmentOrder"> <stampInfo name="エディタから発行..." role="p" entity="treatmentOrder" editable="false" memo="処置エディタ"/> </root> <root name="手 術" entity="surgeryOrder"> <stampInfo name="エディタから発行..." role="p" entity="surgeryOrder" editable="false" memo="手術エディタ"/> </root> <root name="放射線" entity="radiologyOrder"> <stampInfo name="エディタから発行..." role="p" entity="radiologyOrder" editable="false" memo="放射線エディタ"/> </root> <root name="検体検査" entity="testOrder"> <stampInfo name="エディタから発行..." role="p" entity="testOrder" editable="false" memo="検体検査ディタ"/> </root> <root name="生体検査" entity="physiologyOrder"> <stampInfo name="エディタから発行..." role="p" entity="physiologyOrder" editable="false" memo="生体検査エディタ"/> </root> <root name="細菌検査" entity="bacteriaOrder"> <stampInfo name="エディタから発行..." role="p" entity="bacteriaOrder" editable="false" memo="細菌検査ディタ"/> </root> <root name="注 射" entity="injectionOrder"> <stampInfo name="エディタから発行..." role="p" entity="injectionOrder" editable="false" memo="注射エディタ"/> </root> <root name="処 方" entity="medOrder"> <stampInfo name="エディタから発行..." role="p" entity="medOrder" editable="false" memo="処方エディタ"/> </root> <root name="初診・再診" entity="baseChargeOrder"> <stampInfo name="エディタから発行..." role="p" entity="baseChargeOrder" editable="false" memo="初診・再診エディタ"/> </root> <root name="指導・在宅" entity="instractionChargeOrder"> <stampInfo name="エディタから発行..." role="p" entity="instractionChargeOrder" editable="false" memo="指導・在宅エディタ"/> </root> </stampTree>
これは、明らかに図2に示すスタンプボックスの情報である。このような情報をなぜJSONで記述せず、XMLで記述してBASE64エンコードしているのかは不明である。
次回は、ログイン時以外の様々なパケットの解析を試みたいと思う。
【TIPS】
ログイン時に取り交わされる6つのHTTPメッセージは以下のとおりである。- #1 GET /dolphin/openSource/user/1.3.6.1.4.1.9414.70.1:w3415039 HTTP/1.1
GET /dolphin/openSource/user/1.3.6.1.4.1.9414.70.1:w3415039 HTTP/1.1 Accept: application/json Accept-Encoding: gzip, deflate password: 6f8e646f95af8e79096477e877245664 userName: 1.3.6.1.4.1.9414.70.1:w3415039 Host: 172.16.108.251:8080 Connection: Keep-Alive HTTP/1.1 200 OK Connection: keep-alive X-Powered-By: Undertow/1 Server: WildFly/9 Content-Type: application/json Content-Length: 821 Date: Thu, 31 May 2018 05:49:22 GMT { "userId": "1.3.6.1.4.1.9414.70.1:w3415039", "facilityModel": { "facilityId": "1.3.6.1.4.1.9414.70.1", "facilityName": "クリニック", "zipCode": "", "telephone": "", "facsimile": null, "s3URL": null, "s3AccessKey": null, "s3SecretKey": null, "memberType": "FACILITY_USER", "registeredDate": "2018-05-10", "url": "", "address": "", "id": 1 }, "sirName": "守久", "givenName": "遼子", "commonName": "守久 遼子", "departmentModel": { "departmentCodeSys": "MML0028", "departmentDesc": "内科", "department": "01" }, "memo": null, "email": "kurasiki@caja", "orcaId": "10002", "useDrugId": "", "memberType": "FACILITY_USER", "registeredDate": "2018-05-17", "licenseModel": { "licenseDesc": "医師", "licenseCodeSys": "MML0026", "license": "doctor" }, "roles": [ { "userId": "1.3.6.1.4.1.9414.70.1:w3415039", "role": "user", "id": 20 } ], "password": "6f8e646f95af8e79096477e877245664", "id": 19 }
- #2 GET /dolphin/openSource/serverinfo/cloud/zero HTTP/1.1
GET /dolphin/openSource/serverinfo/cloud/zero HTTP/1.1 Accept: text/plain Accept-Encoding: gzip, deflate password: 6f8e646f95af8e79096477e877245664 userName: 1.3.6.1.4.1.9414.70.1:w3415039 Host: 172.16.108.251:8080 Connection: Keep-Alive HTTP/1.1 200 OK Connection: keep-alive X-Powered-By: Undertow/1 Server: WildFly/9 Content-Type: text/plain Content-Length: 0 Date: Thu, 31 May 2018 05:49:22 GMT
- #3 GET /dolphin/openSource/chartEvent/subscribe HTTP/1.1
GET /dolphin/openSource/chartEvent/subscribe HTTP/1.1 Accept: application/json Accept-Encoding: gzip, deflate clientUUID: w3415039:89fa211b-833f-438a-a15e-3a298981e1db password: 6f8e646f95af8e79096477e877245664 userName: 1.3.6.1.4.1.9414.70.1:w3415039 Host: 172.16.108.251:8080 Connection: Keep-Alive
- #4 GET /dolphin/openSource/stamp/tree/19 HTTP/1.1
GET /dolphin/openSource/stamp/tree/19 HTTP/1.1 Accept: application/json Accept-Encoding: gzip, deflate password: 6f8e646f95af8e79096477e877245664 userName: 1.3.6.1.4.1.9414.70.1:w3415039 Host: 172.16.108.251:8080 Connection: Keep-Alive HTTP/1.1 200 OK Connection: keep-alive X-Powered-By: Undertow/1 Server: WildFly/9 Content-Type: application/json Content-Length: 4486 Date: Thu, 31 May 2018 05:49:22 GMT { "personalTree": { "category": null, "userModel": { "userId": "1.3.6.1.4.1.9414.70.1:w3415039", "facilityModel": { "facilityId": "1.3.6.1.4.1.9414.70.1", "facilityName": "クリニック", "zipCode": "", "telephone": "", "facsimile": null, "s3URL": null, "s3AccessKey": null, "s3SecretKey": null, "memberType": "FACILITY_USER", "registeredDate": "2018-05-10", "url": "", "address": "", "id": 1 }, "sirName": "守久", "givenName": "遼子", "commonName": "守久 遼子", "departmentModel": { "departmentCodeSys": "MML0028", "departmentDesc": "内科", "department": "01" }, "memo": null, "email": "kurasiki@caja", "orcaId": "10002", "useDrugId": "", "memberType": "FACILITY_USER", "registeredDate": "2018-05-17", "licenseModel": { "licenseDesc": "医師", "licenseCodeSys": "MML0026", "license": "doctor" }, "roles": [ { "userId": "1.3.6.1.4.1.9414.70.1:w3415039", "role": "user", "id": 20 } ], "password": "6f8e646f95af8e79096477e877245664", "id": 19 }, "treeBytes": "PHN0YW1wVHJlZSBwcm9qZWN0PSJvcGVuLmRvbHBoaW4iIHZlcnNpb249IjEuMCI+Cjxyb290IG5hbWU9IuWCt+eXheWQjSIgZW50aXR5PSJkaWFnbm9zaXMiPgo8c3RhbXBJbmZvIG5hbWU9IuOCqOODh+OCo+OCv+OBi+OCieeZuuihjC4uLiIgcm9sZT0iZGlhZ25vc2lzIiBlbnRpdHk9ImRpYWdub3NpcyIgZWRpdGFibGU9ImZhbHNlIiBtZW1vPSLlgrfnl4XlkI3jgqjjg4fjgqPjgr8iLz4KPC9yb290Pgo8cm9vdCBuYW1lPSLjg4bjgq3jgrnjg4giIGVudGl0eT0idGV4dCI+Cjwvcm9vdD4KPHJvb3QgbmFtZT0i44ORIOOCuSIgZW50aXR5PSJwYXRoIj4KPC9yb290Pgo8cm9vdCBuYW1lPSLmsY4g55SoIiBlbnRpdHk9ImdlbmVyYWxPcmRlciI+CjxzdGFtcEluZm8gbmFtZT0i44Ko44OH44Kj44K/44GL44KJ55m66KGMLi4uIiByb2xlPSJwIiBlbnRpdHk9ImdlbmVyYWxPcmRlciIgZWRpdGFibGU9ImZhbHNlIiBtZW1vPSLmsY7nlKjjgqjjg4fjgqPjgr8iLz4KPC9yb290Pgo8cm9vdCBuYW1lPSLjgZ3jga7ku5YiIGVudGl0eT0ib3RoZXJPcmRlciI+CjxzdGFtcEluZm8gbmFtZT0i44Ko44OH44Kj44K/44GL44KJ55m66KGMLi4uIiByb2xlPSJwIiBlbnRpdHk9Im90aGVyT3JkZXIiIGVkaXRhYmxlPSJmYWxzZSIgbWVtbz0i44Gd44Gu5LuW44Ko44OH44Kj44K/Ii8+Cjwvcm9vdD4KPHJvb3QgbmFtZT0i5YemIOe9riIgZW50aXR5PSJ0cmVhdG1lbnRPcmRlciI+CjxzdGFtcEluZm8gbmFtZT0i44Ko44OH44Kj44K/44GL44KJ55m66KGMLi4uIiByb2xlPSJwIiBlbnRpdHk9InRyZWF0bWVudE9yZGVyIiBlZGl0YWJsZT0iZmFsc2UiIG1lbW89IuWHpue9ruOCqOODh+OCo+OCvyIvPgo8L3Jvb3Q+Cjxyb290IG5hbWU9IuaJiyDooZMiIGVudGl0eT0ic3VyZ2VyeU9yZGVyIj4KPHN0YW1wSW5mbyBuYW1lPSLjgqjjg4fjgqPjgr/jgYvjgonnmbrooYwuLi4iIHJvbGU9InAiIGVudGl0eT0ic3VyZ2VyeU9yZGVyIiBlZGl0YWJsZT0iZmFsc2UiIG1lbW89IuaJi+ihk+OCqOODh+OCo+OCvyIvPgo8L3Jvb3Q+Cjxyb290IG5hbWU9IuaUvuWwhOe3miIgZW50aXR5PSJyYWRpb2xvZ3lPcmRlciI+CjxzdGFtcEluZm8gbmFtZT0i44Ko44OH44Kj44K/44GL44KJ55m66KGMLi4uIiByb2xlPSJwIiBlbnRpdHk9InJhZGlvbG9neU9yZGVyIiBlZGl0YWJsZT0iZmFsc2UiIG1lbW89IuaUvuWwhOe3muOCqOODh+OCo+OCvyIvPgo8L3Jvb3Q+Cjxyb290IG5hbWU9IuaknOS9k+aknOafuyIgZW50aXR5PSJ0ZXN0T3JkZXIiPgo8c3RhbXBJbmZvIG5hbWU9IuOCqOODh+OCo+OCv+OBi+OCieeZuuihjC4uLiIgcm9sZT0icCIgZW50aXR5PSJ0ZXN0T3JkZXIiIGVkaXRhYmxlPSJmYWxzZSIgbWVtbz0i5qSc5L2T5qSc5p+744OH44Kj44K/Ii8+Cjwvcm9vdD4KPHJvb3QgbmFtZT0i55Sf5L2T5qSc5p+7IiBlbnRpdHk9InBoeXNpb2xvZ3lPcmRlciI+CjxzdGFtcEluZm8gbmFtZT0i44Ko44OH44Kj44K/44GL44KJ55m66KGMLi4uIiByb2xlPSJwIiBlbnRpdHk9InBoeXNpb2xvZ3lPcmRlciIgZWRpdGFibGU9ImZhbHNlIiBtZW1vPSLnlJ/kvZPmpJzmn7vjgqjjg4fjgqPjgr8iLz4KPC9yb290Pgo8cm9vdCBuYW1lPSLntLDoj4zmpJzmn7siIGVudGl0eT0iYmFjdGVyaWFPcmRlciI+CjxzdGFtcEluZm8gbmFtZT0i44Ko44OH44Kj44K/44GL44KJ55m66KGMLi4uIiByb2xlPSJwIiBlbnRpdHk9ImJhY3RlcmlhT3JkZXIiIGVkaXRhYmxlPSJmYWxzZSIgbWVtbz0i57Sw6I+M5qSc5p+744OH44Kj44K/Ii8+Cjwvcm9vdD4KPHJvb3QgbmFtZT0i5rOoIOWwhCIgZW50aXR5PSJpbmplY3Rpb25PcmRlciI+CjxzdGFtcEluZm8gbmFtZT0i44Ko44OH44Kj44K/44GL44KJ55m66KGMLi4uIiByb2xlPSJwIiBlbnRpdHk9ImluamVjdGlvbk9yZGVyIiBlZGl0YWJsZT0iZmFsc2UiIG1lbW89IuazqOWwhOOCqOODh+OCo+OCvyIvPgo8L3Jvb3Q+Cjxyb290IG5hbWU9IuWHpiDmlrkiIGVudGl0eT0ibWVkT3JkZXIiPgo8c3RhbXBJbmZvIG5hbWU9IuOCqOODh+OCo+OCv+OBi+OCieeZuuihjC4uLiIgcm9sZT0icCIgZW50aXR5PSJtZWRPcmRlciIgZWRpdGFibGU9ImZhbHNlIiBtZW1vPSLlh6bmlrnjgqjjg4fjgqPjgr8iLz4KPC9yb290Pgo8cm9vdCBuYW1lPSLliJ3oqLrjg7vlho3oqLoiIGVudGl0eT0iYmFzZUNoYXJnZU9yZGVyIj4KPHN0YW1wSW5mbyBuYW1lPSLjgqjjg4fjgqPjgr/jgYvjgonnmbrooYwuLi4iIHJvbGU9InAiIGVudGl0eT0iYmFzZUNoYXJnZU9yZGVyIiBlZGl0YWJsZT0iZmFsc2UiIG1lbW89IuWIneiouuODu+WGjeiouuOCqOODh+OCo+OCvyIvPgo8L3Jvb3Q+Cjxyb290IG5hbWU9IuaMh+WwjuODu+WcqOWuhSIgZW50aXR5PSJpbnN0cmFjdGlvbkNoYXJnZU9yZGVyIj4KPHN0YW1wSW5mbyBuYW1lPSLjgqjjg4fjgqPjgr/jgYvjgonnmbrooYwuLi4iIHJvbGU9InAiIGVudGl0eT0iaW5zdHJhY3Rpb25DaGFyZ2VPcmRlciIgZWRpdGFibGU9ImZhbHNlIiBtZW1vPSLmjIflsI7jg7vlnKjlroXjgqjjg4fjgqPjgr8iLz4KPC9yb290Pgo8L3N0YW1wVHJlZT4K", "publishType": null, "partyName": "クリニック", "publishedDate": null, "lastUpdated": null, "published": null, "versionNumber": "13", "url": "", "description": "個人用のスタンプセットです", "name": "個人用", "id": 23 }, "subscribedList": [] }
- #5 GET /dolphin/openSource/pvt2/pvtList HTTP/1.1
GET /dolphin/openSource/pvt2/pvtList HTTP/1.1 Accept: application/json Accept-Encoding: gzip, deflate password: 6f8e646f95af8e79096477e877245664 userName: 1.3.6.1.4.1.9414.70.1:w3415039 Host: 172.16.108.251:8080 Connection: Keep-Alive HTTP/1.1 200 OK Connection: keep-alive X-Powered-By: Undertow/1 Server: WildFly/9 Content-Type: application/json Content-Length: 2346 Date: Thu, 31 May 2018 05:49:22 GMT { "list": [ { "memo": null, "facilityId": "1.3.6.1.4.1.9414.70.1", "patientModel": { "romanName": null, "nationality": null, "nationalityDesc": null, "maritalStatus": null, "jpegPhoto": null, "mobilePhone": null, "relations": null, "reserve1": null, "reserve2": null, "reserve3": null, "reserve4": null, "reserve5": null, "reserve6": null, "memo": null, "email": null, "facilityId": "1.3.6.1.4.1.9414.70.1", "telephone": null, "patientId": "00004", "healthInsurances": [ { "beanBytes": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGphdmEgdmVyc2lvbj0iMS44LjBfMTYxIiBjbGFzcz0iamF2YS5iZWFucy5YTUxEZWNvZGVyIj4KIDxvYmplY3QgY2xhc3M9Im9wZW4uZG9scGhpbi5pbmZvbW9kZWwuUFZUSGVhbHRoSW5zdXJhbmNlTW9kZWwiPgogIDx2b2lkIHByb3BlcnR5PSJHVUlEIj4KICAgPHN0cmluZz41Yjk0NWIyZi01Mzg4LTQ0ODMtYjlhYS0wOTdkMDJhZDk1MmE8L3N0cmluZz4KICA8L3ZvaWQ+CiAgPHZvaWQgcHJvcGVydHk9ImNsaWVudEdyb3VwIj4KICAgPHN0cmluZz7vvJLvvJDvvJDvvJA8L3N0cmluZz4KICA8L3ZvaWQ+CiAgPHZvaWQgcHJvcGVydHk9ImNsaWVudE51bWJlciI+CiAgIDxzdHJpbmc+77yW77yY77yV77yTPC9zdHJpbmc+CiAgPC92b2lkPgogIDx2b2lkIHByb3BlcnR5PSJleHBpcmVkRGF0ZSI+CiAgIDxzdHJpbmc+OTk5OS0xMi0zMTwvc3RyaW5nPgogIDwvdm9pZD4KICA8dm9pZCBwcm9wZXJ0eT0iZmFtaWx5Q2xhc3MiPgogICA8c3RyaW5nPmZhbHNlPC9zdHJpbmc+CiAgPC92b2lkPgogIDx2b2lkIHByb3BlcnR5PSJpbnN1cmFuY2VDbGFzcyI+CiAgIDxzdHJpbmc+57WE5ZCIPC9zdHJpbmc+CiAgPC92b2lkPgogIDx2b2lkIHByb3BlcnR5PSJpbnN1cmFuY2VDbGFzc0NvZGUiPgogICA8c3RyaW5nPjA2PC9zdHJpbmc+CiAgPC92b2lkPgogIDx2b2lkIHByb3BlcnR5PSJpbnN1cmFuY2VDbGFzc0NvZGVTeXMiPgogICA8c3RyaW5nPk1NTDAwMzE8L3N0cmluZz4KICA8L3ZvaWQ+CiAgPHZvaWQgcHJvcGVydHk9Imluc3VyYW5jZU51bWJlciI+CiAgIDxzdHJpbmc+MDYzMzAwNzA8L3N0cmluZz4KICA8L3ZvaWQ+CiAgPHZvaWQgcHJvcGVydHk9InBheU91dFJhdGlvIj4KICAgPHN0cmluZz4wLjMwPC9zdHJpbmc+CiAgPC92b2lkPgogIDx2b2lkIHByb3BlcnR5PSJzdGFydERhdGUiPgogICA8c3RyaW5nPjIwMTctMTAtMzA8L3N0cmluZz4KICA8L3ZvaWQ+CiA8L29iamVjdD4KPC9qYXZhPgo=", "id": 32 } ], "kanaName": "サヤマ セイジ", "gender": "male", "genderDesc": "M", "birthday": "1948-06-15", "simpleAddressModel": null, "appMemo": "診察1", "pvtDate": null, "ownerUUID": null, "fullName": "佐山 清二", "id": 31 }, "deptName": "内科", "deptCode": "01", "doctorName": "守久 遼子", "doctorId": "10002", "jmariNumber": "JPN000000000000", "pvtDate": "2018-05-17T15:22:21", "department": "内科,01,守久 遼子,10002,JPN000000000000,", "firstInsurance": "06 組合", "insuranceUid": "5b945b2f-5388-4483-b9aa-097d02ad952a", "lastDocDate": null, "appointment": null, "id": 34, "state": 0 } ] }
- #6 GET /dolphin/openSource/pvt2/pvtList HTTP/1.1
GET /dolphin/openSource/pvt2/pvtList HTTP/1.1 Accept: application/json Accept-Encoding: gzip, deflate password: 6f8e646f95af8e79096477e877245664 userName: 1.3.6.1.4.1.9414.70.1:w3415039 Host: 172.16.108.251:8080 Connection: Keep-Alive HTTP/1.1 200 OK Connection: keep-alive X-Powered-By: Undertow/1 Server: WildFly/9 Content-Type: application/json Content-Length: 2346 Date: Thu, 31 May 2018 05:49:22 GMT { "list": [ { "memo": null, "facilityId": "1.3.6.1.4.1.9414.70.1", "patientModel": { "romanName": null, "nationality": null, "nationalityDesc": null, "maritalStatus": null, "jpegPhoto": null, "mobilePhone": null, "relations": null, "reserve1": null, "reserve2": null, "reserve3": null, "reserve4": null, "reserve5": null, "reserve6": null, "memo": null, "email": null, "facilityId": "1.3.6.1.4.1.9414.70.1", "telephone": null, "patientId": "00004", "healthInsurances": [ { "beanBytes": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGphdmEgdmVyc2lvbj0iMS44LjBfMTYxIiBjbGFzcz0iamF2YS5iZWFucy5YTUxEZWNvZGVyIj4KIDxvYmplY3QgY2xhc3M9Im9wZW4uZG9scGhpbi5pbmZvbW9kZWwuUFZUSGVhbHRoSW5zdXJhbmNlTW9kZWwiPgogIDx2b2lkIHByb3BlcnR5PSJHVUlEIj4KICAgPHN0cmluZz41Yjk0NWIyZi01Mzg4LTQ0ODMtYjlhYS0wOTdkMDJhZDk1MmE8L3N0cmluZz4KICA8L3ZvaWQ+CiAgPHZvaWQgcHJvcGVydHk9ImNsaWVudEdyb3VwIj4KICAgPHN0cmluZz7vvJLvvJDvvJDvvJA8L3N0cmluZz4KICA8L3ZvaWQ+CiAgPHZvaWQgcHJvcGVydHk9ImNsaWVudE51bWJlciI+CiAgIDxzdHJpbmc+77yW77yY77yV77yTPC9zdHJpbmc+CiAgPC92b2lkPgogIDx2b2lkIHByb3BlcnR5PSJleHBpcmVkRGF0ZSI+CiAgIDxzdHJpbmc+OTk5OS0xMi0zMTwvc3RyaW5nPgogIDwvdm9pZD4KICA8dm9pZCBwcm9wZXJ0eT0iZmFtaWx5Q2xhc3MiPgogICA8c3RyaW5nPmZhbHNlPC9zdHJpbmc+CiAgPC92b2lkPgogIDx2b2lkIHByb3BlcnR5PSJpbnN1cmFuY2VDbGFzcyI+CiAgIDxzdHJpbmc+57WE5ZCIPC9zdHJpbmc+CiAgPC92b2lkPgogIDx2b2lkIHByb3BlcnR5PSJpbnN1cmFuY2VDbGFzc0NvZGUiPgogICA8c3RyaW5nPjA2PC9zdHJpbmc+CiAgPC92b2lkPgogIDx2b2lkIHByb3BlcnR5PSJpbnN1cmFuY2VDbGFzc0NvZGVTeXMiPgogICA8c3RyaW5nPk1NTDAwMzE8L3N0cmluZz4KICA8L3ZvaWQ+CiAgPHZvaWQgcHJvcGVydHk9Imluc3VyYW5jZU51bWJlciI+CiAgIDxzdHJpbmc+MDYzMzAwNzA8L3N0cmluZz4KICA8L3ZvaWQ+CiAgPHZvaWQgcHJvcGVydHk9InBheU91dFJhdGlvIj4KICAgPHN0cmluZz4wLjMwPC9zdHJpbmc+CiAgPC92b2lkPgogIDx2b2lkIHByb3BlcnR5PSJzdGFydERhdGUiPgogICA8c3RyaW5nPjIwMTctMTAtMzA8L3N0cmluZz4KICA8L3ZvaWQ+CiA8L29iamVjdD4KPC9qYXZhPgo=", "id": 32 } ], "kanaName": "サヤマ セイジ", "gender": "male", "genderDesc": "M", "birthday": "1948-06-15", "simpleAddressModel": null, "appMemo": "診察1", "pvtDate": null, "ownerUUID": null, "fullName": "佐山 清二", "id": 31 }, "deptName": "内科", "deptCode": "01", "doctorName": "守久 遼子", "doctorId": "10002", "jmariNumber": "JPN000000000000", "pvtDate": "2018-05-17T15:22:21", "department": "内科,01,守久 遼子,10002,JPN000000000000,", "firstInsurance": "06 組合", "insuranceUid": "5b945b2f-5388-4483-b9aa-097d02ad952a", "lastDocDate": null, "appointment": null, "id": 34, "state": 0 } ] }
なお、#5,#6の中にあるBASE64エンコード部分(patientModel.healthInsurances.beanBytes)をデコードすると次のようになっていた。
<?xml version="1.0" encoding="UTF-8"?> <java version="1.8.0_161" class="java.beans.XMLDecoder"> <object class="open.dolphin.infomodel.PVTHealthInsuranceModel"> <void property="GUID"> <string>5b945b2f-5388-4483-b9aa-097d02ad952a</string> </void> <void property="clientGroup"> <string>2000</string> </void> <void property="clientNumber"> <string>6853</string> </void> <void property="expiredDate"> <string>9999-12-31</string> </void> <void property="familyClass"> <string>false</string> </void> <void property="insuranceClass"> <string>組合</string> </void> <void property="insuranceClassCode"> <string>06</string> </void> <void property="insuranceClassCodeSys"> <string>MML0031</string> </void> <void property="insuranceNumber"> <string>06330070</string> </void> <void property="payOutRatio"> <string>0.30</string> </void> <void property="startDate"> <string>2017-10-30</string> </void> </object> </java>明らかに保険情報である。
使用可能メモリについて
前回のブログで物理メモリと使用可能メモリの間に大きな差があることを書いた。その対策としてシステム構成において最大メモリのチェックを外すという方法が紹介されていた。これにしたがって操作をしていたところ、誤って最大メモリを0にしたままチェックを入れて再起動してしまった。そのため、使用可能なメモリが0になってしまい、Windowsは起動はするものの、遅くて使い物にならなくなった。
これについてはネット上に「msconfigのブート詳細オプションでメモリを0に設定してしまった」という記事があり、他にも同様な現象にさいなまれている人がいるとわかった。これに対してどのようにして復旧したかを書いておく。
復旧方法
まず復旧するにあたってメモリが全く使われていない関係上通常の環境下ではとてもではないがmsconfigを実行する事ができない為、必要最低限の動作で作業を行う必要がある。その為今回はセーフモードで復旧作業を行うのだが、windows10はデフォルトの状態だと起動時にF8等のコマンドを入力してもセーフモードの起動を行うことができないようだ。そこで調べてみたところ、どうやらwindowsの起動に2回以上失敗すると、次回起動時にスタートアップ修復なるものが実行され、そこからセーフモードでの起動が行える様だ。スタートアップ修復が実行された後は、この様な手順でセーフモードでの起動を行うことが出来る。セーフモードで起動することができれば、検索バーもしくは「Winキー+R」でファイル名を指定して実行を呼び出し、「msconfig」と入力しシステム構成を起動する。あとはブートタブ>詳細オプションからブート詳細オプションを表示し、「最大メモリ」のチェックを外し設定を変更することで、復旧を行うことが出来る。
0 件のコメント:
コメントを投稿