How to use Codeception & Webdriver

Bỏ codeception lâu quá gần như quên sạch. Nên thôi giờ có dịp work on it again nên write down lại để nhớ.

https://codeception.com/quickstart

https://docs.seleniumhq.org/download/

https://sites.google.com/a/chromium.org/chromedriver/downloads

Composer để install codeception

composer require codeception/codeception --dev

From now on Codeception (with installed PHPUnit) can be run as

php vendor/bin/codecept

Init

php vendor/bin/codecept bootstrap

Edit acceptant file

# Codeception Test Suite Configuration
#
# Suite for acceptance tests.
# Perform tests in browser using the WebDriver or PhpBrowser.
# If you need both WebDriver and PHPBrowser tests - create a separate suite.

actor: AcceptanceTester
modules:
  enabled:
  - WebDriver:
      url: 'http://localhost/phpmyadmin'
      window_size: false
      port: 9515
      browser: chrome
      capabilities:
        chromeOptions:
          binary: ''
  • Binary sẽ là path đến chrome binary
  • URL dĩ nhiên là path đến trang cần làm việc

Okay giờ cần chạy ChromeDriver trước

chromedriver --url-base=/wd/hub

Rồi chạy codeception

php vendor/bin/codecept run

[Security][Trust no one]

Well … nói rõ trước rằng: Bài viết này không quá nặng vào các kĩ thuật thật sự của ngành security, chỉ thuần túy là các logic cơ bản mà bất kì ai cũng có thể nghĩ & làm được.

Tạm khoanh vùng trong việc secure account Facebook.

Hack ??? Mọi người cứ nghĩ nó là cái kĩ thuật gì đó cao siêu, kinh khủng lắm. Thưa, nó chỉ là những thứ rất bình dân – dĩ nhiên có những bugs rất thú vị nhưng đó là 1 mảng khác chuyên sâu – cái ta nói chỉ là Social Engineering.

1 điều rất cơ bản của cuộc sống là gì … ??? Không tin BẤT KÌ MỘT AI, ngay cả chính bản thân.

Okay vậy mở màng thế thôi. Giờ listing các vấn đề nhe

  • Không bao giờ đặt 1 password cho hơn 1 trang. Yup. Tất nhiên cũng có ngoại lệ. Ba cái trang xàm xí thì có thể đặt cũng được, miễn nó không chứa BẤT KÌ LIÊN KẾT NÀO với những trang quan trọng khác.
  • Không đặt password … chính mình nhớ được. Hờ hờ … 1 ngày nào đó đám an ninh Cộng sản nó gông đầu bạn và quánh bắt khai password thì sao ??? Bạn sẽ khai nếu bạn nhớ password chính bạn. Vậy thì hãy làm cho chính bạn KHÔNG THỂ NHỚ. Dĩ nhiên không có write down ra nhe. Còn làm sao thì tự suy nghĩ.
  • Không publish personal information. ID / Birthday bla bla … haha có mấy cái information này thì exploit như ngóe nhe :3

Cơ bản là thế. Và khi advanced thì sao … Nói là advanced chứ thật ra cũng basic thấy bà nhưng éo ai care

  • OTP . Định mệnh. Éo tin là ngày nay có người éo bao giờ chịu bật OTP lên để secure account mình :v …. Thôi thì ngu nên chết là phải rồi :v
  • Notifications luôn phải được giám sát 24/24 … Exactly 24/24 … Hình dung khi bạn đang ngủ và có ai đó cố gắng access vào Facebook bạn thì sao ??? Hờ … cứ ngủ đi rồi thì mất account hỏi sao ngu. Đảm bảo bạn có thiết bị bật alarm và không set slient kể cả khi ngủ nhá. Còn nếu bạn không muốn vậy mà muốn ngủ ngon … thôi dẹp mẹ nó social life và đi nhảy lầu đi :v. Đời không như là mơ.
  • Smartphone ( k tính feature phone vì tạm xem như thời nay không ai xài ) không bao giờ để Notifications content show ra ngoài lock screen . Lolz :v . Set OTP rồi để notifications content ngoài lock screen thì mình chỉ cần liếc qua là xem như có OTP luôn.
  • Các accounts phải được register bằng 1 email mà không bao giờ sử dụng … !
  • Sim chứa số phone dùng cho OTP cũng không bao giờ được sử dụng trong cuộc sống. Nó chỉ duy nhất dành cho mục đích nhận OTP, không hơn không kém.
  • Phone chứa sim OTP … phải khác phone sử dụng hàng ngày và không cài bất kì application nào trừ app OTP, banking … etc. Và dĩ nhiên phone đó phải có sự tin tưởng nhất có thể về mặt secure.
  • Luôn và định kì kiểm tra mọi accounts
    • Change password thường xuyên và ngẫu nhiên. Nhưng dưới 15 ngày / 1 lần.
    • Kiểm tra liên tục mỗi ngày không có log access lạ.
    • Không bao giờ cho phép devices lạ nằm trong danh sách trusted devices.
    • Clear hết logged sessions / trusted devices định kì ( hoặc ngẫu nhiên ).

Còn gì nữa hơm ta … Sao bình thường nhớ mà giờ quên zồi ???

Thôi tạm vậy. Có gì update part 2 sau :v

[Update]

  • Về mặt smartphone. Khi cài bất kì application nào vui lòng đọc kĩ nó request permissions gì trên máy. 1 cái app Calculator mà request permission read SMS, call phone, location mà không đặt câu hỏi và nghi ngờ thì chuẩn ngu ISO luôn !
  • Trên desktop không chạy bất kì application nào mà download từ trang lạ trên máy thực. Mọe. Máy ảo như VirtualBox / VMWare sinh ra để làm gì ??? ( btw chạy trong 2 em này cũng có risky là con malware đó có thể exploit bugs để vượt ra khỏi virtual OS … )
  • Luôn inspect khi ai đó, hoặc trang nào đó đưa 1 cái link mà có dấu hiệu nghi ngờ. Mọe. Nó ghi là abc mà anchor href nó trỏ tới cde thì bố láo rồi. Thôi tốt hơn gõ tay đi !!! Rule là don’t trust anyone even yourself mà !!!
  • Khi vô 1 trang lạ mà nó request login thì phải inspect luôn. Check luôn SSL, Domain registration etc … check hết ! Có tin được 1 trang mà domain mới mua hôm qua, mà hôm nay có form hiện đòi password Facebook hơm :v Phắc :v.

Fetch all images from JKF

Alright. Đi vô vấn đề luôn

Forum này là 1 forum vô số ảnh 18+. Thú vị, rite ? Mà hình thì toàn HQ… Vấn đề là làm sao fetch hết về. Đừng có nói là download bằng tay nhá. Vãi ngu lắm ! Vậy sao.

Inspect thử:

  • Em nó bắt phải click button Read the full story ( thật ra nó là tiếng Hoa, Google translate ra thôi ).
  • Sau khi click xong nó sẽ reload lại và có full images.
  • Image sẽ có URL dạng: https://www.mymypic.net/data/attachment/forum/201809/11/16201984kjsll9xs1s49ji.jpg.thumb.jpg . Chỉ cần bỏ .thumb.jpg là có original.

Okay. Vậy xem như vấn đề được giải quyết 1 phần. Phần tiếp theo là khi click Read the full story nó làm cái con mẹ gì.

  • Dùng chrome inspect. Thật chất nó đi vòng vòng và roài cuối cùng là submit 1 cái form “thankyou”
  • Form này có vài information cơ bản. Userid của mình. Userid của author và 1 đoạn hash.

Như vậy nếu viết tool fetch hình tự động thì làm sao. Làm sao … làm sao … kệ mẹ mày chớ :v . Jk

  • Get data lần 1
  • Parse HTML để lấy cái form “thankyou” và data
  • Post lên
  • Get lại lần 2. Giờ cứ thế parse img ra và download thôi

Nhưng như vậy thì có gì đó hơi mất công vì phải GET / POST & GET … suy nghĩ thêm nào …