Saturday, December 22, 2018

Một số máy ảo dựng sẵn cho VMware Workstation

Máy ảo Windows XP



Link dowload Windows XP for VMware => http://123link.pw/Uw6zPKqK




Máy ảo Windows 7 32bit



Link dowload Windows 7 32bit for VMware => 
http://123link.pw/YMYgOTj




Máy ảo Window 10 64bit

Link dowload Windows 10 64bit for VMware => http://123link.pw/lyh8


Máy ảo Ubuntu 16.04LTS



Link dowload Ubuntu 16.04 LTS 64bit GUI for VMware =>
 http://123link.pw/5qjp

user: sa
pass: 123


Máy ảo CentOS 7

Link dowload CentOS 7 for VMware => http://123link.pw/RtBYxAfI


Máy ảo MacOS 10



Link dowload MacOS 10 for VMware => 
http://123link.pw/kx60MakC

Wednesday, November 7, 2018

Ảo hóa và mục tiêu của Ảo hóa

1. Ảo hóa là gì?


Công nghệ ảo hóa được xem như một môn khoa học nghệ thuật tạo ra chức năng của một đối tượng phần mềm giống với đối tượng vật lý tương ứng. Nói một cách đơn giản, bạn có thể  xem ảo hóa là công nghệ giả lập phần cứng máy tính để chạy phần mềm trên nền tảng giả lập đó. Công nghệ ảo hoá tạo ra tầng trung gian giữa phần cứng và phần mềm nhằm quản lý, phân chia tài nguyên phần cứng cho phần mềm hoạt động.

Ảo hóa có các hình thức cơ bản sau:
  • Ảo hóa hệ thống máy chủ
  • Ảo hóa hệ thống lưu trữ
  • Ảo hóa ứng dụng
  • Ảo hóa hệ thống mạng
Trong số đó, công nghệ ảo hóa máy chủ được xem là phổ biến nhất. Nó cho phép một máy chủ vật lý đơn lẻ có khả năng phân chia thành nhiều máy chủ ảo độc lập (Virtual Private Server - VPS). Mỗi VPS đều sở hữu hệ thống riêng biệt, gồm hệ điều hành và các ứng dụng riêng. Ngoài ra, hình thức khởi tạo máy chủ ảo (máy chủ ảo Cloud – Cloud VPS) từ một hạ tầng ảo hóa cũng đang trở nên rất phổ biến.

2. Mục tiêu của ảo hóa


Ảo hóa nhắm vào các mục tiêu chính: Ổn định (Scalability), Sẵn sàng (Availability), Quản trị (Management) và Tối ưu (Optimization).
  • Tính ổn định: Cho phép tùy biến, thu hẹp hay mở rộng mô hình máy chủ một cách dễ dàng mà không làm ứng dụng gián đoạn.
  • Tính sẵn sàng: Giúp ứng dụng luôn hoạt động bằng việc giảm thiểu thời gian downtime khi khi nâng cấp, di chuyển hoặc sửa lỗi phần cứng.
  • Tính quản trị: Tăng cường khả năng quản lý tập trung, giúp việc quản lý trở nên khoa học và dễ dàng.
  • Tính tối ưu: Cho phép sử dụng triệt để tài nguyên phần cứng và tránh lãng phí các thiết bị vật lý như máy chủ, bộ chuyển, đường truyền…
Trên thực tế, có không ít các công ty lâu đời sử dụng hạ tầng công nghệ thông tin cũ. Hệ thống máy tính của họ được thiết kế chỉ để chạy trên một hệ điều hành/ứng dụng trong một lần. Điều này khiến doanh nghiệp phải dùng nhiều máy chủ cho một hoạt động trong khi không đạt được hiệu suất cao.
Mặc khác, chính sự mở rộng và yêu cầu kinh doanh đã dẫn đến việc chuyển dịch hạ tầng công nghệ thông tin sang công nghệ ảo hóa. Chi phí tiết kiệm được nhờ ảo hóa sẽ dành cho mục đích phát triển việc kinh doanh. Công nghệ ảo hoá còn khiến cho việc bảo trì nâng cấp dễ dàng hơn rất nhiều so với hạ tầng vật lý. Đồng thời, công nghệ này cũng đem lại tính ổn định, tính sẵn sàng cao, tối ưu tài nguyên và cho phép người dùng quản trị dễ dàng. Nhờ vậy, không chỉ các công ty lớn mà những tổ chức vừa và nhỏ cũng có thể ứng dụng công nghệ này.

3Công nghệ ảo hóa phổ biến


Công nghệ ảo hóa ra đời nhằm khai thác triệt để khả năng làm việc của phần cứng trong một hệ thống máy chủ, giúp phân chia một máy chủ vật lý thành nhiều máy chủ ảo. Ảo hóa hoạt động như một tầng trung gian giữa hệ thống phần cứng và phần mềm chạy trên nó. Hiện nay, VPS sử dụng một số công nghệ ảo hóa phổ biến sau:
OpenVZ: OpenVZ (Open Virtuozzo) được biết đến như một công nghệ ảo hóa không hoàn toàn. Đây là một hệ thống cấp công nghệ ảo hóa hoạt động dựa trên 1 nhân Linux, do đó tất cả VPS chỉ có thể chạy duy nhất hệ điều hành Linux. Ưu điểm: giá thành rẻ, do không có nhân riêng nên OpenVZ VPS chạy nhanh và hiệu quả, dễ dàng nâng cấp tài nguyên mà không cần khởi động lại VPS. Nhược điểm: tất cả các máy chủ ảo phải sử dụng chung 1 nhân duy nhất, việc cấp phát bộ nhớ OpenVZ VPS không được tách biệt (bộ nhớ được cấp phát cho VPS có thể bị sử dụng bởi VPS khác trong trường hợp VPS kia yêu cầu). Nếu bạn đang tìm VPS Windows giá rẻ, đây sẽ là một sự lựa chọn hợp lý!
XEN: XEN là công nghệ ảo hóa thực sự cho phép chạy cùng lúc nhiều máy chủ ảo VPS trên 1 máy chủ vật lý. Ưu điểm: không như OpenVZ, XEN cho phép mỗi VPS chạy nhân riêng của nó, do đó VPS có thể chạy cả Linux hay Windows. XEN VPS cũng được cấp phát tài nguyên độc lập từ máy chủ. Nhược điểm: XEN VPS yêu cầu tài nguyên vật lý đầy đủ cho mỗi VPS nên thường có giá đắt hơn OpenVZ VPS.
KVM (Kernel-based Virtual Machine): KVM là công nghệ ảo toàn phần, cho phép ảo hóa thực sự trên nền tảng phần cứng máy chủ. Nhờ vậy, KVM VPS được cấp phát tài nguyên riêng biệt, độc lập với VPS khác trên cùng một node. Máy chủ vật lý chạy hệ điều hành Linux, nhưng VPS có thể chạy cả Linux và Windows. Chính vì những ưu điểm này nên KVM VPS có giá đắt hơn OpenVZ VPS.

Friday, August 3, 2018

Bộ dữ liệu KDD99!

http://kdd.ics.uci.edu/databases/kddcup99/task.html
Các IDS có nhiệm vụ phát hiện ra connection nào là tốt, connection nào là xấu để cảnh báo. KDD99 được tạo ra năm 1999 bởi MIT Lincoln Labs. Nó được thu thập trong 9 tuần trong các mạng LAN giả lập mạng U.S. Air Force. Dữ liệu gốc (raw) chứa khoảng 4 GB các dữ liệu nhự phân TCP Dump của traffice mạng trong 7 tuần. Tương tự, dữ liệu test được tạo trong 2 tuần với khoản 2 triệu connection được ghi lại. Từ các dữ liệu thực tế được chuẩn hoá, mỗi connection được gán nhãn là "normal" hay "attack", mỗi connection chứa khoảng 100byte. Có 4 nhóm tấn công chính:
  • DOS: denial-of-service, e.g. syn flood;
  • R2L: unauthorized access from a remote machine, e.g. guessing password;
  • U2R:  unauthorized access to local superuser (root) privileges, e.g., various ``buffer overflow'' attacks;
  • probing: surveillance and other probing, e.g., port scanning.
Điều quan trọng là tập test không nằm trong giải phân bố xác suất của tập train và chứa những kiểu tấn công không trong tập train. Dataset chưa 24 kiểu tấn công, với 14 kiểu tấn công chỉ có trong tập test, gồm:
ack dos
buffer_overflow u2r
ftp_write r2l
guess_passwd r2l
imap r2l
ipsweep probe
land dos
loadmodule u2r
multihop r2l
neptune dos
nmap probe
perl u2r
phf r2l
pod dos
portsweep probe
rootkit u2r
satan probe
smurf dos
spy r2l
teardrop dos
warezclient r2l
warezmaster r2l

Các nhóm đặc trưng trong 41 đặc trưng của KDD99:

feature namedescription type
duration length (number of seconds) of the connection continuous
protocol_type type of the protocol, e.g. tcp, udp, etc. discrete
service network service on the destination, e.g., http, telnet, etc. discrete
src_bytes number of data bytes from source to destination continuous
dst_bytes number of data bytes from destination to source continuous
flag normal or error status of the connection discrete 
land 1 if connection is from/to the same host/port; 0 otherwise discrete
wrong_fragment number of ``wrong'' fragments continuous
urgent number of urgent packets continuous
 
Table 1: Basic features of individual TCP connections.

feature namedescription type
hot number of ``hot'' indicatorscontinuous
num_failed_logins number of failed login attempts continuous
logged_in 1 if successfully logged in; 0 otherwise discrete
num_compromised number of ``compromised'' conditions continuous
root_shell 1 if root shell is obtained; 0 otherwise discrete
su_attempted 1 if ``su root'' command attempted; 0 otherwise discrete
num_root number of ``root'' accesses continuous
num_file_creations number of file creation operations continuous
num_shells number of shell prompts continuous
num_access_files number of operations on access control files continuous
num_outbound_cmdsnumber of outbound commands in an ftp session continuous
is_hot_login 1 if the login belongs to the ``hot'' list; 0 otherwise discrete
is_guest_login 1 if the login is a ``guest''login; 0 otherwise discrete
 
Table 2: Content features within a connection suggested by domain knowledge.

feature namedescription type
count number of connections to the same host as the current connection in the past two seconds continuous
Note: The following  features refer to these same-host connections.
serror_rate % of connections that have ``SYN'' errors continuous
rerror_rate % of connections that have ``REJ'' errors continuous
same_srv_rate % of connections to the same service continuous
diff_srv_rate % of connections to different services continuous
srv_count number of connections to the same service as the current connection in the past two seconds continuous
Note: The following features refer to these same-service connections.
srv_serror_rate % of connections that have ``SYN'' errors continuous
srv_rerror_rate % of connections that have ``REJ'' errors continuous
srv_diff_host_rate % of connections to different hosts continuous 
 
Table 3: Traffic features computed using a two-second time window.

Monday, May 21, 2018

Tấn công Router, Camera IP!



Cảnh báo tấn công DOS từ thiết bị IoT

Nghiên cứu mới nhất phát hiện lỗ hổng CVE 2018-9995 Chiếm tài khoản Admin trên Camera chỉ bằng một dòng lệnh 


Tìm hiểu Audit trên linux!!!


Audit là một framework được tích hợp sẵn vào trong nhân linux, cung cấp thông tin chi tiết để thanh tra các hoạt động hệ thống một mức rất chi tiết. 
Nó có thể:
1. Giúp người dùng giám sát các tiến trình có nguy hiểm đến hệ thống hay hành vi xảy ra trên hệ thống một các chi tiết
2. Cung cấp chức năng lọc, xây dựng báo cáo để có thể trích xuất thông tin được audit log lưu lại. Chúng ta có thể filter theo các mục sau:

• User
• Group
• AuditID
• RemoteHostname
• RemoteHostAddress
• SystemCall
• SystemCallArguments • File
• FileOperations
• SuccessorFailure 
3. Việc Audit những sự kiện nội dung nào do người dùng định nghĩa để đảm bảo khả năng linh hoạt và hiệu quả hoạt động của hệ thống.


Auditing goals

By using a powerful audit framework, the system can track many event types to monitor and audit the system. Examples include:
  • Audit file access and modification
    • See who changed a particular file
    • Detect unauthorized changes
  • Monitoring of system calls and functions
  • Detect anomalies like crashing processes
  • Set tripwires for intrusion detection purposes
  • Record commands used by individual users

Components

The framework itself has several components:
Kernel:
  • audit: hooks into the kernel to capture events and deliver them to auditd
Binaries:
  • auditd: daemon to capture events and store them (log file)
  • auditctl: client tool to configure auditd
  • audispd: daemon to multiplex events
  • aureport: reporting tool which reads from log file (auditd.log)
  • ausearch: event viewer (auditd.log)
  • autrace: using audit component in kernel to trace binaries
  • aulast: similar to last, but instaed using audit framework
  • aulastlog: similar to lastlog, also using audit framework instead
  • ausyscall: map syscall ID and name
  • auvirt: displaying audit information regarding virtual machines
Files:

  • audit.rules: used by auditctl to read what rules need to be used
  • auditd.conf: configuration file of auditd

Thành phần của Audit
Các thành phần của Audit
File audit.rules chứa tập các luật tải vào trong hệ thống audit của nhân.
Audit.rules là file chứa các luật sẽ được tải khi khởi động audit daemon. Chương trình auditctl được sử dụng cho kịch bản khởi tạo hành vi này. cấu trúc luật gồm 3 phần: control, file và syscall.

Control

Control commands generally involve configuring the audit system rather than telling it what to watch for. These commands typically include deleting all rules, setting the size of the kernel's backlog queue, setting the failure mode, setting the event rate limit, or to tell auditctl to ignore syntax errors in the rules and continue loading. Generally, these rules are at the top of the rules file.

File System

File System rules are sometimes called watches. These rules are used to audit access to particular files or directories that you may be interested in. If the path given in a watch rule is a directory, then the rule used is recursive to the bottom of the directory tree excluding any directories that may be mount points. The syntax of these watch rules generally follow this format:
-w path-to-file -p permissions -k keyname
where the permission are any one of the following:
r
- read of the file
w
- write to the file
x
- execute the file
a
- change in the file's attribute
Watches can also be created using the syscall format described below which allow for greater flexibility and options. Using syscall rules you can choose between path and dir which is against a specific inode or directory tree respectively. It should also be noted that the recursive directory watch will stop if there is a mount point below the parent directory. There is an option to make the mounted subdirectory equivalent by using a -q rule.

System Call

The system call rules are loaded into a matching engine that intercepts each syscall that all programs on the system makes. Therefore it is very important to only use syscall rules when you have to since these affect performance. The more rules, the bigger the performance hit. You can help the performance, though, by combining syscalls into one rule whenever possible.
The Linux kernel has 4 rule matching lists or filters as they are sometimes called. They are: task, exit, user, and exclude. The task list is checked only during the fork or clone syscalls. It is rarely used in practice.
The exit filter is the place where all syscall and file system audit requests are evaluated.
The user filter is used to filter (remove) some events that originate in user space. By default, any event originating in user space is allowed. So, if there are some events that you do not want to see, then this is a place where some can be removed. See auditctl(8) for fields that are valid.
The exclude filter is used to exclude certain events from being emitted. The msgtype and a number of subject attribute fields can be used to tell the kernel which message types you do not want to record. This filter can remove the event as a whole and is not selective about any other attribute. The user and exit filters are better suited to selectively auditing events. The action is ignored for this filter, defaulting to "never".
Syscall rules take the general form of:
-a action,list -S syscall -F field=value -k keyname
The -a option tells the kernel's rule matching engine that we want to append a rule at the end of the rule list. But we need to specify which rule list it goes on and what action to take when it triggers. Valid actions are:
always
- always create an event
never
- never create an event
The action and list are separated by a comma but no space in between. Valid lists are: taskexituser, and exclude. Their meaning was explained earlier.
Next in the rule would normally be the -S option. This field can either be the syscall name or number. For readability, the name is almost always used. You may give more than one syscall in a rule by specifying another -S option. When sent into the kernel, all syscall fields are put into a mask so that one compare can determine if the syscall is of interest. So, adding multiple syscalls in one rule is very efficient. When you specify a syscall name, auditctl will look up the name and get its syscall number. This leads to some problems on bi-arch machines. The 32 and 64 bit syscall numbers sometimes, but not always, line up. So, to solve this problem, you would generally need to break the rule into 2 with one specifying -F arch=b32 and the other specifying -F arch=b64. This needs to go in front of the -S option so that auditctl looks at the right lookup table when returning the number.



Một số link tham khảo hay:
1. Mô tả rule của Audit https://jlk.fjfi.cvut.cz/arch/manpages/man/audit.rules.7
2. Cấu hình cơ bản Audit https://linux-audit.com/configuring-and-auditing-linux-systems-with-audit-daemon/
3. Sách về Audit https://www.suse.com/documentation/sled10/pdfdoc/audit_sp2/audit_sp2.pdf

Tuesday, May 15, 2018

Các phương pháp update firmware cho thiết bị Router!

Cách 1. Cập nhật qua các chức năng hỗ trợ trên Router, thông thường các web quản trị có sẵn chức năng cập nhật, mình sẽ tả bản firmware từ nhà cung cấp và cập nhật qua kênh này

Cách 2. Cập nhật qua kênh quản trị như console, cổng UART, Debug của thiết bị nếu hỗ trợ

Cách 3. Copy trực tiếp lên firmware thiết bị.
Các này yêu cầu can thiệp sâu vào thiết bị, chúng ta sẽ tách bộ nhớ flash từ Router, sử dụng thiết bị chuyên dụng để ghi dữ liệu vào Flash.

Tải mẫu:
Firmware Router TP-Link WR842ND V2 download từ web 
Firmware Router TP-Link WR842ND V2 trích xuất trực tiếp từ flash thiết bị

Saturday, May 12, 2018

Tìm hiểu binwalk

Binwalk là một công cụ phân tích firmware được thiết kế để hỗ trợ trong việc phân tích, khai thác và kỹ thuật djch ngược các firmware hình ảnh. Nó đơn giản để sử dụng, dễ dàng mở rộng thông qua chữ ký tùy chỉnh,....bạn có thể cài đặt nó trên Linux thông qua repo từ Fedora.

Binwal được viết bằng Python 2.7 trong một dự án của Craig Heffner and /dev/ttyS0. Binwalk quét trong bản ảnh firmware, xác định đặc trưng phù hợp với nhiều hệ thống file và địnhj dạng file theo chuẩn công nghiệp. Binwalk cũng có thể trích xuất nhiều thành phần của bản ảnh firmware và hỗ trợ nhiều dạng nén, cũng như trích xuất nhiều nội dung file nén. Công cụ này cũng có thể tạo biểu đồ thể hiện "entropy: của firmware, nó trình bày bằng đồ hoạ các kiểu dữ liệu thực của ảnh, cũng như nhưngx vùng dữ liệu trống hoặc không sử dụng.

Bản mới nhất hiện tại là v2.1.1, hiện tại hỗ trợ trên Linux.  Tải Binwalk tại downloading Binwalk from Github, installing it is a matter of the following commands.  For the most basic operation, only steps 1 and 2 are required, but if you want the advanced functionality of graphing and extracting compressed firmware volumes you should perform all five steps:

  1. sudo python setup.py install 
  2. sudo apt-get install python-lzma 
  3. sudo apt-get install libqt4-opengl python-opengl python-qt4 python-qt4-gl python-numpy python-scipy python-pip 
  4. sudo pip install pyqtgraph 
  5. sudo apt-get install mtd-utils gzip bzip2 tar arj lhasa p7zip p7zip-full cabextract cramfsprogs cramfsswap squashfs-tools
Chức năng Binwalk:
o give you an overview of what this tool is all about, here is the Binwalk help:
Usage: binwalk [OPTIONS] [FILE1] [FILE2] [FILE3] ...
Signature Scan Options:
    -B, --signature              Scan target file(s) for common file signatures
    -R, --raw=<str>              Scan target file(s) for the specified sequence of bytes
    -A, --opcodes                Scan target file(s) for common executable opcode signatures
    -m, --magic=<file>           Specify a custom magic file to use
    -b, --dumb                   Disable smart signature keywords
    -I, --invalid                Show results marked as invalid
    -x, --exclude=<str>          Exclude results that match <str>
    -y, --include=<str>          Only show results that match <str>
Extraction Options:
    -e, --extract                Automatically extract known file types
    -D, --dd=<type:ext:cmd>      Extract <type> signatures, give the files an extension of <ext>, and execute <cmd>
    -M, --matryoshka             Recursively scan extracted files
    -d, --depth=<int>            Limit matryoshka recursion depth (default: 8 levels deep)
    -C, --directory=<str>        Extract files/folders to a custom directory (default: current working directory)
    -j, --size=<int>             Limit the size of each extracted file
    -n, --count=<int>            Limit the number of extracted files
    -r, --rm                     Delete carved files after extraction
    -z, --carve                  Carve data from files, but don't execute extraction utilities
Entropy Analysis Options:
    -E, --entropy                Calculate file entropy
    -F, --fast                   Use faster, but less detailed, entropy analysis
    -J, --save                   Save plot as a PNG
    -Q, --nlegend                Omit the legend from the entropy plot graph
    -N, --nplot                  Do not generate an entropy plot graph
    -H, --high=<float>           Set the rising edge entropy trigger threshold (default: 0.95)
    -L, --low=<float>            Set the falling edge entropy trigger threshold (default: 0.85)
Binary Diffing Options:
    -W, --hexdump                Perform a hexdump / diff of a file or files
    -G, --green                  Only show lines containing bytes that are the same among all files
    -i, --red                    Only show lines containing bytes that are different among all files
    -U, --blue                   Only show lines containing bytes that are different among some files
    -w, --terse                  Diff all files, but only display a hex dump of the first file
Raw Compression Options:
    -X, --deflate                Scan for raw deflate compression streams
    -Z, --lzma                   Scan for raw LZMA compression streams
    -P, --partial                Perform a superficial, but faster, scan
    -S, --stop                   Stop after the first result
General Options:
    -l, --length=<int>           Number of bytes to scan
    -o, --offset=<int>           Start scan at this file offset
    -O, --base=<int>             Add a base address to all printed offsets
    -K, --block=<int>            Set file block size
    -g, --swap=<int>             Reverse every n bytes before scanning
    -f, --log=<file>             Log results to file
    -c, --csv                    Log results to file in CSV format
    -t, --term                   Format output to fit the terminal window
    -q, --quiet                  Suppress output to stdout
    -v, --verbose                Enable verbose output
    -h, --help                   Show help output
    -a, --finclude=<str>         Only scan files whose names match this regex
    -p, --fexclude=<str>         Do not scan files whose names match this regex
    -s, --status=<int>           Enable the status server on the specified port
Tham khảo 1 số tài liệu hay:
[1] thử binwalk cho FPT box
[2] Cập nhập firmware cho các thiết bị Unifi
[3] Link tải firmware http://tinhaiphong.xyz/category/firmware/ 

Wednesday, April 25, 2018

Loạt bài hay về Firmadyne

1. Công cụ tích hợp nhiều hệ thống đề dùng firmadyne hiệu quả hơn
https://github.com/attify/firmware-analysis-toolkit

2. Dùng firmadyne để phân tích lỗ hổng trong code wed để khai thác:
Ý tưởng dùng fm để mô phỏng firmware thay việc dùng thiết bị thật
Dùng binwalk bóc tách firmware, tìm file code php, phân tích code tìm ra các lỗ hổng có thể tấn công và thực nghiệm với router mô phỏng bằng firmadyne ở trên

https://nitmalviya03.wordpress.com/2017/02/24/emulating-firmware-for-blind-command-injection-part-1/
https://nitmalviya03.wordpress.com/2017/02/24/emulating-firmware-for-blind-command-injection-part-2/

Tuesday, March 6, 2018

Sử dụng Selenium với python!


Để tương tác với các trang web tự động hay muốn tải một lượng lớn các file từ web, chúng ta có thể tương tác tự động bằng công cụ Selenium.
Bước 1. Cài đặt gói Selenium cho Python
Bước 2. Tải Selenium Driver, với Chrome là Chromedriver từ trang chính của Selenium. Sau đó để vào 1 địa chỉ bất kỳ trên máy cục bộ.
Bước 3. Mã như sau ( đang thử nghiệm tải file từ detux.org):

from selenium import webdriver

username = "tnphvan@gmail.com"password = "Abc123"
# để file chromedrive tại địa chỉ nàydriver = webdriver.Chrome('/Users/np/Desktop/se/chromedriver')

#trang đăng nhậpdriver.get("https://detux.org/login.php")
username_field = driver.find_element_by_id("email")
password_field = driver.find_element_by_id("reference")
login_button = driver.find_element_by_class_name("btn btn-primary")

username_field.send_keys(username)
password_field.send_keys(password)
login_button.click()

driver.get("https://detux.org/report.php?sha256=f09f4da0e9c6a0df2e4bd7dc69de2a199501a33b9d77b23b776b99bc4c9a4b6a")
html = driver.page_source
print(html)

Monday, March 5, 2018

Cơ bản về TFTP

Usage: tftp [OPTION]... HOST [PORT]

Transfers a file from/to a tftp server using "octet" mode.

Options:
        -l FILE Local FILE.
        -r FILE Remote FILE.
        -g      Get file.
        -p      Put file.


So try next:
tftp -g -r filename.txt 20.20.20.1