2016-05-17 15 views
0

Ich habe ein Magtek uDynamo und versuche Track 1 zu entschlüsseln. Ich habe das unten gelesen und verstehe ein bisschen, weiß aber nicht, wie man die Daten tatsächlich entschlüsselt. Der Verkäufer sagte, dass er den ANSI-Testschlüssel zum Entschlüsseln verwendet, aber ich kann nichts finden. Ich habe die KSN, Sitzung und Seriennummern. Ich habe auch einige Java-Code versucht, die ich gefunden habe, aber es scheint nicht zu funktionieren. Es gibt null zurück oder möglicherweise gebe ich den falschen BDK ein. Ich benutze nur die Seriennummer für das, was ich irgendwo gelesen habe. Ich mache das auf Android. Vorzugsweise möchte ich Code, der auf dem Server nicht auf dem Gerät ausgeführt wird, so dass es über die Leitung zusammen mit HTTPS verschlüsselt wird.Decrypt 3DES DUKPT nach dem ANSI X9.24 Teil 1 Standard

How ciphertext was generated in card reader using DUKPT encryption?

3DES-DUKPT (CBC) decryption confirmation

https://github.com/yinheli/dukpt/blob/master/src/main/java/com/yinheli/tool/DukptDecrypt.java

aktualisieren Ich suche 3DES DUKPT pro ANSI X9.24 Teil 1 Standard

Ich verwende dieses https://github.com/camcima/dukpt-php/tree/e8fceb4df8757e7e097c435221b4e93e097d3c9f zu entschlüsseln

Ich musste die Dateien aktualisieren und sicherstellen, dass ich die neueste phpseclib habe und sie läuft, aber die Daten kommen wie C 4A fr (Wb f 7z n: w 9 , f7 , m = z CRW

Ich muss etwas verpasst haben. Ich habe verschiedene Modi ausprobiert und versuche nach Kodierung zu suchen. Bitte lassen Sie mich wissen, wenn Sie eine Lösung oder Ideen haben. Auch ihre Testdaten funktionieren, damit ich bin mir nicht sicher, was der Unterschied zwischen mir ist und ihr

-Code Ich bin mit index.php in der Wurzel:

include 'vendor/autoload.php'; 

use DUKPT\DerivedKey; 
use DUKPT\KeySerialNumber; 
use DUKPT\Utility; 

$encryptedHexData = 'de8bfe769dca885cf3cc312135fe2cccfacf176235f4bdee773d1865334315ed2aefcab613f1884b5d63051703d5a0e2bd5d1988eeabe641bd5d1988eeabe641'; 
$ksn = '0117e00027'; 
$bdk = 'ABCDEFFEDCBA'; 

$key = new KeySerialNumber($ksn); 
$encryptionKey = DerivedKey::calculateDataEncryptionRequestKey($key, $bdk); 
$actual = Utility::hex2bin(Utility::removePadding(Utility::tripleDesDecrypt($encryptedHexData, $encryptionKey, true))); 


echo $encryptionKey.'<br />'; 

echo $actual.'<br /><br />'; 
+0

[Dieser Blog-Eintrag] (https://www.parthenonsoftware.com/blog/how-to-decrypt-magnetic-stripe-scanner-data-with-dukpt) hat mir in der Vergangenheit geholfen. –

+0

Ich habe gerade versucht dies http://57f4dad48e7a4f7cd171c654226feb5a.proxysheep.com/questions/32536045/how-to-decode-dukpt-cbc-mode-in-java aber wie bekommen Sie die Kreditkartennummern aus, danke – user1054513

+0

Are Beziehen Sie sich nun darauf, wie Sie eine Spur1 weitergeben? Track1 ist in dieser [wiki] (https://en.wikipedia.org/wiki/Magnetic_stripe_card) beschrieben –

Antwort

0

Mit einem richtigen BDK und KSN alle Sie müssen jetzt die verschiedenen Modi ausprobieren.

Gerade jetzt Sie verwenden DerivedKey::calculateDataEncryptionRequestKey($key, $bdk);

Sie müssen die anderen Modi, um zu versuchen, um herauszufinden, welches Ihr Gerät verwendet. Hier ist der Code, den ich verwendet habe, um das richtige Ergebnis für mein Gerät zu finden.

include 'vendor/autoload.php'; 

use DUKPT\DerivedKey; 
use DUKPT\KeySerialNumber; 
use DUKPT\Utility; 

$encryptedHexData = 'C25C1D1197D31CAA87285D59A892047426D9182EC11353C051ADD6D0F072A6CB3436560B3071FC1FD11D9F7E74886742D9BEE0CFD1EA1064C213BB55278B2F12'; 
$ksn = 'FFFFE00008'; 
$bdk = 'ABCDEFFEDCBA'; 

$key = new KeySerialNumber($ksn); 

$encryptionKey = DerivedKey::calculatePinEncryptionKey($key, $bdk); 
$decryptedOutput = Utility::hex2bin(Utility::tripleDesDecrypt($encryptedHexData, $encryptionKey, true)); 
echo '<br /><br />Pin Encryption Key: '.$encryptionKey; 
echo '<br />Decrypted Output: '.$decryptedOutput; 

$encryptionKey = DerivedKey::calculateMacRequestKey($key, $bdk); 
$decryptedOutput = Utility::hex2bin(Utility::tripleDesDecrypt($encryptedHexData, $encryptionKey, true)); 
echo '<br /><br />Mac Request Key: '.$encryptionKey; 
echo '<br />Decrypted Output: '.$decryptedOutput; 

$encryptionKey = DerivedKey::calculateMacResponseKey($key, $bdk); 
$decryptedOutput = Utility::hex2bin(Utility::tripleDesDecrypt($encryptedHexData, $encryptionKey, true)); 
echo '<br /><br />Mac Response Key: '.$encryptionKey; 
echo '<br />Decrypted Output: '.$decryptedOutput; 

$encryptionKey = DerivedKey::calculateDataEncryptionRequestKey($key, $bdk); 
$decryptedOutput = Utility::hex2bin(Utility::tripleDesDecrypt($encryptedHexData, $encryptionKey, true)); 
echo '<br /><br />Data Encryption Request Key: '.$encryptionKey; 
echo '<br />Decrypted Output: '.$decryptedOutput; 

$encryptionKey = DerivedKey::calculateDataEncryptionResponseKey($key, $bdk); 
$decryptedOutput = Utility::hex2bin(Utility::tripleDesDecrypt($encryptedHexData, $encryptionKey, true)); 
echo '<br /><br />Data Encryption Response Key: '.$encryptionKey; 
echo '<br />Decrypted Output: '.$decryptedOutput; 

Also für diese BDK und KSN ist die folgende Ausgabe.

Pin Encryption Key: 27F66D5244FF621EAA6F6120EDEB427F 
Decrypted Output: %B5452300551227189^HOGAN/PAUL ^000000725000000? 

Mac Request Key: 27F66D5244FF9DE1AA6F6120EDEBBD80 
Decrypted Output: W����U�P�TfB/`����þ&��f��3y;�U�Zy��UK�[��s�;�>�[�b 

Mac Response Key: 27F66D52BBFF62E1AA6F612012EB4280 
Decrypted Output: b�K2a�S0��9�Mb-����*L�J���� ��s�\���H�����=���e�]�,���Hwq� 

Data Encryption Request Key: C39B2778B058AC376FB18DC906F75CBA 
Decrypted Output: RA]�ԅⱰQ���'v}b��h��St�����?� lu/�ٵ�P��!���6�� � 

Data Encryption Response Key: 846E267CB822197406DA2B161191C6E4 
Decrypted Output: ��,�B^FZ�� ςs�c���*E�4��0��ǂ}����6`-P�b�ʞ̳aصĬ�&���+��