問題タブ [brute-force]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
security - ログイン試行の失敗を何回まで許可する必要がありますか? また、その期間はどれくらいですか?
ログインシステムに対するブルートフォース攻撃から保護するには、ログイン試行の失敗を何回まで許可する必要がありますか? また、その期間はどれくらいですか?
「アカウントをロックする」とはどういう意味ですか? (適切なパスワードを使用しても) ログインできないようにするだけですか?
algorithm - ブルート フォース攻撃に対してより回復力のあるパスワードを選択する
ブルートフォース攻撃が成功するために必要な試行回数を増やすには、長いだけでなく、より価値の高い数字やアルファベットの末尾近くのアルファベット文字に重み付けされたパスワードを選択するのが最善ですか?
それとも、ブルート フォース攻撃では、(ほぼ) 英数字順に増加しないアルゴリズムがよく使用されますか?
jsf - j_security_checkとプログラマティックセキュリティ
jsf、ejbs、jpaを使用してWebアプリケーションを構築しています。私は現在、フォームベースのj_security_checkを使用して認証を処理しています。
Cookieのサポート、つまり「Rememberme」オプションを実装する必要があります。また、ブルートフォース攻撃を防ぎたいです。つまり、ログオンに5回失敗した後、特定のユーザーをロックします。
他のオプションは、ServletFiltersなどを使用してプログラムで実行することであることを理解しています。
j_security_checkを使用してこれらすべてを実装する方法はありますか?または、プログラムで実行するように戻す必要がありますか?
algorithm - x 日間のデータのロック
データを暗号化して、解読するのに一定の CPU 時間かかるようにする (簡単な) 方法はありますか? たぶん、短い鍵の長さ、可変の一方向関数などを使用した一連の暗号化ですか?
おそらくあまり役に立ちませんが、この暗号化スキームはどのように呼び出され、そのためのツールはありますか?
編集:
ブルート フォース ブレーク タイムのさまざまな結果を取得するには、xor フィードバックを使用して多くのラウンドを使用するべきではありませんか?
私はこのアルゴリズムを思いついたばかりです(値とキーの長さが等しい対称ブロック暗号の場合)...おそらくそれは無意味です
ロック出力 2 でブルート フォーシングを開始する前に、ロック解除ルーチンがランダム ブロック 1 を見つける必要があるように、ランダム ブロック 1 を使用した xor 操作が存在します。
lock-output-1 + lock-output-2 .. lock-output-N は完全な lock-output になります。ロック解除ルーチンは、それぞれがすべてのロック出力ブロックでゼロを与える N 個の鍵ブロックを検出すると、N 個の鍵ブロックを全体として使用して実際のデータを解読できます。
次に、必要な CPU 時間に対して、たとえば 10% の最大変動を与えるラウンド数を計算する式も必要です。
私はそこに同様のアルゴリズムが存在するに違いないと思います。
c - この単純なアルゴリズムにマルチスレッドを追加する効率的な方法は何でしょうか?
私の C の知識はかなりのもので、プログラムを拡張して並列プログラミングの知識を強化したいと考えています。
基本的に、私が言及しているプログラムは、特定の文字セットの 0000 .. zzzz などのパスワードをインクリメントするブルート フォース ジェネレーターです。crypt (3) のブルート フォース コードに関するヘルプが必要です。
アルゴリズムの概要を以下に示します (これは Jerome の功績によるものです)。
マルチスレッド化によってこれを拡張できる論理的な方法は何ですか?
CUDA は、シンプルであるとしてもばかげたソリューションです。私の本では良い解決策のように見える OpenMP について聞いたことがありますが、これをどのように分割して、私のコンピューターの複数のコアから利益を得ることができると思いますか? つまり、コア 1 は aaaa..ffff を計算し、コア 2 は ffff...zzzz を計算しますが、これはこれで意味のある唯一の方法ですか?
c - ブルート フォース マッチングのために、特定の文字セットのすべての組み合わせを計算しますか?
マルチスレッディングの実践において、文字セットのすべての可能な組み合わせ (ブルート フォース クラッキング/マッチング) を計算し、スレッド間で作業を分散できるアプリケーションを単純に構築して、スレッディングがどのように影響するかを直接測定して確認したいと考えていました。異なるシステムでのアルゴリズムの時間。
これを計算するアルゴリズムは、これまでのところ私にとって大きな課題でした。最近のスレッド ( What would be a effective way to add multithreading to this simple algorithm? ) で、アルゴリズムは単純に機能しませんでしたが、必要なことを理解しているように見えました (各文字範囲の特定の部分を簡単に渡して作業を分散させます)。 、そしてアプリケーションで修正するのに十分なほど複雑さを理解していませんでした。
シンプルで反復的な方法で、特定の長さ (つまり、長さが 5) の特定の文字セットのすべての組み合わせを計算するにはどうすればよいでしょうか?
例:
これを行うための適切な概念を見つける際のストレスを和らげることができれば、非常にありがたいです。
algorithm - 網羅的検索 Big-O
私は現在、いくつかの改訂に取り組んでおり、具体的には Big-O 記法について検討しています。同様の質問 (別のアルゴリズムを扱ったもの) をしましたが、正しい方法で行っているかどうかはまだわかりません。
私が検討しているアルゴリズムは、Exhaustive Search (別名ブルート フォースだと思います) で、次のようになります。
これまでのところ、このアルゴリズムは正しいという結果に達しましたO(n)
。これは正しいですか? 私はそれが正しいとは思えませんし、それを解決する方法を正確に知りたいと思っています。何を探すべきか、毎回「数える」のは正確には何なのか、などなど。実行中の操作の数を数える必要があることは理解していますが、メモを取る/数える必要があるのはそれだけですか?
編集: 実際、このアルゴリズムが正しいことを知りました。これはO((n-1)!)
正しいのですか? もしそうなら、この解決策はどのようにして解決できたのでしょうか?
c - ASLR ブルートフォース
練習のために、自分のマシンで ASLR 実装をブルートフォースしようとしています。まず、ASLR がオンになっていることを確認します。
私が使用しているマシンは次のとおりです:-
私のプログラムは次のように単純です。
これを利用するために、次のように環境変数を作成します。ご覧のとおり、リバース シェルのエクスプロイト コードを含む非常に巨大な nop スレッドがあります。
次の C プログラムを使用して、環境変数のアドレスを見つけます。
としてアドレスを取得します0xbfefadfd
。
リターンアドレスのオーバーフローには76 bytes of something
+がかかることがわかりました4 bytes of the return address
。だから、私はブルートフォースするために: -
予想どおり、セグメンテーション違反のログは取得されますが、プログラムを約 30 分間実行した後でもリバース シェルは取得されません。ここで何か間違っていますか?
android - ブルートフォース検出を考えて、キーストアのパスワードを忘れました。キーストアが破損しますか?
最近、キーストアへのパスワードを紛失したことに気付きました (または、キーストアが何らかの理由で破損した可能性があります)。
それは私にエラーを与え続けます:キーストアが改ざんされているか、パスワードが正しくありません
パスワードを一晩中実行させて総当り攻撃する (まったく最適化されていない) アルゴリズムを作成しました。ただし、パスワードの試行に何回失敗するとキーストアがロックされるかはわかりません。
誰かがこのようなことを知っていますか?
更新
私が考案したアルゴリズムは正常に動作します (私は Java を使用しています) が、通常、キーストア ツールは、Enter キーを押したときにのみパスワードを要求することに気付きました。しかし、ブルートフォースを機能させるには、同じ行にスイッチと受け入れパスワードを入れたいと思います。出来ますか?
algorithm - 力ずくで解決するボードゲームのデータベース
数年前、研究者たちは、チェッカーに対するブルートフォースの包括的なソリューションを完成させたと発表しました。
私は、より少ない状態を持つ必要がある別の同様のゲームに興味を持っていましたが、妥当な時間枠で完全なソルバーを実行することはまだ非常に非現実的です。部分的な解決策でも貴重な情報が得られる可能性があるため、試してみたいと思います。
概念的には、すべての既知の位置とそれに続く位置を含むゲーム状態のデータベースが必要です。1 つまたは複数のクライアントが、データベースから未調査の状態を取得し、可能な動きを計算し、新しい状態をデータベースに挿入できます。終盤の状態が見つかると、それに至るまでのすべての状態をミニマックス情報で更新して、決定木を構築できます。探索する可能性の高い分岐を選択するという賢明な決定が下された場合、最も重要な分岐の情報を構築し、時間をかけて徐々に構築して完成させることができます。
このアイデアのメリットや実現可能性を無視して、そのようなデータベースを実装する最良の方法は何ですか? 各状態の文字列表現を格納する簡単なプロトタイプを SQL Server で作成しました。それは機能しましたが、一度に 1 つの状態を引き出し、すべての動きを計算するため、私のソルバー クライアントの実行は非常に遅くなりました。メモリ内でより大きなチャンクを実行する必要があるように感じますが、検索スペースは明らかに大きすぎて、すべてを一度にメモリに格納できません。
この種の仕事に適したデータベース システムはありますか? 多数の挿入、多数の読み取り (状態 (または同等の状態) が既に存在するかどうかを確認するため) を行い、更新はほとんど行いません。
また、多くのクライアントが多くの作業を複製することなく、さまざまなブランチの解決に取り組むことができるように、どのように並列化できますか? 割り当てをチェックアウトし、数百万の状態を生成し、それを送信してメイン データベースに統合するプログラムのようなものを考えています。そのようなものがうまく機能するかどうか、またはそのようなことを行うための方法に関する以前の研究があるかどうかはわかりません.