[source] gerador_cpf_5digitos.c

Postagem de conteúdo sobre programação C, C++ e C#
Post Reply
User avatar
Kodo no Kami
Admin
Admin
Posts: 740
Joined: Fri Jan 02, 2015 1:56 pm
Contact:

[source] gerador_cpf_5digitos.c

Post by Kodo no Kami » Fri Mar 22, 2019 4:25 am

gera uma lista com os 5 primeiros digitos validos com base nos outros 4 digitos do cpf

Code: Select all

/**
	[--- EOF Intelligence Group ---]
	
	group: https://discordapp.com/invite/cmzeMPv
	coder: kodo no kami
	descrição: gera uma lista com os 5 primeiros digitos do cpf ***.**X.XXX-XX
	
	ex: programa.exe ***.**1.345-80
**/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define ARQUIVO "ksaida.txt"

int kodo_cpfgen(int valor, char *cpf, char *cpfn);

int main(int argc, char **argv){
	char cpfnovo[12] = {0};
	int contloop;
	
	FILE *karq = fopen(ARQUIVO,"w");
	
	for(contloop = 0;contloop <= 99999; contloop++){
		if(kodo_cpfgen(contloop,argv[1],cpfnovo)){
			printf("%s\n",cpfnovo);
			fprintf(karq,"%s\n",cpfnovo);
		}
		memset(cpfnovo,'\0',12);
	}
	fclose(karq);
}

int kodo_cpfgen(int valor, char *cpf, char *cpfn){
	char numerocpf[12] = "00000", numerocpf2[12], numetemp[2] = "0";
	int tamtemp,cont, cont2, soma, modu, digi[2];
	
	tamtemp = strlen(cpf);
	
	cont2 = 0;
	for(cont = 0; cont < (tamtemp - 2); cont++){
		if((cpf[cont] >= 0x30) && (cpf[cont] <= 0x39)){
			numerocpf[cont2] = cpf[cont];
			cont2++;
		}
	}
	numerocpf[cont2] = '\0';
	
	if(valor < 10){
		sprintf(numerocpf2,"%d0000%s",valor,numerocpf);
	}
	else if(valor < 100){
		sprintf(numerocpf2,"%d000%s",valor,numerocpf);
	}
	else if(valor < 1000){
		sprintf(numerocpf2,"%d00%s",valor,numerocpf);
	}
	else if(valor < 10000){
		sprintf(numerocpf2,"%d0%s",valor,numerocpf);
	}
	else{
		sprintf(numerocpf2,"%d%s",valor,numerocpf);
	}
	
	//primeiro digito
	soma = 0;
	cont2 = 10;
	for(cont = 0, cont2 = 10; cont < 9; cont++, cont2--){
		numetemp[0] = numerocpf2[cont];
		soma = soma + (atoi(numetemp) * cont2);
	}
	
	modu = soma % 11;
	
	if(modu < 2){
		numerocpf2[9] = 0x30;
	}
	else{
		numerocpf2[9] = 0x30 + (11 - modu);
	}
	
	//segundo digito
	soma = 0;
	cont2 = 10;
	for(cont = 0, cont2 = 11; cont < 10; cont++, cont2--){
		numetemp[0] = numerocpf2[cont];
		soma = soma + (atoi(numetemp) * cont2);
	}
	
	modu = soma % 11;
	
	if(modu < 2){
		numerocpf2[10] = 0x30;
	}
	else{
		numerocpf2[10] = 0x30 + (11 - modu);
	}
	numerocpf2[11] = 0x0;
	
	if((numerocpf2[9] == cpf[strlen(cpf)-2]) && (numerocpf2[10] == cpf[strlen(cpf)-1])){
		strcpy(cpfn,numerocpf2);
		return 1;
	}
	else{
		cpfn[0] = 0x0;
		return 0;
	}
}
Image

que desagradavel ~ mirai kuriyama

Post Reply

Return to “C / C++ / C#”