DreamerDreamのブログ

夢想家の夢です。〜揚げたてのモヤっとしたものをラフレシアと共に〜

3Dスキャナーを自作する ②回路を作る

前回は3Dスキャナソフト「FreeLSS」をラズパイにインストールしてブラウザで挙動を確かめました。 

dreamerdream.hateblo.jp

 

 

今回はFreeLSSの回路を構成します。

FreeLSS: The Free 3D Printable Laser Scanning System For the Raspberry Pi

 

公開されている回路は以下の通り

モータードライバとトランジスタアレイ、その他レーザーの出力調整や回路保護用コンデンサからなる簡単な回路です。

 

 

https://s3.amazonaws.com/freelss/bb.png

ラズパイ側のGPIO回路は

18、22、27がステッピングモータ制御用

17、23がレーザー制御用

以上です。

 

 

もし、「ステッピグモーターとは何ぞや?」とおもわれましたら、コチラの記事を参考にしてみてください。↓

dreamerdream.hateblo.jp

 

 

 

さて、ラズパイではGPIO番号で読みますが、freelssはWiringpiというパッケージを利用しているのでfreelssの設定時にはWiringpiの番号が必用です。

GPIOの番号とWiringpiとのピン番号が異なることに注意です!

freelssが起動しているということは依存パッケージのWiringpiもインストールされているので、コマンド

gpio readall

を実行することで確認できます。

f:id:DreamerDream:20181207110805p:plain

ステッピングモーター制御

GPIO18:WiringPi1

GPIO22:WiringPi3

GPIO27:WiringPi2

レーザー制御用

GPIO17:WiringPi0

GPIO23:WiringPi4

です。

 

これに合わせてブラウザからfreelssのピンを設定しましょう。

ピンの設定はSettingsメニューのSetup項目です。

f:id:DreamerDream:20181207111136p:plain

f:id:DreamerDream:20181207111143p:plain

f:id:DreamerDream:20181207111156p:plain

f:id:DreamerDream:20181207111205p:plain

LightingPinは解りませんが、被らないようにセットしましょう。

多分ですが照明の制御が出来るのでしょう。

 

ブレッドボードにテスト回路を組んで実験(スキャン実行)したのがこちらです。


freelss回路動作確認

レーザー照射(LED)とモーター回転が確認できます。

やはりギアードモーターだと1/16ステップモード(1920ステップで1回転)でも精度が悪い気がします・・・
 

とりあえずソフトも無事に動くことは解ったのでユニバーサル基盤に回路を組んで実験しました。(「部品選択がテキトーすぎるだろ!」というツッコミが聞こえてきそうです。はい、手元にあったものでテキトーに組んでます。ICソケットなんて割ってぶち込んでますw 真面目な方は公開データ通りに組んでくださいね。)

f:id:DreamerDream:20181210101354p:plain

モーターとモータードライバーだけはコネクターで簡単に変更出来る仕様にしました。その他は基盤に直付けです。

レーザーモジュールは車用の激安ラインレーザーテールライト、これならマウンターが最初から付いているので取り付けが楽ですし12V直付け仕様なので抵抗も要らないでしょう(たぶん)。

レーザーの制御も手元にあったトランジスタC1815を使ってダートリン接続しています。<参考>ダーリントントランジスタ

一応、ソフトで照明の制御も出来るようなので、レーザー2と照明用に3セット回路を組みました。

本当はFreeLSSの回路図ではULN2003Aというトランジスタアレイが使われています。このようなもの↓

 

モータードライバはお買い得なA4988互換品

 

 

電源としているのは昔分解した古いCD-RWドライブ

f:id:DreamerDream:20181210101451p:plain
中身はUSB=IDE内蔵ドライブのを変換しているだけなので、丁度12Vと5VのIDE電源端子があるので今回の用途にはピッタリ!中にラズパイとか収まりそうだし。

ドライブの消費電力は平均13W最大22Wと書いてありました。ラズパイ2なら消費電力4.5Wで、あとはまあ計算してませんがなんとなく余裕でしょう。

ということで実際にこんな感じで動作しました。フルステップモード(3°)なので回転角はメチャ荒い!


FreeLSS回路テスト

テストで得られたSTLファイルはこんなもの。ぐちゃー

f:id:DreamerDream:20181210102107p:plain

まあ適当にカメラの画像を拾って処理しただけなので当然ですね。

ちゃんとモーターとレーザーとカメラが動いてSTLファイルデータで取得できることが解ったので回路はひとまずこれでOKです。

次は、組み立てます。工作は実はこの筐体を作るというのが一番の手間だったりします。

dreamerdream.hateblo.jp

 

3Dスキャナーを自作する ①ソフトウェアのインストール

 以前に3Dスキャナーって自作できるらしいという記事を書きました。

dreamerdream.hateblo.jp

 

今回、実際にソフトをインストールしてみました。

 

その前に、ラズパイ用のラズパイカメラは必用不可欠ですので予め準備しておきましょう。

 

ソフトのインストール方法は簡単です。

こちらのFreeLSSというプロジェクトから

FreeLSS: The Free 3D Printable Laser Scanning System For the Raspberry Pi

Githubに飛び、Readmeファイルの内容をそのまま実行するだけです。

 

まずは、お決まりのRaspbianを最新状態にします。

sudo apt-get update
sudo apt-get upgrade

 

次に依存関係のあるパッケージをインストールします。

sudo apt-get install libpng-dev libjpeg-dev git-core gcc build-essential unzip sqlite3 libsqlite3-dev libmicrohttpd-dev libcurl4-openssl-dev libiw-dev libssl-dev wiringpi

 

FreeLSSをダウンロードします

sudo git clone https://github.com/hairu/freelss

 ダウンロードしたディレクトリに移動します

cd freelss/src

 

ビルドします

sudo make

 

以上でインストールは完了です。

 

実行します。

sudo ./freelss

 

これで80番ポートが開いてWebサービスとして起動します。

ブラウザでラズパイのアドレスへアクセス、もしくはラズパイ自身のブラウザから「localhost」アドレスを開いてみましょう。

f:id:DreamerDream:20181206105000p:plain

なんともシンプルなフォームです。これで起動成功です!

 

カメラを起動させるとラズパイカメラの映像が映ります。

f:id:DreamerDream:20181206105034p:plain

 

さて、ここから注意点です!

ラズパイを起動するたびに自動的にFreeLSSを開始するには下記コマンドを実行します。

sudo make startup

 

と、書かれていますが、↑これをやると、設定でエラーが出てしまって任意のGPIOポートやステップ角の設定が出来ない事態に陥ることが判明!

実は、freelssのデフォルトで設定されているGPIOと回路図に記載されているGPIOポートが違うのでポートが設定出来ないとなると致命的なのです。

ERROR

Error opening properties file for writing:

 

 

コミュニティでも問題ありということで、その理由と解決策が挙がっています。

FreeLSS:Error saving settings (and wrong pin defaults?) (Page 1) — ATLAS 3D & FreeLSS — SoliForum - 3D Printing Community

 

どういうことかというと、piユーザーで実行した場合、/home/pi/に任意のpropertiesファイルを作られるんだけど、自動起動のサービスはrootから実行されるので/home/root/にpropertiesファイルが見つからないから無理だよー!

ということだそうです。

試しに/home/rootディレクトリを作ってfreelssを入れてみたんだけどそういう問題じゃないらしい。

公式のReadmeには「FreeLSSはroot(またはハードウェアのピンにアクセスできる別のユーザ)として実行する必要があります。」

と書かれているのでsudo権限のあるユーザーで実行すれば問題ないと思ったんですけどね。

 

さて、解決策としてはコミュニティに書かれている通りなんですけど、

既にmake startupをしちゃった場合には

sudo update-rc.d freelss remove

を実行して自動起動を取消ます。

piのホームディレクトリ、/home/pi に

cd /home/pi

sudo nano freelss.sh

としてfreelss.shというスクリプトを作ります。

freelss.shの中は

#!/bin/bash
sudo freelss

と、sudo freelssを実行するというコマンドを書きます。

 

そのまま

sudo bash freelss.sh

としてfreelssが立ち上がればスクリプトはOKです。

 

次に、起動時にこのスクリプトを読み出すようにします。

/home/pi/.config/autostart ディレクトリにfreelss.desktopファイルを生成します。

 

通常、.から始まる隠しファイルを見るにはls に-aオプションを付けてみましょう。

sudo ls -a /home/pi/

.configディレクトリはデフォルトで存在していると思います。

もし、存在していなければ以下の方法が実行できるかどうかは解りません。

sudo ls /home/pi/.config/

で既にautostartディレクトリがあるか確認します。なければmkdirコマンドで作りましょう。

sudo mkdir /home/pi/.config/autostart

freelss.desktopファイルを作ります。

sudo nano /home/pi/.config/autostart/freelss.desktop

 

freelss.desktopの中には

[Desktop Entry]
Type=Application
Exec=bash /home/pi/freelss.sh
Terminal=false
Notify=false

と書き、保存します。

 

再起動してブラウザで確認しましょう。

「SEttings」メニューの中から「setup」を選択して

f:id:DreamerDream:20181207105802p:plain

Unit of lengthで単位をInchesからMillimetersに変更してSaveしてみましょう。

エラー無く正常に保存されれば成功です。

f:id:DreamerDream:20181207105906p:plain

 

無事にソフトウェアがインストール出来たのであとはポートの設定と回路の作成をしてカメラとレーザーを固定すれば使えます。 (先が長い・・・)

 続↓

dreamerdream.hateblo.jp

 

RapberryPiでステッピングモーターを制御する ④制御

今回は実際にラズパイから制御してみます。

前回はGPIOとドライバーとの接続でした。

dreamerdream.hateblo.jp

 

f:id:DreamerDream:20181205154059p:plain

 

適当なpythonコードを書いて制御してみます。

#!/usr/bin/python
#coding:utf-8

import RPi.GPIO as GPIO
import atexit
import time

Dir = 27 #DIRピン設定
Step = 17 #STEPピン設定

def end():  #終了時に呼ぶ
  GPIO.cleanup()  #GPIOの開放

def init():  #GPIO初期化
  GPIO.setmode( GPIO.BCM )  #BCMモード
  GPIO.setup( Dir , GPIO.OUT )  #Dirピンを出力モードへ
  GPIO.setup( Step , GPIO.OUT )  #Stepピンを出力モードへ
  atexit.register( end )  #強制終了時にもGPIO開放するよう設定


def act( dir = 0 , step = 1 , sec = 1): #dir:回転方向、step:ステップ数、sec:秒

  GPIO.output( Dir , dir )  #正逆転セット

  step = step *2  #STEP信号はHiごとに1stepなので2倍にしておく
  sleep = float( sec ) / float( step ) #step間の待ち時間を算出
  for i in range( step ):  #step数繰り返し
    GPIO.output( Step, 1 - GPIO.input( Step ) )  #反転出力
    print GPIO.input( Step ), GPIO.input( Dir )  #動作確認用
    time.sleep( sleep )  #step間の待ち時間


def fwd( step , sec ):  #正転
  act( 0 , step, sec ) #dirだけ決めてact()に投げる

 

def rvs( step , sec ):  #逆転
  act( 1 , step, sec )  #dirだけ決めてact()に投げる

 

def test():  #動作テスト
  for i in range( 3 ):

    for j in range( 10 ):
      fwd( 10 * ( j+1 ) , 1 )
      print j
    for j in range( 10 )[::-1]:
      fwd( 10 * ( j+1 ) , 1 )
      print j

    for j in range( 10 ):
      rvs( 10 * ( j+1 ) , 1 )
      print j
    for j in range( 10 )[::-1]:
      rvs( 10 * ( j+1 ) , 1 )
      print j

 

if __name__=='__main__':
  init()  #初期化
  test()  #動作テスト

 

これを実行すると、画面にSTEPに出力されている信号が01でズラーっと出て来ます。

そして、モーター側はこうなります。


ステッピングモーター動作テスト

当然回ります。はい、モーターですのでね。

このギアードモーターの最短パルスは400/s程度でした。それを超えると脱調という現象が起きて正確な制御が出来なくなります。


ステッピングモーターテスト3(脱調)

 

HDDから取り外したモーターも回してみました。

これは4線全てが内部で繋がっているステッピングモーターで機構が違うのでとりあえず2線だけで繋いでいます。

実際どうやって正常に動かすのかよくわかりませんが、とりあえず動くように繋いでみました。

ばりばり脱調していますが、周波数がピッタリ合うと水を得た魚のように元気に回転します。


HDDモーターテスト1

 

実験の結果、だいたい200/s程度のパルスで安定して回るようです。


HDDモーターテスト2

このように、ステッピングモーターによって特性が全く違うので動かしたいモーターの特性はデータシートが無ければ実験して把握するしかありません。

 

回るだけじゃ面白く無い!

ということで、古いエプソンのスキャナから取り外したステッピングモータ制御の直動機構も動かしてみました。

f:id:DreamerDream:20181205164511p:plain

減速ギアの組まれたこんな立派なモーターです。

 


ステッピングモーターテスト2

固定は面倒なのでテープ固定(笑)すっごい雑だけどちゃんと動いています。これも安定して動くパルス調があります。

この機構をXY軸で組めば単純なプロッタマシンですね。

 

いろいろなモーターの実験をしましたが、実際にモーターを高回転で安定して制御する場合に脱調を起こさないためにはArduinoなどのバックでOSやら何やら動かない単純なマイコン制御の方がコスパが良いでしょう。

ラズパイでPyhtonからだとどうしても正確なタイミングでのGPIO制御には限界があります。

 

このように、モータードライバーを使えば結構単純な回路でステッピングモーターの制御が可能になります。

工作の幅が広がりますのでLチカに飽きたら是非試してみてください。

 

 

作例として ↓この自作3Dスキャナでもステッピングモーターとドライバーを使っています。

dreamerdream.hateblo.jp

dreamerdream.hateblo.jp

 

RapberryPiでステッピングモーターを制御する ③接続

 前回は部品選択でした。

dreamerdream.hateblo.jp

 

今回は部品の繋ぎ方です。

 

まずは、ラズパイから制御できるようGPIOのポートをチェックしましょう。 

ステッピングモータードライバーを制御するには、最低DIRとSTEPとGNDが必用になります。

今回はピン番号9,11,13のGND、GPIO17,GPIO27を利用することにします。

https://www.bigmessowires.com/wp-content/uploads/2018/05/Raspberry-GPIO.jpg

 

 モータードライバーのピンアサインは最近ではこの配置に定着しつつあるようです。

http://image.itmedia.co.jp/mn/articles/1609/09/hi_mo03.jpg

A4988データシート

 

VMOT:ステッピングモータ用電源(8V-35V)
GND:ステッピングモータ用電源GND
2A/2B:1A/1B:ステッピングモータ接続端子
VDD:制御ボード用電源(3.3Vまたは5V)
GND:制御ボード用電源GND
DIR:モータの回転方向(High・Low)
STEP:回転制御パルス(1.8度/1stepのモーターでFull stepに設定したとき200stepで一回転する)
SLEEPーRESET:短絡しておく
MS1~MS3:マイクロステップ設定用端子

(各PinのHigh・Lowでマイクロステップを設定できる)

MS1 MS2 MS3 Microstep
Lo Lo Lo Full (1/1)
Hi Lo Lo Half (1/2)
Lo Hi Lo Quarter (1/4)
Hi Hi Lo Eighth (1/8)
Hi Hi Hi Sixteenth (1/16)

 

つまり1ステップごとに制御出来る回転角がモードによって違い、1.8度角のステッピングモーターの場合、

・Fullの場合は、1step信号ごとに1.8度単位(360度回転に200step)

・Halfでは、1step信号ごとに0.9度単位(360度回転に400step)

・Quarterでは、1step信号ごとに0.45度単位(360度回転に800step)

・Eighthでは、1step信号ごとに0.225度単位(360度回転に1600step)

・Sixteenthでは、1step信号ごとに0.1125度単位(360度回転に3200step)

となる。
ENA:Enable端子。ドライバの動作と停止を制御できる。Loで動作する。

 

必用に応じて使用する端子を選ぶのだけど、基本的に細かい設定は最初からプルアッププルダウンしてあるみたいなので

VMOT/GND:モーター用電源12V

VDD/GND:制御回路用電源5V

DIR:正転/逆転

STEP:ステップ信号

1A/1B:ステッピングモータ1相コイル

2A/2B:ステッピングモータ2相コイル

を繋げばFullStepモードとして動作する。

ということです。

 

実際に実験で接続した写真です

黒線:GNDー共用

灰色:GPIO17ーSTEP

白色:GPIO27ーDIR

青線:5Vですが、今回は別電源から取ったので繋いでいません

f:id:DreamerDream:20181205154059p:plain

モータードライバーの

緑、赤、黄、白は実際にモーターのコイルへ伸びている線

ピンクはモーター用電源+12V電源

赤色は5V電源

GNDは共用(12V、5V、ラズパイ共に)

あと、RESETとSLEEPを直結しています。

 

もし、この状態でなにもしていないのにモーターがガリガリ音を立てて回転するようならSTEPからノイズ信号が入っています。

これは、ポートがHiでもLoでもないどっちつかずのフラフラした状態で自然界の電磁ノイズ(商用周波数とか)を拾っているためです。GPIO制御時には必ずHiまたはLoになるので安定しますが、気になる場合はSTEPに10kΩ程度の抵抗を入れてGNDに繋ぐ事で回避できます(プルダウン)

 

次回はこの回路でモーターを動かします。

dreamerdream.hateblo.jp

 

RapberryPiでステッピングモーターを制御する ②部品選択

前回、ステッピングモーターの制御にはユニポーラ制御とバイポーラ制御がありますという説明をしました。 

dreamerdream.hateblo.jp

 

ユニポーラの方が構成回路は簡単になりますが専用のドライバは少ないのでマイコンを用いて自前で組むことになるでしょう。

マイコンからモーターやリレーといった大電流の流れる可能性のあるコイルを使った部品の制御というのは実は厄介なもので、単純にFETを繋げば良いというものではありません。

起電流誘導電流ノイズという問題に対処しないといけませんし、適切な電流を流さないと発熱による部品の損傷も起こり得ます。

 

ましてやバイポーラ制御を目的に電流の方向が変わるフルブリッジ回路をマイコンで制御するには切り換えのタイミングやプログラムや配線のミスでユニポーラ制御よりショートさせやすくなります。

停止時にコイルに流す電流も考慮しなければなりません。無駄無く正確に制御する為には「チョッピング電流」というPWM波を発生させて流しっぱなしにならないようにしないと低速時のモーターの発熱が凄いことになります。その他の熱や過負荷の保護機構も考えないといけません。

僕は実際にパイポーラ駆動用の回路をマイコンで組んだ事がありますがなかなかな苦労をした末に結局ノイズの問題に対応出来ず失敗しました。

 

しかし、現在そんな苦労をせずとも簡単にステッピングモータ制御するための専用の基盤が200円弱で手に入るのです。

代表的なステッピングモータードライバー「A4988」

www.switch-science.com

マイクロステップという細かい角度制御が可能、電流調整のボリューム付き、回転速度に応じたチョッピング制御、各種保護回路内蔵。

本物は1つ1000円を超えますが、これの模造品が格安で出ています。信じられないことに5個入りで1000円以下です。

 

 

これでも充分に機能します。

但し、こういった激安品は検査が甘く(無く?)たま〜に短絡している物があるらしいのでちゃんとチェックしてから使うようにしましょう!

※最初は正常に動作してるのに使っていると異常発熱や動作を起こす物もあるのでしばらくは様子を見る期間も必用です(経験あり)。

もしこの時点で「部品のチェック方法なんか解らん!無理無理!」という方はお値段は張っても正規のA4988チップを購入してください。ラズパイを燃やすより断然安いです。

商品ページから説明文を抜粋、本家A4988のデータシートも参考に日本語が変なところを含め解説します。

A4988特徴:
1.8V未満~35V2Aのステッピングモータを動かすのに適当である。
2.非常に簡単なステップ方向コントロールインタフェース。
3.5つの、種々の、段をつけているモード:全部、半分、1/4、1/8、および1/16。
4.調整可能な電位差計は最大の現在のアウトプットを調整できる よりよいステップレートを得ることができる。
5.自動的な現在の腐敗モード検出選択。
6.高い熱は結果として生じる 回路切断、不足電圧ロックアウト、クロスオーバー電流保護。
7.ショート保護とロードショート保護を接地しなさい。

 

①8V〜35V、2Aまでの幅広いステッピングモーターに対応しています。

②基本的に「STEP」(回転ステップ数)と「DIR」(回転方向)という端子に信号を与えるだけで機能します。

③「マイクロステップ」と呼ばれる機能で、5段階あります。1.8度角のステッピングモーターであれば最大1.8/16=0.1125度という細かいステップ角で制御が可能になります。

④本体に付いているボリュームで最大電力をコントロールすることが可能になります。

⑤チョッピング制御方法を自動で選択します。

⑥過熱時切断回路、低電圧ロッック回路、過電流保護回路があります。

⑦接地故障検出回路、ショート時保護回路があります。

 

う〜ん、これだけの機能のものをこのサイズで作るのは素人工作では無理!200円以下なんてとんでもないことです!

やはりモータードライバーは機能面からも激安なので買うべきです。

<参考>

dreamerdream.hateblo.jp

 

 

ステッピングモーターは用途に応じた物を選びましょう。

上で上げたモータードライバーを使うにはバイポーラ制御用を選びましょう(ユニポーラ制御用でも場合によっては使えます)

 

モーター本体は、基本的に1.8度のモノが多いです。

3Dプリンターでつかわれているのもこのタイプのもので、トルク等の特性もあり値段も様々です。

 

 

 

 

小型のステッピングモーターもあります。但し力は弱いです。

力を必用としない用途、車のタコメーターにも使われているタイプです。

 

 

小型のステッピングモーターの力を補う為にギアを内蔵した「ギヤードモータ」と呼ばれる種類のものもあります。

結構力は強く、水洗の電磁弁として使われていることもあります。

 

 

 

 次回は部品の接続です。

dreamerdream.hateblo.jp

 

 

RapberryPiでステッピングモーターを制御する ①原理

ここ最近、ブログがソフトウェア的な内容ばかりで飽きてきたので今回は気分を変えてハードウェアのお話です。

 

ステッピングモーター」はご存知でしょうか?

「知らないよ」という方はまず使用例をご覧ください↓

dreamerdream.hateblo.jp

 

ここ近年3Dプリンターブームもあって自作や廉価商品用にステッピングモーターとその制御用モータードライバーが安く量産されているようです。

ステッピングモーターと混同されがちなのがサーボモーターですが、サーボモーターは回転角をモーター内部でフィードバックされて正確な角度制御するのに対し、ステッピングモーターはフィードバック機構が無いので動作は投げっぱなしです。その分コストを抑えられるという大きなメリットがあります。

ステッピングモーターの種類は大きく分けて2種類あります。

 

まず、理解しやすい1つめのステッピングモーターの基本的な原理です。 


基本的な構造と動作原理_ステッピングモーターの基礎

このような制御方法を「ユニポーラ制御」といい、ごく単純な回路で動作させることができます。このようなステッピングモーターを「バイファイラ巻きのモーター」と呼び、一般的にステッピングモーターから5本や6本の線が出ているタイプになります。

5本のタイプはGNDが1つ共有で使われており、他4本に+直流電流を流すことでムービーのように制御が出来ます。

<↑小型ユニポーラ制御用モーター>

順番に直流電流を流すだけなのでFETとい部品で順番に制御してあげれば制御可能です。

 <↑FET>

 

2つめのモーター。

前述の基本構造を踏まえ、次の動画をご覧ください。


ST ステッピング・モータの基本 (ePresentation - asian language)

こちらは、4つではなく2つの電磁石で制御していますね。

電磁石の極性が変わる、このような制御を「バイポーラ制御」と呼び、モーターは「モノファイラ巻きのモーター」と呼ばれており、一般的にステッピングモーターから4本の線が出ているタイプの物が多いです。

本来の制御は+-が入れ替わる「フルブリッジ回路」と呼ばれる回路を2つ構成する必用があるのでユニポーラ制御より遥かに難しいのですが、そんな制御回路を考えて組まずとも安価な「モータードライバー」が多数出ています(1つ200円以下)ので3Dプリンターで普及しているものはこちらになります。

<↑バイポーラ制御用モーター>

<↑モータードライバー> 

 

参考

ユニポーラ駆動とバイポーラ駆動

 

モーターの内部構造は精密ですが単純ですので6線式のバイファイラ巻きのモーターから出ているGND線を使わずにモノファイラ巻きのモーターとして使用することも可能です。

その逆はモーター線をバラさないといけないので難しいです。

 

原理を押さえた上で、次回は部品の選択です。 

dreamerdream.hateblo.jp

 

 

ステッピングモーターの実験もご覧ください↓

dreamerdream.hateblo.jp

 

WordPressのWebページ管理者は要注意!!Webページの不正アクセスログを集計してみた

僕が公開しているWebサイトの不正アクセス履歴を調べてみました。

今回の対象はざっと7000アクセス程度ですが、エンドポイント

http://www/サイトアドレス/ [ ここの部分 ] へのアタックを集計して書き出してみました。(一部です)リストの下ほどアクセス数が多い名前です。

 

※["エンドポイント",エンドポイントへのアタック数]です。

["python'.", 2]
["lib-dynload'.", 2]
['tmp', 2]
['3.3 configured -- resuming normal operations', 2]
['w00tw00t.at.blackhats.romanian.anti-sec:)', 2]
['manager', 2]
['wwscripts', 2]
['FormScripts', 2]
['hacly.php', 3]
['xiaohei.php', 3]
['cadre.php', 3]
['db.php', 3]
['xiaomo.php', 3]
['pwd', 3]
['servlet', 3]
['7A96EC7CA8EA17F1C58C2077A13BB60D.php', 3]
['phpMyadmin', 3]
['phpmyAdmin', 3]
['phpmyadmin3', 3]
['phpmyadmin4', 3]
['2phpmyadmin', 3]
['database', 3]
['sqlmanager', 3]
['mysqlmanager', 3]
['php-myadmin', 3]
['phpmy-admin', 3]
['phpMyAdmin2', 3]
['phpMyAdmin3', 3]
['phpMyAdmin4', 3]
['phpMyAdmin-3', 3]
['php-my-admin', 3]
['PMA2011', 3]
['PMA2012', 3]
['PMA2013', 3]
['PMA2014', 3]
['PMA2015', 3]
['PMA2016', 3]
['PMA2017', 3]
['PMA2018', 3]
['pma2011', 3]
['pma2012', 3]
['pma2013', 3]
['pma2014', 3]
['pma2015', 3]
['pma2016', 3]
['pma2017', 3]
['pma2018', 3]
['phpmyadmin2011', 3]
['phpmyadmin2012', 3]
['phpmyadmin2013', 3]
['phpmyadmin2014', 3]
['phpmyadmin2015', 3]
['phpmyadmin2016', 3]
['phpmyadmin2017', 3]
['phpmyadmin2018', 3]
['sitemap.xml', 4]
['wp-includes', 4]
['wordpress', 4]
['wp', 4]
['site', 4]
['cms', 4]
['bea_wls_deployment_internal', 4]
['pixel.gif', 4]
['index.css', 4]
['yj.php', 5]
['xmlrpc.php', 5]
['blog', 5]
['bg_boder.gif', 5]
['favicon.ico', 6]
['aa.php', 6]
['wb.php', 6]
['7.php', 6]
['cf_scripts', 6]
['CFIDE', 7]
['wp-login.php', 8]
['program', 10]
['shopdb', 10]
['phppma', 10]
['phpmy', 10]
['uu.php', 11]
['wp-content', 11]
['user', 12]
['phpMyAdmin123', 12]
['java.php', 17]
['data.php', 17]
['webdav', 18]
['_query.php', 18]
['ak.php', 18]
['ip.php', 18]
['92.php', 18]
['nuoxi.php', 18]
['htfr.php', 18]
['xiaomar.php', 18]
['fack.php', 18]
['angge.php', 18]
['db_pma.php', 19]
['license.php', 19]
['cmv.php', 19]
['wc.php', 19]
['db_dataml.php', 19]
['bak.php', 19]
['l7.php', 19]
['yumo.php', 19]
['wanan.php', 19]
['hh.php', 19]
['default.php', 19]
['tiandi.php', 19]
['linuxse.php', 19]
['qa.php', 19]
['Ss.php', 19]
['dexgp.php', 19]
['godkey.php', 19]
['okokok.php', 19]
['erwa.php', 19]
['pma.php', 19]
['ruyi.php', 19]
['51314.php', 19]
['5201314.php', 19]
['fusheng.php', 19]
['general.php', 19]
['repeat.php', 19]
['ldw.php', 19]
['api.php', 19]
['s1.php', 19]
['xiaodai.php', 19]
['xp.php', 19]
['p.php', 19]
['a.php', 19]
['conf.php', 19]
['123.php', 19]
['HX.php', 19]
['diy.php', 19]
['666.php', 19]
['777.php', 19]
['qwq.php', 19]
['.php', 19]
['infos.php', 19]
['zzk.php', 19]
['toor.php', 19]
['xiaoma.php', 19]
['xiaomae.php', 19]
['pmd', 19]
['typo3', 19]
['utility.css', 19]
['db_cts.php', 20]
['logon.php', 20]
['hell.php', 20]
['pmd_online.php', 20]
['lala-dpr.php', 20]
['text.php', 20]
['muhstik.php', 20]
['uploader.php', 20]
['cmdd.php', 20]
['knal.php', 20]
['appserv.php', 20]
['plugins', 20]
['xw1.php', 20]
['9678.php', 20]
['db_desql.php', 20]
['ak47.php', 20]
['defect.php', 20]
['webslee.php', 20]
['pe.php', 20]
['hm.php', 20]
['cainiao.php', 20]
['zuoshou.php', 20]
['zuo.php', 20]
['aotu.php', 20]
['system.php', 20]
['l6.php', 20]
['l8.php', 20]
['56.php', 20]
['mz.php', 20]
['min.php', 20]
['wan.php', 20]
['ssaa.php', 20]
['aw.php', 20]
['12.php', 20]
['infoo.php', 20]
['qwe.php', 20]
['1213.php', 20]
['post.php', 20]
['h1.php', 20]
['3.php', 20]
['phpinfi.php', 20]
['aaaa.php', 20]
['9510.php', 20]
['python.php', 20]
['sean.php', 20]
['app.php', 20]
['miao.php', 20]
['xz.php', 20]
['zuoindex.php', 20]
['zshmindex.php', 20]
['tomcat.php', 20]
['ceshi.php', 20]
['1hou.php', 20]
['ou2.php', 20]
['zuos.php', 20]
['zuoss.php', 20]
['zuoshss.php', 20]
['boots.php', 20]
['she.php', 20]
['qw.php', 20]
['caonma.php', 20]
['ss.php', 20]
['wcp.php', 20]
['u.php', 20]
['uuu.php', 20]
['sss.php', 20]
['core.php', 20]
['qaz.php', 20]
['sha.php', 20]
['ppx.php', 20]
['conf1g.php', 20]
['ver.php', 20]
['hack.php', 20]
['xxx.php', 20]
['phpAdmin', 20]
['phpMyadmin_bak', 20]
['phpmyadmin-old', 20]
['phpMyAdmin.old', 20]
['phpMyAdmin+++---', 20]
['phpmyadm1n', 20]
['phpMyadmi', 20]
['help-e.php', 21]
['htdocs.php', 21]
['desktop.ini.php', 21]
['lala.php', 21]
['wpo.php', 21]
['wp-config.php', 21]
['muhstik2.php', 21]
['muhstiks.php', 21]
['muhstik-dpr.php', 21]
['lol.php', 21]
['cmx.php', 21]
['scripts', 21]
['cacti', 21]
['wuwu11.php', 21]
['xw.php', 21]
['w.php', 21]
['sheep.php', 21]
['qaq.php', 21]
['db.init.php', 21]
['db_session.init.php', 21]
['db__.init.php', 21]
['wp-admins.php', 21]
['mx.php', 21]
['wshell.php', 21]
['xshell.php', 21]
['conflg.php', 21]
['lindex.php', 21]
['phpstudy.php', 21]
['phpStudy.php', 21]
['weixiao.php', 21]
['feixiang.php', 21]
['ak48.php', 21]
['xiao.php', 21]
['yao.php', 21]
['PMA2', 21]
['pmamy', 21]
['pmamy2', 21]
['web', 21]
['mysql_admin', 21]
['phpadmin', 21]
['phpmyadmin0', 21]
['phpmyadmin1', 21]
['phpMyAdmin-4.4.0', 21]
['myadmin2', 21]
['xampp', 21]
['www', 21]
['tools', 21]
['phpMyAdminold', 21]
['pma-old', 21]
['claroline', 21]
['phpma', 21]
['phpMyAbmin', 21]
['phpMyAdmin__', 21]
['v', 21]
['phpMyAdm1n', 21]
['shaAdmin', 21]
['phpMyAdmion', 21]
['phpMyAdmin1', 21]
['administrator', 21]
['dbadmin', 23]
['PMA', 24]
['mysqladmin', 24]
['mysql-admin', 24]
['phpmyadmin2', 24]
['', 25]
['hello.php', 25]
['pma', 25]
['myadmin', 26]
['MyAdmin', 26]
['index.php', 28]
['help.php', 36]
['2.php', 38]
['log.php', 39]
['q.php', 39]
['shell.php', 40]
['xx.php', 40]
['m.php', 40]
['s.php', 41]
['sql', 42]
['z.php', 44]
['x.php', 59]
['db', 59]
['test.php', 60]
['cmd.php', 62]
['mysql', 75]
['qq.php', 78]
['1.php', 78]
['confg.php', 79]
['phpMyAdmin', 88]
['phpmyadmin', 89]
['admin', 187]
('size', 7145)

圧倒的に「admin」「〜〜admin」に対しての試みが多いようです。

あとは「php」をねらったものや「SQL」狙ったもの。

同じアドレスでも

['php-myadmin', 3]
['phpmy-admin', 3]
['phpMyAdmin2', 3]
['phpMyAdmin3', 3]
['phpMyAdmin4', 3]
['phpMyAdmin-3', 3]
['php-my-admin', 3]

のように、大文字小文字のバリエーションを試したものが多いようです。

 

上記のことから、これらのアクセスの多くは「WordPress」などのCMSを狙ったものだと推測されます。

残念ながら僕のWebページはCMSで構築したものでは無いので管理者ログインを試みられることはありませんが(そもそもログイン画面が無い)

最近主流になっているWordPressを始めとしたCMSは初心者でも簡単に見栄えの良いWebページを作成できるということで人気になっています。

しかし、「管理者画面をWeb上に大公開しているサービス」ですので管理者のログインページを上記のリストに設定している人は特に要注意です。

 

少なくともログインIDがデフォルトの「admin」のままなんてことは無いように設定しましょう。

f:id:DreamerDream:20181122121904p:plain

 

 続

dreamerdream.hateblo.jp

kampa.me