找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15720|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr. D- X8 w1 K# e( o, P
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    4 J: T- G; \' }$ \1 `2 u  `- m
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:/ C) A. ~0 V+ Q6 E: \( H3 r
usage: himr <address> <value>. sample: himr 0x80040000 0x0
: T5 X5 ^- X4 ~
% W5 Z$ q5 D* g5 @+ W; H) S3 ]8 {* H. N: x; H) H" D# Z
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
& t0 G, j* h& f/ K5 y0 B$ N8 `$ ^" t4 \
补充内容 (2012-3-8 09:42):8 @6 j1 k7 k) }- W5 t) Z. M5 U
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数  U- Z: k! F2 E8 \  g2 \& d
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。! f8 y+ f" c) K1 O0 A
2 j$ a+ h; [9 C  O- C8 `5 e5 B
himr <address> <value>. sample: himr 0x80040000 0x0% E! `+ E# p: S" a4 Z# D7 F) Z7 T

$ r; t! h2 O: M( d3 t  e9 Z例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
) z7 E5 Y  `9 k  ?himr 0x80040000 0x00' }2 ]4 G# {% R" L# Z* o* P5 [8 x
himr 0x80040001 0x114 {. X$ Y  m8 t/ ?0 O
himr 0x80040002 0x22' C& p) [6 C& E4 ]# c5 T
himr 0x80040003 0x33
3 Z1 n( \  c, f3 Y4 {; f0 {+ whimr 0x80040004 0x44
5 V( F' ~# g7 w( o8 ihimr 0x80040005 0x55
' c; U& G, u- I& e" a3 }5 c- t. g6 Y! M
SN也是类似。
5 Z6 V* |# b, ]( u" y' \4 d" _' t0 S# ?$ }, \# ^
现在主要是,谁告诉我们MAC和SN的地址?. F& L  R1 |: v+ C$ O
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
5 H7 Z  Z, ^2 t# i5 D一直想找到运程修改MAC和SN的办法,苦于无解啊
; ^% \0 r- R1 L% |$ S
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 6 B: F( a/ @4 ]) f/ x) |/ i

  c+ N+ A8 ?! y& {$ f修改的代码早有了。到今天不会编译。" w6 `: o0 e$ D
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>  J* C% {# u: F2 K0 Z9 s
  2. #include <malloc.h>" S3 D" ~% p7 k9 |* _' @! ^
  3. #include <sys/types.h>
    - {( B6 g3 e" a2 O9 c
  4. #include <sys/stat.h>$ c  b/ k; x6 y+ ^
  5. #include <sys/ioctl.h>% P% C) @2 i% F
  6. #include <stdio.h>4 T9 {: L4 n+ R9 c8 E' q% c* N5 y% ]
  7. #include <string.h>
    % ?2 Q' q/ Q$ b6 N

  8. # S/ y# e+ H) Q
  9. typedef struct {; \# c# M: |, H$ V
  10.         unsigned int        e2prom_cmd_sub_addr;* F% n5 _* q) }) ?% c/ w9 {* u9 `
  11.         unsigned int        sub_addr_count;- {- z6 m9 W% G
  12.         unsigned char*        e2prom_cmd_data;* ~) o4 d- p4 x1 R' e
  13.         unsigned int        data_count;9 C9 Q5 B) B& t5 D9 N/ U# R, j
  14. } e2prom_s_cmd;  z9 a5 Y; R8 z) H+ a

  15. & b3 c- k, T7 [# m
  16. #define E2PROM_CMD_READ 1! i( Q8 E5 o+ t# C& Y
  17. #define E2PROM_CMD_WRITE 2' s+ S$ Z" Y& N3 S7 Y$ {
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"" V& A: ^: X; s
  19. - S% \, @) W; A5 y
  20. static int readparam(unsigned char *mac, unsigned char *stbid)8 A) W  `6 `3 N7 {
  21. {
    ( I- L) i( Q' g* X: A" i
  22.         int fd, ret;3 {5 P& L! P* ?1 J
  23.         e2prom_s_cmd arg;
    2 S) t  g# J. A8 g& Y) h! i
  24.         unsigned char buf[0x18];) j% p1 g, N) ^' k

  25. ) k" T0 K; L$ h
  26.         fd = open(E2PROM_DEVICE, O_RDWR);7 g* U6 [4 x+ z- b; \8 g
  27.         if (fd  < 0) {$ z1 r- }  s2 o4 `) N
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    , |+ ]3 U6 W0 v, c* ]
  29.                 return -1;; d& K( u4 {! i* F4 e6 w
  30.         }6 ?+ k# u, ]0 p% r
  31.         arg.sub_addr_count      = 2;
    8 q  [6 w5 a1 W
  32.         arg.data_count          = 0x18;
    0 `* h6 A' }+ S9 h& p
  33.         arg.e2prom_cmd_sub_addr = 0x290;2 |% }+ h, h+ ]' s/ P
  34.         arg.e2prom_cmd_data     = buf;' C1 X! m# N" V4 Y3 m
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);& V# P  \. d9 J; ^# k: Y, s6 U
  36.         if (ret != 0) {
    " r, B: o' ?- O0 V; t' J
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);* Y; U7 u" ^9 d
  38.                 return -1;
    1 @' R6 p7 r5 ?9 W9 P, K6 z' q) ^. z
  39.         }
    % |; {; _1 y& m0 i
  40.         memcpy(mac, buf, 6);% s3 r/ _  H& a/ I# r" q/ z$ z
  41.         memcpy(stbid, &buf[6], 18);
    ) B1 x* i7 X% v* b! P  D
  42.         stbid[18] = '\0';
    9 Z5 K4 v$ k- r+ v- C" y% L

  43. & f: L' V; u6 \7 a# }
  44.         return 0;+ y) |( E- ]' ]# `7 f3 H
  45. }, L0 x0 E9 Z, j; J5 ^
  46. 0 H7 h$ F8 W4 r
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)8 t1 L5 e7 A5 a0 l* R$ B9 S2 U
  48. {, T! D' g: `( ?
  49.         int fd, ret;3 t" m! i& d. d; J) ]
  50.         e2prom_s_cmd arg;
    8 _0 B7 i. q) O+ n7 W' f
  51.         unsigned char buf[0x18];' M0 ?4 [; y! O7 L, J

  52. 6 N8 u% s6 H8 u5 P# |/ E
  53.         memcpy(buf, mac, 6);
    : t3 M' i& b& q  w, N4 s
  54.         memcpy(&buf[6], stbid, 18);
    $ X8 z! k1 _8 }% j9 D% j3 B
  55.         fd = open(E2PROM_DEVICE, O_RDWR);& N1 W! u1 I5 z) ?
  56.         if (fd  < 0) {
    1 t! M4 l+ B  W0 L) Q
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    & W2 c9 G4 D8 n7 L  J6 B
  58.                 return -1;
    8 A2 g- o7 C% @1 ^0 i* e! ]6 y- H; k
  59.         }
    + \6 h) n0 y! G, w
  60.         arg.sub_addr_count      = 2;
    6 u! H0 U7 C5 E: h' V4 l
  61.         arg.data_count          = 0x18;$ j' [% f9 b8 ?
  62.         arg.e2prom_cmd_sub_addr = 0x290;6 J) a- U* y" ]! Z/ q& l
  63.         arg.e2prom_cmd_data     = buf;
    1 x+ `& r" v' M% X8 H- G
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);# h' }) g/ b# b! O) m7 y
  65.         if (ret != 0) {1 d" N7 X' C( I1 Z7 a0 v9 W' Z* H
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);8 a' P9 P0 z# n
  67.                 return -1;
    2 p4 w& K, f. J( X2 Q# Y5 U2 ~
  68.         }
    % Q( X4 d7 J( X9 N; t' M
  69. : M$ G/ R0 `* y$ T5 o( N- |) U2 Q
  70.         return 0;
    9 N) o3 c' g6 b( J
  71. }
    ; z4 n) p3 K# M! n. C0 w
  72. 8 Z. Q# g; |6 Q% w, W7 |5 B8 Z( p
  73. int main()
    8 x: r4 L: \6 `4 {  t
  74. {
    ! |" U1 U. X& U; c9 R2 b3 L
  75.         char c;+ L: i" |* I9 h
  76.         int i, macs[6];3 O. m5 w4 B7 r7 F  d
  77.         unsigned char mac[6];
    ( o# T, w$ D- u1 M3 g
  78.         unsigned char stbid[256];3 D" X$ b! b* j# V

  79. 2 j6 ^# W% _% e5 n1 f9 I9 p& l
  80.         if (readparam(mac, stbid) < 0)
    9 z) u' ?$ [' a; A8 }
  81.                 return 1;  i4 U9 X) \* X6 r! A9 U( Q) E$ ]! T
  82. 9 B: D3 j& n/ z9 l3 t/ C: M
  83.         printf("Current parameters: \n");
    - H" S4 |" h6 j( H. V
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    & s4 A/ N/ n; |- F, ^3 I
  85.         printf("  STBID: %s\n", stbid);1 r2 }+ q5 ?) W. s
  86.         % Q* G2 `# U1 _+ F! R: c+ P
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    - `3 j; [- e! P4 m# u
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {; @3 `. s1 m  `. g
  89.                 printf("Input MAC error\n");# q( h0 h1 E* j7 t1 M$ U
  90.                 return 1;! h; A2 q, x( n) ~6 c8 Q& {
  91.         }5 `$ N* T  Y% S9 t% v" u# W6 `
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    $ y5 s6 ~$ s, j) v8 G
  93.         printf("\nPlease input new STBID: ");9 E, @1 b- f6 H/ d5 s1 u' I
  94.         scanf("%s", stbid);) d$ V# o% N( P: i6 F+ u
  95.         if (strlen(stbid) != 18) {
    / }. ^+ P  V* J+ j' y# s9 f) R/ U
  96.                 printf("Invalid stbid\n");
    5 d# `2 A4 L7 h+ F0 V9 s# c
  97.                 return 1;
      I4 K# @2 T- A. U5 I
  98.         }8 {3 p8 G& e& N9 d  c  M
  99.         printf("\nNew parameters: \n");
    ' X, R4 y. N5 N2 V0 c: \2 X& N
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
      `! @2 h, C) E6 m( Y$ y: S: k4 z) B
  101.         printf("  STBID: %s\n", stbid);) f! n* s( s5 V8 _; B

  102. ' N! X$ `& g/ l6 `
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ! m, s) A" m: v, C# c' ^6 g
  104.         for (;;) {
    8 y" r8 o8 i' O
  105.                 c = getchar();2 |% L. m; D# R& \- Q
  106.                 if (c == 'y' || c == 'Y')
    " ]4 n9 ]/ ]1 A8 |- S: A1 t% @
  107.                         break;
    4 y$ w- L0 u6 Z0 L" [0 k
  108.                 if (c == 'n' || c == 'N') {+ e0 k. ^6 T. H9 J5 E- J  x4 N
  109.                         printf("\nAborted.\n");6 L8 G! k1 y( o7 \
  110.                         return 1;$ r9 w9 Z: |; a# @/ J
  111.                 }
    9 \  J3 G& G- e/ }
  112.         }! Y! N5 N2 d6 z( m* e" K  H
  113.         if (writeparam(mac, stbid) == 0) ! `( v9 O/ K" e( W$ v+ h; R4 Q1 |
  114.                 printf("Parameters changed.\n");
    / d3 p# S+ P- d% }9 w4 l

  115. , P# ]7 t1 Y3 l& b
  116.         return 0;* c  q- M7 ^- B; {8 q
  117. }
复制代码
 楼主| 发表于 2012-3-23 18:24:12 | 显示全部楼层
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
发表于 2012-5-11 11:20:03 | 显示全部楼层
0522 发表于 2012-3-23 18:24 7 s  [7 R4 h8 g# P# F$ Q/ [  _. ^
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

) R7 E. x1 j. [! U* I- }你用的编译命令行格式是什么?% y) Z) g& h' J( e+ e
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-3-4 18:35 , Processed in 0.024712 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表