{"id":4555,"date":"2025-08-27T17:28:44","date_gmt":"2025-08-27T22:28:44","guid":{"rendered":"https:\/\/zidrave.net\/?p=4555"},"modified":"2025-08-28T22:31:10","modified_gmt":"2025-08-29T03:31:10","slug":"estara-bien-que-la-sunatperu-exponga-nuestros-nombres-completos","status":"publish","type":"post","link":"https:\/\/zidrave.net\/index.php\/2025\/08\/27\/estara-bien-que-la-sunatperu-exponga-nuestros-nombres-completos\/","title":{"rendered":"\u00bfEstara bien que la Sunat(PERU) exponga nuestros nombres completos?"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">\ud83d\udccc \u00bfQu\u00e9 es el Padr\u00f3n Reducido de la SUNAT?<\/h3>\n\n\n\n<p>Es una base de datos p\u00fablica que la <strong>SUNAT<\/strong> (Superintendencia Nacional de Aduanas y de Administraci\u00f3n Tributaria) actualiza <strong>diariamente<\/strong> y que contiene informaci\u00f3n de todos los contribuyentes inscritos en el <strong>RUC<\/strong> (Registro \u00danico de Contribuyentes).<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"860\" height=\"582\" src=\"https:\/\/zidrave.net\/wp-content\/uploads\/2025\/08\/image-12.png\" alt=\"\" class=\"wp-image-4556\" srcset=\"https:\/\/zidrave.net\/wp-content\/uploads\/2025\/08\/image-12.png 860w, https:\/\/zidrave.net\/wp-content\/uploads\/2025\/08\/image-12-300x203.png 300w, https:\/\/zidrave.net\/wp-content\/uploads\/2025\/08\/image-12-768x520.png 768w\" sizes=\"auto, (max-width: 860px) 100vw, 860px\" \/><\/figure>\n\n\n\n<p>Incluye datos como:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>N\u00famero de RUC<\/li>\n\n\n\n<li>Nombre completo o raz\u00f3n social<\/li>\n\n\n\n<li>Tipo de contribuyente (persona natural con negocio, empresa, entidad p\u00fablica, etc.)<\/li>\n\n\n\n<li>Estado de contribuyente (activo, baja, suspensi\u00f3n, etc.)<\/li>\n\n\n\n<li>Condici\u00f3n de domicilio (habido, no habido, etc.)<\/li>\n\n\n\n<li>Actividad econ\u00f3mica principal<\/li>\n<\/ul>\n\n\n\n<p>La Sunat permite descargar toda esta informaci\u00f3n de miles de ciudadanos en un solo archivo zip<\/p>\n\n\n\n<p><a href=\"https:\/\/orientacion.sunat.gob.pe\/padron-reducido-del-ruc-para-descarga\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>https:\/\/orientacion.sunat.gob.pe\/padron-reducido-del-ruc-para-descarga<\/strong><\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udccc \u00bfPor qu\u00e9 es p\u00fablico?<\/h3>\n\n\n\n<p>El <strong>RUC<\/strong> en Per\u00fa no es considerado un dato privado, sino <strong>informaci\u00f3n p\u00fablica de registro administrativo<\/strong>, parecida a un registro mercantil en otros pa\u00edses.<\/p>\n\n\n\n<p>Razones:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Transparencia tributaria<\/strong> \u2192 Cualquier persona que emite comprobantes de pago debe estar inscrita en el RUC.<\/li>\n\n\n\n<li><strong>Seguridad comercial<\/strong> \u2192 Las empresas y personas necesitan verificar si su proveedor\/cliente existe y est\u00e1 habilitado para emitir facturas.<\/li>\n\n\n\n<li><strong>Control ciudadano<\/strong> \u2192 Permite detectar empresas fantasmas o negocios irregulares.<\/li>\n<\/ol>\n\n\n\n<p>Por eso la SUNAT lo publica y cualquiera puede descargar el padr\u00f3n completo o consultar un RUC desde la web.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udccc \u00bfY qu\u00e9 pasa con los datos personales (nombres)?<\/h3>\n\n\n\n<p>Aqu\u00ed est\u00e1 lo delicado.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Si eres <strong>persona natural con negocio<\/strong>, tu <strong>nombre completo aparece tal cual<\/strong> en el padr\u00f3n junto a tu RUC.<\/li>\n\n\n\n<li>Si eres <strong>persona jur\u00eddica (empresa)<\/strong>, aparece solo la raz\u00f3n social.<\/li>\n<\/ul>\n\n\n\n<p>En teor\u00eda no hay violaci\u00f3n porque el nombre es <strong>informaci\u00f3n registral p\u00fablica<\/strong> vinculada a una actividad econ\u00f3mica, <strong>no al ciudadano como tal<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udccc Relaci\u00f3n RUC \u2194 DNI<\/h3>\n\n\n\n<p>Efectivamente, en la pr\u00e1ctica:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>El <strong>RUC de personas naturales con negocio<\/strong> casi siempre es su <strong>DNI con un d\u00edgito adicional al final<\/strong> (un c\u00f3digo verificador).<\/li>\n\n\n\n<li>Eso significa que, si tienes el RUC, <strong>puedes deducir el DNI de esa persona<\/strong> f\u00e1cilmente.<\/li>\n<\/ul>\n\n\n\n<p>Eso genera preocupaciones de <strong>privacidad<\/strong>, porque aunque SUNAT argumenta que es informaci\u00f3n p\u00fablica, en la pr\u00e1ctica se expone la <strong>identidad civil<\/strong> de millones de personas.<\/p>\n\n\n\n<p>USO SIMPLE y PELIGROSO <\/p>\n\n\n\n<p>Cualquiera con una PC y una terminal puede hacer lo siguiente y disponer de nuestros datos nombres completos y dni ya que esta integrado en el mismo ruc, asi tambi\u00e9n buscar personas relacionadas por apellido o algunos nombres y asi completar sus datos completos.<br><br>Vea un simple ejemplo de como se hace:<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-tiktok wp-block-embed-tiktok\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"tiktok-embed\" cite=\"https:\/\/www.tiktok.com\/@zidrave\/video\/7543409469523234104\" data-video-id=\"7543409469523234104\" data-embed-from=\"oembed\" style=\"max-width:605px; min-width:325px;\"> <section> <a target=\"_blank\" title=\"@zidrave\" href=\"https:\/\/www.tiktok.com\/@zidrave?refer=embed\">@zidrave<\/a> <p><a title=\"sunat\" target=\"_blank\" href=\"https:\/\/www.tiktok.com\/tag\/sunat?refer=embed\">#sunat<\/a> <a title=\"info\" target=\"_blank\" href=\"https:\/\/www.tiktok.com\/tag\/info?refer=embed\">#info<\/a> <a title=\"inseguridad\" target=\"_blank\" href=\"https:\/\/www.tiktok.com\/tag\/inseguridad?refer=embed\">#inseguridad<\/a><\/p> <a target=\"_blank\" title=\"\u266c Powerful dark futuristic science fiction film music(1536393) - Azure Glitch\" href=\"https:\/\/www.tiktok.com\/music\/Powerful-dark-futuristic-science-fiction-film-music-1536393-7358902286779959312?refer=embed\">\u266c Powerful dark futuristic science fiction film music(1536393) &#8211; Azure Glitch<\/a> <\/section> <\/blockquote> <script async src=\"https:\/\/www.tiktok.com\/embed.js\"><\/script>\n<\/div><\/figure>\n\n\n\n<p>Bueno como se aprecia en el video de este modo sin perder mucho tiempo es posible llegar a los dnis de cualquier persona (solo ignorando los 2 primeros digitos y el ultimo digito del ruc), claro por ahi la norma o ley exige que uses los datos de forma adecuada, pero el delincuente que descargue el padron reducido no va respetar la norma o ley en lo mas minimo se aprovechara y con ello tendra nuestros importantes datos.<\/p>\n\n\n\n<p>Con los cuales podran saber hasta nuestro lugar de votaci\u00f3n o hacer suplantaci\u00f3n de identidad en alg\u00fan registro online que solo pida dni como dato comprobante, la seguridad ya a sido vulnerada y lo hace el mismo estado.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udccc Entonces, \u00bfes ilegal?<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>No es ilegal en Per\u00fa<\/strong> porque la SUNAT lo regula mediante la Ley del RUC (Decreto Legislativo N.\u00b0 943) y normas de transparencia.<\/li>\n\n\n\n<li>Pero s\u00ed hay debate sobre la <strong>protecci\u00f3n de datos personales<\/strong> (Ley N.\u00b0 29733). La diferencia est\u00e1 en que el RUC es <strong>informaci\u00f3n registral obligatoria y p\u00fablica<\/strong>, mientras que el DNI como tal s\u00ed es un dato sensible que RENIEC no puede exponer libremente.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udccc Que podemos hacer con ese archivo zip que nos da la Sunat<\/h3>\n\n\n\n<p>Desde python con un simple script pasaremos todo a SQL y podremos subir a alguna base de datos:<\/p>\n\n\n\n<p>Migracion.py<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/usr\/bin\/env python3\nimport csv\nimport sys\n\n# === Configuraci\u00f3n ===\nINPUT_FILE   = \"padron.txt\"\nOUTPUT_SQL   = \"padron_big.sql\"\nERRORS_FILE  = \"errores_big.txt\"\nTABLE_NAME   = \"padron\"\nPROGRESS_EVERY = 100_000  # progreso por consola\n\n# Aumentar l\u00edmite de tama\u00f1o de campo\ncsv.field_size_limit(sys.maxsize)\n\ndef es_ruc_valido(s: str) -&gt; bool:\n    s = s.strip()\n    return len(s) == 11 and s.isdigit()\n\ndef sql_escape(s: str) -&gt; str:\n    # Escapar comillas simples para SQL (' -&gt; '')\n    s = s.replace(\"'\", \"''\")\n    # Eliminar backslashes que rompen el SQL\n    s = s.replace(\"\\\\\", \"\")\n    return s\n\ndef main():\n    total_leidas = 0\n    total_insertadas = 0\n    total_ignoradas = 0\n    header_skipped = False\n\n    with open(INPUT_FILE,  \"r\", encoding=\"latin-1\", errors=\"replace\") as infile, \\\n         open(OUTPUT_SQL,  \"w\", encoding=\"utf-8\")                 as outsql, \\\n         open(ERRORS_FILE, \"w\", encoding=\"utf-8\")                 as err:\n\n        reader = csv.reader(infile, delimiter=\"|\")\n\n        # Encabezado SQL\n        outsql.write(\"-- Archivo generado autom\u00e1ticamente (compatible con BigDump)\\n\")\n        outsql.write(\"SET autocommit=0;\\nSTART TRANSACTION;\\n\")\n        outsql.write(f\"CREATE TABLE IF NOT EXISTS {TABLE_NAME} (\\n\")\n        outsql.write(\"  ruc VARCHAR(11) PRIMARY KEY,\\n\")\n        outsql.write(\"  nombre VARCHAR(255)\\n\")\n        outsql.write(\") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;\\n\\n\")\n\n        for line_num, row in enumerate(reader, start=1):\n            total_leidas += 1\n\n            # Detectar cabecera\n            if not header_skipped:\n                if len(row) &gt;= 2 and row&#91;0].strip().upper() == \"RUC\":\n                    err.write(f\"L\u00ednea {line_num}: cabecera detectada y omitida.\\n\")\n                    header_skipped = True\n                    continue\n                header_skipped = True\n\n            try:\n                if len(row) &lt; 2:\n                    total_ignoradas += 1\n                    err.write(f\"L\u00ednea {line_num}: ignorada por columnas insuficientes ({len(row)}). Contenido parcial: {row}\\n\")\n                    continue\n\n                ruc_raw = row&#91;0].strip()\n                nombre_raw = row&#91;1].strip()\n\n                if not es_ruc_valido(ruc_raw):\n                    total_ignoradas += 1\n                    err.write(f\"L\u00ednea {line_num}: ignorada por RUC inv\u00e1lido ('{ruc_raw}').\\n\")\n                    continue\n\n                if not nombre_raw:\n                    total_ignoradas += 1\n                    err.write(f\"L\u00ednea {line_num}: ignorada por nombre vac\u00edo (RUC {ruc_raw}).\\n\")\n                    continue\n\n                # Escapar y escribir INSERT \u00fanico por l\u00ednea\n                ruc = sql_escape(ruc_raw)\n                nombre = sql_escape(nombre_raw)\n                outsql.write(f\"INSERT IGNORE INTO {TABLE_NAME} (ruc, nombre) VALUES ('{ruc}','{nombre}');\\n\")\n\n                total_insertadas += 1\n\n                if total_leidas % PROGRESS_EVERY == 0:\n                    print(f\"Procesadas {total_leidas:,} l\u00edneas... Insertadas: {total_insertadas:,}  Ignoradas: {total_ignoradas:,}\")\n\n            except Exception as e:\n                total_ignoradas += 1\n                err.write(f\"L\u00ednea {line_num}: error inesperado: {e}. Contenido: {row}\\n\")\n\n        outsql.write(\"COMMIT;\\n\")\n\n        err.write(\"\\n===== RESUMEN =====\\n\")\n        err.write(f\"Total de l\u00edneas le\u00eddas: {total_leidas}\\n\")\n        err.write(f\"Total insertadas (sentencias SQL): {total_insertadas}\\n\")\n        err.write(f\"Total ignoradas: {total_ignoradas}\\n\")\n\n    print(\"----------\")\n    print(f\"Listo \u2705  SQL: {OUTPUT_SQL}\")\n    print(f\"Errores\/log: {ERRORS_FILE}\")\n    print(f\"L\u00edneas le\u00eddas: {total_leidas:,}\")\n    print(f\"Insertadas:    {total_insertadas:,}\")\n    print(f\"Ignoradas:     {total_ignoradas:,}\")\n\nif __name__ == \"__main__\":\n    main()\n<\/code><\/pre>\n\n\n\n<p>Con eso ya tendremos el ultimo padr\u00f3n convertido a SQL y podremos subirlo a nuestro server con MYSQL y PHP para hacer cuanta consulta queramos.<\/p>\n\n\n\n<p>Este script es meramente educativo pero volvamos a lo puntual esto lo puede hacer cualquiera y no siempre dara buen uso a nuestra informaci\u00f3n. <\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\ud83d\udc49 En resumen:<br>La SUNAT publica el padr\u00f3n reducido porque el <strong>RUC es un registro p\u00fablico obligatorio<\/strong>, necesario para la econom\u00eda formal.<br>Lo pol\u00e9mico es que, por la estructura del RUC, se puede inferir el <strong>DNI<\/strong> de los ciudadanos, lo cual abre la puerta a usos indebidos (fraudes, spam, estafas).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ud83d\udccc \u00bfQu\u00e9 es el Padr\u00f3n Reducido de la SUNAT? Es<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[2377,3423],"tags":[12688,12692,12691,12690,1361,163,4341,2909,279,12685,1340,218,790,12693,3892,12687,3834,12686,259,12689],"class_list":["post-4555","post","type-post","status-publish","format-standard","hentry","category-ciberseguridad","category-sociedad","tag-acceso-publico","tag-administracion-tributaria","tag-consulta-ciudadana","tag-contribuyentes","tag-datos-personales","tag-dni","tag-filtracion-de-informacion","tag-identidad-digital","tag-legalidad","tag-padron-reducido","tag-peru-2","tag-privacidad","tag-proteccion-de-datos","tag-registro-fiscal","tag-riesgos-de-seguridad","tag-ruc","tag-seguridad-digital","tag-sunat","tag-transparencia","tag-tributacion"],"_links":{"self":[{"href":"https:\/\/zidrave.net\/index.php\/wp-json\/wp\/v2\/posts\/4555","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zidrave.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zidrave.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zidrave.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zidrave.net\/index.php\/wp-json\/wp\/v2\/comments?post=4555"}],"version-history":[{"count":7,"href":"https:\/\/zidrave.net\/index.php\/wp-json\/wp\/v2\/posts\/4555\/revisions"}],"predecessor-version":[{"id":4573,"href":"https:\/\/zidrave.net\/index.php\/wp-json\/wp\/v2\/posts\/4555\/revisions\/4573"}],"wp:attachment":[{"href":"https:\/\/zidrave.net\/index.php\/wp-json\/wp\/v2\/media?parent=4555"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zidrave.net\/index.php\/wp-json\/wp\/v2\/categories?post=4555"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zidrave.net\/index.php\/wp-json\/wp\/v2\/tags?post=4555"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}