このサイトについて

Posted: 2019年01月22日

このサイトは、プログラマ初心者を対象とした内容となっています。

一部、メンバー向けの内容があり、閲覧できないようになっているところもあります。

内容は、カテゴリーで分類分けされているため
カテゴリーから学びたい内容を辿ると

学びたいことが学べるともいます。

初心者と対象としていますが
言語の説明とかはせず、主に本の解説と本の理解度確認用のテストを設けています。



カテゴリー: お知らせ | コメント無し »

パスワード解析方法

Posted: 2019年09月15日

class: center, middle
background-image: url(//res.primasm.com/img/slide_01_title.png)
background-size: cover

# パスワード解析方法

---
background-image: url(//res.primasm.com/img/slide_02.png)
background-size: cover

# Agenda

1. 暗号論
2. パスワードの解析方法
3. 総当り(ブルートフォース)
4. 辞書(ディクショナリ)
5. 事前解析(レインボー)

---
background-image: url(//res.primasm.com/img/slide_02.png)
background-size: cover

# 暗号論

■ ときやすい暗号

 - シーザ暗号

■ 解読不可能な暗号

- バーナム暗号

■ 現実的な暗号

AES

---
background-image: url(//res.primasm.com/img/slide_02.png)
background-size: cover

# パスワードの解析方法

- パスワードを解析するには次の手法があります。
  - 総当り
  - 辞書攻撃
  - 事前解析結果との比較

---
background-image: url(//res.primasm.com/img/slide_02.png)
background-size: cover

# 総当り(ブルートフォース)

・すべてのパターンを試行して、パスワードを見つける手法

■ 利点
どのようなパスワードでも時間をかければ、見つけることが可能

■ 欠点
文字数が多いパスワードの場合は、解析に時間がかかる

ex) 10文字 + アルファベット(小文字)のみ

26 ^ 10 = 141,167,095,653,376

1秒 = 1万文字試せるとして

最大235年解析にかかる

---
background-image: url(//res.primasm.com/img/slide_02.png)
background-size: cover

# 辞書(ディクショナリ)

・パスワード一覧に当てはまるパスワードを使用しているユーザを探す方法

■ 利点
ブルートフォースよりも、時間をかけずにパスワードの解析を行うことができる。

■ 欠点
簡単なパスワードを使っていないユーザしかいない場合は、無意味になってしまう

※ パスワード一覧  
https://github.com/danielmiessler/SecLists

---
background-image: url(//res.primasm.com/img/slide_02.png)
background-size: cover

# 事前解析(レインボー)

・暗号化済みのパスワードを取得している場合に有効
・パスワードを暗号化して試行するよりよりも暗号化後の文字列と一致させたほうが効率的にパスワードを見つけることが可能

■ 利点
・不可逆性のハッシュ値だとしても対応が可能
・暗号化しないため、より効率的に解析が可能

■ 欠点
・暗号化されているパスワードを取得している必要がある

※ パスワード一覧  
http://project-rainbowcrack.com/table.htm

※ 流出しているパスワード  
https://raidforums.com/Thread-Collection-1-5-Zabagur-AntiPublic-Latest-120GB-1TB-TOTAL-Leaked-Download

Download



カテゴリー: 資料 | パスワード解析方法 はコメントを受け付けていません。

議事録のテンプレート

Posted: 2019年07月07日
# <議題>

日時  :
場所  :
参加者 :

## アジェンダ

-
-
-

## 決定事項

-
-
-

## 未決定事項

-
-
-

## 確認内容

-
-
-

## 次回までのタスク

-
-
-

## 次回の会議


カテゴリー: Tips | コメント無し »

作業フォルダの作成処理

Posted: 2019年05月12日

カレントフォルダに作業フォルダを作成します。

次の内容をファイルに保存して使用してください。
スクリプトはpythonにて作成しています

import os
import datetime

def main() :
    path = "Work\Memo"
    if (not os.path.exists(path)):
        os.makedirs(path)
    path = "Work\Editing"
    if (not os.path.exists(path)):
        os.makedirs(path)
    path = "Work\Send"
    if (not os.path.exists(path)):
        os.makedirs(path)
    path = "Work\Receive"
    if (not os.path.exists(path)):
        os.makedirs(path)
    path = "Work\Shortcut"
    if (not os.path.exists(path)):
        os.makedirs(path)

if __name__ == '__main__':
    main()


カテゴリー: 自動化 | コメント無し »

日付フォルダの作成処理

Posted: 2019年05月12日

カレントフォルダに日付のフォルダを作成します。
日付は、「年月日時分」です。
次の内容をファイルに保存して使用してください。
スクリプトはpythonにて作成しています

import os
import datetime

def main() :
    path = datetime.datetime.today().strftime("%Y%m%d%H%M")
    os.mkdir(path)

if __name__ == '__main__':
    main()


カテゴリー: Tips, 自動化 | コメント無し »

働く現場によって変わること

Posted: 2019年05月01日

働く現場によって変わること

働く場所によって、必要な技術は変わることがほとんどである。

具体的にどのようなことが変わってくるのか

技術

  • JREで動作すれば何でもよければ
    Groovy, Kotlinなどの選択肢もある。
  • レビュー側の理解度によりそこら辺お制約を受ける
    また、その現場の技術力次第で言語の最新版で追加された機能などは、使用することを禁止されることもある。

環境

  • 開発環境
    使用するツールが変わってくる
    作成ドキュメントやソースコードの管理方法などが変わってくる

文化

  • プロジェクトの管理方法
    進捗会議の有無など開発プロセスが異なることが多い。
  • 同じ意味だけど、用語が異る
    よくあるのが、テストに対する用語
    結合テスト、連結テスト、統合テストなど
    別の意味を表すこともあれば、同じ意味を表すこともある


カテゴリー: 未分類 | コメント無し »

開発工程

Posted: 2019年05月01日

ソフトウェアの開発をするに当たって
どのような工程があるかをまとめました。

基本的には、この流れだと思いますが
現場によっては、工程のか不足はあると思いますが
目安として考えておいてください。

要件定義

必要となる機能について決めていく作業

  • 要求仕様確認
  • 要件定義書作成

基本設計

具体的にシステム化したときに必要となる内容を決める作業

  • 業務フロー
  • 機能一覧
  • 画面設計
  • 帳票設計
  • テーブル設計
  • 外部I/F設計

詳細設計

  • 実現調査
  • CI環境の構築
  • アーキテクチャ
  • システム構成図
  • 機能設計

実装

  • 開発環境の構築
  • 実装
  • 単体テスト

結合テスト

  • テスト計画
  • テスト環境の構築
  • テスト項目書の作成
  • テストデータの作成
  • テストの実施
  • テスト結果の確認

統合テスト

  • テスト計画
  • テスト環境の構築
  • テスト項目書の作成
  • テストデータの作成
  • テストの実施
  • テスト結果の確認

ユーザテスト

※ ユーザに実施してもらう



カテゴリー: 未分類 | コメント無し »

Gitの使い方

Posted: 2019年02月13日

Gitの使い方

git の使い方は次のサイトが有名である。

https://backlog.com/ja/git-tutorial/

gitを使うためには、サーバが必要となる。
有名なサイトと言えば次の2つである。

gitで行う作業(基礎)

バージョンを管理したのであれば次の操作ができるようになれば、
最低限バージョンの管理をすることができる。

  • リポジトリのデータを取得(クローン)
  • 最新のファイルを取得(プル)
  • ファイルの変更を確定(コミット)
  • ファイルの確定情報をサーバに転送(プッシュ)

リポジトリのデータを取得(クローン)

https://backlog.com/ja/git-tutorial/intro/intro4_3.html

最新のファイルを取得(プル)

https://backlog.com/ja/git-tutorial/intro/intro3_3.html

ファイルの変更を確定(コミット)

https://backlog.com/ja/git-tutorial/intro/intro2_4.html

ファイルの確定情報をサーバに転送(プッシュ)

https://backlog.com/ja/git-tutorial/intro/intro3_1.html

gitで行う作業(発展)

開発作業は、並行して作業が発生する場合が多々あります。
よって、ブランチと言った考えがあります。

ブランチの説明と、使い方についてはこちらを読んでください。

https://backlog.com/ja/git-tutorial/stepup/stepup1_1.html



カテゴリー: git | コメント無し »

関数コメントに記載する内容

Posted: 2019年02月06日

Javadocなど関数コメントが設計となる場合には、
次の内容を記載する。

  1. 関数仕様
  2. 引数説明 (データの説明、許容範囲)
  3. 戻り値説明 (データの説明、許容範囲)
  4. 例外処理

関数仕様

関数が何をするかを記載する

指定された年月日の範囲を指定された日付分加算します。
演算結果を返却します。
引数が異常な場合は、例外を発生させます。

引数説明

引数一つ一つに対して説明を記載する

その変数にはどのようなデータが入っているべきかを記載する。

@param month 処理対象の月

その変数に入っているべき値の範囲を記載する。

@param month 処理対象の月 (1-12)

戻り値説明

どのような値が返却されるのかを記載する
関数の処理結果であれば、そのことがわかるようにする。

@return 判定結果 判定で正常な場合はtrue、異常な場合は、false

エラー処理

引数の許容範囲内外の場合
それ以外の前提となる条件を満たしてない場合など
発生条件とエラー処理について記載する
 (エラー処理が、例外をthrowしない場合でもそのことを記載する)



カテゴリー: Tips | コメント無し »

スッキリわかるJava入門 0章を読んで

Posted: 2019年02月04日

次の本「スッキリわかるJava入門」を読んで疑問点、不明点についてここでは記載しています。

ちょっとした内容は「なか見!検索」とかで確認してください。

本書16ページ

プログラムの実行する場所は次のサイトでもできます。
https://wandbox.org/

ただ可能であれば、 Java のインストールを行い。
本の課題を勧めていったほうが理解度は上がると思います。

インストールとインストールをしたものについては
ドットインストール さんのこの内容を見ることで理解ができます。
https://dotinstall.com/lessons/basic_java_v2

  • 01 Javaを使ってみよう
  • 02 Javaが動作する原理を理解しよう

本書18ページ

プログラムを、「コンパイル」ボタンをクリックして、「実行」ボタンをクリックすると結果が表示されると書いてあるが

なぜそのようなことをしなければならないか
Java言語は、コンパイル言語に分類される言語である。
このコンパイル言語は、コンパイル処理で実行が可能な形に変換されます。
その後であれば、実行が可能になります。

コンパイル言語のいいところは、
コンパイル時にプログラムエラーがあった場合に検出ができる点です。

だから、19ページでは、エラーを検知しています。



カテゴリー: スッキリわかるJava入門 | コメント無し »

プログラムの学び方

Posted: 2019年01月22日

プログラムを学ぶことに限らず、物事を学ぶにはインプットとアウトプットが大事と言われている。

インプットは、様々な方法があるが何を意識するかによって、何度も読み直し結局わからないといったことが多々ある。
アウトプットは、実際に手を動かすことが大事になってくる。

このサイトで推奨するインプット

このサイトで推奨するアウトプット

  • プログラムの実装
  • 他の人に教える


カテゴリー: Tips | コメント無し »
Page 1 of 212