Oracle的verify_function_11G函数只是通过一些密码规则来让密码看起来不容易猜到,但一些用户的习惯让所设的密码虽然复杂,但并不
Oracle的verify_function_11G函数只是通过一些密码规则来让密码看起来不容易猜到,但一些用户的习惯让所设的密码虽然复杂,但并不难猜,这时可以用我写的这个程序,把一些常见的易猜的密码放入文件或字典数据库中, 通过程序自动尝试连接Oracle数据库,来效验指定数据密码是否太过易猜或简单,如果数据库用户配置稍严格些,这个程序就不起作用了,所以不太具有实用价值,仅参考使用。
程序用到了 SQLite与 OTL可看: SQLite编程相关() OTL的使用() 去了解相关使用方法。
程序代码如下:
/**
* author: xiongchuanliang
* desc: 效验密码是否是使用数据库默认密码,或密码是否太过简单
程序的参数说明:
-d 效验是否使用默认用户和密码没改过
-s 事先在SQLite数据库中存放各类数据库密码,然后依次尝试。
可通过 “ -s a% “这类来从字典表中过滤出相符合的密码字符串
-f 从密码文件中读取密码字符串依次尝试
*/
#include
#include
#include
#include
#include "sqlite3.h"
#define OTL_ORA10G
//#define OTL_ORA11G_R2 // Compile OTL 4.0/OCI11.2
#include "otlv4.h" // include the OTL 4 header file
using namespace std;
otl_connect oracledb;
#define MAXLINE 150
#define DICT_DB "c:\\sqlite\\mydict.db"
#define DICT_FILE "c:/sqlite/mydict.txt"
#define TNS_DBNAME "xcldb"
#define SQL_COUNT " SELECT count(*) FROM userpwd "
#define SQL_SELECT " SELECT pwd FROM userpwd "
char arrTestUser[][30] = {"sys","system","test"};
int arrTestUserLen = 3;
//从SQLite只按条件查出密码串放入文件
sqlite3_uint64 getDictDB(char * pWhere);
//初始化OTL
void initOTL();
//连接Oracle数据库
int connectORA(char * connstr);
//从字典文件读入密码字符串尝试连接
bool testConnDB();
//尝试用默认的用户名和密码连接
bool testConnDBDF();
int main(int argc, char* argv[])
{
printf("==========================\n");
printf("数据库密码有效性测试!\n");
printf("==========================\n");
if(argc==1||argc printf("请输入运行参数(-f,-d,-s).\n");
//从指定字典文件中查找
if( strcmp(argv[1],"-f") == 0)
{
printf(" -f : 从指定字典文件中查找\n");
testConnDB();
}else{
initOTL();
//查数据库默认用户密码
if( strcmp(argv[1],"-d") == 0)
{
printf(" -d : 查数据库默认用户密码 \n");
testConnDBDF();
}else if( strcmp(argv[1],"-s") == 0) //从SQLite数据库找出密码
{
printf(" -s : 从SQLite数据库找出密码 \n");
if(argc==3)
{
printf("过滤条件: %s\n",argv[2]); // %a123%
char sW[50] = {0};
//char *s = " where pwd like '%aaa%' ";
sprintf_s(sW, " where pwd like '%s' ",argv[2]);
getDictDB(sW);
}else{
char *sW = NULL;
getDictDB(sW);
}
//从数据库中转出的密码文件中读取密码进行尝试
testConnDB();
}else{
printf("请输入(-f,-d,-s)三个参数之一.\n");
}
}
return 0;
}
//从SQLite只按条件查出密码串放入文件
sqlite3_uint64 getDictDB(char * pWhere)
{
char sqlCount[MAXLINE] = {0};
char sqlSelect[MAXLINE] = {0};
strcpy_s(sqlCount,SQL_COUNT);
strcpy_s(sqlSelect,SQL_SELECT);
if(pWhere != NULL)
{
strcat_s(sqlCount,pWhere);
strcat_s(sqlSelect,pWhere);
}
sqlite3 * pDB = NULL;
//打开路径采用utf-8编码
//如果路径中包含中文,,需要进行编码转换
// c:\\sqlite\\mydict.db
int nRes = sqlite3_open(DICT_DB, &pDB);
if (nRes != SQLITE_OK)
{
printf("字典数据库连接失败. %s \n",sqlite3_errmsg(pDB));
return 0;
}
sqlite3_stmt * stmt;
const char *pTail;
sqlite3_uint64 rCount = 0;
int rc = 0;
//查询所有数据
sqlite3_prepare(pDB, sqlCount,-1,&stmt,&pTail);
int r = sqlite3_step(stmt);
if(r == SQLITE_ROW)
{
rCount = sqlite3_column_int64( stmt, 0 );
printf("共找到%d条字典密码.\n",rCount);
}
sqlite3_finalize(stmt);
if(rCount
//查询所有数据
sqlite3_prepare(pDB, sqlSelect,-1,&stmt,&pTail);
do{
FILE *fp;
fopen_s(&fp,DICT_FILE,"w");
if(fp == NULL)
{
printf("字典文件生成失败.\n");
goto end;
}

WebアプリケーションにおけるMySQLの主な役割は、データを保存および管理することです。 1.MYSQLは、ユーザー情報、製品カタログ、トランザクションレコード、その他のデータを効率的に処理します。 2。SQLクエリを介して、開発者はデータベースから情報を抽出して動的なコンテンツを生成できます。 3.MYSQLは、クライアントサーバーモデルに基づいて機能し、許容可能なクエリ速度を確保します。

MySQLデータベースを構築する手順には次のものがあります。1。データベースとテーブルの作成、2。データの挿入、および3。クエリを実行します。まず、createdAtabaseおよびcreateTableステートメントを使用してデータベースとテーブルを作成し、InsertINTOステートメントを使用してデータを挿入し、最後にSelectステートメントを使用してデータを照会します。

MySQLは、使いやすく強力であるため、初心者に適しています。 1.MYSQLはリレーショナルデータベースであり、CRUD操作にSQLを使用します。 2。インストールは簡単で、ルートユーザーのパスワードを構成する必要があります。 3.挿入、更新、削除、および選択してデータ操作を実行します。 4. Orderby、Where and Joinは複雑なクエリに使用できます。 5.デバッグでは、構文をチェックし、説明を使用してクエリを分析する必要があります。 6.最適化の提案には、インデックスの使用、適切なデータ型の選択、優れたプログラミング習慣が含まれます。

MySQLは初心者に適しています。1)インストールと構成、2)リッチラーニングリソース、3)直感的なSQL構文、4)強力なツールサポート。それにもかかわらず、初心者はデータベースの設計、クエリの最適化、セキュリティ管理、データのバックアップなどの課題を克服する必要があります。

はい、sqlisaprogramginglanguagespecializedfordatamanamanagement.1)それはdeclarative、focusingonwhattoachieveratherthanhow.2)

酸性属性には、原子性、一貫性、分離、耐久性が含まれ、データベース設計の基礎です。 1.原子性は、トランザクションが完全に成功するか、完全に失敗することを保証します。 2.一貫性により、データベースがトランザクションの前後に一貫性を保証します。 3.分離により、トランザクションが互いに干渉しないようにします。 4.永続性により、トランザクションの提出後にデータが永久に保存されることが保証されます。

MySQLは、データベース管理システム(DBMS)であるだけでなく、プログラミング言語にも密接に関連しています。 1)DBMSとして、MySQLはデータを保存、整理、取得するために使用され、インデックスを最適化するとクエリのパフォーマンスが向上する可能性があります。 2)SQLとPythonに埋め込まれたプログラミング言語とSQLalchemyなどのORMツールを使用すると、操作を簡素化できます。 3)パフォーマンスの最適化には、インデックス、クエリ、キャッシュ、ライブラリ、テーブル分割、およびトランザクション管理が含まれます。

MySQLはSQLコマンドを使用してデータを管理します。 1.基本コマンドには、select、挿入、更新、削除が含まれます。 2。高度な使用には、参加、サブクエリ、および集計関数が含まれます。 3.一般的なエラーには、構文、ロジック、パフォーマンスの問題が含まれます。 4。最適化のヒントには、インデックスの使用、Select*の回避、制限の使用が含まれます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

WebStorm Mac版
便利なJavaScript開発ツール
