小编Ast*_*ron的帖子

用Python读写二进制文件

以下代码似乎没有正确读/写二进制形式.它应该读取一个二进制文件,逐位XOR数据并将其写回文件.没有任何语法错误,但数据无法验证,我已通过其他工具测试源数据以确认xor密钥.

更新:根据评论中的反馈,这很可能是由于我正在测试的系统的字节序.

xortools.py:

def four_byte_xor(buf, key):
    out = ''
    for i in range(0,len(buf)/4):
        c = struct.unpack("=I", buf[(i*4):(i*4)+4])[0]
        c ^= key
        out += struct.pack("=I", c)
    return out
Run Code Online (Sandbox Code Playgroud)

调用xortools.py:

from xortools import four_byte_xor
in_buf = open('infile.bin','rb').read()
out_buf = open('outfile.bin','wb')
out_buf.write(four_byte_xor(in_buf, 0x01010101))
out_buf.close()
Run Code Online (Sandbox Code Playgroud)

看来我需要读取每个答案的字节数.由于上面的函数操作多个字节,上面的函数如何合并到下面?或者没关系?我需要使用struct吗?

with open("myfile", "rb") as f:
    byte = f.read(1)
    while byte:
        # Do stuff with byte.
        byte = f.read(1)
Run Code Online (Sandbox Code Playgroud)

例如,以下文件有4个重复字节,01020304:

在XOR之前

使用01020304的密钥对数据进行异或操作,该密钥将原始字节归零:

在XOR之后

这是对原始函数的尝试,在这种情况下,05010501的结果是不正确的:

不正确的XOR尝试

python

8
推荐指数
1
解决办法
3万
查看次数

SSLHandshakeException:没有共同的密码套件

按照此处的说明重新创建我以前错误创建的证书.我现在javax.net.ssl.SSLHandshakeException: no cipher suites in common在服务器和javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure客户端看到的东西已经改变了.而不是错误这个问题

服务器是ClassFileServer.java和相应的客户端SSLSocketClientWithClientAuth.java

关于让两端发挥得很好的任何提示,请注意我使用的是localhost所以我认为密码功能是相同的.


更新:

以下是我用来生成文件的步骤,我可能会混淆密钥和信任库:

在服务器上(指南后面):

$ keytool -genkey -alias serverkey -keyalg RSA -keypass p@ssw0rd -storepass p@ssw0rd -keystore keystore.jks

$ keytool -export -alias serverkey -storepass p@ssw0rd -file server.cer -keystore keystore.jks

$ keytool -import -v -trustcacerts -alias clientkey -file ../client/client.cer -keystore cacerts.jks -keypass p@ssw0rd -storepass p@ssw0rd

在客户端(通过指南):

$ keytool -genkey -alias clientkey -keyalg RSA -keypass changeit -storepass changeit …

java authentication ssl ssl-certificate

6
推荐指数
1
解决办法
3万
查看次数

为客户端身份验证添加 trustStore

一个服务器和相应的客户端支持客户端身份验证,但因为这里要注意:出现SSLHandshakeException:没有密码套件中常见的,没有参考的trustStore,即它们使用默认的trustStore。如何指定 trustStore?

类文件服务器:

private static ServerSocketFactory getServerSocketFactory(String type) {
    if (type.equals("TLS")) {
        SSLServerSocketFactory ssf = null;

        Properties systemProps = System.getProperties();
        systemProps.put( "javax.net.ssl.trustStore", "cacerts.jks");
        systemProps.put( "javax.net.ssl.trustStorePassword", "p@ssw0rd");
        System.setProperties(systemProps);

        try {
            // set up key manager to do server authentication
            SSLContext ctx;
            KeyManagerFactory kmf;
            KeyStore ks;
            char[] passphrase = "p@ssw0rd".toCharArray();

            ctx = SSLContext.getInstance("TLS");
            kmf = KeyManagerFactory.getInstance("SunX509");
            ks = KeyStore.getInstance("JKS");
            ks.load(new FileInputStream("keystore.jks"), passphrase);
            kmf.init(ks, passphrase);
            ctx.init(kmf.getKeyManagers(), null, null);

            ssf = ctx.getServerSocketFactory();
            return ssf;
        } catch (Exception e) …
Run Code Online (Sandbox Code Playgroud)

java ssl keystore truststore

5
推荐指数
1
解决办法
3万
查看次数

使用awk sed或grep来解析来自网页源的URL

我正在尝试解析下载的网页的来源,以获取链接列表.单行可以正常工作.这是我到目前为止所尝试的:

这似乎从一些页面名称中省略了部分URL.

$ cat file.html | grep -o -E '\b(([\w-]+://?|domain[.]org)[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))'|sort -ut/ -k3
Run Code Online (Sandbox Code Playgroud)

这将获取所有URL,但我不想包含具有/是锚链接的链接.另外我希望能够指定domain.org/folder/:

$ awk 'BEGIN{
RS="</a>"
IGNORECASE=1
}
{
  for(o=1;o<=NF;o++){
    if ( $o ~ /href/){
      gsub(/.*href=\042/,"",$o)
      gsub(/\042.*/,"",$o)
      print $(o)
    }
  }
}' file.html
Run Code Online (Sandbox Code Playgroud)

regex scripting awk grep sed

4
推荐指数
1
解决办法
1万
查看次数

从文件名剥离路径

下面的代码块有效,但我想取消注释filename = os.path.basename(filename),当我这样做时,我无法指定文件名的绝对路径,因为k.set_contents_from_filename将不再引用实际的位置如果未注释,则只有当前工作目录中的文件才能正常工作.如果我不使用filename = os.path.basename(filename),那么文件将上传其路径预先填写.有任何想法吗?

# List files in directory and upload them to bucket
    for filename in all_files:
        #skip all directory entries which are not a file
        if not os.path.isfile(filename):
              continue
        #filename = os.path.basename(filename)           
        k = Key(bucket)
        k.key = filename
        k.set_contents_from_filename(filename, cb=percent_cb, num_cb=10)
Run Code Online (Sandbox Code Playgroud)

python scripting

3
推荐指数
1
解决办法
9267
查看次数

解析URI参数和关键字值对

我想在文本文件中解析URI/L's中的参数和关键字值.还应包括没有值的参数.Python很好但是我可以使用Perl等其他工具或者也可以使用其他工具来提供建议.

示例来源:

www.domain.com/folder/page.php?date=2012-11-20
www2.domain.edu/folder/folder/page.php?l=user&x=0&id=1&page=http%3A//domain.com/page.html&unique=123456&refer=http%3A//domain2.net/results.aspx%3Fq%3Dbob+test+1.21+some%26file%3Dname&text=
www.domain.edu/some/folder/image.php?l=adm&y=5&id=2&page=http%3A//support.domain.com/downloads/index.asp&unique=12345
blog.news.org/news/calendar.php?view=month&date=2011-12-10
Run Code Online (Sandbox Code Playgroud)

示例输出:

date=2012-11-20
l=user
x=0
page=http%3A//domain.com/page.html&unique=123456
refer=http%3A//domain2.net/results.aspx%3Fq%3Dbob+test+1.21+some%26file%3Dname
test=
l=adm
y=5
id=2
page=http%3A//support.domain.com/downloads/index.asp
unique=12345
view=month
date=2011-12-10
Run Code Online (Sandbox Code Playgroud)

python url parsing

2
推荐指数
1
解决办法
559
查看次数

字母数字NOP实现

寻找字母数字形式的NOP替代方案,以便通过IDS测试缓冲区溢出.IDS将对非字母数字值进行编码0x90,%90以符合HTTP RFC标准,因此需要尝试字母数字迭代.已创建字母数字有效负载,但漏洞利用代码使用memset0x90填充缓冲区.在这里利用代码.

这里的页面提供了一些多字节选项,但我不知道如何用x0f\x1f\x00上面引用的代码中的有效载荷的雪橇替换NOP字节(第147行).有什么建议?

c x86 assembly

1
推荐指数
1
解决办法
2145
查看次数

语句迭代中没有出现换行符

以下内容从表单中获取多个文件输入,并以串行方式写入.虽然当每个文件成功登录页面时它会打印,但每个循环之间没有换行符?解决这个问题的最佳方法是什么?我以为print语句会默认添加换行符?

#!/usr/bin/python
import cgi, os
import shutil
import cgitb; cgitb.enable()  # for troubleshooting

form = cgi.FieldStorage()

print """\
Content-Type: text/html\n
<html><body>
"""

if 'file' in form:
   filefield = form['file']
   if not isinstance(filefield, list):
      filefield = [filefield]

   for fileitem in filefield:
       if fileitem.filename:
          fn = os.path.basename(fileitem.filename)
          # save file
          with open('/var/www/rsreese.com/files/' + fn, 'wb') as f:
              shutil.copyfileobj(fileitem.file, f)
          # line breaks are not occuring between interations
          print 'File "' + fn + '" was uploaded successfully \n'
          message = …
Run Code Online (Sandbox Code Playgroud)

python

0
推荐指数
1
解决办法
167
查看次数

标签 统计

python ×4

java ×2

scripting ×2

ssl ×2

assembly ×1

authentication ×1

awk ×1

c ×1

grep ×1

keystore ×1

parsing ×1

regex ×1

sed ×1

ssl-certificate ×1

truststore ×1

url ×1

x86 ×1