📄 config_file.c
字号:
} else if (strncmp(pos, "dot11RSNAConfigPMKLifetime=", 27) == 0) { config->dot11RSNAConfigPMKLifetime = atoi(pos + 27); wpa_printf(MSG_DEBUG, "dot11RSNAConfigPMKLifetime=%d", config->dot11RSNAConfigPMKLifetime); } else if (strncmp(pos, "dot11RSNAConfigPMKReauthThreshold=", 34) == 0) { config->dot11RSNAConfigPMKReauthThreshold = atoi(pos + 34); wpa_printf(MSG_DEBUG, "dot11RSNAConfigPMKReauthThreshold=%d", config->dot11RSNAConfigPMKReauthThreshold); } else if (strncmp(pos, "dot11RSNAConfigSATimeout=", 25) == 0) { config->dot11RSNAConfigSATimeout = atoi(pos + 25); wpa_printf(MSG_DEBUG, "dot11RSNAConfigSATimeout=%d", config->dot11RSNAConfigSATimeout); } else if (strncmp(pos, "update_config=", 14) == 0) { config->update_config = atoi(pos + 14); wpa_printf(MSG_DEBUG, "update_config=%d", config->update_config); } else { wpa_printf(MSG_ERROR, "Line %d: Invalid configuration " "line '%s'.", line, pos); errors++; continue; } } fclose(f); config->ssid = head; for (prio = 0; prio < config->num_prio; prio++) { ssid = config->pssid[prio]; wpa_printf(MSG_DEBUG, "Priority group %d", ssid->priority); while (ssid) { wpa_printf(MSG_DEBUG, " id=%d ssid='%s'", ssid->id, wpa_ssid_txt(ssid->ssid, ssid->ssid_len)); ssid = ssid->pnext; } } if (errors) { wpa_config_free(config); config = NULL; head = NULL; } return config;}static void write_str(FILE *f, const char *field, struct wpa_ssid *ssid){ char *value = wpa_config_get(ssid, field); if (value == NULL) return; fprintf(f, "\t%s=%s\n", field, value); free(value);}static void write_int(FILE *f, const char *field, int value, int def){ if (value == def) return; fprintf(f, "\t%s=%d\n", field, value);}static void write_bssid(FILE *f, struct wpa_ssid *ssid){ char *value = wpa_config_get(ssid, "bssid"); if (value == NULL) return; fprintf(f, "\tbssid=%s\n", value); free(value);}static void write_psk(FILE *f, struct wpa_ssid *ssid){ char *value = wpa_config_get(ssid, "psk"); if (value == NULL) return; fprintf(f, "\tpsk=%s\n", value); free(value);}static void write_proto(FILE *f, struct wpa_ssid *ssid){ char *value; if (ssid->proto == DEFAULT_PROTO) return; value = wpa_config_get(ssid, "proto"); if (value == NULL) return; if (value[0]) fprintf(f, "\tproto=%s\n", value); free(value);}static void write_key_mgmt(FILE *f, struct wpa_ssid *ssid){ char *value; if (ssid->key_mgmt == DEFAULT_KEY_MGMT) return; value = wpa_config_get(ssid, "key_mgmt"); if (value == NULL) return; if (value[0]) fprintf(f, "\tkey_mgmt=%s\n", value); free(value);}static void write_pairwise(FILE *f, struct wpa_ssid *ssid){ char *value; if (ssid->pairwise_cipher == DEFAULT_PAIRWISE) return; value = wpa_config_get(ssid, "pairwise"); if (value == NULL) return; if (value[0]) fprintf(f, "\tpairwise=%s\n", value); free(value);}static void write_group(FILE *f, struct wpa_ssid *ssid){ char *value; if (ssid->group_cipher == DEFAULT_GROUP) return; value = wpa_config_get(ssid, "group"); if (value == NULL) return; if (value[0]) fprintf(f, "\tgroup=%s\n", value); free(value);}static void write_auth_alg(FILE *f, struct wpa_ssid *ssid){ char *value; if (ssid->auth_alg == 0) return; value = wpa_config_get(ssid, "auth_alg"); if (value == NULL) return; if (value[0]) fprintf(f, "\tauth_alg=%s\n", value); free(value);}static void write_eap(FILE *f, struct wpa_ssid *ssid){ char *value; value = wpa_config_get(ssid, "eap"); if (value == NULL) return; if (value[0]) fprintf(f, "\teap=%s\n", value); free(value);}static void write_wep_key(FILE *f, int idx, struct wpa_ssid *ssid){ char field[20], *value; snprintf(field, sizeof(field), "wep_key%d", idx); value = wpa_config_get(ssid, field); if (value) { fprintf(f, "\t%s=%s\n", field, value); free(value); }}static void wpa_config_write_network(FILE *f, struct wpa_ssid *ssid){ int i;#define STR(t) write_str(f, #t, ssid)#define INT(t) write_int(f, #t, ssid->t, 0)#define INT_DEF(t, def) write_int(f, #t, ssid->t, def) STR(ssid); INT(scan_ssid); write_bssid(f, ssid); write_psk(f, ssid); write_proto(f, ssid); write_key_mgmt(f, ssid); write_pairwise(f, ssid); write_group(f, ssid); write_auth_alg(f, ssid); write_eap(f, ssid); STR(identity); STR(anonymous_identity); STR(eappsk); STR(nai); STR(password); STR(ca_cert); STR(client_cert); STR(private_key); STR(private_key_passwd); STR(dh_file); STR(subject_match); STR(altsubject_match); STR(ca_cert2); STR(client_cert2); STR(private_key2); STR(private_key2_passwd); STR(dh_file2); STR(subject_match2); STR(altsubject_match2); STR(phase1); STR(phase2); STR(pcsc); STR(pin); STR(engine_id); STR(key_id); INT(engine); INT_DEF(eapol_flags, DEFAULT_EAPOL_FLAGS); for (i = 0; i < 4; i++) write_wep_key(f, i, ssid); INT(wep_tx_keyidx); INT(priority); INT_DEF(eap_workaround, DEFAULT_EAP_WORKAROUND); STR(pac_file); INT(mode); INT(proactive_key_caching); INT(disabled);#undef STR#undef INT#undef INT_DEF}static int wpa_config_write_blob(FILE *f, struct wpa_config_blob *blob){ unsigned char *encoded; encoded = base64_encode(blob->data, blob->len, NULL); if (encoded == NULL) return -1; fprintf(f, "\nblob-base64-%s={\n%s}\n", blob->name, encoded); free(encoded); return 0;}int wpa_config_write(const char *name, struct wpa_config *config){ FILE *f; struct wpa_ssid *ssid; struct wpa_config_blob *blob; int ret = 0; wpa_printf(MSG_DEBUG, "Writing configuration file '%s'", name); f = fopen(name, "w"); if (f == NULL) { wpa_printf(MSG_DEBUG, "Failed to open '%s' for writing", name); return -1; }#ifdef CONFIG_CTRL_IFACE if (config->ctrl_interface) fprintf(f, "ctrl_interface=%s\n", config->ctrl_interface);#ifndef CONFIG_CTRL_IFACE_UDP if (config->ctrl_interface_gid_set) { fprintf(f, "ctrl_interface_group=%d\n", (int) config->ctrl_interface_gid); }#endif /* CONFIG_CTRL_IFACE_UDP */#endif /* CONFIG_CTRL_IFACE */ if (config->eapol_version != DEFAULT_EAPOL_VERSION) fprintf(f, "eapol_version=%d\n", config->eapol_version); if (config->ap_scan != DEFAULT_AP_SCAN) fprintf(f, "ap_scan=%d\n", config->ap_scan); if (config->fast_reauth != DEFAULT_FAST_REAUTH) fprintf(f, "fast_reauth=%d\n", config->fast_reauth); if (config->opensc_engine_path) fprintf(f, "opensc_engine_path=%s\n", config->opensc_engine_path); if (config->pkcs11_engine_path) fprintf(f, "pkcs11_engine_path=%s\n", config->pkcs11_engine_path); if (config->pkcs11_module_path) fprintf(f, "pkcs11_module_path=%s\n", config->pkcs11_module_path); if (config->driver_param) fprintf(f, "driver_param=%s\n", config->driver_param); if (config->dot11RSNAConfigPMKLifetime) fprintf(f, "dot11RSNAConfigPMKLifetime=%d\n", config->dot11RSNAConfigPMKLifetime); if (config->dot11RSNAConfigPMKReauthThreshold) fprintf(f, "dot11RSNAConfigPMKReauthThreshold=%d\n", config->dot11RSNAConfigPMKReauthThreshold); if (config->dot11RSNAConfigSATimeout) fprintf(f, "dot11RSNAConfigSATimeout=%d\n", config->dot11RSNAConfigSATimeout); if (config->update_config) fprintf(f, "update_config=%d\n", config->update_config); for (ssid = config->ssid; ssid; ssid = ssid->next) { fprintf(f, "\nnetwork={\n"); wpa_config_write_network(f, ssid); fprintf(f, "}\n"); } for (blob = config->blobs; blob; blob = blob->next) { ret = wpa_config_write_blob(f, blob); if (ret) break; } fclose(f); wpa_printf(MSG_DEBUG, "Configuration file '%s' written %ssuccessfully", name, ret ? "un" : ""); return ret;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -