我正在尝试研究如何为iTunes Music Store(iTMS)生成参数以及它们是什么/意思.到目前为止,我可以做所有其他正常的事情,如登录,查看帐户信息,但购买看起来有一些加密元素(或只是我没有看到的东西).
例如,iTunes 9购买一些随机免费应用程序时给出:
<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<dict>
<key>guid</key>
<string>4225D067.2C503B42.0DE019C0.09C96165.C4AEA83B.2AFF3A27.37A7327A</string>
<key>kbsync</key>
<data>
AAEAAOuJNWEY3t2cfDs71eXYbxmcvyB/ZB8PABQSjnY0zvL9ofILWBGfLd4Z7HnI9s3Y
akaVt+3xOW9E9Arva1RLzfX5ONpclt5s2IW/rXOgDnX6/AmacJL4UbnvvLR7mUtKZVNh
aOlKGk7dNqMHnZUiIkLRSS+sOJ2KIR2OT6kZ02tlDYv/bmI9Zr5G2HUsG1TZRQ==
</data>
<key>machineName</key>
<string>MORPHEUS</string>
<key>needDiv</key>
<string>0</string>
<key>price</key>
<string>0</string>
<key>pricingParameters</key>
<string>SWUPD</string>
<key>productType</key>
<string>C</string>
<key>salableAdamId</key>
<string>314765784</string>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)
我知道大部分来自action-params或buy-params(对于这个例子来说productType=C&salableAdamId=314765784&pricingParameters=SWUPD&price=0&ct-id=14),并且GUID是常量(对于我的机器),但是我无法弄清楚kbsync字段是什么.
我希望有人能看一眼并迅速解决,但我无法做到.
其他信息也可能基于:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>signature</key><data>kqUFBdQnA0MPzrWKAGcsBshzc5XnLLm9TO+0l0jyZTJYYFiIsRc7m97IYyCCkUt/X5l+ObKfc+06Z5sgu/tAvlA1IE6LKKCEfZQVihFoYeihff3vf6lC821tPuuxuQdReBxyjHy1n94twf2iS8uRR3LoZQhQxpRdh5vDNrHwXOg=</data>
<key>certs</key>
<array>
<data>MIIDOTCCAiGgAwIBAgIBATANBgkqhkiG9w0BAQQFADB+MRMwEQYDVQQKEwpBcHBsZSBJbmMuMRUwEwYDVQQLEwxpVHVuZXMgU3RvcmUxGjAYBgNVBAMTEWlUdW5lcyBTdG9yZSBSb290MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTESMBAGA1UEBxMJQ3VwZXJ0aW5vMB4XDTA3MTAwOTIxNTkxNFoXDTA4MTEwNzIxNTkxNFowgYExEzARBgNVBAoTCkFwcGxlIEluYy4xFTATBgNVBAsTDGlUdW5lcyBTdG9yZTEdMBsGA1UEAxMUaVR1bmVzIFN0b3JlIFVSTCBCYWcxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRIwEAYDVQQHEwlDdXBlcnRpbm8wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOLMu/eV+eSLVEGtn536FkXAsi/vtpXdHpTNS9muEVlvlkubKXdPDd5jV5WnQpAKY4GZrBn8azP9UKBd85nhIb5nqHQHCmH5DpBK9GZPFpoIdXguJSre8pZwQaYEXQGtTt3nXvk9k8OHs5W/9xFLuD7fpkKSIl+0KLPFULdyEtlvAgMBAAGjQjBAMB0GA1UdDgQWBBTd4gDjfN3LFr3b5G8dvUTpC56JZTAfBgNVHSMEGDAWgBSw2uF/qItKaoFdDKGEVkYeau/lzzANBgkqhkiG9w0BAQQFAAOCAQEAIDpkK1CqTNyl7SEZWvUTRYPdZzn9Y4QjnbSQ6hFkF/PClJkXn3TzMW3ojnxNLphKZxOY53s6D/Hf1B5UX2bJDAnfQ/W8d10SPubGJ1FnUZK8KaKeOzAgks5ob9dnOUe4CZKhZ5FyggIJfgd38Q0s8WF474j5OA/5XRPczgjt+OiIfzEVX5Xqpm1TU7T4013eHze5umqAsd9fFxUXdTC+bl9xdj5VOmqUUfOivoiqiBK2/6XAaDIFF/PEnxVou+BpqkdsyTZz/HiQApve+7NONqS58ciq3Ov+wivpVJKxMyFgcXFWb/d2ZTc04i+fGf0OA4QmkSRcAZOxQkv0oggtTw==</data>
</array>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud) 我试图用node.js创建一个Facebook应用程序,但是我在检查已签名的请求时遇到了麻烦.每次我发出请求时,程序都会抛出一个SyntaxError:Unexpected token ILLEGAL:
undefined:1
":"721599476"}
^^
SyntaxError: Unexpected token ILLEGAL
Run Code Online (Sandbox Code Playgroud)
罪魁祸首功能如下:
function parse_signed_request(signed_request, secret) {
encoded_data = signed_request.split('.',2);
// decode the data
sig = encoded_data[0];
json = base64url.decode(encoded_data[1]);
data = JSON.parse(json); // ERROR Occurs Here!
// check algorithm - not relevant to error
if (!data.algorithm || data.algorithm.toUpperCase() != 'HMAC-SHA256') {
console.error('Unknown algorithm. Expected HMAC-SHA256');
return null;
}
// check sig - not relevant to error
expected_sig = crypto.createHmac('sha256',secret).update(encoded_data[1]).digest('base64').replace(/\+/g,'-').replace(/\//g,'_').replace('=','');
if (sig !== expected_sig) {
console.error('Bad signed JSON Signature!');
return …Run Code Online (Sandbox Code Playgroud) 答案是我使用了错误的引号而不是反引号.愚蠢的语法hilighter欺骗了我.
在过去的半小时里,我一直坚持这个简单的事情,所以我想我可以尝试在这里快速回答一下.
假设我使用的是mysql 5.1,那么我的SQL语法究竟是什么不正确
CREATE TABLE 'users' (
'id' INT(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
'username' VARCHAR(20) NOT NULL,
'password' VARCHAR(40) NOT NULL,
'salt' VARCHAR(40) DEFAULT NULL,
'email' VARCHAR(80) NOT NULL,
'created_on' INT(11) UNSIGNED NOT NULL,
'last_login' INT(11) UNSIGNED DEFAULT NULL,
'active' TINYINT(1) UNSIGNED DEFAULT NULL,
)
ENGINE InnoDB;
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
You have an error in your SQL syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use near ''users';
CREATE TABLE 'users' …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用内置的加密库解码Node.js中的以下base64编码的密文
2tGiKhSjSQEjoDNukf5BpfvwmdjBtA9kS1EaNPupESqheZ1TCr5ckEdWUvd+e51XWLUzdhBFNOBRrUB5jR64Pjf1VKvQ4dhcDk3Fdu4hyUoBSWfY053Rfd3fqpgZVggoKk4wvmNiCuEMEHxV3rGNKeFzOvP/P3O5gOF7HZYa2dgezizXSgnnD6mCp37OJXqHuAngr0pps/i9819O6FyKgu6t2AzwbWZkP2sXvH3OGRU6oj5DFTgiKGv1GbrM8mIrC7rlRdNgiJ9dyHrOAwqO+SVwzhhTWj1K//PoyyzDKUuqqUQ6AvJl7d1o5sHNzeNgJxhywMT9F10+gnliBxIg8gGSmzBqrgwUNZxltT4uEKz67u9eJi59a0HBBi/2+umzwOCHNA4jl1x0mv0MhYiX/A==
Run Code Online (Sandbox Code Playgroud)
它似乎与PHP的mcrypt函数一起使用字符串typeconfig.sys^_-作为键,如将值输入到http://www.tools4noobs.com/online_tools/decrypt/并选择Blowfish,ECB,Base64 decode所示.
但是,当我在Node.js中运行以下代码时:
var crypto = require('crypto');
var data = "2tGiKhSjSQEjoDNukf5BpfvwmdjBtA9kS1EaNPupESqheZ1TCr5ckEdWUvd+e51XWLUzdhBFNOBRrUB5jR64Pjf1VKvQ4dhcDk3Fdu4hyUoBSWfY053Rfd3fqpgZVggoKk4wvmNiCuEMEHxV3rGNKeFzOvP/P3O5gOF7HZYa2dgezizXSgnnD6mCp37OJXqHuAngr0pps/i9819O6FyKgu6t2AzwbWZkP2sXvH3OGRU6oj5DFTgiKGv1GbrM8mIrC7rlRdNgiJ9dyHrOAwqO+SVwzhhTWj1K//PoyyzDKUuqqUQ6AvJl7d1o5sHNzeNgJxhywMT9F10+gnliBxIg8gGSmzBqrgwUNZxltT4uEKz67u9eJi59a0HBBi/2+umzwOCHNA4jl1x0mv0MhYiX/A==";
var decipher = crypto.createDecipher('bf-ecb', 'typeconfig.sys^_-');
data = decipher.update(data, "base64", "utf8");
data += decipher.final("utf8");
console.log(data);
Run Code Online (Sandbox Code Playgroud)
我得到垃圾输出:
y
?:????d?(????Q?i??z1??4?? ?k?(? ??a5????u??73c/??(???)????????f????
?ec?-<z?8????(?-L?????I??1L*??u?4?j-??h?@\P)???.?^???q??U???W&?x??85?T-?9,dE<g}?`*?
??|@????k"?!?D'u???,x??7????
??9q=q?q???>?w?T????H3??i)R??zy??C??
??o?
Run Code Online (Sandbox Code Playgroud)
我也尝试过对库本身的测试,因为它似乎能够处理它自己编码的东西:
var crypto = require('crypto')
var cipher = crypto.createCipher("bf-ecb", "key");
var data = cipher.update("foobar", "utf8", "base64");
data += cipher.final("base64");
console.log(data);
var decipher = crypto.createDecipher("bf-ecb", "key");
data = decipher.update(data, "base64", "utf8");
data += decipher.final("utf8");
console.log(data);
Run Code Online (Sandbox Code Playgroud)
生产:
y0rq5pYkiU0=
foobar
Run Code Online (Sandbox Code Playgroud)
但复制并粘贴base64字符串并将其输入http://www.tools4noobs.com/online_tools/decrypt/以及键"key"也会产生垃圾输出. …
我正在尝试使用 node-ffi 从 node.js 中使用 libvlc,虽然它似乎适用于一般的基本媒体播放器功能,但当我尝试使用时,我的程序中不断出现崩溃、分段错误和一般冻结libvlc 的异步事件系统并将其与节点的 EventEmitter 集成。到目前为止,我使用的代码托管在https://gist.github.com/2644721,但似乎不起作用。
GDB 产生了好坏参半的结果,但我收到的最后一次崩溃是:
Program received signal SIGSEGV, Segmentation fault.
0x000000000057cc86 in v8::Function::Call(v8::Handle<v8::Object>, int, v8::Handle<v8::Value>*) ()
(gdb) bt
#0 0x000000000057cc86 in v8::Function::Call(v8::Handle<v8::Object>, int, v8::Handle<v8::Value>*) ()
#1 0x00007ffff5997a41 in CallbackInfo::DispatchToV8(CallbackInfo*, void*, void**) ()
from /home/adam/node_modules/node-ffi/compiled/0.6/linux/x64/ffi_bindings.node
#2 0x00007ffff5997adb in CallbackInfo::WatcherCallback(uv_async_s*, int) ()
from /home/adam/node_modules/node-ffi/compiled/0.6/linux/x64/ffi_bindings.node
#3 0x00000000007be12f in ev_invoke_pending ()
#4 0x00000000007c2087 in ev_run ()
#5 0x00000000007b597f in uv_run ()
#6 0x000000000052a147 in node::Start(int, char**) ()
#7 0x00007ffff63ca76d in __libc_start_main ()
from /lib/x86_64-linux-gnu/libc.so.6
#8 …Run Code Online (Sandbox Code Playgroud) 是否可以在没有窗口的情况下使用Windows Raw Input API(即从控制台应用程序)?
我尝试过使用RegisterRawInputDevices,但我的消息循环似乎没有从GetMessage 获取任何事件,因此只是"挂起".
我对编译最新版本的XNU内核的最佳方法感到困惑.我已经看到很多关于Mac OS X 10.4附带的旧内核的说明,但是较新的源代码缺少指令所包含的许多内容.只是make在XNU内核源上运行会带来很多关于找不到的错误ctfconvert,ctfmerge并且ctfdump.有没有人有一个很好的"howto"来构建一个新的内核?
我正在尝试从Node.js服务器脚本以"虚拟"模式启动VLC,但是child_process.spawn('vlc',['-I dummy'])在使用Windows时使用会为VLC的输出生成一个新的控制台窗口.有没有办法防止这种情况发生并通过stdout ReadableStream强制所有stdout,所以没有"弹出窗口"发生?
编辑:这个问题与node.js无关,它只是我调用它的方式和VLC的行为.解决方案如下.
谢谢.
目前,似乎我已经尝试了本书中的每一个技巧,试图让它发挥作用.我需要一些编码AMF请求然后解码响应的方法.在这一点上,我不在乎它是什么语言,只要它是可行的和免费的(就像我一样),但我更喜欢PHP.
我不知道还需要哪些其他信息,但我很乐意提供更多信息 - 只需评论一下!
谢谢.
编辑:似乎我使用的AMFPHP版本被破坏了.使用我从某处工作的不同版本.
我正在使用Doxygen来记录我的python模块,我试图让它链接到文本中的函数.我可以将它链接到函数的命名空间ok,但不能链接到函数本身.
如ModuleName::Namespace工作,但ModuleName::Namespace::getSomething()没有.
如何让这些链接起作用?
node.js ×4
vlc ×2
windows ×2
amf ×1
base64 ×1
blowfish ×1
console ×1
crash ×1
cryptography ×1
doxygen ×1
ecb ×1
encryption ×1
facebook ×1
flash ×1
itunes ×1
javascript ×1
json ×1
kernel ×1
macos ×1
mcrypt ×1
message-loop ×1
module ×1
mysql ×1
namespaces ×1
node-ffi ×1
parse-error ×1
php ×1
plist ×1
python ×1
raw-input ×1
remoting ×1
subprocess ×1
v8 ×1