Sunday, March 20, 2022

PXE setup

 I have write a PXE setup in my medium blog. If you’re interested on setting pxe boot under window and Ubuntu please refer link: https://medium.com/jacklee26/set-up-pxe-server-on-ubuntu20-04-and-window-10-e69733c1de87


Saturday, October 23, 2021

visual studio code is supporting online

 VSCode is supporting online, you can use it by your web browser, it's great.

please access below link to : https://vscode.dev/



Saturday, September 18, 2021

WIFI knowledge

 WIFI Knowledge

802.11 Association Process





1. Beacon
The access point periodically sends a beacon frame (every 100ms )to announce its presence and relay many information that is required by the stations to connect to the wireless network

STA begins the process by performing a passive or active scan. In the passive mode, the STA is listening for beacons from an access point. The beacon frame contains the BSSID which is the MAC address of the radio sourcing from the access point.

Beacon packet contains capability information and parameters.

2. Probe Request

Probe requests advertise the mobile stations supported data rates and 802.11 capabilities such as 802.11n.

A probe is sourced from the STA requesting to join a wireless network.  The probe is responded by an access point using a probe response management frame. Probe request from a STA broadcasted to any access point that can respond. 

3. Probe Response:

APs receiving the probe request check to see if the mobile station has at least one common supported data rate.  If they have compatible data rates, a probe response is sent advertising the SSID (wireless network name), supported data rates, encryption types if required, and other 802.11 capabilities of the AP.


4. Authenticated Request

The station chooses a SSID/network from the probe responses it receives. It also checks the compatibility on encryption type. Once compatible networks are discovered the station will attempt low-level 802.11 authentication with compatible access points. The station sends a low-level 802.11 authentication frame to an AP setting the authentication to open and the sequence to 0x0001.

If you noticed in the above successful authentication frame, the Authentication Algorithm was set to Open System. There are two types of methods for authentication.

  • Open System: WPA, WPA2 with  no password, performs no client verification. 
  • Shared Key:  passphrase and contains a 4-way handshake for authentication. The STA sends a request to authenticate, access point receives the request and sends back a cleartext challenge, the STA encrypts and sends another authentication request based on the cleartext challenge and then the access point compares the STA’s challenge to the text. If successful, the STA is authenticated.

5. Authenticated Response

STA can be in either two states in Authentication and Association:

  • Unauthenticated or authenticated.
  • Unassociated or associated.

The access point receives the authentication frame and responds to the station with authentication frame set to open indicating a sequence,  If an access point receives any frame other than an authentication or probe request from a station that is not authenticated it will respond with a deauthentication frame placing the mobile into an unauthenticated an unassociated state. The station will have to begin the association process from the low level authentication step. At this point the station is authenticated but not yet associated


6. Association Request

Once the station determines which access point it would like to associate to, it will send an association request to that access point. The association request contains chosen encryption types and other compatible 802.11 capabilities.


7. Association Response

 If the elements of the association request match the capabilities of the access point, it will create an Association ID for the mobile station and  respond with an association response with a success message granting network access to the mobile station. 

 Association Response includes:

  • Capabilities Information such as
  • Supported Data Rates
  • HT Capabilities
  • HT Information such as the Primary Channel
  • WMM information


WPA personal vs enterprise

WPA Personal(WPA-PSK): 
Using a password which is often used on home networks such as wifi routers or AP. You can just access to AP and changed the password, when STA connects AP, just type in the password you set. one password applies to all users, and it should be manually changed by the client. 
WPA Enterprise : 
This work on enterprise or work on a business network /environment.  This mode needs deploy by a radius server, and it supports 802.1x authentication. So we need a shared key for the radius client and server to communicate, and then we also need to have an account and password which is provided in the radius server. The account and password only administrator is able to change, the client is unable to change the password. This is good for if a person left position, we can just delete this personal account from the database. 

Share key:







key in  account and password 


DFS Dynamic Frequency Selection



















It's a mechanism to allow unlicensed devices, especially5GHz frequency bands which have been allocated to radar systems without causing interference to those radars. With DFS function enabled, the devices will monitor the frequency they are using for radar signals. If radar signals are detected on the current channel, the devices will  switch to an alternate channel automatically.In addition, the channel in which radars are detected will not be used for a period of time, If 5GHZ devices with DFS function enabled choose a DFS channel before operation, the devices will detect radar signals for a period of time (about 1 or 10 minutes).

If the device is already operating on a DFS channel and radar signals are detected you will encounter disconnection, however the connection can be restored after a while. But you may see the change in the operating channel.


resource:

https://wifibond.com/2017/04/08/802-11-association-process/
https://documentation.meraki.com/MR/WiFi_Basics_and_Best_Practices/802.11_Association_Process_Explained
https://packet6.com/802-11-state-machine/

Saturday, August 7, 2021

Markdown on medium

Today I would like to shar on how to use some MD in medium, some markdown might not work the same in githb. 


Write code use the command to switch:

  • Windows : ctrl+alt+6
  • Mac : command+ option+6
  • Linux : ctrl+alt+6


Markdown with code single line:  `code `
Markdown with multiply line:  ```code ```
Slice line: is quite different, the normal way is ~~text~~, but Medium need to go to web and generate it. 
https://www.piliapp.com/cool-text/strikethrough-text/
https://fsymbols.com/generators/strikethrough/



Saturday, July 31, 2021

selenium scroll

 his is a HTML :

reference: https://michaeljsanders.com/2017/05/12/scrapin-and-scrollin.html

import time
from selenium import webdriver
from bs4 import BeautifulSoup as bs
# I used Firefox; you can use whichever browser you like.
browser = webdriver.Chrome()
# Tell Selenium to get the URL you're interested in.
browser.get("http://URLHERE.com")
# Selenium script to scroll to the bottom, wait 3 seconds for the next batch of data to load, then continue scrolling.  It will continue to do this until the page stops loading new data.
lenOfPage = browser.execute_script("window.scrollTo(0, document.body.scrollHeight);var lenOfPage=document.body.scrollHeight;return lenOfPage;")
    match=False
        while(match==False):
                lastCount = lenOfPage
                time.sleep(3)
                lenOfPage = browser.execute_script("window.scrollTo(0, document.body.scrollHeight);var lenOfPage=document.body.scrollHeight;return lenOfPage;")
                if lastCount==lenOfPage:
                    match=True
# Now that the page is fully scrolled, grab the source code.
source_data = browser.page_source
# Throw your source into BeautifulSoup and start parsing!
bs_data = bs(source_data)




Sunday, July 11, 2021

conda not found in MAC

 Have you ever see an issue in MAC when Anaconda is been installed propely and the conda is place correctly but still conda will be not found. I'm going to teach you how to solve this issue: 


Part1 In case you don't know how to add CONA to PATH

Note: Mac Anaonda is been save in /opt/anaconda3

1. Edit vim ~/.bash_profile

export PATH="/opt/anaconda3/bin:$PATH"

2. wq! or x! to save it 

3. source ~/.bash_profile

4. you can check PATH  by:   echo $PATH

conda --version

6 open a new terminal and enter conda --version will occur command not found 

Part 2 Terminal running conda 

To solve this issue we basely have to just touh a file. In MAC default it uses zshrc

Method1:  

1. touch ~/.zshrc 

2. edit it 

source ~/.bash_profile

3. save it by wq! or x!

4. open new terminal and press coda--version will fix this problem


Method2: 

1. go to system preferences>user&groups> 

2. unlock your setting 

3 click on a username and right-click and select advance option

4. login shell changed to /bin/bash will fix this

Saturday, May 15, 2021

Selenium Xpath



 Today I wants to share Xpath using selenium. Xpath is a unique tool, which is better than other finding_element. These are the following element you can use:

find_element_by_id
find_element_by_name
find_element_by_xpath
find_element_by_link_text
find_element_by_partial_link_text
find_element_by_tag_name
find_element_by_class_name
find_element_by_css_selector

or multiply element 

find_elements_by_id
find_elements_by_name
find_elements_by_xpath
find_elements_by_link_text
find_elements_by_partial_link_text
find_elements_by_tag_name
find_elements_by_class_name
find_elements_by_css_selector


I think to know XPath is really important.

The syntax of it is: 

Xpath=//tagname[@attribute='value']

This is a HTML :

<html>
 <body>
  <p>Are you sure you want to do this?</p>
  <a href="continue.html">Continue</a>
  <a href="cancel.html">Cancel</a>
  <form id="loginForm">
    <input name="username" type="text" />
    <input name="password" type="password" />
    <input name="continue" type="submit" value="Login" />
    <input name="continue" type="button" value="Clear" />
    <div class="search">
      This is new page<h1>Hello</h1>!!!!!
    </div>
</form>
</body>
</html>

  • If you want to get the name for the username, you can try like this:

//input[@name='username']

  • using chrome development tool to get xpath. The [1] is username, [2] is password ....[4]

//*[@id="loginForm"]/input[1]
//*[@id="loginForm"]//input[@name="username"]

  • Full path using chrome development tool

/html/body/form/input[1]

you can see the input name for clear and login is the same "continue", if we want to get the clear button:

//input[@name='continue'][@type='button']

or

//*[@id="loginForm"]/input[4]


You can also use some function text(), or contain

If you use JUST text(), the string must be the same, else won't find it

 //*[text()="str"]
 //*[contains(text(),'str')]

if I want to find "continue", I can use this:

//*[text()="Continue"]

or 

 //*[text()="Cont"] 

using (dot)

Sometimes when you used  text() or contain() to find, but will not be able to find, you can use this method:

For example, this is Instagram following text, which can't find the following, you have to use this method. 


//*[text()[contains(.,'str')]]

//*[contains(.,'str')]


this will search from the root to the current node. 

Selenium with Xpath

inorder to use in selenium you have to use like this|:

driver.find_element_by_xpath('put-your-xpath-here').click()