標籤:
1、 使用shell把“12306使用者名稱和密碼庫-不要使用記事本開啟會卡死-解壓後可使用word或ultraedit開啟.rar”中的所有記錄成生sql語句,然後把sql匯入資料庫,成一個uPwd_12306表。欄位自己定義。
擴充:請分析一下“12306使用者名稱和密碼庫”中密碼的形成特點並總結。
2、複製出“12306使用者名稱和密碼庫-不要使用記事本開啟會卡死-解壓後可使用word或ultraedit開啟.rar”所有郵箱和密碼欄位,使用u_id,郵箱,密碼欄位建立一個獨立的表uPwd。對uPwd表建立索引,方便後期自己後期暴力破解帳號時,尋找使用者名稱和密碼
3、查看uPwd_12306表中是否有自己的姓名的記錄
4、尋找出uPwd_12306表中所有90後記錄並成生視圖uPwd_90。(出生年>=1990)
1.先將檔案copy過來
解決中文亂碼問題:
[[email protected] ~]# find / -name vimrc
/etc/vimrc
[[email protected] ~]# vim /etc/vimrc
set fileencodings=utf-8,gb2312,gbk,gb18030
set termencoding=utf-8
set fileformats=unix
set encoding=prc
寫指令碼
[[email protected] ~]# vim make_12306_table.sh
#!/bin/bash#made by ygy 2016-10 #translate Convert a newline symbol,# Write SQL sentences such as insert into table_name values(‘a‘,‘b‘);file=/home/yy/#convert \r to ‘‘sed -i ‘s/\r//‘ "$file"12306.txtmysql -e ‘create database if not exists 12306_data;‘ -usystem -p123456echo ‘DROP TABLE IF EXISTS uPwd_12306;‘>"$file"12306_mid.sqlecho "CREATE TABLE uPwd_12306 ( uid int primary key auto_increment, uname varchar(40) not null default ‘‘, paw varchar(25) not null DEFAULT ‘‘, realname varchar(30) not null DEFAULT ‘‘, gmsfhm varchar(18) not null DEFAULT ‘‘, other varchar(25) not null DEFAULT ‘‘, tel varchar(11) not null DEFAULT ‘‘, email varchar(40) not null DEFAULT ‘‘ );">>"$file"12306_mid.sqlsed ‘s/----/‘\‘,\‘‘/g‘ "$file"12306.txt |awk ‘{print "insert into uPwd_12306(uname,paw,realname,gmsfhm,other,tel,email) values(‘\‘‘"$0"‘\‘‘);"}‘>>"$file"12306_mid.sqlmysql -usystem -p123456 12306_data < "$file"12306_mid.sql
View Code
運行報錯
上網查了下原因,因為資料太多。要修改一下下面的配置,對應linux是my.cnf
重啟mysql
[[email protected] ~]# service mysqld restart
再次運行
[[email protected] ~]# ./make_12306_table.sh
ERROR 1064 (42000) at line 2279: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘210504197710140512‘,‘licheng1977‘,‘13942443523‘,‘[email protected]‘);
報錯,我查看一下中間檔案
發現這條資料是中文是亂碼。
明明已經轉了編碼,為什麼有的字是亂碼。
經過研究,原先上傳的12306.txt的編碼是utf8,使用notepad++開啟,中文是亂碼,
將格式轉成ansi後,中文能正確顯示出來,因此,將顯示正確的內容剪下,然後調整編碼格式為utf8,再把剪下的內容粘貼上去。
然後再把這個轉碼後的12306.txt上傳到linux。
這個方法可行,嘗試的其他方法都沒有行得通。
再次運行
[[email protected] ~]# ./make_12306_table.sh
經過等待後,進入mysql驗證一下。
驗證成功!
2.
mysql> create table if not exists uPwd ( uid int(10) primary key, upwd varchar(25), email varchar(40));
匯入資料
mysql> insert into uPwd ( uid, upwd, email)select uid,paw,email from uPwd_12306;
Query OK, 131653 rows affected (0.52 sec)
Records: 131653 Duplicates: 0 Warnings: 0
3. mysql> select * from uPwd where email like ‘4145965‘;
4. mysql> create view uPwd_90 as select * from uPwd_12306 where substring(gmsfhm,7,4)>=1990;
Query OK, 0 rows affected (0.00 sec)
2-17作業 資料庫和shell綜合練習