[Apple rcs group sending iMessage Apple mobile phone group sending text messages real machine group sending]
AppID, which is an independent identifier for each application, configures the permissions of the application, such as passbooks, game consoles and more commonly used push services, it can be created to create certificates as described below, so in all and driver related configurations In the configuration, the first thing to do is to open the AppID that supports the service; 3. Push the certificate (divided into two types of development and release, the type is APNSDevelopmentis, APNSDistributions, and the certificate creates a structure building in the AppID configuration, and like the certificate developers to computer development;
Recommended content IMESSGAE related
| Recommended content by the author ✈️@IMEAE | [iMessage Apple recommended software] *** Click to view the content information requested by the author |
|---|---|
| Recommended content by author ✈️@IMEAE | [1. Family recommended content] *** Click to view the content information requested by the author |
| Recommended content by the author ✈️@IMEAE | [2. Album recommendation]*** Click to view the content information requested by the author |
| Recommended content by the author ✈️@IMEAE | [3. Calendar recommendation] *** Click to view the content information requested by the author |
| Recommended content by the author ✈️@IMEAE | [4. Simple virtual machine installation] *** Click to view the content information requested by the author |
| Recommended content by the author ✈️@IMEAE | [5.iMessage] *** Click to view the content information requested by the author |
AppID mainly has the following contents: 1), ExplicitAppID: unique AppID. This AppID is used for a unique identity application, such as com.wzc.demo, which identifies the bundleid of com.wzc.demo. 2), WildCardAppID: Wildcard AppID, used to identify a group of applications. For example, * can represent all applications and com.wzc. *You can represent all applications starting with com.wzc. When creating an AppID, we can set the AppService used by the AppID. Each service has different requirements, for example, if you want to use ApplePushnotificationservices, it must be ExplicitAppID to uniquely identify the application. The following are currently available optional services and corresponding configuration requirements. If your application uses any of the above services, it must be configured as needed. 1.3, DeviceVices contains all devices available for development and testing in the account. Each device is uniquely identified using UDID. Number of devices per account is 100. 1.4,
#include<WiFi.h>
const char* id="wifi name"; //Constant definition
const char* psw="wifi password";
String transEncryptionType(wifi_auth_mode_t encryptionType){ //Compare the wifi network encryption type and return the corresponding String value
switch(encryptionType){
case (WIFI_AUTH_OPEN):
return "Open";
case (WIFI_AUTH_WEP):
return "WEP";
case (WIFI_AUTH_WPA_PSK):
return "WPA_PSK";
case (WIFI_AUTH_WPA2_PSK):
return "WPA2_PSK";
case (WIFI_AUTH_WPA_WPA2_PSK):
return "WPA_WPA2_PSK";
case (WIFI_AUTH_WPA2_ENTERPRISE):
return "WPA2_ENTERPRISE";
default:
return("Unkonwn EncryptionType");
}
}
void scanNetworks(){ //Scan the surrounding wifi networks, display the number of wifi, and print their attributes (ssid, signal strength, encryption method, mac address)
int numberOfNetworks= WiFi.scanNetworks();
Serial.print("The number of networks found is:");
Serial.println(numberOfNetworks);
for(int i=0;i<numberOfNetworks;i++){
Serial.print("Networkname: ");
Serial.println(WiFi.SSID(i));
Serial.print("Signalstrength: ");
Serial.println(WiFi.RSSI(i));
Serial.print("MACaddress: ");
Serial.println(WiFi.BSSIDstr(i));
Serial.print("Encryptiontype: ");
String encryptionTypeDescription = transEncryptionType(WiFi.encryptionType(i));
Serial.println(encryptionTypeDescription);
Serial.println("-----------------------");
}
}
void connect(){ //Connect to the specified wifi
WiFi.begin(id,psw);
while (WiFi.status()!= WL_CONNECTED) {
delay(1000);
Serial.println("Trying to connect to the wifi...");
}
Serial.println("Connection successful!");
}
void setup() {
Serial.begin(115200); //Initialization configuration, baud rate 115200
scanNetworks(); //Scan wifi and print information
connect(); //Connect to the specified wifi
Serial.println(WiFi.macAddress()); //Print the mac address of esp32
Serial.println(WiFi.localIP()); //esp32’s local IP address at this moment
WiFi.disconnect(true); //Disconnect the current wifi network
Serial.println(WiFi.localIP()); //Print the local IP address of esp32 at the moment
}
void loop(){
}
ProvisioningProfile provides all the files above: certificate, AppID and device. To package or run the application on a real machine, you need a certificate mark to identify that this application is legal, safe, and complete; then, you need to indicate its AppID, and verify that the BundleId is consistent; similarly, if you need to confirm whether the device can run The program is the real machine debugging. ProvisioningProfile is packaged together so that it can be used during debugging and release as long as different provisioning profiles are selected in different situations. In the package, the ProvisionProfile file will be embedded in the .IPA. For example, as shown below, the ProvisioningProfile developed contains new capabilities corresponding to the AppID, available certificates, and devices. This means using this provisioning service package must have the appropriate certificates and run the application to the device contained in the application. As mentioned above, the processes running on the device are as follows: Like certificates, ProvisioningProfile is also divided into development and distribution.
- ProvisioningProfiles, this matter is a very Apple character, I usually call the PP file, the file will be bound to the AppID, developer certificate, hardware device, and can be added after configuring the Developer Center. On Xcode, you can also connect directly to the Developer Center directly on Xcode. When debugging, you need to add a real machine in the PP file; this is a real machine debugger and must be a treasure; Generally, our production process usually follows the above sequence, first log in to the Developer Center with a developer account, create Developer certificate, AppID, open push service for AppID, create push certificate under service options (see server-side push certificate below), then bind all certificate IDs, add pilot tests, etc. The specific process is as follows
/******myMacAddress.c *******************
-
Implemented C language to obtain the mac address of the machine
-
Remark:
-
There are many related implementations on the Internet, such as calling API, obtaining by accessing the network card, etc. I also asked the teacher, but directly adjusting the shell command does not work, which means that codes such as system ("ipconfig") are not allowed to appear.
-
But I don’t want to access the network card or anything, so what should I do?
-
Inspired by the ping command, my idea is to obtain the local mac address through a network connection request
-
After the idea was completed, I checked the relevant information online and found out that my idea corresponded to something called ARP protocol.
*************************************************** ******************************/
Recommended content IMESSGAE related
| Recommended content by the author ✈️@IMEAE | [iMessage Apple recommended software] *** Click to view the content information requested by the author |
|---|---|
| Recommended content by author ✈️@IMEAE | [1. Family recommended content] *** Click to view the content information requested by the author |
| Recommended content by the author ✈️@IMEAE | [2. Album recommendation]*** Click to view the content information requested by the author |
| Recommended content by the author ✈️@IMEAE | [3. Calendar recommendation] *** Click to view the content information requested by the author |
| Recommended content by the author ✈️@IMEAE | [4. Simple virtual machine installation] *** Click to view the content information requested by the author |
| Recommended content by the author ✈️@IMEAE | [5.iMessage] *** Click to view the content information requested by the author |
#include <stdio.h>
#include <pcap/pcap.h>
#include <netinet/if_ether.h>
int main(){
pcap_t *sniffer_des;
char errbuf[PCAP_ERRBUF_SIZE];// PCAP_ERRBUF_SIZE is in {/usr/include/pcap/pcap.h}
// the Definition is {#define PCAP_ERRBUF_SIZE 256}
char *net_dev;
bpf_u_int32 net, mask;
struct bpf_program fp; // Can be understood as structure instantiation (Copyri
const u_char *packet;
struct pcap_pkthdr hdr; // can be understood as structure instantiation
struct ether_header *eth_header; // can be understood as structure instantiation
u_char *ptr;
net_dev = "en7";//This is my network card number. For a general machine, this should be eth0.
if(pcap_lookupnet(net_dev, &net, &mask, errbuf) == -1){
printf("get net error:%s\n", errbuf);
return 1;
}
sniffer_des = pcap_open_live(net_dev, 1024, 1, 5000, errbuf); // Call pcap_open_live in PCAP_API
// sniffer_des = pcap_open_live(net_dev, 65535, 1, 5000, errbuf); // Call pcap_open_live in PCAP_API
//
// After looking at pcap's pcap_open_live function, I don't understand the reason. I suspect that when allocating memory for internal processing, allocating a size of 65535 for each packet is definitely more time-consuming than allocating memory for processing a packet size of 1024, which leads to packet loss.
// Please keep this in mind when using pcap, I have suffered a lot. . . .
if(sniffer_des == NULL){
printf("pcap_open_live%s\n", errbuf);
return 1;
}
if(pcap_setfilter(sniffer_des, &fp) == -1){
printf("pcap_setfilter() error\n");
return 1;
}