---
title: scan
---
### Docker
1. docker start 9f7e7b4e46e2
2. docker exec -it 9f7e7b4e46e2 /bin/bash
3. apt-get update
#### install git if required
4. apt install git
5. git --version
6. apt-get install python3.6
7. apt-get install python-pip python-dev build-essential
#### install python if required
---
- encrypted295b
1. git clone https://github.com/sushmai/scan
- Asks for login as repository is private
2. cd scan
3. pip install -r requirements.txt
4. python s3scanner.py -l -d cmpe235sjsu (When you know bucket name, if not you can search using key words such as not closed us-west)
5. ls
6. you can see a folder with open bucket names
7. cd and ls - now you can see all files as credentials are not setup properly
---
```
flaskblog - app
run == run_app
post = alert
new_post = new_alert
```
#### UI:
iterm - navigate to project folder
>>> from run_app import db
- (run_app.py)
- Get's below response if no error found
- (SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and)
>>> db.create_all()
- This creates new file named "site.db"
- Right now it is empty, let's add data to it
#### add user
>>> from app import User, Post
>>> user_1 = User(username="sushma", email='sushmaviera@gmail.com', password='password')
- Add the above user to database
>>> db.session.add(user_1)
- No errors means user added only comitted to database with below command
>>> db.session.commit()
- We can commit multiple users at the same time
>>> user_2 = User(username="Matan", email='matan@cba.com', password='password')
>>> user_3 = User(username="Khurram", email='Khurram@cba.com', password='password')
>>> db.session.add(user_2)
>>> db.session.add(user_3)
>>> db.session.commit()
- To see all the users
>>> User.query.all()
>>> db.drop_all()
- To empty all the tables
---
User authentication - password hashing
to decrypt default flask comes with an inbuilt module
>>>sudo pip install flask-bcrypt
- Encrypt:
XXX-Pro:CBA_UI aquaman$ python
Python 2.7.16 (default, Oct 16 2019, 00:34:56)
[GCC 4.2.1 Compatible Apple LLVM 10.0.1 (clang-1001.0.37.14)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from flask_bcrypt import Bcrypt
>>> bcrypt = Bcrypt()
>>> bcrypt.generate_password_hash('test')
'$2b$12$kLHteENeGZnO3SsN5fnrKOzT2hXemYIC8qFYyqAeJXb6JohMmeQOe'
- Now it encrypted a sample password
- let's see how to decrypt
When some one try to decrypt it everytime the output will be different so it's now possible to decrypt it.
- Example:
>>> bcrypt.generate_password_hash('test').decode('utf-8')
u'$2b$12$e1Y7s/JZ4kXhmKPizTTW6edzgigFAZW3NI7CwpQVdLoX7NYiCq6HK'
>>> bcrypt.generate_password_hash('test').decode('utf-8')
u'$2b$12$8PzxVQH3nNhxn4WqH0fAf.1GxYReIYAQu3H9sj.2EytV2yQqjnN4W'
>>> bcrypt.generate_password_hash('test').decode('utf-8')
u'$2b$12$yPOwCdbQYl6zwACXhSjdP.ETKAwEe9h91sW2fczIF6Il5rESVKB8K'
>>> bcrypt.generate_password_hash('test').decode('utf-8')
u'$2b$12$Pu9SDFljcZyEbUhW9y/VZ.Q2TxssJcGp21vWgbPi6a3/9fYoPoyO2'
everytime repsonse is different so unable get hold on password.
### how CBA will do authentication ?
>>> hashed_pw = bcrypt.generate_password_hash('test').decode('utf-8')
save the hash.
Testing:
>>> bcrypt.check_password_hash(hashed_pw, 'password')
False
>>> bcrypt.check_password_hash(hashed_pw, 'test')
True
This shows rainbow table is still possible if hacker gets hold on hash value, we highly encourage users to have randomized passwords.
# verify:
- create a user through registration
- and check DB
>>> from app.models import User
>>> user = User.query.first()
>>> user
<User u'suma'>
>>> user.password
u'$2b$12$wmj9k57LMvFqWJTNHwIo7.vcYzWWgjMy/RtfILS0hh/cs23acZv9e'
>>>
---
user now can send all scan request so lets how can we see who sent us request
- from app.models import User, Post
- posts = Post.query.all()
---
- from itsdangerous import TimedJSONWebSignatureSerializer as Serializer
---
#### Pending
- [ ] Html image with button account.html
- [ ] email alert
---
Run app :
- python run_app.py
Go to Data base:
- python
- from app.models import User, Post
Add users:
test1@cba.org
testing
---
*** Test Cases ***
Testcase1_passwordtest
Open Browser ${URL} ${Browser}
Input Text id:"email" Earth15@gmail.com
Input Text id:"password" Abs23d
Click Element name:"submit"
close Browser
Testcase1_passwordtest
Open Browser ${URL} ${Browser}
Input Text id:"email" test1@cba.org
Input Text id:"password" testing
Click Element name:"submit"
close Browser
---
##### AWS CLI
1. Install and verify for me
- /Users/aquaman/bin/aws --version
2. set up credentials
- try ro see the bucket
- aws s3 ls s3://bucket-name/path/to/file
- From public bucket
- /Users/aquaman/bin/aws s3 ls s3://cba1sjsu295b
- From my ownbucket list:
- /usr/local/bin/aws s3 ls
#upload files:
- aws s3 cp ~/Downloads/file1.zip s3://bucket-name/path/to/destination --acl public-read
-
- sudo /Users/aquaman/bin/aws s3 cp ~/Downloads/encrypted s3://cba1sjsu295b --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers --recursive
- aws s3 cp <your directory path> s3://<your bucket name> --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers --recursive
http://cba1sjsu295b.s3-website-us-east-1.amazonaws.com/
---
Summary:
- Not doing any test on encrypted files.
---