static void printRdn(const NSS_RDN *rdn, OidParser &parser) { unsigned numAtvs = nssArraySize((const void **)rdn->atvs); char *fieldName; for(unsigned dex=0; dex<numAtvs; dex++) { const NSS_ATV *atv = rdn->atvs[dex]; if(compareOids(&atv->type, &CSSMOID_CountryName)) { fieldName = "Country "; } else if(compareOids(&atv->type, &CSSMOID_OrganizationName)) { fieldName = "Org "; } else if(compareOids(&atv->type, &CSSMOID_LocalityName)) { fieldName = "Locality "; } else if(compareOids(&atv->type, &CSSMOID_OrganizationalUnitName)) { fieldName = "OrgUnit "; } else if(compareOids(&atv->type, &CSSMOID_CommonName)) { fieldName = "Common Name "; } else if(compareOids(&atv->type, &CSSMOID_Surname)) { fieldName = "Surname "; } else if(compareOids(&atv->type, &CSSMOID_Title)) { fieldName = "Title "; } else if(compareOids(&atv->type, &CSSMOID_Surname)) { fieldName = "Surname "; } else if(compareOids(&atv->type, &CSSMOID_StateProvinceName)) { fieldName = "State "; } else if(compareOids(&atv->type, &CSSMOID_CollectiveStateProvinceName)) { fieldName = "Coll. State "; } else if(compareOids(&atv->type, &CSSMOID_EmailAddress)) { /* deprecated, used by Thawte */ fieldName = "Email addrs "; } else { fieldName = "Other name "; } indent(); printf("%s : ", fieldName); /* Not strictly true here, but we'll just assume we can print everything */ printAscii((char *)atv->value.item.Data, atv->value.item.Length, atv->value.item.Length); putchar('\n'); } }
void CAsciiwDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect = getClientRect(this); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; dc.DrawIcon(x, y, m_hIcon); } else { CPaintDC dc(this); COLORREF color = dc.GetBkColor(); if(isHexChecked()) { printAscii(dc, 16); } else { printAscii(dc, 10); } __super::OnPaint(); } }
static int dumpEeprom(int hex){ int res,i,j; char buf[16]; printf(" 0 1 2 3 4 5 6 7 8 9 a b c d e f\n"); for (i = 0; i < 128; i+=16) { printf("%02x: ", i); res = i2c_read(buf,16); for(j = 0; j < 16; j++) { fflush(stdout); if(hex) printf("%02x ",buf[j]); else printAscii(buf[j]); } printf("\n"); } }
void printData( const char *label, CFDataRef data, PrintDataType whichType, OidParser &parser) { const unsigned char *buf = CFDataGetBytePtr(data); unsigned len = CFDataGetLength(data); printf("%s: ", label); switch(whichType) { case PD_Hex: printHex(buf, len, 16); break; case PD_ASCII: printAscii((const char *)buf, len, 50); break; case PD_OID: printOid(buf, len, parser); } putchar('\n'); }
int main(int argc,const char *argv[]) { FILE *in = stdin; uint base = 16; char format = OUT_FORMAT_HEX; int i,count = -1; const char **args; int res = ca_parse(argc,argv,CA_MAX1_FREE,"n=d f=c",&count,&format); if(res < 0) { printe("Invalid arguments: %s",ca_error(res)); usage(argv[0]); } if(ca_hasHelp()) usage(argv[0]); /* TODO perhaps cmdargs should provide a possibility to restrict the values of an option */ /* like 'arg=[ohd]' */ if(format != OUT_FORMAT_DEC && format != OUT_FORMAT_HEX && format != OUT_FORMAT_OCT) usage(argv[0]); switch(format) { case OUT_FORMAT_DEC: base = 10; break; case OUT_FORMAT_HEX: base = 16; break; case OUT_FORMAT_OCT: base = 8; break; } args = ca_getFree(); if(args[0]) { in = fopen(args[0],"r"); if(!in) error("Unable to open '%s'",args[0]); } ulong shname; uchar *shmem; if(sharebuf(fileno(in),BUF_SIZE,(void**)&shmem,&shname,0) < 0) { if(shmem == NULL) error("Unable to mmap buffer"); } i = 0; while(!ferror(stdout) && (count < 0 || count > 0)) { size_t x,c; c = count >= 0 ? MIN(count,BUF_SIZE) : BUF_SIZE; c = fread(shmem,sizeof(char),c,in); if(c == 0) break; for(x = 0; x < c; x++, i++) { if(i % base == 0) { if(i > 0) printAscii(base,i); printf("%08x: ",i); } if(isprint(shmem[x]) && shmem[x] < 0x80 && !isspace(shmem[x])) ascii[i % base] = shmem[x]; else ascii[i % base] = NPRINT_CHAR; switch(format) { case OUT_FORMAT_DEC: printf("%03d ",shmem[x]); break; case OUT_FORMAT_HEX: printf("%02x ",shmem[x]); break; case OUT_FORMAT_OCT: printf("%03o ",shmem[x]); break; } } if(count >= 0) count -= c; } if(ferror(in)) error("Read failed"); if(ferror(stdout)) error("Write failed"); printAscii(base,i); destroybuf(shmem,shname); if(args[0]) fclose(in); return EXIT_SUCCESS; }
void printBootp(const struct bootp* bp, int verbosite) { printf("**********BOOTP**********\n"); printf("Operation : %d ",bp->bp_op); if(bp->bp_op == BOOTREQUEST) printf("(REQUEST)\n"); if(bp->bp_op == BOOTREPLY) printf("(RESPONSE)\n"); if(verbosite>3){ printf("Hardware address type: %d\n",bp->bp_htype); printf("Hardware address length: %d\n",bp->bp_hlen); printf("Jump number : %d\n",bp->bp_hops); printf("Transaction ID: %u\n",ntohl(bp->bp_xid)); printf("Boot time in sec : %d\n",ntohs(bp->bp_secs)); } printf("Client IP: %s\n", inet_ntoa(bp->bp_ciaddr)); printf("Your IP: %s\n", inet_ntoa(bp->bp_yiaddr)); printf("Server IP: %s\n", inet_ntoa(bp->bp_siaddr)); printf("Passerelle IP: %s\n", inet_ntoa(bp->bp_giaddr)); int i; printf("MAC client address: %02x",bp->bp_chaddr[0]); for(i=1;i<bp->bp_hlen;i++) printf(":%02x",bp->bp_chaddr[i]); printf("\n"); printf("Server name: %s\n", bp->bp_sname); if(verbosite>3) printf("Boot file: %s\n", bp->bp_file); if( bp->bp_vend[0] == 99 && bp->bp_vend[1] == 130 && bp->bp_vend[2] == 83 && bp->bp_vend[3] == 99 ){ printf("MAGIC COOKIE DETECTED\n"); printf("Options : "); i = 4; while(bp->bp_vend[i]!=0xFF){ switch(bp->bp_vend[i]){ case TAG_DHCP_MESSAGE: switch(bp->bp_vend[i+2]){ case DHCPDISCOVER: printf("DHCP DISCOVER\n"); break; case DHCPOFFER: printf("DHCP OFFER\n"); break; case DHCPDECLINE: printf("DHCP DECLINE\n"); break; case DHCPACK: printf("DHCP ACK\n"); break; case DHCPNAK: printf("DHCP NACK\n"); break; case DHCPRELEASE: printf("DHCP RELEASE\n"); break; default: break; } break; case TAG_CLIENT_ID: printf("Hardware type : %d (%s)\n",bp->bp_vend[i+2],(bp->bp_vend[i+2] == 1) ? "Ethernet" : "Inconnu"); int j =i+3; printf("Hardware ethernet address: %02x",bp->bp_vend[j]); for(j++;j<bp->bp_vend[i+1]+i+2;j++) printf(":%02x",bp->bp_vend[j]); printf("\n"); break; case TAG_HOSTNAME: printf("Device name: "); printAscii((u_char *) &bp->bp_vend[i+2],bp->bp_vend[i+1]-1); break; case TAG_PARM_REQUEST: printf("Parameters:\n"); j =i+3; for(;j<bp->bp_vend[i+1]+i+2;j++) switch(bp->bp_vend[j]){ case TAG_GATEWAY: printf("ROUTER "); break; case TAG_DOMAIN_SERVER: printf("DNS "); break; case TAG_DOMAINNAME: printf("DOMAIN_NAME "); break; case TAG_BROAD_ADDR: printf("BROADCAST_ADDRESS "); break; case TAG_SUBNET_MASK: printf("SUBNET_MASK "); break; case TAG_TIME_OFFSET: printf("TIME_OFFSET "); break; case TAG_HOSTNAME: printf("HOST_NAME "); break; case TAG_NETBIOS_NS: printf("NETBIOS_OVER_TCP/IP_NAME_SERVER "); break; case TAG_NETBIOS_SCOPE: printf("NETBIOS_OVER_TCP/IP_SCOPE "); break; case TAG_REQUESTED_IP: printf("REQUESTED_IP_ADDRESS "); break; case TAG_IP_LEASE: printf("LEASE_TIME "); break; case TAG_SERVER_ID: printf("SERVER_ID "); break; case TAG_PARM_REQUEST: printf("PARAMETER_REQUEST_LIST "); break; default: printf("UNKNOWN "); break; } printf("\n"); break; case TAG_GATEWAY: j =i+3; printf("Router address: %d",bp->bp_vend[j]); for(j++;j<bp->bp_vend[i+1]+i+3;j++) printf(".%d",bp->bp_vend[j]); printf("\n"); break; case TAG_DOMAIN_SERVER: j =i+3; printf("DNS Server IP address: %d",bp->bp_vend[j]); for(j++;j<bp->bp_vend[i+1]+i+3;j++) printf(".%d",bp->bp_vend[j]); printf("\n"); break; case TAG_DOMAINNAME: printf("Domain name: "); printAscii((u_char *) &bp->bp_vend[i+2],bp->bp_vend[i+1]-1); break; case TAG_BROAD_ADDR: j =i+3; printf("Broadcast IP address: %d",bp->bp_vend[j]); for(j++;j<bp->bp_vend[i+1]+i+3;j++) printf(".%d",bp->bp_vend[j]); printf("\n"); break; case TAG_SUBNET_MASK: j =i+3; printf("Subnet mask: %d",bp->bp_vend[j]); for(j++;j<bp->bp_vend[i+1]+i+3;j++) printf(".%d",bp->bp_vend[j]); printf("\n"); break; case TAG_NETBIOS_NS: j =i+3; printf("Name server IP address: %d",bp->bp_vend[j]); for(j++;j<bp->bp_vend[i+1]+i+3;j++) printf(".%d",bp->bp_vend[j]); printf("\n"); break; case TAG_REQUESTED_IP: j =i+3; printf("Asked IP address: %d",bp->bp_vend[j]); for(j++;j<bp->bp_vend[i+1]+i+3;j++) printf(".%d",bp->bp_vend[j]); printf("\n"); break; case TAG_IP_LEASE: printf("Lease time: %u s\n",bp->bp_vend[i+2]*256*256*256+bp->bp_vend[i+3]*256*256+bp->bp_vend[i+4]*256+bp->bp_vend[i+5]); break; case TAG_SERVER_ID: j =i+3; printf("Server IP address: %d",bp->bp_vend[j]); for(j++;j<bp->bp_vend[i+1]+i+3;j++) printf(".%d",bp->bp_vend[j]); printf("\n"); break; default: printf("Not an option: %d\n",bp->bp_vend[i]); break; } i+=2+bp->bp_vend[i+1]; } } if(verbosite>2) printPacket((u_char *) bp, sizeof(struct bootp)); printf("\n"); };
void got_packet(u_char *args, const struct pcap_pkthdr *header, const u_char *packet) { const struct ether_header *ethernet; const struct ip *ip; const struct tcphdr *tcp; const struct udphdr *udp; struct arphdr *arp; u_char* trame; int size_ethernet = sizeof(struct ether_header); int size_ip; int size_tcp; int size_trame; int *vFlag = (int *) args; ethernet = (struct ether_header*)(packet); ip = (struct ip*)(packet+size_ethernet); size_ip=IP_HL(ip)*4; tcp = (struct tcphdr*)(packet+size_ip+size_ethernet); size_tcp=sizeof(struct tcphdr); udp = (struct udphdr*)(packet + sizeof(struct ether_header) + ip->ip_len*4); arp = (struct arphdr*)(packet+14); printf("Caught packet with length of [%d]\n", header->len); printEther(ethernet,*vFlag); switch(ntohs(ethernet->ether_type)){ case ETHERTYPE_IP: case ETHERTYPE_IPV6: printIP(ip, *vFlag); switch(ip->ip_p) { case IPPROTO_TCP: printTcp(tcp, *vFlag); break; case IPPROTO_UDP: printUdp(udp, *vFlag); if((ntohs(udp->source)==IPPORT_BOOTPS && ntohs(udp->dest)==IPPORT_BOOTPC) || (ntohs(udp->dest)==IPPORT_BOOTPS && ntohs(udp->source)==IPPORT_BOOTPC)){ printBootp((struct bootp*) (packet + sizeof(struct ether_header) + ip->ip_len*4+8),*vFlag); } else if(ntohs(udp->source)== 53 || ntohs(udp->dest)==53){ printDns((u_char *)packet + sizeof(struct ether_header) + size_ip+8,*vFlag,1); } break; case IPPROTO_ICMP: printf("ICMP"); break; case IPPROTO_SCTP: printf("SCTP"); break; default: printf("Unknown Protocol\n"); break; } break; case ETHERTYPE_ARP: printArp(arp, *vFlag); break; default: printf("EtherType not handled\n"); } trame = (u_char *)(packet + size_ethernet + size_ip + size_tcp); size_trame = ntohs(ip->ip_len) - (size_ip + size_tcp); if (size_trame > 0) { printf("DATA (%d bytes):\n", size_trame); printAscii(trame, size_trame); } printf("\n"); printf("\n"); printf("\n"); return; }