sonickun.log

備忘録

プログラミング

【CTF】暗号の勉強を始めて1年たったのでWriteupまとめてみた

本稿は「CTF Advent Calendar 2016 - Adventar」19日目の記事です。去年の冬あたりからCTFの暗号問題を解くようになって、Writeupがだいぶ溜まってきたので整理して公開しました(一部紛失してしまいましたが)。「あの暗号のあの攻撃ってどうやるんだっけ」…

SageMathでPythonの外部ライブラリを使えるようにする

SageMathはPythonベースで作られているが、外部の(標準でない)Pythonライブラリをインポートしようとするとエラーが起きることがある。たとえばPyCryptoだと、普通のPythonの対話シェルではインポートできているのに、 $ python Python 2.7.11 (default, D…

GoogleがTLSでの採用を提唱している共通鍵暗号方式「ChaCha」についてまとめた

ChaCha(チャチャ)という一見ふざけた名前の暗号が最近(自分の中で)話題ということで,勉強がてらに記事にしてみました. 背景 ChaChaの構造 Salsa20 Chacha 初期状態 ラウンド操作 ChaChaの安全性 実装してみた 参考 背景 2016年4月現在,TLSの新しいバ…

Nginxのアクセスログを自動でSQLiteに出力する

先日Nginxを使ってWEBサーバを立ち上げたのだが,アクセスログを解析しやすいようにデータベースに突っ込みたかったので自分で実装してみた.VPSでWebサーバを構築した - sonickun.logsonickun.hatenablog.com Apacheのログなどをデータベースに出力するツー…

Pythonでnslookup(ドメインの正引きと逆引き)する

ドメインの情報が知りたければdigやnslookupコマンドを叩けば良いっていう話ですが,複数のドメインもしくはIPアドレスをまとめて処理したいってこと,あるあるですよね. Python Script lookup.py # -*- coding: utf-8 -*- import socket import sys # 正引…

【実験】ARPスプーフィングによる中間者攻撃

ARPスプーフィングとは、ARPプロトコルの応答を偽装することにより、LAN上で通信機器のなりすましを行なう技法です.これを用いて中間者攻撃すると大変なことになってしまうというお話です. 10月のSECCON札幌大会がARP Spoofing Challengeということで,予…

GeoIPでIPアドレスから位置情報を取得する[Python]

Pythonの「GeoIP」というモジュールを使ってIPアドレスやドメイン名から国名などの位置情報を取得します. GeoIP 1.3.2 : Python Package Index GeoIPのインストール インストール方法が少しややこしかったのでまとめておきます. 事前にインストールが必要…

py-radixを使ったIPアドレスの高速探索[Python]

パケットを監視してて,この送信元IPってどこのホストなんだろうって思うこと,あるあるですよね. ある調べたいIPアドレスがあって,それをIPアドレスとホスト名が紐付けされているのリストの中から探索するスクリプトです. py-radix py-radixは,pythonの…

任意のIPv4アドレスRangeをPrefix表記に変換する[はじめてのRuby]

"192.168.192.48 - 192.168.192.79"といった始点と終点によって定義されるIPアドレス空間を,"192.168.192.48/27"というPrefix表記に変換するスクリプトです. サブネットマスクの計算方法は下のリンクを参照してください. 基礎から学ぶWindowsネットワーク…

defaultdictを使ったドメイン解析 [Python]

Pythonのcollectionsモジュールに含まれるdefaultdictを用いて大量のドメインを分類する方法について説明します。 マニュアルはこちら↓ 8.3. collections — 高性能なコンテナ・データ型 — Python 2.7ja1 documentation defaultdictはディクショナリ状のオブ…

ナイーブベイズ分類器とクロスバリデーションの実装 [Python]

ナイーブベイズ分類による機械学習と、それをクロスバリデーション(10-fold CV)により分類精度を調べるプログラムをPythonで書きました。 大学院の講義の課題で出されたもので、丸一日のたうち回りながら何とか完成させました。 ナイーブベイズ分類器につい…

Pythonで2次元配列の静的確保と動的確保

Pythonでデータ分析をするときにどうしても2次元配列を使いたかったのですが、Numpyを使った配列定義がわかりにくくて困っていたところ、友人にNumpyを使わない方法を教えてもらったので載せておきます。個人的にはこの方法が一番シンプルで好きです。 また…