cari
Rumahpangkalan datatutorial mysql自定义的Oracle用户密码效验程序

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;
  }

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Mysql: Kemahiran penting untuk pemula untuk menguasaiMysql: Kemahiran penting untuk pemula untuk menguasaiApr 18, 2025 am 12:24 AM

MySQL sesuai untuk pemula untuk mempelajari kemahiran pangkalan data. 1. Pasang alat pelayan dan klien MySQL. 2. Memahami pertanyaan SQL asas, seperti SELECT. 3. Operasi data induk: Buat jadual, masukkan, kemas kini, dan padam data. 4. Belajar Kemahiran Lanjutan: Fungsi Subquery dan Window. 5. Debugging dan Pengoptimuman: Semak sintaks, gunakan indeks, elakkan pilih*, dan gunakan had.

MySQL: Data berstruktur dan pangkalan data hubunganMySQL: Data berstruktur dan pangkalan data hubunganApr 18, 2025 am 12:22 AM

MySQL dengan cekap menguruskan data berstruktur melalui struktur jadual dan pertanyaan SQL, dan melaksanakan hubungan antara meja melalui kunci asing. 1. Tentukan format data dan taip apabila membuat jadual. 2. Gunakan kunci asing untuk mewujudkan hubungan antara jadual. 3. Meningkatkan prestasi melalui pengindeksan dan pengoptimuman pertanyaan. 4. Secara kerap sandaran dan memantau pangkalan data untuk memastikan pengoptimuman keselamatan data dan prestasi.

MySQL: Ciri dan keupayaan utama dijelaskanMySQL: Ciri dan keupayaan utama dijelaskanApr 18, 2025 am 12:17 AM

MySQL adalah sistem pengurusan pangkalan data sumber terbuka yang digunakan secara meluas dalam pembangunan web. Ciri -ciri utamanya termasuk: 1. Menyokong pelbagai enjin penyimpanan, seperti InnoDB dan Myisam, sesuai untuk senario yang berbeza; 2. Menyediakan fungsi replikasi master-hamba untuk memudahkan pengimbangan beban dan sandaran data; 3. Meningkatkan kecekapan pertanyaan melalui pengoptimuman pertanyaan dan penggunaan indeks.

Tujuan SQL: Berinteraksi dengan Pangkalan Data MySQLTujuan SQL: Berinteraksi dengan Pangkalan Data MySQLApr 18, 2025 am 12:12 AM

SQL digunakan untuk berinteraksi dengan pangkalan data MySQL untuk merealisasikan penambahan data, penghapusan, pengubahsuaian, pemeriksaan dan reka bentuk pangkalan data. 1) SQL Melaksanakan operasi data melalui Pilih, Masukkan, Kemas kini, Padam Penyataan; 2) Gunakan pernyataan membuat, mengubah, drop untuk reka bentuk dan pengurusan pangkalan data; 3) Pertanyaan kompleks dan analisis data dilaksanakan melalui SQL untuk meningkatkan kecekapan membuat keputusan perniagaan.

Mysql for Beginners: Bermula dengan Pengurusan Pangkalan DataMysql for Beginners: Bermula dengan Pengurusan Pangkalan DataApr 18, 2025 am 12:10 AM

Operasi asas MySQL termasuk membuat pangkalan data, jadual, dan menggunakan SQL untuk melakukan operasi CRUD pada data. 1. Buat pangkalan data: createdatabasemy_first_db; 2. Buat Jadual: CreateTableBooks (Idintauto_IncrementPrimaryKey, Titlevarchar (100) NotNull, Authorvarchar (100) NotNull, Published_yearint); 3. Masukkan Data: InsertIntoBooks (Tajuk, Pengarang, Published_year) VA

Peranan MySQL: Pangkalan Data dalam Aplikasi WebPeranan MySQL: Pangkalan Data dalam Aplikasi WebApr 17, 2025 am 12:23 AM

Peranan utama MySQL dalam aplikasi web adalah untuk menyimpan dan mengurus data. 1.MYSQL dengan cekap memproses maklumat pengguna, katalog produk, rekod urus niaga dan data lain. 2. Melalui pertanyaan SQL, pemaju boleh mengekstrak maklumat dari pangkalan data untuk menghasilkan kandungan dinamik. 3.MYSQL berfungsi berdasarkan model klien-pelayan untuk memastikan kelajuan pertanyaan yang boleh diterima.

MySQL: Membina pangkalan data pertama andaMySQL: Membina pangkalan data pertama andaApr 17, 2025 am 12:22 AM

Langkah -langkah untuk membina pangkalan data MySQL termasuk: 1. Buat pangkalan data dan jadual, 2. Masukkan data, dan 3. Pertama, gunakan pernyataan CreatedataBase dan createtable untuk membuat pangkalan data dan jadual, kemudian gunakan pernyataan InsertInto untuk memasukkan data, dan akhirnya gunakan pernyataan PILIH untuk menanyakan data.

MySQL: Pendekatan mesra pemula untuk penyimpanan dataMySQL: Pendekatan mesra pemula untuk penyimpanan dataApr 17, 2025 am 12:21 AM

MySQL sesuai untuk pemula kerana mudah digunakan dan berkuasa. 1.MYSQL adalah pangkalan data relasi, dan menggunakan SQL untuk operasi CRUD. 2. Ia mudah dipasang dan memerlukan kata laluan pengguna root untuk dikonfigurasi. 3. Gunakan Masukkan, Kemas kini, Padam, dan Pilih untuk Melaksanakan Operasi Data. 4. Orderby, di mana dan menyertai boleh digunakan untuk pertanyaan yang kompleks. 5. Debugging memerlukan memeriksa sintaks dan gunakan Jelaskan untuk menganalisis pertanyaan. 6. Cadangan pengoptimuman termasuk menggunakan indeks, memilih jenis data yang betul dan tabiat pengaturcaraan yang baik.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

MinGW - GNU Minimalis untuk Windows

MinGW - GNU Minimalis untuk Windows

Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

Versi Mac WebStorm

Versi Mac WebStorm

Alat pembangunan JavaScript yang berguna

Dreamweaver Mac版

Dreamweaver Mac版

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)