Front-End Developer Handbook 2017

Front-End Developer Handbook 2017

Posted in Uncategorized | Leave a comment

Using Bing Wallpapers in Lunux

Just written a simple python script to get fancy Bing Wallpapers on my Linux desktop.
Usage:

python3 bing_wallpaper_fetch.py -c 8 -d ~/Pictures/Wallpapers

The script is added to /etc/crontab to fetch the latest wallpaper every day:

# /etc/crontab
# Fetch the new Bing Wallpaper daily at 13:00
0 13 * * * tim python3 /home/tim/dev/bing-wallpaper-fetch/bing_wallpaper_fetch.py -c 1 -d ~/Pictures/Wallpapers/Bing

After being fetched, the images are picked up and displayed by amazing vrty application.

Note: due to the Bing’s API limitation, only the last 16 images are available for download – to be fixed later

Posted in Uncategorized | Tagged , | Leave a comment

30-minute time interval code snippet

How to get the list of 30-minute interval time stamps from now up until midnight

Python:

Posted in Uncategorized | Tagged | Leave a comment

Django Under the Hood conf summary

www.djangounderthehood.com

Posted in Uncategorized | Tagged , | Leave a comment

Storing git credentials


git config credential.helper store

Posted in Uncategorized | Tagged | Leave a comment

Алгоритм вычисления CVV/CVV2

CSC/CVV

CVV – Card Verification Value (в терминологии Visa), оно же CSC – Card Verification Code (в терминологии MasterCard) состоит из трех цифр и хранится на магнитной полосе карты.

Для вычисления CVV/CSC требуются следующие данные:
PAN: 4433 6782 9826 1175
Expiration Date: 0916 (здесь – в формате MMYY, хотя может быть и наоборот)
Service Code: 101 (в случае CSC/CVV это всегда 101, подробнее про возможные значения написано вот тут)

Expiration Date и Service Code последовательно соединяются друг с другом, дополняются нулями до длины в 16 символов. Получается Block2:
Block2: 0916 101 000000000

Для операций шифрования используется ключ двойной длины:
CVVKey: 4C37C8319D76ADAB 58D9431543C2165B
CVVKeyL: 4C37C8319D76ADAB
CVVKeyR: 58D9431543C2165B

Алгоритм вычисления CSC/CVV таков:
1. PAN шифруется алгоритмом DES с помощью ключа CVVKeyL:
des(CVVKeyL, PAN) = des(4C37C8319D76ADAB, 4433678298261175) = C19F07316463054E

2. Результат этой операции XOR-ится с Block2:
xor(0916101000000000, C19F07316463054E) = C88917216463054E

3. Результат операции 2 шифруется алгоритмом 3DES с помощью ключа CVVKey:
3des(4C37C8319D76ADAB 58D9431543C2165B, C88917216463054E) = B4C78A032A4F6551

4. Из результата операции 3 слева направо последовательно выбираются три цифры, которые и формируют значение CVV данной карты. В нашем случае это 478.

CVV2/CSC2

CVV2 (в случае Visa) и CSC2 (в случае MasterCard) – это три цифры, которые наносятся на обратную сторону карты.
CSC2/CVV2 предназначен для выполнения операций “Card Not Present” – например, покупок в интернете. Вводя значение CVV2, вы тем самым подтверждаете, что карта физически находится у вас в руках.

Алгоритм вычисления CSC2 идентичен алгоритму вычисления CSC/CVV, за исключением того, что сервис-код имеет значение 000:
PAN: 4433 6782 9826 1175
Expiration Date: 0916
Service Code: 000
Block2: 0916 000 000000000

Для операций шифрования также используется ключ двойной длины (в моём примере ключи CVVKey и CVV2Key совпадают, в реальном мире они конечно же различны):
CVV2Key: 4C37C8319D76ADAB 58D9431543C2165B
CVV2KeyL: 4C37C8319D76ADAB
CVV2KeyR: 58D9431543C2165B

Здесь всё то же самое:
1. PAN шифруется алгоритмом DES с помощью ключа CVV2KeyL:
des(CVV2KeyL, PAN) = des(4C37C8319D76ADAB, 4433678298261175) = C19F07316463054E

2. Результат этой операции XOR-ится с Block2:
xor(0916000000000000, C19F07316463054E) = C88907316463054E

3. Результат операции 2 шифруется алгоритмом 3DES с помощью ключа CVV2Key:
3des(4C37C8319D76ADAB 58D9431543C2165B, C88907316463054E) = D00AA1E607A144BE

4. Из результата операции 3 слева направо последовательно выбираются три цифры, которые и формируют значение CVV2 данной карты – 001 в нашем примере.

Posted in Uncategorized | Leave a comment

My new card

Posted in Uncategorized | Leave a comment

(Untitled)

Тот, кто жертвует свободой ради спокойствия, не достоин иметь ни того, ни другого.

Бенджамин Франклин.

Posted in Uncategorized | Leave a comment

Про “холодную голову, горячее сердце”, вот это вот всё

В 40-е годы советской разведкой для шифрования секретных телеграмм использовались т.н. одноразовые блокноты – ключи для шифрования (по сути – наборы случаных чисел). Случайность ключей в этом деле очень критична, и она достигалась бросанием игральных костей.

Однако, в 1942 году кому-то из офицеров НКВД (или нескольким офицерам – история умалчивает) внезапно стало в лом бросать кубики (генерировать случайные ключи), в результате, получился всего один неправильный шифроблокнот с повторяюшимися ключами. Следствием этой обычной человеческой тупости стало то, что контрразведка США получила доступ ко многим советским секретным сообщениям, а рассекреченные таким образом участники проекта “Манхеттен” отправились на электрический стул.

Больше эпичных подробностей – в статье на википедии.

Posted in Uncategorized | Leave a comment

The result of suffer and pain during the Fall of 2013

Posted in Uncategorized | Leave a comment