Ⅰ 高手進 破譯 區域網 sql Server密碼
運行此類的命令可以使用:開始、運行;
里邊輸入SQLServerSniffer.exe
1433
c:\1.txt
前提你需要將SQLServerSniffer.exe
拷貝到SYSTEM32文件夾下,或者你的命令為:
X:\XXXX\SQLServerSniffer.exe
1433
c:\1.txt
_就是要加上相對路徑
Ⅱ 請問區域網內怎麼訪問另一台伺服器上的SQlserver資料庫
1.是區域網環境不?是/否
2.收費軟體通過什麼方式訪問資料庫?配置還是軟體寫死了?
3.收費崗亭有無對資料庫主機的訪問許可權?有/無
4.以上問題若都是第一個答案,在新機器上安裝一個sql客戶端後,那麼只需要知道主機資料庫的IP和埠,一般sql默認埠為1433,再開啟遠程訪問服務即可。
Ⅲ SQL SERVER到底是如何實現數據共享在區域網中如何來實現資源共享
安裝sql server客戶端,每個人分配用戶名密碼就可以了,它的共享和windows共享不是一個概念,它就像個倉庫,可以給讀、寫、改的許可權。
Ⅳ 不製作證書是否能加密SQLSERVER與客戶端之間傳輸的數據
Microsoft Network Monitor
這是微軟提供的網路抓包工具
雖然它是微軟提供的,但所有的協議parser解析代碼全部都是開源的,採用其支持的特有腳本語言編寫,易理解、易擴展;
它自帶協議parser比較全面,同時有一個開源社區提供持續支持;
另外,它也提供API幫助我們開發自己的網路抓包、協議分析工具。
針對TDS協議解析需求:
Network Monitor自帶TDS協議解析器和UI比較友好
Network Monitor自帶TDS協議解析器在解析和結果展示方面更全面,以下是一個畫面片段,顯示了一個SQL Batch包。
先了解一下SQLSERVER的加密階段
一共有兩個階段
在認證階段,SQLSERVER會使用自生成的自簽名證書,加密客戶端發過來的登陸用戶名和密碼
在數據傳輸階段,如果不使用證書,那麼數據是使用明文在網路上進行傳送的
大家可以看一下這篇文章:
SQL Server 連接加密 (1) -- SQL Server connection encyption
網上有很多製作證書的教程,但是製作證書都比較麻煩,客戶端和伺服器端都要弄很多東西。
詳細製作證書的過程可以參考園子里的這篇文章:
在SQL Server 2005 中開啟SSL(圖文結合)
當然這篇文章不是講解這個network monitor抓包工具的,所以輕輕帶過就算了
那麼,不製作證書怎麼加密傳輸的數據啊????
答案就是:同樣使用在認證階段的自生成的自簽名證書
詳細步驟:
步驟1:在SQLSERVER伺服器端這邊設置強行加密
步驟2:重啟SQLSERVER,只有重啟SQLSERVER設置才能生效
步驟3:打開network monitor,新建一個capture
步驟4:啟動capture,開始捕獲
步驟5:在客戶端這邊連上伺服器端的SQLSERVER,然後你會在network monitor里的看到SSMS這個進程已經出現在Network Conversations窗口
步驟6:選中他,你會在Frame Summary窗口看到幀信息
步驟7:如果你在伺服器端開啟了「強行加密」,那麼收到的數據包都會是加密的
大家在Protocol Name這一欄看到的是TLS協議,而不會是TDS協議
步驟8:查看幀數據
步驟9:如果沒有加密的明文數據,network monitor就能夠查看出來,並且Protocol Name這一欄顯示的是TDS協議,因為數據包並沒有使用TLS協議進行封裝
TIPS:當關閉了SSMS的查詢窗口之後,連接還是存在的
很多人會問,關閉了連接,怎麼連接還存在,客戶端為什麼還會跟伺服器端進行通信?????
實際上,這個是客戶端的連接池機制,客戶端不斷發送keep alive數據包給伺服器,下次有同樣的連接進行重用了,不需要再進行三次握手o(∩_∩)o
總結
本人介紹了不使用製作證書的方式來對傳輸的數據進行加密的方法,實際上設置客戶端而不設置伺服器端也是可以的
不過設置客戶端比較麻煩,還需要在連接字元串里加上encrypt屬性設置為Yes
設置伺服器端和設置客戶端的加密的區別
伺服器端:所有的連接都是加密的
客戶端:只是設置了加密的那個連接是加密的,其他沒有設置加密的連接依然是明文傳輸數據
當然,使用SQLSERVER自生成的證書安全性是不及自己製作的證書的安全性高!!
相關連接:
加密與 SQL Server 的連接
使用自簽名證書加密的 SSL 連接不提供強安全性。它們容易在傳輸中途受到攻擊。在生產環境中或在連接到 Internet 的伺服器上,不應依賴使用自簽名證書的 SSL。
始終要對客戶端應用程序與 SQL Server
連接時傳輸的憑據(在登錄數據包中)進行加密。SQL Server
將使用可信證書頒發機構頒發的證書(如果可用)。如果未安裝可信證書,則在啟動實例時 SQL Server
將生成自簽名證書,並使用自簽名證書對憑據進行加密。自簽名證書有助於提高安全性,但它不提供針對通過伺服器進行的身份欺騙的保護。如果使用自簽名證書,
並且 ForceEncryption 選項的值設置為「是」,則將使用自簽名證書對通過網路在 SQL Server
和客戶端應用程序之間傳輸的所有數據進行加密
Ⅳ sqlserver 2000 區域網連接問題
確定是否可以連接到sqlserver資料庫.(可利用odbc等連接方式)
檢查sqlserver的安全驗證模式(混合驗證或windows驗證),如果用戶使用sqlserver分配的用戶名密碼(例如sa),混合驗證模式必須打開
Ⅵ 區域網連接不到資料庫
可以通過本地機的數據提供者直接訪問資料庫,sqlserver 是提供了網路訪問功能的dbms系統。無需重寫winsock。
使用ado,在連接字元串中把伺服器地址/用戶名/密碼寫入就可以直接訪問資料庫了。
Provider=sqloledb;Data Source=[hostname];Initial Catalog=[dbname];User Id=[username];Password=[password];
更換伺服器地址就需要重寫連接字元串,不過可以把這類敏感信息加密到2進制文件中,在程序中動態調用。常見方法是使用配置文件的多伺服器鏡像,則更換伺服器後可以從其他來源獲得新伺服器信息。
但是不推薦這種做法,打破了一般聊天程序的體系結構。之前你說的方法是一般分布式程序的常見做法,有很多現成方案可用,也無需從socket開始寫。
Ⅶ 3.區域網中的 MSSQL 伺服器在什麼情況下能夠被 SQL server Snifer 嗅探到
摘要 您好,您的問題我已經看到了,正在整理答案,請稍等一會兒哦~
Ⅷ 如何設置SQL SERVER才能保證只有區域網才能訪問
1開始——>Microsoft
SQL
Server
2008——>配置工具—zd—>Sql
Server
配置專管理器——>
Sql
Server
網路配置——>MSSQServer協議屬——>
禁用TCP/IP協議
2開始——>Microsoft
SQL
Server
2008——>配置工具——>Sql
Server
配置管理器——>
SQL
Native
Client
10.0
配置——>客戶端協議——>禁用TCP/IP協議
Ⅸ winsock區域網間的連接問題,,,。。。。
問題應該是處在這
Winsock1.Connect
Command1.Enabled = False
Do
DoEvents
Loop Until Winsock1.State = sckConnected Or Winsock1.State = sckError
在你自己機器上連接的時候是不存在網路延遲的,所以基本跳過了連接後的循環,而到了你朋友機器上的時候變有了網路延遲,你的Do循環是非常佔用CPU使用率的所以導致上面的Connect命令出現問題,也就是winsock的state永遠不會達到條件。你可以將連接放入一個Timer控制項里來解決這個問題,比如你設置timer每500毫秒執行一次連接(當然先判斷Winsock是否是正在連接或已經斷開連接)如果連接N次還沒連接上那就是網路問題了,應該很少有網路延遲超過3000毫秒吧。
Dim Ci as Long
Private Sub Timer1_Timer()
On Error Resume Next
Ci = Ci + 1
If Form1.Winsock1.State <> 7 And Form1.Winsock1.State <> 6 Then
Form1.Winsock1.Close
Form1.Winsock1.Connect
ElseIf Form1.Winsock1.State = 7 Then
Ci = 0
Form1.Timer1.Enabled = False
MsgBox "連接成功"
Exit Sub
End If
If Ci = 6 Then
Ci = 0
Form1.Timer1.Enabled = False
MsgBox "連接伺服器失敗,請稍後重試", vbOKOnly, "提示"
End If
End Sub
以上原因純屬個人猜測,你試一試,如果不行告訴我,再一起研究一下
Ⅹ MsSQLServer是如何加密口令的
SQL SERVER的口令到資料庫存儲的加密方法,也是讓人怪異的。其過程如下:
在獲得網路解密密碼的口令以後在
005F9D5A處call SQLSORT_14,實現一個轉換為大寫口令緩沖進行保存。
然後在004def6d處調用一個函數取出資料庫中的加密的PASSWORD,其形式如下:
2個位元組的頭0x0100(固定)
4個位元組的HASH加秘KEY
20個位元組的HASH1
20個位元組的HASH2
如我取出的一個例子:
fx:0x0100 1751857F
固定 補充KEY HASH1 HASH2
口令是:123456
SQL首先用4個位元組的HASH加秘KEY補上其兩處口令的緩沖,一個為大寫,一個為小寫。然後其加密過程如下C函數
CryptAcquireContextW(&hProv,NULL,L("Microsoft Base Cryptographic Provider v1.0"),1,0xf0000000);
CryptCreateHash(hProv,0x8004,NULL,NULL,&hhash);
CryptCreateHash(hProv,0x8004,NULL,NULL,&hHash);
005F9DFE:
CryptHashData(hhash,passwdbuf,0x12,NULL);passwdbuf是小寫的passwd緩沖區,然後附加一個KEY,如上例子就是對
{'1','2''3''4''5''6',0x17,0x51,0x85,0x7F}這樣的一個字串進行HASH加密
CryptHashData(hHash,PASSWDBUF,0x12,NULL);PASSWDBUF是大寫的passwd緩沖區,然後附加一個KEY
005F9E3E:
CryptGetHashParam(hhash,2,&passwdout,&outlen,0);取出passwdbuf是小寫的passwd的加密值
CryptGetHashParam(hHash,2,&PASSWDOUT,&OUTLEN,0);取出passwdbuf是大寫的passwd的加密值
這兩個相加就是真正的資料庫中的PASSWORD加密欄位
為什麼說以上方法是脆弱的呢?其實其真正的加密長度生成只有20個位元組。
小寫口令的HASH1+大寫口令的HASH1拼接的40位HASH值的安全度還不如一個直接20位的HASH值來得安全。因為大家都知道這兩個值的因果關系,
提供給了解密者更多的信息。
如因為其演算法一樣,如果HASH1=HASH2,就可以判斷口令肯定是未使用字母,只使用了數字和符號的口令,如上取出的123456口令的HASH,兩個HASH完全相等。
就是使用了字母,其知道補充的KEY,演算法,兩個加密字串的關系,其解應該也是大大的簡化了。
當然我沒研究過加密演算法,只是感覺上這種加密方式真是不安全,呵呵,希望解密演算法的高手指點。