와이파이 SSID 필터링 하기
성은기 책임
이번에는 기존에 적었던 배치파일을 활용하여 와이파이를 필터하는 방법입니다.
M-CAS Auto LTE 라우터
산업안전을 위한 무스마 크레인 충돌방지 모니터링 시스템 증 하나인 M-CAS Auto는 여러 시행착오를 거쳐 현재 LTE 라우터로 통신하고 있습니다.
모델은 (주)멕서스 MXR-440KD, 현장에서 사용하는 태블릿이 와이파이로 연결됩니다.
와이파이 리스트
와이파이를 클릭하면 리스트가 정말 많이 나옵니다.
저희 사내에서도 많이 나오고 크레인이 설치된 현장에서도 많이 나옵니다.
LTE 연결이 간헐적으로 끊어졌을 때 설치된 현장의 개방된 WIFI에 자동으로 연결되어 보안에 취약하며 불안정한 인터넷 상태를 유지하는 경우를 접하게 되었습니다.
게다가 옆 크레인에 설치된 LTE 라우터와 동일한 Wi-Fi SSID명을 사용하니 의도하지 않은 Wi-Fi에 붙어서 불안정한 연결이 유지되어 붙었다 끊겼다를 반복하는 경우도 있었습니다.
그래서 저희는 SSID를 구분해서 사용하며 하나의 와이파이만 표시하기를 원했습니다.
-
와이파이 필터 후 연결
::목록에 모든 wifi 제거 필터 추가 netsh wlan add filter permission=denyall networktype=infrastructure ::목록에 설정한ssid 추가 필터 추가 netsh wlan add filter permission=allow ssid="ssid명" networktype=infrastructure ::ssid에 연결 netsh wlan connect name="ssid명" ssid="ssid명" ::자동연결 모드로 변경 netsh wlan set profileparameter name="ssid명" connectionmode=auto
-
와이파이 필터 제거
::목록에 모든 wifi 제거 필터 제거 netsh wlan delete filter permission=denyall networktype=infrastructure ::목록에 설정한 ssid 추가 필터 제거 netsh wlan delete filter permission=allow ssid="ssid명" networktype=infrastructure
이런 모습입니다! 허용한 Wi-Fi SSID만 리스트에 나타납니다.
그래서 Wi-Fi를 필터하고 필터 해제하는 배치 파일을 만드는 프로그램을 만들었습니다.
아래는 간단한 소스입니다.
if(textBox1.Text.Length>0)
{
string ssid = textBox1.Text;
string[] lines = {
"netsh wlan add filter permission = denyall networktype = infrastructure",
$"netsh wlan add filter permission = allow ssid = \"{ssid}\" networktype = infrastructure",
$"netsh wlan connect name = \"{ssid}\" ssid = \"{ssid}\"",
$"netsh wlan set profileparameter name = \"{ssid}\" connectionmode = auto",
};
StreamWriter outputAddFile = new StreamWriter(System.IO.Directory.GetCurrentDirectory() + $"\\OnlyOneWifiAdd_{ssid}.bat");
if (outputAddFile != null)
{
foreach (string line in lines)
{
outputAddFile.WriteLine(line);
}
}
outputAddFile.Close();
string[] lines2 = {
"netsh wlan delete filter permission = denyall networktype = infrastructure",
$"netsh wlan delete filter permission = allow ssid = \"{ssid}\" networktype = infrastructure",
};
StreamWriter outputDeleteFile = new StreamWriter(System.IO.Directory.GetCurrentDirectory() + $"\\OnlyOneWifiDelete_{ssid}.bat");
if (outputDeleteFile != null)
{
foreach (string line in lines2)
{
outputDeleteFile.WriteLine(line);
}
}
outputDeleteFile.Close();
MessageBox.Show("생성 되었습니다.");
}
else
{
MessageBox.Show("입력된 ssid가 없습니다.");
}