## DATA FORMATS
### Định nghĩa:
- Data fomats( định dạng dữ liệu) được hiểu với mục đích lưu trữ trao đổi dữ liệu với nhau theo 1 cấu trúc nhất định nào đó.
- OpenSSL là thư viện phần mềm sử dụng để đăng ký chứng chỉ số trong đó có giao thức SSL, có thể tạo ra các tham số chính RSA, DH hay DSA và mã hoá hoặc giải mã chúng bằng mật mã.
- vd:
- PEM: bao bọc dữ liệu được mã hóa base64 bằng đầu và chân trang
- DER: một loại mã hóa TLV và dùng khi cần mã hóa duy nhất, tuần tự hóa duy nhất.
- SSH Keys(Giao thức vỏ bảo mật):sử dụng mật mã để thiết lập một kênh an toàn trên một mạng không an toàn(internet) sử dụng các cặp khóa công khai-riêng tư để xác thực
- X509: để xác thực máy chủ
=> thường đưa về PEM file để đọc.
### Privacy-Enhanced Mail?

note:
- tải và lưu PEM file và code chung folder
- sử dụng hint để decode.
- sử dụng module RSA
```
from Crypto.PublicKey import RSA
```
- mở tệp ``` open(file, mode)```
- đọc file bằng ``` RSA.importKey()```
input:
```
from Crypto.PublicKey import RSA
f = open("privacy_enhanced_mail_1f696c053d76a78c2c531bb013a92d4a (4).pem", mode='r') #'r':chi_doc
key = RSA.importKey(f.read())
print(key.n)
```
output:
15682700288056331364787171045819973654991149949197959929860861228180021707316851924456205543665565810892674190059831330231436970914474774562714945620519144389785158908994181951348846017432506464163564960993784254153395406799101314760033445065193429592512349952020982932218524462341002102063435489318813316464511621736943938440710470694912336237680219746204595128959161800595216366237538296447335375818871952520026993102148328897083547184286493241191505953601668858941129790966909236941127851370202421135897091086763569884760099112291072056970636380417349019579768748054760104838790424708988260443926906673795975104689
### CERTainly not:

note:
- định dang file der về file pem
- lưu file và code cùng folder
input:
```
from Crypto.PublicKey import RSA
f = open("2048b-rsa-example-cert_3220bd92e30015fe4fbeb84a755e7ca5.der", mode='rb')
key = RSA.importKey(f.read()) #'rb':dinh_dang_file_ve_dang_nhi_phan
print(key.n)
```
output:
```
22825373692019530804306212864609512775374171823993708516509897631547513634635856375624003737068034549047677999310941837454378829351398302382629658264078775456838626207507725494030600516872852306191255492926495965536379271875310457319107936020730050476235278671528265817571433919561175665096171189758406136453987966255236963782666066962654678464950075923060327358691356632908606498231755963567382339010985222623205586923466405809217426670333410014429905146941652293366212903733630083016398810887356019977409467374742266276267137547021576874204809506045914964491063393800499167416471949021995447722415959979785959569497
```
### SSH Keys


note:
- đưa file pub về file pem tương tự như đưa der về pem
input:
```
from Crypto.PublicKey import RSA
f = open("bruce_rsa_6e7ecd53b443a97013397b1a1ea30e14.pub", mode='rb')
key = RSA.importKey(f.read())
print(key.n)
```
output:
```
3931406272922523448436194599820093016241472658151801552845094518579507815990600459669259603645261532927611152984942840889898756532060894857045175300145765800633499005451738872081381267004069865557395638550041114206143085403607234109293286336393552756893984605214352988705258638979454736514997314223669075900783806715398880310695945945147755132919037973889075191785977797861557228678159538882153544717797100401096435062359474129755625453831882490603560134477043235433202708948615234536984715872113343812760102812323180391544496030163653046931414723851374554873036582282389904838597668286543337426581680817796038711228401443244655162199302352017964997866677317161014083116730535875521286631858102768961098851209400973899393964931605067856005410998631842673030901078008408649613538143799959803685041566964514489809211962984534322348394428010908984318940411698961150731204316670646676976361958828528229837610795843145048243492909
```
### Transparency:

- bài này sẽ liên quan đến miền phụ
- tìm miền phụ của cryptohack.org
- 
- search https://thetransparencyflagishere.cryptohack.org sẽ ra flag
flag
```
crypto{thx_redpwn_for_inspiration}
```
