SQLの窓

2013年04月25日


Adobe Readerの脆弱性を突かれて人生初の『ウィルス』に感染・・・

正直嘗めてました。でも、はっきりしているのは。

セキュリティソフトを使っていても無駄です。

この事実が最も重要なところで、誤解されている部分でもあるはずです。

自分はプログラマなので原理はとても良く解ります

そもそも、ウィルスには『侵入経路』が必要で、侵入するには必ず必要な PC の所有者の『実行許可』が必要です。それは、直接的であれ、間接的であれ、たいていの場合は『マウスのクリック』で発動する事が殆どです。

さらに、今まで多かったのは『不審な』という形容詞の付く『プログラム』や『場所』や『ドキュメント』だったので、論理的に避ける事は可能だったんですが・・・・



いきなりあらわれたのは、このウィルスです。こちらこちら で『何者』かは解るので説明しませんが、こいつが全く身に覚えが無いのに突然表示されました。

しかしすぐ理解し、まず記憶を辿りました

自分はプログラマなので、PC の使用目的ははっきりしています。プログラムを作っているか、WEB で調べ物をしているか、WEB サイトにページを増やすか、ブログを書くかどれかです。しかも、その日の作業中だったので、何をしていたかははっきりしていて、

『WEB で調べ物』をしていました

つまり、一番不特定多数のサイトを訪問する作業であり、ウィルスに感染する唯一の可能性です。( メールとかは全部 WEB メールで、添付ファイルを開くという事はまず、殆どしません )

その日も、普通のサイトしか訪れた記憶はありませんでしたが、唯一 Google Chrome が固まった記憶がありました。残念ながらどこのサイトだったかは覚えて無かったのですが、普通のサイトしか訪れていません。

後で知る事になるのですが、その日の前後でかなり大量の一般サイトがハックされて、この手のウィルスがばらまかれたという事を WEB のニュースで知りました。

しかし、Adobe Reader さえ、最新にアップデートしておればこんな事にはならなかったのです。これが『嘗めていた』という事実です。

なぜセキュリティソフトを使っていても無駄なのか

まず、Adobe Reader のプラグインがブラウザにインストールされている状態は、『正常』な状態です。セキュリティソフトが Adobe Reader のプラグインを排除する事はありません。

次に、直接の原因はブラウザで WEB ページを閲覧する事にあります。これも、PC にとっては正常な行為であって、セキュリティソフトが、ブラウザの表示を監視するのは無理です。ブラウザが表示しているページの中に書かれている『ウィルス起動プログラム』は特殊ではありますが、もし監視するなら全てを監視する必要があり、とても利用者が忍耐できるような現実ではありませんし(仮に監視しても確実であるという保証は無く、むしろ誤動作も想定される)、とても稀な状況に対してする意味もありませんし、そもそも『正常な状態』なのですから。

完全にこの危険な状況を回避するには、Flash、Java、Adobe Reader をブラウザから削除する必要があります。Java と Adobe Reader は無くてもなんとかなりますが、さすがに Flash を削除できないのが現在の WEB 世界です。( OS を目的別に 5つ運用しているので、現在は、Flash ですら 3つでしか動作していません )

では、『ほぼ』で、対処する方法は、それらのソフトウェア( もう、自分の場合は Flash だけ ) を常に最新にインストールする事です。ですから、これらのソフトウェアはいつからか、なかば強制的に最新に更新させるような環境を『常駐プログラム』をユーザにインストールさせる事によって構築してきたわけです。

これしか対処方法がありません。かなり低い確率ですが、運悪く更新前( というか更新がリリースされる前 )に、たまたま、狙われ済みの WEB サイトを訪れてしまうとウィルスに感染してしまいます。

さて、ではウィルスの駆逐

感染してしまった場合、セキュリティソフトは威力を発揮します。状況によっては、セキュリティソフトの守備範囲外で潜み続ける場合も無い事も無いですが、たいていは駆逐できるでしょう。多少の知識があれば、今回自分が感染した程度のものならば、ちょちょいと手動で削除も可能です。

特に、このウィルスそのものは、殆ど詐欺目的でばらまかれているので、植えつけた側のレベルによって単純な場合が多いものと考えられます。不安を煽って金銭を間違って払う事を期待しているので、PC を破壊する事が目的ではありませんし、そうそう複雑な潜み方はしないはずなのですが・・・・・

実は、とんでもなかった

ウチのはとんでもなかったです。WEB の情報で、たしかにそのとおりの場所にウィルスは存在しました。すぐ削除しましたが・・・・そのウィルスの肝心の起動場所と思われるレジストリには何も無かったのです。これは、いろいろな方法で試みたので間違いありません。その結果、やはりネットワークの利用時におかしな事が起こります。最初にこのウィルスが発動したのが、FTP クライアントソフトでログインしようとした時でしたから、『ネットワーク関係』の場所に潜んでいると思いました。

で、結果的に・・・・

今となっては、100% そうだとは言い切れないのですが、『ネットワークアダプタのドライバ』として潜んでいたようなのです。その時はイライラしながらいろんな事を試していて、たしか、ドライバを見に行った時に、通常なら一行のドライバが表示されるはずのところに、4行くらいのドライバが存在していました。即、ネットワークアダプタを『無効』にしてしまったので、詳しい情報がなくなってしまったのが悔やまれます( かなりそのときは疲れていたので )

結局、再度有効にすると正常な一行になり、それ以来起きていた異常が起きなくなりました( ブラウザがのきなみページごとに落ちてました )

後からいろいろ調べた結果では、勝手にハードディスクのパーティションを切って、そこに潜むというとんでも無いのが居る事も解ったので、これくらいの事はするだろうと思い。それをきっかけに、ハードディスクを二つにパーティションに圧縮して、もう一つ Windows7 をインストールする事にしました。こうすると、隣からウィルスの心配せずにファイルを取り出せるし、危険かもしれない処理をする為専用として、感染して対処した OS( 一応問題無く動いてますが )を再インストールせずにまだ置いてあります。

そこでしか動かない古いソフトウェア環境もあるので、苦肉の策です。
( いずれいらなくなったら再インストールします )

※ もちろん、最終的にはセキュリティソフトでディスクを全てスキャンしています。

【追記】
おかげで、Adobe Reader のプラグインが自分には全く必要の無いものだと今回理解しました。Google Chrome を使っていると、Chrome PDF Viewer というプラグインがインストールされていて、ブラウザに PDF をドラッグ&ドロップすると表示できます。

また、Google Chrome の Flash は、Chrome に組み込まれているもの以外でも PC でインストールされると『有効』になってます。プラウザを複数使う人は、各ブラウザの関連プラグインの有効・無効と、デフォルトのブラウザがどのブラウザかを再確認して、Flash がどのプラグインを最新にしているかを理解しなくてはいけません。

IE のプラグイン無効は、『アドオンの管理』で行います。


posted by lightbox at 2013-04-25 22:18 | 記録 | このブログの読者になる | 更新情報をチェックする

2013年04月20日


ADT( Android Development Tools ) Eclipse に Window Builder をインストールして Swing アプリケーションを作成する(2)

ADT( Android Development Tools ) Eclipse に Window Builder をインストールして Swing アプリケーションを作成する(1) からの続きです。

Swing プロジェクトの作成

新規でまず、Java プロジェクトを作成します



JRE は、1.6 を選べます



作成したプロジェクトから、新規作成て『その他』を選択します



Window Builder 内の Swing Designer で JFrame を選択します



名前を入力します



contentPane を選択して、レイアウトを絶対指定に設定します
( Window のサイズは、JFrame を選択します )



ボタンを追加します



イベントを追加します



イベント内にテストコードを記述します



実行して動作を確認します






関連する記事


posted by lightbox at 2013-04-20 20:47 | Java | このブログの読者になる | 更新情報をチェックする

Android エミュレータでウェブカメラを使いたいだけなのに、必要無いソフトが沢山インストールされて常駐されました。

2013-04-20 : 更新

記事を書いてから、しばらくして PC を立ち上げたら、再び eReg.exe が起動しました。スタートアップからは削除しています。製品も接続していません。起動場所がわかりませんので、本体をリネームして様子を見ます。ちなみに、レジストリには存在します。eReg.ini を見ると、48時間毎に起動するようではあります・・・

しかも、起動したという事で、再びスタートアップに登録されました。なんじゃこりゃ。やってる事ウィルスと変わらないんですが。

結局、『プログラムと機能』から、『ドライバパッケージ』のみを残して後は削除しました。そうすると、eReg.exe の入っているフォルダごとなくなっており、サービスも削除されていました。



追加情報として、動作確認は面倒なのでしませんが、ウェブカメラを繋いだ状態で Windows Update の詳細を見ると以下のようなソフトを見る事ができます。
Logitech - Communication Device, Streaming Media and Broadcast - Logitech Mic (Communicate STX)
ダウンロード サイズ: 2.1 MB
この更新プログラムを有効にするには、コンピューターを再起動する必要があります。
更新プログラムの種類: オプション
Logitech Communication Device, Streaming Media and Broadcast software update released in October, 2009
最初の記事 対象製品は Qcam Communicate STXトレードマーク(TM)(QVC-71) です。相当昔に購入したもので、最新のドライバをダウンロードしてインストールしました。( それでもインストーラの 1/3 で中止したんですが ) 目的は最新の ADT( Android Development Tools ) では、ウェブカメラの設定が簡単になっているので動作確認の為に行いました。Microsoft のドライバでは、Google+ の投稿には使えるのですが、エミュレータ上ではエラーになるので最新のドライバをインストールして、無事 エミュレータ上で表示可能になりました。( 表示はいろいろと逆さまなんですが、テストには支障なし ) ▼ DDMS のファイルエクスプローラで取り出した画像 DDMS のファイルエクスプローラ 止めた余計なアプリ(止めても ADT では支障なし) ❶ c:\program files\logicool\logicool webcam software\lws.exe ❷ c:\program files\logicool\logicool vid\vid.exe この二つは、ユーザとPC の レジストリの自動起動部分に ❸ C:\Program Files\Logicool\Logicool WebCam Software\eReg.exe これは、プログラムメニューのスタートアップに入っていて、製品の登録をさせようとします ❹ C:\Program Files\Common Files\LogiShrd\LVMVFM\LVPrcSrv.exe なんか、謎のサービスが自動起動になっています Process Monitor(Injector service) とありますが、なんだか良く解りません。 とにかく少し酷すぎると思います。 こいつらは、WEBカメラが USB に存在しなくても起動されます 関連する記事 フリーソフト : Autoruns for Windows : 自動起動アプリケーションを一時解除等 ドライバの状態 こんな感じで、これだけが必要だったんですけどね。 ドライバの詳細を見ても、wuapp32.exe というファイル以外は全て dll で、製品が USB に接続されなければ、当然起動されません。( 確認したら、接続しても起動されなかった・・・何これ? ) タスクマネージャから実行中のソフトの情報収集 『説明』でだいたいの想像は付きますが、『ファイルの場所を開く』で、どのフォルダにあるか解るので、どういうソフトか、フォルダから知る事ができます。また、ファイル名そのものを WEBで調べれば、どういう会社のものかはたいてい解るはずです。 問題は、ここで動いているものがどこから起動されたかという事ですが、一般的なものは、『スタートアップ』フォルダで、これは削除すれば終わり。次にレジストリの自動起動部分が、PC 全体と、ユーザ毎とで少なくとも二箇所あるので、専用のフリーソフトで対処できます。 あとは、サービスタスクスケジューラなので、これは正攻法で止める必要があるのですが、どのサービスかを特定するのに、タスクスマネージャの『サービスの表示』で関連するサービスを特定できる場合があります。 サービスを特定したら、手動にして終了させればいい場合がほとんどですが、『無効』にしないと勝手に起動するアプリケーションもあり、酷いのになると『無効』にしても勝手に生き返るものもあります。それは、他にも関連するアプリが起動済みであるという事なので、さらに調査が必要になります。 タスクスケジューラに登録されているアプリケーションはだいたいは必要なものが多いので、むやみに削除せずに、よく調査・確認してから削除するといいでしょう。 Google と タスクスケジューラ 更新履歴 2013-04-18 : 記事作成 2013-04-20 : トラブル報告
posted by lightbox at 2013-04-20 17:58 | Android | このブログの読者になる | 更新情報をチェックする

2013年04月19日


Windows ストアアプリの AppBar を作成してテストする

サンプルをコピーして実行すればできてしまいますが、『ブランクテンプレート』から、正攻法で作成する手順です。



StandardStyles.xaml の変更

Common フォルダにある StandardStyles.xaml を、Microsoft のサンプルの中にあるもので置き換えます。( 何故か、中身を変更しないと、AppBar のスタイルが使えないのですが、変更するよりコピーしたほうが確実なので )

実際問題として、Visual Studio 2012 のテンプレートやデザイナの出来は『良いものとは言えません』。製品版になる前から検証していますが、なにも問題は改良されていないので、がっかりしないようにして下さい。

Page のプロパティから『新規作成』

Visual Studio のデザイナ部分は、『Blend for Visual Studio』に力が入ってしまっていて、Visual Studio 本体のデザイナは、『とりあえずある』という程度です。なので、AppBar を追加するにしても、納得のいく形では出来上がりませんので注意して下さい。

本来ならば、デザイナに直接ドロップして Page のプロパティに設定すべき AppBar なのですが、デザイナから見えるのは Grid なので、そのままドロップすると Grid の中に定義されてしまって意味不明になります。

ですから、まずはテンプレートとして『プロパティ』の BottomAppBar プロパティの『新規作成』ボタンで挿入します。



▼ 新規作成すると以下のようになります



しかし、これでは何も設定されていないので、AppBar を選択した状態でデザイナ画面に移動して、AppBar をドロップします。



そうすると、やっとテンプレートらしきものが設定されるのですが、AppBar が二重になってしまうので、外側を削除します。



ボタンの追加

これでやっと、AppBar が作成されて、左右にバーが作成されている事になります。左側の StackPanel を選択してからデザイナ画面に移動して Button をドロップします。



ボタンが追加されたら、プロパティで余計な Content プロパティに設定されている表示用の文字列を削除し、Style プロパティでリソースに定義されている AppBar 用のボタンスタイルを設定します。
プロパティは、カテゴリで表示して『寄せ集め』から設定すると、いろいろ変更してテストしやすいです。
続けてイベントと他のコントロールを作成して動作確認 イベントは、プロパティウインドウの雷マークタブに移動して、該当するイベント欄をダブルクリックすると自動作成されます。
<Page
    x:Class="BlankApp.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:BlankApp"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <Page.BottomAppBar>
        <AppBar>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition/>
                    <ColumnDefinition/>
                </Grid.ColumnDefinitions>
                <StackPanel Orientation="Horizontal">
                    <Button
                        HorizontalAlignment="Stretch"
                        VerticalAlignment="Stretch"
                        Style="{StaticResource SettingsAppBarButtonStyle}"
                        Click="Button_Click_1"/>
                </StackPanel>
                <StackPanel 
                    Grid.Column="1"
                    HorizontalAlignment="Right"
                    Orientation="Horizontal"/>
            </Grid>
        </AppBar>
    </Page.BottomAppBar>

    <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
        <TextBox
            x:Name="MessageArea"
            HorizontalAlignment="Left"
            Height="116"
            Margin="88,68,0,0"
            TextWrapping="Wrap"
            VerticalAlignment="Top"
            Width="448"
            IsReadOnly="True"/>
    </Grid>
</Page>

以下は、メッセージ表示を行う『MessageDialog』ですが、応答するボタンを三つまで自由に作成する事ができます。

C# ならではの記述方法として、() => {処理}と、インスタンスを作成する場合に同時にプロパティを設定する {プロパティ=初期値[,プロパティ=初期値...]} を使っています。Id は、設定しておかないと、イベント内では何も入って来ないので注意して下さい

async と await については、こちらを参照して下さい。


using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Popups;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;

namespace BlankApp
{
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();
        }

        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
        }

        private async void Button_Click_1(object sender, RoutedEventArgs e)
        {
            var messageDialog = new MessageDialog("メッセージ", "タイトル");

            messageDialog.Commands.Add(new UICommand("選択肢1", (command) =>
            {
                Debug.WriteLine(command.Label);
                Debug.WriteLine(command.Id);
                this.MessageArea.Text = command.Label + "\n" + command.Id;
            }) { Id = "idの型はobject" });

            messageDialog.Commands.Add(new UICommand("選択肢2", (command) =>
            {
                Debug.WriteLine(command.Label);
                Debug.WriteLine(command.Id);
                this.MessageArea.Text = command.Label + "\n" + command.Id;
            }) { Id = new Uri("http://winofsql.jp") });

            messageDialog.Commands.Add(new UICommand("アプリ終了", (command) =>
            {
                App.Current.Exit();
            }) { Id = 3 });

            messageDialog.DefaultCommandIndex = 1;

            await messageDialog.ShowAsync();

        }
    }
}




posted by lightbox at 2013-04-19 22:47 | Win8 ストアアプリ | このブログの読者になる | 更新情報をチェックする

2013年04月15日


Windows8 ストアアプリの StaticResource で使用されるテーマ色の定義場所

以下は、64ビットでの場所ですが、32ビットなら (x86) が無いだけだと思います。
C:\Program Files (x86)\Windows Kits\8.0\Include\WinRT\Xaml\Design\themeresources.xaml
ちなみに、Windows Phone は以下です。
C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v7.1\Design\ThemeResources.xaml
C:\Program Files\Microsoft SDKs\Windows Phone\v7.1\Design\ThemeResources.xaml



posted by lightbox at 2013-04-15 23:41 | Win8 ストアアプリ | このブログの読者になる | 更新情報をチェックする

Windows7 : shell:sendto は、sendto だけで開くようです。

正式な文書はついに見つけられませんでした。



結局、『ファイル名を指定して実行』では、shell:sendto しか動きませんが、エクスプローラのアドレスバーと、ツールバーのアドレスでは、sendto のみで、『送る』フォルダを開く事ができますshell: で使える文字列の一覧が見れるサイト

Shell コマンドで開く特殊フォルダー一覧(Windows 7,8)

実際使えそうなのは数えるほど(深い階層で短い名前で無いと意味が無い)ですが、何かの時に使えると思います( ショートカットのリンクには使えません )

shell:Recent
shell:Startup

Templates は、sendto を呼び出すと、並びにあります

似たような処理は %環境変数% 

例えば、%TEMP% でテンポラリフォルダを開く事ができます




posted by lightbox at 2013-04-15 23:22 | Windows | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり