はてなブログの表の表示の迂回
今回はただのメモ的な感じですので数行で終わります。
はてなブログの表を作るには通常||を用いて作れます。
ですがここで1つの問題が発生します。それは表の中に||を記入したい時です。
例えば私がa||bを表の中に表示したい場合
| 記号 | 説明 | 記号 | 説明 | ||||
|---|---|---|---|---|---|---|---|
| a || b | aまたはb | a | b | aまたはb |
※本来表示したい表 ※||を迂回できていない表
左の様に表示したい場合は"7c;"と記入することです。
※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のほうが使いにくいと感じるかもしれませんが、予測変換
が出てきてくれるので一概には使いにくいとは言えないです。

話がそれましたが下記が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つよりもかなり安いと思います。


また今回載せて頂いた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
ありがとうございます!
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

Railsのインストール
RubyGems
railsをインストールする前にgemパッケージを管理するツールRubyGemsのバージョンをアップデートします。RubyGemsはRubyと一緒に入っています
$ gem update --system
Bundler
Gemfileファイルを作成し、その中にgemの名前とバージョンを書くとその通りにインストールしてくれます。gemのバージョン管理に使います。
$ gem install bundler
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の初期の画面がでてくるはずです。

初心者が4日でandroidアプリ()を作った!
今回は今まで全くやってこなかったandroidアプリを作ろうと思って作ってみました。android studioの簡単な使い方を知りたかった程度なので簡単な電卓を作ることにしました。
内容はandroid studioを使ってみた感想を書こうと思います。
・環境
windows 10(1903)
kotlin(android studioに入っているので環境を用意する必要なし)
以上!
・躓いたところ
私だけかもしれませんがandroid studioで出たエラーを紹介&対策を紹介します。

・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ケーブル(???円)
以上です。
他にも2303か2307のチップが入っていればBadUSBが作れますが、チップが入ってるといわれている「Toshiba TransMemory-MX USB 3.0 16GB」はお高いし搭載されてるチップが違う場合があるのでリスキーです。
本格的なBadUSBが欲しいのであれば「Rubber Ducky」がおすすめです。
・作り方
まず初めに購入したarduino pro microが動くかチェックしましょう。
チェックは簡単で赤のライトが光ると大丈夫です


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

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

起動するとこの画面になるはずです。画面の「sketch_sep07a」とは新規ファイルを作った日がファイル名になっています。
当然ながらAruduinoにも関数があります。
setup() ・・・起動時に1度だけ実行する
loop() ・・・ループ処理を実行する
など、関数をまとめてくれているサイトがあるのでこちらをどうぞ
ですが、これでだけではまだpro microは認識してくれません。なので
「ファイル」タグの「環境設定」を開き追加のボードマネージャーのURLに
「http://www.musashinodenpa.com/arduino/ref/」を入力。
次に、「ツール」タグの「ボードマネージャー」を開き検索機能で「SparkFun AVR Boards」を入力し追加する。
SparkFun AVR BoardsはArduino IDEでサポートされていないmicro proなどをサポートしてくれます。
そうすると「ツール」タグの「ボード:」に「SparkFun Pro Micro」が選択できるはずです。


ついでに「プロセッサ:」を「(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とコマンドを変えたらmacやubuntuとかでもできます。
ですがこれでマイコンに書き込むのはおすすめできません。
pro microはリセットボタンがついてないためリセットには手間がかかります。なのでこのままマイコンに書き込むと接続した瞬間シャットダウンするのでIDEで編集できないです。せめてdelay(ms)を挟みましょう。
・感想
実はpro microを買って友達に作ってあげたのは数年前の話でその時たまたま2つ買ってたので今回やっともう一つのボードを使ってあげれました。
私はハードがめっぽう弱いのでリセットすることができないのが怖いところですねw
はじめまして!
・自己紹介
どうも、はじめましてHi_kittyです!
生まれて初めてブログを書くので見栄えがわからん辛みな今日この頃です。
私は、基本IT関係の事を初心者の観点から発信していきたいと思っています。
実際超初心者です!
以上!!!