はてなブログの表の表示の迂回

今回はただのメモ的な感じですので数行で終わります。
はてなブログの表を作るには通常||を用いて作れます。
ですがここで1つの問題が発生します。それは表の中に||を記入したい時です。
例えば私がa||bを表の中に表示したい場合

記号 説明    記号 説明    
a || b aまたはb    a b aまたはb        

※本来表示したい表      ※||を迂回できていない表
左の様に表示したい場合は"|"と記入することです。
※7を日本語入力の7にしていますので実際に使うときは英数字の7に変えてください
これはただ "|" を&#x16進数コードで表示しただけです。もし、ほかに記号を表示したいのに別のものに認識されたときは&#x16進数コードで解決できると思います。
※&#も&#に変えて使ってください。
終わり!

FOFA Proを使って見た

今回はfofa proというサービスの検索のフィルタリング一覧と実際にみんな大好きwebカメラ(主に監視カメラ)の映像が公開されているサイトを見つけだします。
これはOSINTというセキュリティの分野です。OSINTは他のセキュリティの分野とは違いほぼ合法的に行うことができます。

fofa proとは

通常のgoogleやyahooなどの検索エンジンは80番ポートや443番ポートのwebサーバーを検索するのに特化した検索エンジンでが、fofa proはほぼ全てのネットワーク機器を検索できます。
fofa proと似た検索エンジン(実際には違う)は他にもあります。
有名なサイトのURLを少しだけ張っておきます。解説はしませんが、どれも似たような部分はあります。もちろん、違う部分もあります。

https://fofa.so/
https://www.zoomeye.org/
https://www.shodan.io/
https://censys.io/ipv4
どのサイトもアカウントを作らなくても使えますが、登録しとかないと検索に制限が掛かったりします。
又、プレミアム会員的なものになることもできサイト事に値段が違います。ブラックフライデーで値段が下がったりしたりするのでそこを狙うのもありですね!

使い方

検索エンジンにはフィルターという機能が存在します。上記の4つも同様ですがサイトごとに少し違う記入方法です。
例えば

censys  ・・・location.country
shodan ・・・country

これだけ見るとcensysのほうが使いにくいと感じるかもしれませんが、予測変換
が出てきてくれるので一概には使いにくいとは言えないです。
f:id:hi_kitty:20191007214220j:plain

話がそれましたが下記がfofa proのフィルター一覧です

名称 説明
title = "" タイトルを検索
header = "" httpヘッダーから検索
body = "" html本文中から検索
domain = "" Webサイトを検索
host = "" URLからホストを名前として使用する検索
port = "" 対応するポートを検索
protocol = "" プロトコルタイプを検索
ip = "" ip検索。ネットワークセグメントを照会する場合はip = "12.34.56.78/24"
country = "" 指定された国(コード)検索します。フルネーム?で検索するとヒットしません。japan => jp
city = "" 指定された都市を検索
region = "" 特定の行政区域を検索
cert = "" 証明書(httpsまたはimapなど)を検索。例えばcert = "let's encrypt"など
banner = 〇〇 バナーを検索
type = service すべてのプロトコルを検索し、サブドメインとサービスをサポート
os = 〇〇 osを検索
server == "" サーバーを検索。例えばserver = "iis"
app = "" アプリケーションの検索
after = "" 以降
before = "" 以前
例えば after = "2019" before = "2019-10-1"は2019年1月1日から10月1日まで
asn = "" asnを検索。例えばasn = "9304"
org = "" 指定された組織(団体)を検索
is_ipv6 = true(false) ipv6の有無を検索
&& なおかつ
|| または

知っていると思いますがDmainとHostの違いはDomainは世界で一意でHostはネットワーク内に一意です。
例えば、例えばdomain = "www.com"で検索するとwww.comは当然一つしか出ないがhost = "www"で検索するといっぱい出てきます。

実際にwebカメラを見つける

今から実際にwebカメラを見つけていきますが、たまにユーザー名とパスワードを求めてくるサイトもあります。その場合は諦めてパスワードがない別のサイトを閲覧しましょう。
どれだけ推測しやすいパスワードでもログインしてしまったら不正アクセス禁止法に引っ掛かります。
つまり犯罪ですので絶対にやめましょう!
以上を踏まえて安全に見ていきましょう!

どのように検索するの?って初めは思うと思います。私もそうでしたし、今もそうです:::
最初の一手はgoogleとかで他の同じような事をしている人の記事を読むことです。
たとえば、こちらの記事がとても素晴らしいです。
qiita.com

で次に色々見ていく中で他の共通点を探していきます。
たとえばメーカーがパナソニックのBBシリーズだったら「live/mainview_hide.html」がhtmlのbodyに入っています。

この2点を踏まえていくつか検索に使えるキーワードを載せます。

title = "Network Camera"
body = "live/mainview_hide.html"
title = "webcamxp"
location = "/cgi-bin/guestimage.html"
etc...

fofa proの絞り込みを組み合わせれば限定的に検索できます。
たとえば

title = "Network Camera" && port="8080" && country = "jp"

こうすることでかなりの確率で認証がないwebカメラが見れるはずです!

おまけ

今回使ったfofa proなんですが、ちゃんとわかっていないのですが会員プランの値段が他の3つよりもかなり安いと思います。

f:id:hi_kitty:20191008102017j:plainf:id:hi_kitty:20191008102027j:plain
基本月額制がポピュラーだと思いますが、こちらは300円or1000円払えば一生使えるのかな?って思います。誰か教えてください!!

また今回載せて頂いたcensysを使った方法でやらなかったと言うと理由は2つあります。
1つ目は簡単な理由で、fofa proについて書かれている記事が少ない気がしたからです!
2つ目はcensysは全てのポートを感知できるわけではないからです。例えば

protocol = "minecraft"(違う結果が出る場合があるがport = "25565"でも可)

とfofa proで調べたら実際に25565番ポートのminecraftサーバーが感知できますが、仮に同じipアドレスをcensysで調べてもヒットはしますが25565番ポートは感知できません。
以上2点から今回はfofa proを使わせて頂きました。
(まぁ検索だけだったらshodanでもよかったんですが...)

感想

毎週何かしらブログを更新しようかなって思っていましたがさすがに先週は忙しすぎました;;;
そして4日後に記事を書きたいのですがテーマが決まっていません!
まぁ、今秋の土日に間に合うように何かしらやります。
そろそろ久しぶりに新しいプログラミングでもしたいです!
以上!!

debian9 + nginx + puma + rails

今回はdebian9でrailsの構築方法を紹介します。長くなるので一つ一つのコマンドなどの説明はそこまでしません。又、ssl化(Let's encrypt)などは今回は紹介しませんので他のサイトを参考ししてください。

ちなみに私はGCP(Google Cloud Platform)のCompute Engineを使っています。

 

今回参考にさせて頂いたサイト:
www.mk-mode.com

kitsune.blog

www.amazon.co.jp

ありがとうございます!

 

Ruby

git

 初めにgitを入れないと何もできないのでgitを入れます。

$ apt-get -y update
$ apt-get -y upgrade
$ apt-get install git
rbenv

Rubyをインストールする時にrbenvを使うのが最も一般的です。rbenvはRubyを管理が簡単になったり、複数のバージョンを管理できます。

$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(rbenv init -)"' >> ~/.bashrc

#ここで一回再起動してrbenvが入っているか確認しましょう
$ reboot
$ rbenv -v

#次にrbenvにRubyを簡単にインストールするプラグインを入れます。
$ git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build

#Rubyのインストールに必要なパッケージを入れます。
$ apt-get install autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev

これでRubyを入れる準備ができました

#今回はバージョンは2.6.4にします。別のバージョンにする場合は2.6.4の部分を変えましょう
$ rbenv install 2.6.4
$ ruby -v

#このままだとシステム全体で使えないのでrbenvで設定しましょう。
#上のコマンドのバージョンを変更した場合はglobalの後のバージョンも変更しましょう
$ rbenv global 2.5.1

f:id:hi_kitty:20190923152526j:plain


Railsのインストール

RubyGems

railsをインストールする前にgemパッケージを管理するツールRubyGemsのバージョンをアップデートします。RubyGemsRubyと一緒に入っています

$ gem update --system
Bundler

Gemfileファイルを作成し、その中にgemの名前とバージョンを書くとその通りにインストールしてくれます。gemのバージョン管理に使います。

$ gem install bundler
Railsをインストール

今までに比べてインストール自体は簡単ですが、必要なjsやdbは後から入れます。

$ gem install rails -v 5.2.1
$ rails -v
Node.js

Node.jsを入れないと”rails new アプリ名” を実行したときにjsのランタンがないよってエラーがでます。

$ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
$ apt-get -y install nodejs
PostgreSQL

Railsは本来SQLite3を使いますが今回はPostgreSQLを使います。そこまで意味はありません。

$ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
$ apt-get -y install nodejs
$ sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" >/etc/apt/sources.list.d/pgdg.list'
$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
$ apt-get update
$ apt-get install postgresql

次にPostgreSQLを起動しRailsのためのユーザーを作ります。もともとPostgreSQLのデータベースにあるユーザーの権限ではRailsに適していないです。

$ service postgresql start
$ postgres -c 'createuser -s ユーザー名'

#クリエイトユーザーで登録したユーザー名で入れるか確認
$ psql postgres

#RailsでPostgreSQLで扱うためのgemを入れます。
$ apt-get -y install libpq-dev
Railsを起動

ここでやっとRailsを起動できます。
ですが/home/ユーザーのフォルダ内にRailsのアプリを作り公開するのはあまりよろしくないのでここでは参考させて頂いたサイトに従い/opt内につくります。

$ cd /opt/
$ rails new アプリ名 -d postgresql

#<span style="color: #d32f2f">以降home_appをアプリ名にします</span>
$ cd home_app

#PostgreSQLを起動した状態にしましょう
$ rails db:create 

#Railsを起動しデフォルトのポートは3000なのでhttp://IPアドレス:3000 or localhost:3000
$ rails s

Puma

Pumaとはwebサーバーで使うソフトウェアです。これはrailsに元々入っているものです。
ちなみにPumaはwebサーバーのソフトウェアですが、Railsアプリケーションサーバーのソフトウェアです。
buildはサーバーとどのように接続するかをURIで指定する時に使います。
これはNginxと通信する時などに使われることが多いです。たぶん…
使ったことはないですがapacheはPassengerを使います。

bind "unix://#{Rails.root}/tmp/sockets/puma.sock"

#pumaをデーモンにする
daemonize true

Nginx

NginxとはNginxです!有名なので説明しません!!

#キーを追加
$ wget http://nginx.org/keys/nginx_signing.key
$ apt-key add nginx_signing.key

#リポジトリ追加
vi /etc/apt/sources.list.d/nginx.list
  deb http://nginx.org/packages/debian/ stretch nginx
     deb-src http://nginx.org/packages/debian/ stretch nginx

#インストール
$ apt-get -y install nginx

#Nginxが起動するか確認
$ systemctl start nginx
#サイトにアクセスしましょう。今回はNginxの確認なので3000ポートに接続しません。

最後にNginxの設定をします。

ここでは書きませんがNginxのバージョンを隠すのは基本中の基本なので隠しましょう。

#ファイル名は適当もしくはdefault.cnfに書きます。
$ vi /etc/nginx/conf.d/home_app.conf

#home_appは私のアプリケーション名です。自分のアプリケーションの名前に書き変えましょう
upstream home_app {
        # UNIXドメインソケット通信の設定
        server unix:///opt/home_app/tmp/sockets/puma.sock
        fail_timeout=0;
    }

    server {
        listen 80;

        # host名を指定
        server_name サーバー名;

       root /opt/home_app/public;

        try_files $uri/index.html $uri @home_app;

        # 上記の@home_appが呼び出された場合のみ以下の設定を読み込む
        location @home_app {
            proxy_pass http://home_app;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_redirect off;
        }
    }

#最後にNginxを起動しもう一度Railsを起動しましょう
$ systemctl start nginx
$ systemctl enable nginx
$ cd /opt/home_app
$ bin/rails s

これでサイトにアクセスしたらRailsの初期の画面がでてくるはずです。
f:id:hi_kitty:20190924001417p:plain


感想

今回はRailsの環境構築だけでしたがいつかRailsのすばらしさに触れていきたいと思います。
私もまだRailsの輝きの片鱗しか触れていないので紹介できるレベルまでなりたいです!

初心者が4日でandroidアプリ()を作った!

今回は今まで全くやってこなかったandroidアプリを作ろうと思って作ってみました。android studioの簡単な使い方を知りたかった程度なので簡単な電卓を作ることにしました。

内容はandroid studioを使ってみた感想を書こうと思います。

・環境

windows 10(1903)

android studio 3.5

Pleiades(日本語化プラグイン)

kotlin(android studioに入っているので環境を用意する必要なし)

以上!

 

・躓いたところ

私だけかもしれませんがandroid studioで出たエラーを紹介&対策を紹介します。

f:id:hi_kitty:20190917104540j:plain

エラー画面
・New Gradle Sync is not supported due to containing Kotlin modules

翻訳すると

”Kotlinモジュールが含まれているため、新しいGradle Syncはサポートされていません”

これはプロジェクト作成時に出るエラーで今のGradleプラグインバージョンがkotlinに対応していない時にでます。なのでタブの「ファイル」→「プロジェクト構造」→「プロジェクト」→「Android Gradleプラグインバージョン」をバージョンダウンしましょう。私は3.4.2でエラーが出なくなりました。

 

・どうやって0から4日で作ったのか

私はandroid studioを使った事もkotlinを触った経験もなかったので最初は苦戦するかなっと思ってましたが幸いjavaは触った事があったので何とかなりました。

私は学生でアルバイトもしているので作業時間はお昼休みの1時間と家に帰ってからの1時間程度なのでかなり辛かったですw

・1日目

androidアプリ(電卓)を作ろうと決意した日。プロジェクトを作成するとさっきのエラーとよくわからないプロジェクト構成が出たのでとりあえずエラーを解決しandroid studioの構成を理解するためにggた。

・2日目

見た目を作る。ドロップ&ドラックでできるんですがレイアウトがうまく設置できなくて苦戦。未だにGridLayoutの使い方が微妙。途中ハードコーディングいくないと思いレイアウトを作り直した、特にボタン。

・3日目

kotlinの使い方を調べるところからスタート。でも電卓アプリ程度なのでまだkotlinの真の輝きに触れ切っていないのが残念。ちなみにアルゴリズム逆ポーランド基本情報技術者試験でもやってた気がする...

・4日目

最終チェック。3日目もバグのチェックはしたがもう一度チェック。いざGoogle Playに投稿しようと思ったが思った以上にお金が掛かるので断念!最初に調べておくべきでした...orz まぁオリジナリティがないので公開しなくてもいいですね!

 

・感想

実は週1でブログを投稿しようと思っていたので今回は結構無理やりに投稿しました。

と言うのも私個人のブログのイメージは”誰かの役に立つためにある”と思っているので、今回自分の成長経過だけを書くだけの記事は辛いですね…

まぁエラーの所が誰かの役に立つと願って一応公開します!

おわり!

 

 

簡単にBadUSBを作ろう!

今回は簡単なbad usbを作った話をします。

作るに至った経緯は友人がyoutuber()をしてまして、何かハッキングぽい物が欲しいといわれたので作りました。

・BadUSBとは?

 BadUSBとはUSB接続で利用するデバイス(usbメモリなど)にあらかじめ悪意のあるコードを書き込みUSB接続時にコードを走らせ何らかの悪質な動作をさせる手法です。

これはソーシャルエンジニアリングの分類に入ると思います。つまり心理的攻撃なので注意をしていれば防げます。

ここで一番注意すべきは名前です。「BadUSB」と名前なのでusbメモリをイメージしがちですがBadUSBのUSBはUSB接続の事であってusbメモリの事ではありません。実際に友人に送った物も見た目はUSB接続の小型扇風機でした。

 

・必要な物

私の懐が寂しすぎるので安価な物を使います。

arduino pro micro (1000円前後)

microUSBケーブル(???円)

Arduino IDE

以上です。

他にも2303か2307のチップが入っていればBadUSBが作れますが、チップが入ってるといわれている「Toshiba TransMemory-MX USB 3.0 16GB」はお高いし搭載されてるチップが違う場合があるのでリスキーです。

本格的なBadUSBが欲しいのであれば「Rubber Ducky」がおすすめです。

 

・作り方

まず初めに購入したarduino pro microが動くかチェックしましょう。

チェックは簡単で赤のライトが光ると大丈夫です

f:id:hi_kitty:20190908142913j:plain
f:id:hi_kitty:20190908143554j:plain

 

あとwindowsのデバイスマネージャーで確認しましょう。

※windows10でpro microはサポートされていますがwindows7はサポートされていませんのでドライバをインストールしましょう。

f:id:hi_kitty:20190908144340j:plain

※COM〇は覚えておいてください

次にAruduino ideを起動しましょう。バージョンは最新バージョンで大丈夫です。

f:id:hi_kitty:20190908150449j:plain

起動するとこの画面になるはずです。画面の「sketch_sep07a」とは新規ファイルを作った日がファイル名になっています。

当然ながらAruduinoにも関数があります。

setup()  ・・・起動時に1度だけ実行する

loop()    ・・・ループ処理を実行する

など、関数をまとめてくれているサイトがあるのでこちらをどうぞ

Arduino 日本語リファレンス

 

ですが、これでだけではまだpro microは認識してくれません。なので

「ファイル」タグの「環境設定」を開き追加のボードマネージャーのURLに

http://www.musashinodenpa.com/arduino/ref/」を入力。

次に、「ツール」タグの「ボードマネージャー」を開き検索機能で「SparkFun AVR Boards」を入力し追加する。

SparkFun AVR BoardsはArduino IDEでサポートされていないmicro proなどをサポートしてくれます。

そうすると「ツール」タグの「ボード:」に「SparkFun Pro Micro」が選択できるはずです。

f:id:hi_kitty:20190908153408j:plain
f:id:hi_kitty:20190908153500j:plain

 

ついでに「プロセッサ:」を「(5V,16MHz)」と「シリアルボード:」をさっきデバイスマネージャーで確認した「COM〇」(ex COM6)を選択しましょう。

以上で設定完了です

あとはプログラムを書いてマイコンに書き込んだら使えるようになります。

 

・おまけ

pro microはPC上ではキーボードとマウスという認識になっています。

例えばwindowsに繋げたら勝手にシャットダウンするなら

#include "Keyboard.h"
void setup() {
// put your setup code here, to run once:
Keyboard.press(KEY_LEFT_GUI);
Keyboard.press('r');
Keyboard.releaseAll();
Keyboard.print("cmd")
Keyboard.press(KEY_RETURN);
Keyboard.releaseAll();
Keyboard.print("shotdown -s -t 10");
Keyboard.press(KEY_RETURN);
}

です。見ればわかると思いますがcmdを開いてシャットダウンコマンドをおくっているだけです。

もちろんKEYとコマンドを変えたらmacubuntuとかでもできます。

ですがこれでマイコンに書き込むのはおすすめできません。

pro microはリセットボタンがついてないためリセットには手間がかかります。なのでこのままマイコンに書き込むと接続した瞬間シャットダウンするのでIDEで編集できないです。せめてdelay(ms)を挟みましょう。


・感想

実はpro microを買って友達に作ってあげたのは数年前の話でその時たまたま2つ買ってたので今回やっともう一つのボードを使ってあげれました。

私はハードがめっぽう弱いのでリセットすることができないのが怖いところですねw

 

はじめまして!

自己紹介

どうも、はじめましてHi_kittyです!

生まれて初めてブログを書くので見栄えがわからん辛みな今日この頃です。

私は、基本IT関係の事を初心者の観点から発信していきたいと思っています。

実際超初心者です!

以上!!!