マイクロソフト社 謹製のマルウェア・ウィルス駆除ソフト

 

Microsoft セーフティ スキャナー ダウンロード | Microsoft Learn

 

マルウェアにやられて、ネット接続の繋ぎ変えをされたのだが、こいつで綺麗に消えた。市販の対策ソフトでは無理な場合、一押し。時間はかかるけど完全スキャンでどうぞ。

 

出てくる出てくる、2桁のオーダーで発見・駆除してくれた。繋ぎ変えも無事防止された。駆除後のリペアまでしてくれる。とても親切なソフトエア。

 

ウイルス、スパイウェア対策 | すべてのサービス | 広島大学情報メディア教育研究センター (hiroshima-u.ac.jp)

 

ここでリンクを見つけた。さすが広島大学。ありがとう。

 

やっと Windows11 を安心して使える。

データの整理をしていたら22年前に書いたtoy programが出てきた。どうやらカオス・フラクタルの本を読んで組んでみたらしいが、もちろん、そのままではコンパイル出来ず、ビルドできるようにしてみた。今見ると、根本的に書き直した方が良いだろうと思うが、肝心の書籍が見当たらない。

 

でもって、面白いから Ubuntu Linux 22.04LTS ,openindiana, FreeBSD13.2R , NetBSD 9.3 で無事コンパイルできるようにしてみた。C++ コンパイラと Gnuplot が入っていれば基本的にOK。

 

 

複素数の平面転写によるバイオモルフ
$ make or gmake
で実行ファイル作成
Makefile の CC は g++ or c++ を指定
$ ./rec_complex
で、dat ファイル作成
gnuplotで
gnuplot> plot "dat"
で、バイオモルフ表示
 

Makefile

---

#コンパイラは、C++を使う
CC = g++
CFLAGS = -Wall -c -g -o
LDFRAGS = -g -lm
#実行プログラム
TARGET = rec_complex

#ソースファイル
SRC1 = main.C
SRC2 = complex.C


#object Files
OBJ1 = $(SRC1:.c=.o)
OBJ2 = $(SRC2:.c=.o)


#依存関係
LINK = ${OBJ1} ${OBJ2}

#拡張子ルール
.c.o:

    @echo $< compile..
    @${CC} $< ${CFLAGS} $@
    @echo source compile done!

#object file のリンクと実行ファイルの作成
${TARGET}:${LINK}
    @echo $^ Link..
    @${CC} $^ -o $@ ${LDFRAGS}
    @echo object link done!

#オブジェクトファイルのクリア
clean:
    rm -f *.o
---

 

main.C

---

/* 複素数の反復写像図の生成                        *
*  バイオモルフを作るため Conversion TEST B を使用 *
*  f(x) = z^2 * z + z^5 として超越関数成分を持つ   *
*  多項式を使用                                    *
*  2001.4.28  2023.10.14 debianan                  */

#include <stdio.h>
#include "global.h"

int main(int argc,char **argv){
  int value;

  value = RecImage_Complex();

  return(value);
}
---

 

global.h

---

/* global.h                      *
* 定数と関数参照のみ             *
*                                *
* 2001.4.28  2023.10.14 debianan */

extern int RecImage_Complex(void);

#define TRUE 1
#define FAULSE 0
#define LIMIT_A 50        // 敷居値 A
#define LIMIT_B 5000    // 敷居値 B
---

 

complex.C

---

/* 複素数の反復写像図の生成                        *
*  バイオモルフを作るため Conversion TEST B を使用 *
*  f(x) = z^2 * z + z^5 として超越関数成分を持つ   *
*  多項式を使用                                    *
*  rz,iz は、それぞれ複素数の実部と虚部            *
*  i は反復カウンタ u_complex,z_complex = 複素数   *
*  2001.4.28  2023.10.14 debianan                  */

#include <complex>
#include <stdio.h>
#include <math.h>
#include "global.h"


int RecImage_Complex(void);
std::complex<double> gen_data(std::complex<double> seed);
int ConvergenceTest_A(std::complex<double> z);
int ConvergenceTest_B(std::complex<double> z);
void PrintDot(double x,double y,FILE *fp);

/* 反復写像の生成と出力                           *
*  2001.4.28  2023.10.14 debianan                 *
*                                                 */

int RecImage_Complex(void){
  int real_count, // 実数でのループカウンタ
      imag_count, // 複素数でのループカウンタ
               i, // 中間値のループカウンタ
           value, // 戻り値
           result;// 検査結果
  double rrz,iiz; // 各々のピクセル単位
  double rz,iz;   // 複素数計算の中間値
  std::complex<double> u_complex, // 複素数
                z_complex; // 複素数
  FILE *fp;
  fp = fopen("dat","w");
  for(rrz = -4;rrz <= 4;rrz += 0.08){  
    for(iiz = -4;iiz <= 4;iiz += 0.08){ 
      z_complex = std::complex<double>(rrz,iiz);
      u_complex = std::complex<double>(rrz,iiz);
      for(i = 1;i <= 30;i++){
        z_complex = gen_data(z_complex) + u_complex;
        rz = std::real(z_complex);
        iz = std::imag(z_complex);
        if (sqrt(pow(rz,2) + pow(iz,2)) > 100){
            break;
        }
      }
      
      result = ConvergenceTest_A(z_complex);
      if(result){
            PrintDot(rrz,iiz,fp);
      }

      result = ConvergenceTest_B(z_complex);
      if(result){
          if(fabs(rz) < 100 || fabs(iz) < 100){
            PrintDot(rrz,iiz,fp);
        }
      }
      
    }
  }
  fclose(fp);
  value = TRUE;
  return(value);
}

/* 複素数データの生成                      *
*  f(x) = z^z + z^5                        *
*  2001.4.28  2023.10.14 debianan          */

std::complex<double> gen_data(std::complex<double> seed){

        std::complex<double> value;
  value = pow(seed,seed) + pow(seed,5);
  return(value);
}

/* 有界テストA                            *
*  √[Re(Zn)]^2+[Im(Zn)]^2 < t(敷居値)     *
*  2001.4.28  2023.10.14 debianan         */

int ConvergenceTest_A(std::complex<double> z){
  double re,im,temp;
  int value = 0;

  re = std::real(z);
  im = std::imag(z);

  temp = sqrt(pow(re,2) + pow(im,2));
  if(temp < LIMIT_A && abs(z) < LIMIT_A){
    value = TRUE;
//    printf("有界テストAを通ったよ! %f %f\n",re,im);
  }else{
      value = FAULSE;
//    printf("有界テストA失敗だよ! %f %f\n",re,im);
  }
  return(value);
}


/* 有界テストB                            *
*  有界性の評価を高速にするため平方と開平 *
*  の計算を省く                           *
*  abs[Re(Zn)] < t /\ abs[Im(zn)] < t     *
*  2001.4.28  2023.10.14 debianan         */

int  ConvergenceTest_B(std::complex<double> z){
  int value = 0;
  double re;
  double im;

  re = std::real(z);
  im = std::imag(z);

  if( fabs(re) < LIMIT_B && fabs(im) < LIMIT_B){
    value = TRUE;
//    printf("有界テストB通ったよ! %d %f %f\n",value,re,im);
  }else{
      value = FAULSE;
//    printf("有界テストB失敗だよ! %d %f %f\n",value,re,im);
  }
  return(value);
}

/* データファイルの作成                  *
*  y 虚軸 x 実数軸                       *
* 2001.4.28  2023.10.14 debianan         */

void PrintDot(double x,double y,FILE *fp){

  fprintf(fp,"%f %f\n",x,y);

  return;
}
---

 

で、これが合っているかどうかも今となっては判らない。間違い等、指摘あったら下さいな^^;
  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

NetBSD 9.3 が一応過不足なく使える状態になった。全て pkg で入れて設定しただけだけど。なのでメモを少し。

VMware 17.2 WorkStation

ブラウザ:Firefox ver.114

Emacs 26.3

メーラー:Mew 6.9

ニューズ:Gnus 5.9?

Emacs ~/.emacs.d/init.el

Mew,Gnus関係抜粋

;; Shell PATH
(require 'exec-path-from-shell)
(exec-path-from-shell-copy-envs '("PATH" "VIRTUAL_ENV" "GOROOT" "GOPATH"))

;;mew
(autoload 'mew "mew" nil t)
(autoload 'mew-send "mew" nil t)
(load "~/.emacs.d/.mew.el")
 
;;Gnus
(setq gnus-nntp-server "news.eternal-september.org")
(setq user-full-name "hoge"
      user-mail-address "hoge@gmail.com")
;; Move home directory to ~/gnus
(setq gnus-home-directory "~/gnus")

 

Mew 6.9 の設定

~/.emacs.d/.mew.el

; IMAP for Gmail
(setq mew-icon-directory (expand-file-name "/usr/share/pixmaps/Mew"))
(add-to-list 'image-load-path (expand-file-name "/usr/share/pixmaps/Mew"))
(setq mew-prog-ssl "/usr/pkg/bin/stunnel")
(setq mew-ssl-verify-level 2)
(setq mew-ssl-cert-directory "\nCAfile=/usr/pkg/share/ncat/ca-bundle.crt")
;; POP over SSLを使う
(setq mew-pop-ssl t)
;; SMTP over SSLを使う
(setq mew-smtp-ssl t)
(setq mew-proto "%")
(setq mew-user "hoge")
(setq mew-mail-domain "gmail.com")
(setq mew-imap-server "imap.gmail.com")
;(setq mew-imap-user "hoge@gmail.com")
(setq mew-imap-user "hoge")
(setq mew-imap-auth  t)
(setq mew-imap-ssl t)
(setq mew-imap-ssl-port "993")
(setq mew-smtp-auth t)
(setq mew-smtp-ssl t)
(setq mew-smtp-ssl-port "465")
(setq mew-smtp-user "hoge")
(setq mew-smtp-server "smtp.gmail.com")
(setq mew-fcc "%Sent")
(setq mew-imap-trash-folder "%[Gmail]/ゴミ箱")
(setq mew-nntp-server "news.eternal-september.org")
(setq mew-nntp-user "debianan")
(setq mew-nntp-header-only t)
(setq mew-use-cached-passwd t)
;(setq mew-use-master-passwd nil)
(setq mew-use-master-passwd t)
(require 'mew-w3m)
(setq mew-prog-text/html 'w3m-region)
(setq mew-prog-text/xml 'w3m-region)
(setq mew-use-text/html t)
(setq mew-mime-multipart-alternative-list '("Text/Html" "Text/Plain" ".*"))
(add-hook 'mew-message-hook 'w3m-minor-mode)
(setq mew-file-max-size 1000000000)
(define-key mew-summary-mode-map "T" 'mew-w3m-view-inline-image)
(setq mew-w3m-auto-insert-image t)
(setq mew-prog-image/*-ext "display")

 

Gnus の設定

~/gnus/.gnus.el

;; Move home directory to ~/gnus
;;; ~/gnus/.gnus.el
(setq message-directory "~/gnus/Mail"
      mail-source-directory "~/gnus/Mail"
      nnfolder-directory "~/gnus/Mail/archive"
      pop3-uidl-file "~/gnus/.pop3-uidl"
      nntp-authinfo-file "~/gnus/.authinfo"
      auth-sources '("~/gnus/.authinfo" "~/gnus/.authinfo.gpg" "~/gnus/.netrc"))
;;無条件に新しい記事を取得する
(setq gnus-activate-all-groups t)
(require 'nnir)
;; Make Gnus NOT ignore [Gmail] mailboxes
;; Gmailのメールボックス名を無視しないようにする。
;; デフォルトの正規表現だと[Gmail]という名前にマッチしてしまうので。
(setq gnus-ignored-newsgroups "^to\\.\\|^[0-9. ]+\\( \\|$\\)\\|^[\"]\"[#'()]")
(setq gnus-select-method '(nnnil))
;; Gmail (IMAP)
(add-to-list
 'gnus-secondary-select-methods
 '(nnimap "gmail"
          (nnimap-address "imap.gmail.com")
          (nnimap-server-port 993)
          (nnimap-stream ssl)
          ;; Search
          (nnir-search-engine imap)))

;; for sending mail.
(setq message-send-mail-function 'smtpmail-send-it
      send-mail-function 'smtpmail-send-it
      smtpmail-starttls-credentials '(("smtp.gmail.com" 587 nil nil))
      smtpmail-auth-credentials '(("smtp.gmail.com" 587
                   "sweeperj38@gmail.com" nil))
      smtpmail-default-smtp-server "smtp.gmail.com"
      smtpmail-smtp-server "smtp.gmail.com"
      smtpmail-smtp-service 587
      ;; Cc: and Bcc: to header of message-mode.
      message-default-mail-headers "Cc: \nBcc: \n")

;; for HTML
(setq mm-text-html-renderer 'w3m)
(setq mm-inline-text-html-with-images t)
(setq mm-inline-text-html-with-w3m-keymap nil)

; 普通のタイマーで登録する場合(Emacsの状態に関わらず定期実行)
(gnus-demon-add-handler 'gnus-demon-scan-news 120 nil)

(setq gnus-thread-sort-functions
      '(gnus-thread-sort-by-number
        gnus-thread-sort-by-subject
        (not gnus-thread-sort-by-total-score)))

 

で、USBメモリのマウントに手間取ったので・・・

/root/.bashrc

alias MU='mount_msdos  -m 0644 -M 0755 -l -U /dev/sd1e /mnt'
alias UM='umount /mnt'
としてマウント・アンマウントしている。

 

冒頭にもあるように全てpkgだけで構築している。

# pkgin search hoge

で探しまくって入れていった。必要なものは本当に網羅されていた。TeXも入れようかと思ったがやめておいた50Gしかスペースが無いのにパンパンに入れて 15G ほども使ったので。

 

VMware で NetBSDの音出し失敗という記事も検索中に見かけたが普通に鳴っている。ただ、mixer音量は120%にしたけど。

 

十分デスクトップ用途で使える。

少し時間があったので、NetBSDをVMwawreに入れた。そもそも入れるつもりは無かったが、Rp4 で遊ぶ前に色々と確認したかったということがある。

 

NetBSDは世界のデバイスを征服するという野望があるそうな。中の人が自分のサイトで堂々と宣言している。とても面白いOSなのだが、思いっきり少ない資源でも確かに動く。

 

しかし、色々と流儀があり、例えば基本的にシャットダウンはデスクトップからは出来ない。少ない資源を多人数で使っている場合、いきなり落とされたらたまらんということらしい。

 

従って、WindowManagerの起動も startx でするという流儀が成立する。他、UNIX と同様大抵のものは揃っていて、pkg 管理されて使う分にはとても楽だ。

 

が、NetBSDである。これは何か作ってなんぼのOSみたいなものだから、考え持って入れた。どっちにしても、組み込み用途とならざるを得ない。リアルタイムOSでは無いのでどう使おうかと思案投げ首。

 

ま、遊ばせてもらおう。世界のNetBSDなのだから。

 

 

FreeBSD で商用の動画コンテンツを再生するには、Linux 環境を作り、その上で DRM に対応するブラウザを使うしか現状方法がない。重いかなと思ったけどサクサクだったので驚いた。

 

自分でFreeBSD上にLinuxというのは手間だし、敷居も高い。お手軽に linux-browser-installer を使って環境構築した。でもって、ブラウザは Brave を選択。軽くて、画質も良かった。結果、

 

 

無事に、Amazon Prime VIdeo を視聴できた。他のソースでも大丈夫だろう。頭の良い人達のおかげで無事に動いた。それも最高画質で。

 

なにかあっけなかった・・・