Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Diabliyo

#1
Buen dia Foro...

Resulta que tengo un sitio en la red Tor, pero no encuentro informacion sobre como puedo respaldar y restaurar el sitio, ya que a diferiencia de un sitio regular, la red Tor asigna un "dominio" tipo "hash.onion", para lo cual no quiero perder mi "hash.onion" ya que tengo gente que accede al sitio de forma regular.

Espero alguien pueda ayudarme :D

Saludos !
#2
Después de 4 días que parecieron "eternos" finalmente solucione mi problema.

El proceso en como realizaba los DigestValue de las Referencias y el SignatureValue son totalmente correctos, el problema radicaba en la Canonización.

Al momento de carga el XML firmado, extraer un nodo y generar la referencia estaba generando una apertura incorrecta lo cual seteaba por defecto la canonización en "preservar espacios" lo cual resultaba un hash distinto al esperado, ya que al momento de declarar el Transform para cada Reference, se indicaba un C14N regular, mas no un C14N-WithComments.

Antes:

$xml= new DOMDocument();
$xml->preserveWhiteSpace= FALSE;
$xml->formatOutput= true;
$xml->load($xmlsrc);
$xmldata= $xml->C14N();


Correcto:

$xml= new DOMDocument();
$xml->formatOutput= true;
$xml->load($xmlsrc);
$xmldata= $xml->C14N();


Este simple detalle me permitió generar el Firmado Xades-Epes sin problemas, ahora todas las tools me marcan "pass/valid" el firmado de las referencias como del SignatureValue.

Saludos !
#3
Estoy integrando firma digital XADES-EPES en PHP sobre el estándar UBL, he leído bastante sobre el tema y en varios repositorios hacen de distintas formas el firmado, vaya, lo que va dentro de los DiguestValue y SignatureValue dejándome finalmente con la duda de: que información realmente va en esos elementos?.

Para verificar mis avances y llegar al firmado correcto me estoy respaldando en este validador https://tools.chilkat.io/xmlDsigVerify.cshtml y he abierto un repositorio donde comparto mi código en PHP hasta donde lo llevo de avanzado: https://gitlab.com/siegroupmx/xmlsinger

Voy al asunto....

>> Como se generan los DigestValue para las Referencias dentro de SignedInfo ??

Mi procedimiento para esto es simplemente tomar el Nodo (por ejemplo KeyInfo) canonizado a C14N y después lo paso por un Algoritmo (sha1, sha256, etc...), después lo convierto a Base64 y el resultado lo coloco sobre DigestValue..... mi proceso es correcto ???

Ejemplo simple y rápido:

CitarSobra mencionar que en el ejemplo de abajo estoy omitiendo el proceso donde creo la etiqueta Singature y sus elementos internos.

   <?php
    
const XMLDSIGNS'http://www.w3.org/2000/09/xmldsig#';
    
    
$xmlSigned'mixml.xml';
    
$xml= new DOMDocument();
    
$xml->preserveWhiteSpaceFALSE;
    
$xml->formatOutputtrue;
    
$xml->load($xmlSigned);
    
    
$xp= new DOMXPath($xml);
    
$xp->registerNamespace('secdsig'self::XMLDSIGNS);
    
$keyinfo$xp->query('.//secdsig:Signature/secdsig:KeyInfo');
    
    
$hashhash("sha256"$keyinfo->item(0)->C14N(), true);
    
$base64base64_encode($hash);
    echo 
$base64# imprime LcOJdpKtT7sgjbblkmGyYrSUslXMlw0TyCc8SOUBJQM=
    
?>


Y en el XML:

   <ds:Reference URI="#xmldsig-a837805e-9235-a8bb-7ab4-688282608259-keyinfo">
    <ds:Transforms>
    <ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
    </ds:Transforms>
    <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
    <ds:DigestValue>LcOJdpKtT7sgjbblkmGyYrSUslXMlw0TyCc8SOUBJQM=</ds:DigestValue>
   </ds:Reference>
   ....
   ....
   <ds:KeyInfo Id="xmldsig-a837805e-9235-a8bb-7ab4-688282608259-keyinfo">
    ... todas las etiquetas internas....
   </ds:KeyInfo>


>> Como se genera el SignatureValue ???

En mi procedimiento tomo el nodo de SignedInfo canonizado a C14N, los firmo con openssl_sign() y el resultado lo convierto a Base64 y coloco dentro de SignatureValue. Es correcto esto que hago??

Ejemplo rápido:

   <?php
    
const XMLDSIGNS'http://www.w3.org/2000/09/xmldsig#';
    
    
$xmlOut'mixml.xml';
    
$xml= new DOMDocument();
    
$xml->preserveWhiteSpaceFALSE;
    
$xml->formatOutputtrue;
    
$xml->load($xmlOut);
    
    
$xp= new DOMXPath($xml);
    
$xp->registerNamespace('secdsig'self::XMLDSIGNS);
    
    
$si$xp->query('.//secdsig:Signature/secdsig:SignedInfo'); # signedinfo
    
openssl_sign($si->item(0)->C14N(), $signature$this->privateKeyOPENSSL_ALGO_SHA256);
    
$datobase64_encode($signature); # esto va en SignatureValue
    
    
$sv$xp->query('.//secdsig:Signature/secdsig:SignatureValue'); # signaturevalue
    
$sv->item(0)->nodeValue$dato;
    
?>


Y el SignatureValue dentro del XML esta:

   <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="xmldsig-bfcdf0f0-2655-b952-9c85-77493d9f241f">
    <ds:SignedInfo>
    <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
    <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
    <ds:Reference Id="xmldsig-bfcdf0f0-2655-b952-9c85-77493d9f241f-ref0" URI="">
    <ds:Transforms>
    <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
    </ds:Transforms>
    <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
    <ds:DigestValue>KWOvQ3tWaygQXkkvfI6s9UO0azjQgc0YGp9JANDXYis=</ds:DigestValue>
    </ds:Reference>
    <ds:Reference URI="#xmldsig-a837805e-9235-a8bb-7ab4-688282608259-keyinfo">
    <ds:Transforms>
    <ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
    </ds:Transforms>
    <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
    <ds:DigestValue>LcOJdpKtT7sgjbblkmGyYrSUslXMlw0TyCc8SOUBJQM=</ds:DigestValue>
    </ds:Reference>
    </ds:SignedInfo>
    <ds:SignatureValue Id="xmldsig-bfcdf0f0-2655-b952-9c85-77493d9f241f-sigvalue">
    ZGcaOhKK3Uzp64T11LHFKAy1eOkKeMpvKNNAeBFapJxbyCr8iQDkGQ2B+VQFYLWZnDneK6Cuc6uDtUw14q4mlYoarlIRVvLlsiQK0OmFrdWEM4sd62WPP2N0GpUOOh/I/BjggsqNV1OOWG2xutZNbdh4maJzxEbcLuU8SrdPuU6q38bTAw/QJyQ5F4eiRr++28sR9G3yV0nTzkZXR5QNPScdrbwrMtH/vkBx0FfV8ErzubwKyPdvQSbugmLMk8hd7Rnn5SRg8JaxQhCC5TDPC3KOmj5Nh1zHmzATZaRAbP0XNoYsDLnQtmteo5/RL2NHGvHYbP0teUF43nHXu/KAVg==
    </ds:SignatureValue>



>> CONCLUSIÓN

El validador me dice que la Firma esta mal, y que también esta mal el firmado de las referencias :(

Enlace a un ejemplo https://gitlab.com/siegroupmx/xmlsinger/blob/master/examples/ejemplo_out.xml

Certificado: https://gitlab.com/siegroupmx/xmlsinger/blob/master/tmp/certificado.pem

Firma: https://gitlab.com/siegroupmx/xmlsinger/blob/master/tmp/firma.pem

Clave: persona_juridica_pruebas
#4
Buenas.

Navegando en la DeepWeb me encontré con su site que al parecer es Hispano/Latino, pero son solo especulaciones mías ya que los únicos Hacks publicados son de sitios Hispanos.

Enlace --> zsmjk76e7vldzli6.onion

Me gustaría saber si conocen algunos Links de interés y ver si podríamos armar un tipo "Biblioteca" de enlaces.

Saludos !
#5
Desafíos - Wargames / [Wargame] Aporte Wargames !
16 Diciembre 2018, 03:35 AM
Buenas.

He codeado un wargame framework, es extremadamente simple y sencillo, pero permite a otros colaborar aportando nuevos juegos, les paso enlace de los primeros 10 retos que puse :D

Wargame --> https://siegroupmx.000webhostapp.com

El que guste aportar mandeme los retos y los subo con muchisimo gusto :D

Saludos !
#6
Cita de: Shell Root en 31 Octubre 2018, 15:47 PM
Código (php) [Seleccionar]
echo sha1(hex2bin(sha1("password"))); # 2470c0c06dee42fd1618bb99005adca2ec9d1e19
;-)

Le hubieras dado chanse que el chaval lo descubriera...  luego creen que en Google esta la respuesta correcta y hacen copy&paste a todo.

Pero bueno... en su momento lo resolvi sin bin2hex, mas sencillo:

Código (php) [Seleccionar]
echo sha1(sha1($pwd, "true"));
#7
Cita de: Tordur en 30 Octubre 2018, 12:53 PM
En realidad no cifra, sino que hace hash.

Here's the essence of the PASSWORD function that current MySQL uses. You can execute it from the sql terminal:
Código (sql) [Seleccionar]
mysql> SELECT SHA1(UNHEX(SHA1("password")));

+------------------------------------------+
| SHA1(UNHEX(SHA1("password")))            |
+------------------------------------------+
| 2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
+------------------------------------------+
1 row in set (0.00 sec)


Sacado de: https://stackoverflow.com/questions/5654819/how-can-i-decrypt-mysql-passwords

PD: GOOOGLE

Entonces si hago en PHP (como ejemplo): sha1(unhex(sha1("password"))); va a darme el resultado: 2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 ???

PD: No funcionara...
#8
Desarrollo Web / Re: Blog Wordpress -DEEP WEB-
12 Octubre 2018, 19:21 PM
Cita de: victorius en 12 Octubre 2018, 11:42 AM
Me gustaría publicar un blog Wordpress en la deep web. Ya descargué wordpress, hice el servidor con xampp, desarrollé mi blog y tengo el enlace .onion para publicar el blog.

Pero cuando cambio el archivo index.php por index.html la página sale vacia. Sin embargo cuando lo hago con el index.php la página si se publica pero sin la plantilla y sin ningún funcionamiento. Y si publico un index.html con alguna palabra suelta SI funciona la página pero solo con la palabra que yo escribí.

No sé si debo olvidarme de wordpress o existe alguna manera de publicar un wordpress y que no tenga problemas. O directamente hacerlo entero otra vez en php, lo cual me mataría.

;-) ¡Gracias por la atención!



Es imposible darte una ayuda optima, la única seria hacerlo por ti... Ya que, lo que mencionas es totalmente fuera de contexto :S, cambiar el .php por .html, es obvio el desenlace.

Consejo: aprende sobre Servidores Apache, sobre PHP y programación Básica PHP. Caso contrario estas perdido !

Tu problema es como: "Tengo una podadora pero le quite la Cuchilla y no me corta el pasto.."

Saludos !
#9
Fue un error del ejemplo al escribirlo aqui...

La ruta la he probado poniendola como comentas, y da el mismo detalle... Del lado del CLIENTE verifico y me consta que la imagen es leida por "file_get_contents()", es colocada en el "array" y jsoneada para despues ser enviada por el socket. Pero del lado del Server no puedo recibir la imagen, vaya, por alguna razon que no sale en los Logs de apache puedo constatar que sea error de alguna linea de codigo del lado del servidor api :(

Ahorita lo "resolvi" mandando la URL (http://webcliente.com/tmp/laimagentemporalsubida.jpg), y del lado del Servidor API la bajo haciendo "file_get_contents()" a la URL... Pero no es lo mas optimo...

Saludos !
#10
Buenas Foro...

Estoy haciendo un API en PHP, empece mandando informacion de mi Web a mi API sin problema alguno haciendo algo asi:

Código (php) [Seleccionar]
<?
$data= array(
"id_usuario"=>"123456789aa",
"fecha_registro"=>"561651198897", # formato linux
"mail"=>"sucorreo@gmail.com"
);

$curl= curl_init(); # inciamos url
curl_setopt($curl, CURLOPT_URL, "https://api.miweb.com/index.php" );
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 30 );
curl_setopt($curl, CURLOPT_TIMEOUT, 30 );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $curl, CURLOPT_CUSTOMREQUEST, "POST" );
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE );
curl_setopt($curl, CURLOPT_HEADER, 1 );
curl_setopt( $curl, CURLOPT_POST, 1 );
curl_setopt( $curl, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json' ) );
curl_setopt( $curl, CURLOPT_POSTFIELDS, json_encode($data) );
$r= curl_exec($curl);
curl_close($curl);

echo "<br><br>Respuesta: ";
print_r( json_decode($r) );
?>

Hasta este punto, mando la informacion a mi API y la guarda, y como resultado me retorna la informacion de confirmacion, pero ahora quiero poder mandar archivos, ya sea una imagen, un archivo de documento, etc... pero me topo con que del lado de mi API el archivo no lleva, nose si sera una restriccion del servidor, pero quiero PRIMERO disipar si es que estoy haciendo mas el envio de datos.

El proceso para mandar el archivo, es el mismo codigo que les mencione arribr, excepto que al array le agrego esto:

Código (php) [Seleccionar]
# nuevo array
$data= array(
"id_usuario"=>"123456789aa",
"fecha_registro"=>"561651198897", # formato linux
"mail"=>"sucorreo@gmail.com",
"imagen"=>urlencode(base64_encode("/path/delusuario/imagenes/laimagen.jpp"))
);


Mi WebService se queda petado... vaya, no es que se trabe, simplemente cuando le embebo al "request" json la imagen, el servidor no me response ninguna respuesta, es mas, hasta he borrado el codigo en el API para solo y unicamente mandar como respuesta un "HOLA", y nada... en cambio si quito la "imagen", si me responde el "HOLA".

Sera que mando mal la imagen ?

Saludos !