WindowsHello対応の指紋認証付きキーボードの購入

ノートパソコンでの指紋認証が早く、便利すぎてデスクトップでも導入しようとした。
(Windows Helloの指紋認証は使い勝手がとても良い)

一番いいと思ったのが今使っているノートパソコンと同じ、キーボードと一体型で指紋認証センサーが搭載されていてるものだ。

※イメージ

ただ、調べてみたら驚くほどラインナップが少なくとても高価だった。(英字配列を含めても数えるほど)

※プリファード・プロとかは日本語JIS配列かつ指紋認証センサーがついてはいるが、生産中止で、古いスライド式の為認識も良くないと思われるからやめた

※Microsoft Modern Keyboard (指紋認証センサー付き)はUS配列だからやめた
(むかしUS配列を使ったことがあるが、JIS配列に慣れすぎて、非常に使い辛かった)

 

そこで快適さ、価格、デザインを考え編み出した解決案がこちら

 

これすごく良い!

Amazonのリンク

・エレコム キーボード 有線 プレミアムメンブレン フルキーボード 1000万回高耐久 メカニカルライク USB2ポート付 ブラック TK-FCM094HBK

・アルカナイト(ARCANITE) USB指紋認証リーダー Windows Hello機能対応 0.05秒 指紋認証でセキュリティ対策 1年保証 AKFSD-07 

認識も抜群でしかももう1ポートUSBも使えちゃう!しかもお値段も安い!

なのでぜひオススメのやり方です。

Buffaloの外付けSSD(SSD-PM120U3A-S)を分解したらSSDが入ってなかった

ノートパソコンのHDDが壊れたから修理のためにSSDを調達しようとした。

すると最近SSDの値段が高騰していて、2.5インチの内蔵SSDがなかなか昔と比べて値段が上がっている。

安く買えないかなーと思っていたら128GBのBuffaloの外付けSSD(SSD-PMU3AシリーズのSSD-PM120U3A-S)が相対的にお安く買えたので購入した。

これを分解してHDDが壊れたノートパソコンに換装する予定だったのだが、誤算だった。

↓分解から結果↓

2.5インチのHDDとの比較、明らかに小さい(この時点でちょっと焦る)

裏の比較

USB3.1(Gen1)の差込口

普通に小さなマイナスドライバーでこじ開ける

 

こじ開けた結果

 

SATAが挿せるSSDが入ってない・・・・・・・・

使いみちがなくなってしまった。

非常に残念

iPhone、iPadのバックアップフォルダが破損した場合のデータの救出

この記事は「iPhone、iPadからデータが失われ、過去にPCでバックアップを暗号化なしで行いバックアップフォルダ(MobileSync→Backupフォルダ)は存在するが、Backupフォルダの一部が破損していてiTunesで復元ができない場合」の無料でできるデータ救出方法です。

・iTunesの復元でだめだったパターン

Backupの復元を一部のファイルが欠けた状態で行った

→すぐに、「バックアップ壊れているため、iTunesはiPhoneを復元できませんでした。」のエラー

 

Backupの復元をダミーファイルでとりあえず全部そろえて、行った

→復元作業が始まってiPhoneにデータを転送し終わって完了したかと思ったら「バックアップ壊れているため、iTunesはiPhoneを復元できませんでした。」と出て無理だった

よってiTunesでの復元は諦めた

バックアップフォルダよりハッシュ化されたデータを人間が見やすいように変換させる

これはbackupフォルダ→ハッシュ化されたフォルダ→manifest.dbが破損していなく、フォルダが暗号化されていない場合のみに有効です!

仕組みとして、iPhoneのデータはハッシュ化されているが、manifest.dbに基本的なデータ情報が残っている。そのためそこから逆引きみたいな形でデータを復元させる

やり方

1.VMWareでUbuntuをインストール

VMWare Player :https://www.vmware.com/

Ubuntuのダウンロード:https://ubuntu.com/download

今回は19.10を使用した

WMwareでUbuntuのインストールと起動は他のところで調べてください

 

2.UbuntuでアップデートしてGitとSQLITE3など必要なソフトをインストール

https://github.com/inflex/ideviceunback

これがmanifest.dbからファイルを復元するソフトです

・ubuntuでterminalを起動

sudo apt update

sudo apt upgrade

sudo apt-get install git

sudo apt-get install libsqlite3-dev

#これないとideviceunbackのmakeのときに「fatal error: sqlite3.h: No such file or directory」とでる

3.ideviceunbackをGitからダウンロードしてコンパイル

git clone https://github.com/inflex/ideviceunback.git

cd ideviceunback

make

#エラーが出なければ成功です!

4.フォルダをVMwareのubuntuにコピー

色々なコピー方法がありますが、VMwareだとドラッグアンドドロップでファイルをUbuntu内に転送できます。

5.バックアップフォルダを人間が見やすいように変換

terminalで

ideviceunback -v -i path/to/backup -o output/path


これでoutputフォルダに変換されたファイルが見えます!

エラーが出る、出力が何もされない場合はmanifest.dbが破損しているか、暗号化されている可能性が高いです。残念ですが回復は厳しいです

 

 

Windowsのエラーでコピーできないファイル(CRC32エラー)をフォルダごと強制コピーさせるソフト

fcopyやCD recoveryというファイルごとに巡回冗長検査エラー(CRC32エラー)を強制コピーするソフトは世の中に存在するんだけど、なぜかディレクトリをまるごと強制的にコピーするソフトが存在しなかった。

なので自分で改良して、Batファイルを作成しました。

こちらからダウンロードできます。

dirFcopyをダウンロード

・ブロック単位でファイルをコピーする。

・ブロックサイズはデフォルトで32KB

・リードエラーが出たブロックは、0で埋められてコピー先ファイルに書き込まる。

というFcopy.exe

リンク:http://hyperstoneapple3.dip.jp/fcopy/fcopy.htm

のデフォルトの仕様をそのまま引き継いでいます。

使い方は

ダウンロードしたdirfcopy.batがあるフォルダでWindows PowerShell やCommand Promptを起動し

 

./dirfcopy.bat “破損元データがあるフォルダ” “出力先フォルダ”

で動きます。

 

あまり使う機会ないかもしれないけど、どうぞ使って下さい

 

For English user

dirFcopy force to copy data even if there is a CRC32 error (or some error)

You can copy each folder

・Copy files in blocks

・Block size is 32KB by default

・The block is overwritten with zero where the read error occurred 

Download:dirFcopy

How to use

In Windows PowerShell or Command Prompt

just enter

./dirfcopy.bat “source directory” “destination directory”

DLMarketの代わりのコンテンツ販売サイト

いつの間にかDLMarketが閉鎖していた。不正アクセスが原因らしい。

今回データコンテンツを販売したいなーと思ったら、直ぐに見つかった。

Note.muです

多分WEBに詳しい人だったら一度は見たこと有ると思うけど、このサイトならDLMarket的な使い方は出来ると思う。

ただし、無料アカウントの有料Noteのコンテンツの料金は、100円〜10,000円の範囲内です。
プレミアム会員は上限50,000円までらしい。

月500円払えばプレミアム会員とのことです。

とりあえず無料で試してみよう。

MT4でヒストリーセンターから一括でCSVに出力

MT4でヒストリーセンターよりダウンロードした過去データをエクスポートをするとCSVファイルに出力できるのだが、1分足とかを出力すると65000件しか出力されない。

最初は絞り込められるのはそーゆーものかのかなと思ってたが、これ間違ってた。

デフォルトで外部のソフトなどなしですべてのデータを一括でCSVに出力できます。

MT4のツール→オプション→チャートを選択

チャートの最大バー数:65000となっているところを

2147483647

に変更しましょう

そうすると一括でCSVにエクスポートできます

 

なんかヒストリカルデータをヒストリーセンターから1分足をエクスポートするとめちゃよくバグる

具体的には0/xxxxxxx とかになってデータが何もエクスポートされなかったり、250000/xxxxxxxx とか謎の区切りいい数字に勝手に区切られたりする。

どうも最大バー数を一度小さい値にして、そのあと大きくして、MT4を再起動すると動くことが多い気がする。

バグだろうけど多分修正されないだろうからとりあえず上の方法でやるといいかも

リモートデスクトップを特定のIPのみで接続するようにして、さらにPHPを使ってIPアドレス追加許可する

文章にすると分かりづらいけど、PHPから指定したURLにアクセスした場合(そのときパスワードを掛けてもいい)そのアクセスしたIPアドレスをリモートディスクトップの受信の規則に追加してリモートデスクトップ(RDP)のセキュリティを高める方法です。

ポートが完全に反応しなくなるのでポートスキャンにも有効ですし、不正アクセス対策としてはかなり強いと思います。

また特定のURLにアクセスするだけで、利用を許可でき、利便性も高いと思います

デメリットとしては、Windowsのファイヤーウォールのルールにドンドン溜まっていくので、たまに整理しないといけないぐらいですね

でもセキュリティを考えたらIPを制限するのは大事だと思います

 

前回やったApacheのPHPのアクセス制限と少しだけ似てます。やってることは結構違うけど。

やり方として、まずRDPはローカルや特定のIPだけしか許可しないようにします。

それは他のサイトでも書いてるのであまり解説しませんが、Windows Defenderファイアウォールを開いて、リモートデスクトップ – ユーザーモード(TCP 受信)とリモートデスクトップ – ユーザーモード(UDP 受信)のリモートアドレスのスコープを任意のIPアドレスからこれらのIPアドレスにします。

私は127.0.0.1と192.168.1.0/24を追加しました。

 

それで、ここからがオリジナルです

C#を使ったWindows FirewallにAllow IP追加するオリジナルプログラムのEXEのプログラムを作成します。

Visual Studio 2019 communityで作成しました

新規作成→新しいプロジェクト→コンソールアプリ(.NET Framework)C#を選んで、名前は「add_ip_to_windows_firewall」で対象フレームワークは.NET Framework 4.5にしてください。

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using NetFwTypeLib;

namespace add_ip_to_windows_firewall
{
    class Program
    {

        public const int NET_FW_IP_PROTOCOL_TCP = 6;

        public const int NET_FW_IP_PROTOCOL_UDP = 17;

        public static void addRule(String ip, String port, int protocol)
        {
            INetFwRule firewallRule = (INetFwRule)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FWRule"));
            firewallRule.Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW;
            firewallRule.Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN;
            firewallRule.RemoteAddresses = ip;
            firewallRule.Protocol = protocol;
            firewallRule.LocalPorts = port;//複数の場合は8051,8052,8053など
            firewallRule.Enabled = true;
            firewallRule.InterfaceTypes = "All";
            firewallRule.Name = "RDP IP permission : " + ip;
            INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));
            firewallPolicy.Rules.Add(firewallRule);
        }
        static void Main(string[] args)
        {

            if (args.Length == 0)
            {
                Console.WriteLine("ERROR!!! Please set IP in args....");
                System.Threading.Thread.Sleep(5000);
            }
            else
            {
                string ip = args[0];
                Console.WriteLine("allow access to " + ip);
                addRule(ip, port: "3389", protocol: NET_FW_IP_PROTOCOL_TCP);
                addRule(ip, port: "3389", protocol: NET_FW_IP_PROTOCOL_UDP);
                Console.WriteLine("May Be Success!" + ip);

            }
        }
    }
}

上がソースコードです。

貼り付けてコンパイルしてください。NetFwTypeLibがmissingの場合は参照から

参照の追加でSystem32にあるFirewallAPI.dllを選択してOKしてください。

んで出来上がったadd_ip_to_windows_firewallをPHPが実行出来るWEBサーバーのディレクトリにおいてください。

以下のPHPファイルも作成しておいてください。

index.php

 
<?php
error_reporting(E_ALL);
try {
    $myExeFile = dirname(__FILE__) . '/add_ip_to_windows_firewall.exe';
    if (! file_exists($myExeFile)) {
        echo $myExeFile;
        exit("exeファイルが無いです");
    }
    $ip = $_SERVER["REMOTE_ADDR"];
    $exeCommand = $myExeFile . " " . $ip;
    echo "処理を実行します";
    echo "
";
    echo exec($exeCommand);
    echo "
";
    echo "allow access to xxx が出たら成功です!";
} catch (Exception $e) {
    echo $e->getMessage();
}
?>

 

WEBサーバーで同じディレクトリに

.htaccess(必要ならでallow from allだけとか)

index.php(ファイル名は何でもいい。むしろ複雑なほどいい)

add_ip_to_windows_firewall.exe

の3つおいてください。

Apacheの権限を管理者権限で実行させるようにして、ディレクトリにhttp://yousite/addiprdp/index.phpにアクセス

するとwindows firewallにRDPアクセス許可するIPが新しく追加されているはずです!

add_ip_to_windows_firewall.exeを試したい場合は引数にIPアドレスを入れて管理者権限でCMDを実行さしてください。

コンパイルとか面倒くさいなら自己責任で↓からダウンロードして使ってください。Windows 10 pro で動かしました

add_ip_to_windows_firewall_php_ver

 

bootcampでWindowsを入れたMacのパーティションを変更後no bootable deviceで起動しなくなった

Apple iMac “Core i5” 2.7 27-Inch (Mid-2011)をWindowsでサーバーとして使用しているんだけど、愚かにもMacOS部分Mac OS 拡張フォーマットのパーティションを変更したらno bootable device insert boot disk and press any keyと出て起動しなくなった。

MacOSからディスクユーティリティーで普通に適応できるから容量ふやしたりできるのかなとか軽い気持ちでやると起動しなくなります。

どうもMBRが不整合を起こす?っぽくて、パーティション変更したらもう起動しないと思ったほうがいいぐらいデリケート

Windows10のスタートアップ修復やいろいろ試したけど駄目でした。

ただ、その後不可解なことにWindows領域を削除して、また再び新規インストールをしたら「インストールの次のフェーズにコンピューターを起動するように準備することができませんでした。Windowsをインストールするには、インストールを再実行してください。」とでて次へ進まない。

どうもパーティション情報がぐしゃぐしゃだからSSDかHDDを一度完全にフォーマットしないと治らないっぽい。

とりあえず普通にフォーマットして2011 midのMacにとっては一番新しいHigh Sierraをインストールする。

コマンド+Rからリカバリーマネージャー的なのにはいって、ディスクユーティリティーからMac OS 拡張フォーマットをGPT(これじゃないとHighSierra入れれない)で新規インストールして、アップデートも全部してBootCampを再び試した。

でもやっぱり同じエラーで同じ箇所でとまる

最新のWindows10のディスクだから悪いのかなと、Windows7,Windows8も試したけど全く同じエラー(インストールの次のフェーズにコンピューターを起動するように準備することができませんでした。Windowsをインストールするには、インストールを再実行してください。)でとまる

それならばと一緒マックを全部消して試してみようと、起動時にOptionキーからWindowsを選択して、DVDからブートしてやった。

それでも最後にとまって同じエラー。

いよいよ長期化を覚悟して、様々な条件で試した。

ごみパーティションがあるのかとTerminalから全削除して再びHigh Sierraをインストールしても同じ。

パーティションを手動で制作して、EFIでUSBから起動とかして、ドライブまるごとGPTにかえるとかしても絶対同じ場所で止まる。

万策尽きたかと思ったがインストールできた条件を発見

解決法!!!!

Option+Shift+Command+Rで購入時のMacOS LionでディスクユーティリティーよりMBRでMac OS 拡張フォーマットとしてインストール

BootcampからWindows7のOSのディスクいれて、普通にインストール

これだけです。

どうも最新OSだと無理っぽいです。

みなさんもパーティションの変更には気をつけてください。

追記:

なぜかAtikmdag.sys がクラッシュしてブルースクリーンになる。

完全にAMD Radeon 6630Mのドライバーがおかしいと思われるので対応した。

セーフモードとネットワークで起動→デバイスマネージャーよりAMD Radeon 6630Mのデバイスを選択→ドライバーを標準ドライバーに戻す→ダウンロードしてきた15.7.1 WHQLのドライバーに更新(カーネルは8.1.1.1500の更新日時2015/08/09 14:40)

これで一個前の多分安定していると思われるドライバーが入ります。

日本語キーボードホストのリモートデスクトップ時に英字キーボードのクライアントで英字配列で使う

英字配列と日本語配列のリモートデスクトップだといろいろと問題が起こる。

簡単にはログインした状態だと日本語配列なのに英字配列のような入力になったり逆になったりする。

ログアウトしてログインし直すと解決するけど非常に使い勝手が悪い。

簡単に解決する方法があったのでメモ

日本語でログインしてULE4JISってソフト起動させたら解決。

Windows10で動作しました。

Vaio Pro 11のHDMIから音が出ない問題

VJP1111について、

解決するまで長かった。

なんかintelのHD graphic がHDMIの音声出力に基本的に関係してるんだけど、これをWindowsUpdateでドライバーを最新のにするとどうもHDMIから音が出ないっぽい。

しかも中途半端なことにコントロールパネルのサウンドをみるとHDMIケーブルをさしたらHDMI audioとか増えるものの、それを選択することができない。

接続されていませんとか出てくる。

最新ドライバーにしたりいろいろしたけど、何とか治った。

解決方法!

1:デバイスマネージャーからDisplay AdapersのIntel(R) HD graphics Familyのドライバーを削除→再起動

2:デバイスがBaseDriverの状態でVaioUpdate起動さして、Graphics DriverをUpdateさせる。

3:Sony純正のドライバーが入ったらコントロールパネルのサウンドからHDMIを選択できるようになって音が出る

疲れた。